首页 STC12C5A60S2单片机课程设计报告

STC12C5A60S2单片机课程设计报告

举报
开通vip

STC12C5A60S2单片机课程设计报告STC12C5A60S单片机课程设计报告一、课程设计基本情况介绍1.1课程设计的基本目的与任务本课程设计旨在驾驭本专业学生理论指导实践能力以及电子产品工程设计与开发能力。本实践课所要达到的主要目的是:G07ct。1、通过本次课程设计,是对学生综合能力的检,提高学生综合运用专业知识,强化单片机应用系统设计与防震能力。39O3G2、本次课程设计是在生产实习所完成的“单片机核心板+电子钟模块+MP3模块+RFID模块+无线传输模块+GPS模块+脉搏传感模块”的基础上设计该硬件系统的工作程序。rqxEp。1.2课程设计的基...

STC12C5A60S2单片机课程设计报告
STC12C5A60S单片机课程设计报告一、课程设计基本情况介绍1.1课程设计的基本目的与任务本课程设计旨在驾驭本专业学生理论指导实践能力以及电子产品工程设计与开发能力。本实践课所要达到的主要目的是:G07ct。1、通过本次课程设计,是对学生综合能力的检,提高学生综合运用专业知识,强化单片机应用系统设计与防震能力。39O3G2、本次课程设计是在生产实习所完成的“单片机核心板+电子钟模块+MP3模块+RFID模块+无线传输模块+GPS模块+脉搏传感模块”的基础上设计该硬件系统的工作程序。rqxEp。1.2课程设计的基本内容1、在生产实习设计单片机硬件系统的基础上,设计相应的应用软件系统。2、在LCD1602上显示学号程序设计。3、基于DS1302的实时时钟软件设计。4、基于DS18B20的温度测量软件设计。5、基于TL1838A的红外遥控解码软件设计。6、设计应用软件系统框图和流程图,完成所设计软件的调试。1.3课程设计的教学要求1、通过资料查阅及学习了解单片机应用系统的软件设计 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 及单片机编程、软硬件联机调试技巧。2、独立设计并编写下列应用程序:(1)LCD1602学号显示程序;(2)DS1302实时时钟程序;(3)DS18B20温度测量程序;(4)TL1838A红外遥控解码程序;3、独立完成所设计程序与硬件系统的联机仿真。二、整机系统框图(硬件、软件)该设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是以STC12C5A60S2单片机为核心,采用LCD液晶屏幕显示模块、实时时钟模块、温度测量模块、红外遥控解码等模块所构建的系统,能在LCD1602液晶屏上显示当前的日期(年、月、日)、时间(时、分、秒)数据、当前环境温度值和红外遥控解码值。用户可通过遥控器或单片机核心板上的按键来进行日期和时间的设置。本系统设计大部分功能由软件来实现,电路简单明了,系统稳定性也得到大大提高。GXF7b1、总体硬件设计 框架 财政支出绩效评价指标框架幼儿园园本课程框架学校德育工作框架世界古代史知识框架质量保证体系框架图 图:总粹哽件说计眶架田2、总体软件设计框架图///////三、整机硬件电路原理图(见99SE图)1、核心板电路原理图2、蜂鸣器驱动电路3、按键电路4、单片机复位电路5、LCD1602液晶显示电路6、电子钟模块接口电路四、软件系统设计思想////////////五、系统软件资源分配表(调试程序、工作程序)//////////////六、显示学号的调试程序流程图、程序源代码1、程序流程图///////////2、程序源代码voidmain()***********LCD1602*************************#include#includesbitRS=P3A7;sbitRW=P3A6;sbitE=P2A7;sbitBF=P0A7;#defineLCD_DataP0************函数声明********************voidLcd_Int(void);voidhuanying_show(void);voiddongtai_show(void);charstring1[]="LIUJING";//LIUJINGcharstring2[]="*************3";//3函数功能:主函数*************************OYndb。{Lcd_Int();//1602初始化while(1){huanying_show();dongtai_show();}}/*********************************************函数功能:延时1ms注:不同单片机不同晶振需要对此函数进行修改*********************************************/voidLcd_delay1ms(){unsignedchari,j;for(i=0;i<90;i++)for(j=0;j<33;j++);}/*********************************************函数功能:延时若干毫秒入口参数:n*********************************************/voidLcd_delay(unsignedintn){unsignedinti;for(i=0;i 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ASCII码)写入液晶模块入口参数:y(为字符常量)*********************************************/voidLcd_WriteData(unsignedchary){while(Lcd_BusyTest()==1);RS=1;//RS为高电平,RW为低电平时,可以写入数据RW=0;E=0;//E置低电平(写指令时,就是让E从0到1发生正跳变,所以应先置"0"LCD_Data=y;//将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}/**********函数功能:对LCD的显示模式进行初始化设置******************/1K1Tx。voidLcd_Int(void){Lcd_delay(15);//延时15ms,首次写指令时应给LCD一段较长的反应时间Lcd_WriteCom(0x38);//显示模式设置:16*2显示,5*7点阵,8位数据接口Lcd_delay(5);//延时5msLcd_WriteCom(0x38);Lcd_delay(5);Lcd_WriteCom(0x38);//3次写设置模式Lcd_delay(5);Lcd_WriteCom(0x0C);//显示模式设置:显示开,有光标,光标不闪烁Lcd_delay(5);Lcd_WriteCom(0x06);//显示模式设置:光标右移,字符不移Lcd_delay(5);Lcd_WriteCom(0x01);//清屏幕指令,将以前的显示内容清除Lcd_delay(5);}***************函数功能:LCD的显示********************/voidhuanying_show(void){unsignedintLcd_i;Lcd_WriteCom(0x01);//清显示:清屏幕指令Lcd_delay(1);Lcd_WriteAddress(0x00);//设置显示位置为第一行的第1个字Lcd_delay(1);for(Lcd_i=0;Lcd_i<16;Lcd_i++)//显示字符LIUJING{Lcd_WriteData(string1[Lcd_i]);Lcd_delay(150);}Lcd_WriteAddress(0x40);//设置显示位置为第二行的第1个字for(Lcd_i=0;Lcd_i<16;Lcd_i++)//显示字符3{Lcd_WriteData(string2[Lcd_i]);Lcd_delay(150);}Lcd_delay(1000);}//右侧移位进来voiddongtai_show(void){unsignedintLcd_i;Lcd_WriteCom(0x01);//清显示:清屏幕指令Lcd_delay(2);Lcd_WriteAddress(0x10);//设置显示位置为最右侧Lcd_delay(2);for(Lcd_i=0;Lcd_i<16;Lcd_i++)//显示字符LIUJING{Lcd_WriteData(string1[Lcd_i]);Lcd_delay(2);}Lcd_WriteAddress(0x50);//设置显示位置为最右侧for(Lcd_i=0;Lcd_i<16;Lcd_i++)//显示字符3{Lcd_WriteData(string2[Lcd_i]);Lcd_delay(2);}for(Lcd_i=0;Lcd_i<16;Lcd_i++)//开始左移{Lcd_WriteCom(0x18);//左移指令Lcd_delay(400);}Lcd_delay(1000);Lcd_WriteCom(0x08);Lcd_delay(400);Lcd_WriteCom(0x0c);Lcd_delay(400);Lcd_WriteCom(0x08);Lcd_delay(400);Lcd_WriteCom(0x0c);Lcd_delay(400);Lcd_WriteCom(0x08);Lcd_delay(400);Lcd_WriteCom(0x0c);Lcd_delay(400);Lcd_WriteCom(0x08);Lcd_delay(400);Lcd_WriteCom(0x0c);Lcd_delay(1);时钟电路(DS1J02)1);//主控电路孤1STC12C5A60S单片机课程设计报告Lcd_deiaya跆七外遥控清显示:清屏幕指令<—►、实时时钟、温一)流程图丿等程序旳流程图、程序源代码显示驱动1、实时时钟模块图7.1.1为电子时钟设计框图,系统由主控制搆LCD1STC12C5A60S2、时钟电路DS1302、显示电路LCD1602及键扫描电路组成。UOnO。时*中也踣(US13O2)*>丰控电喘电子万年历的程序主要包括032数据进行计数,二是利用按键进行时据驱动LED数码管显示时间。jDMLMDS1302从单片机中读取个方面的内容:一间的调整^壽三是MAX721从单片机中读取数图7.1.1电子时钟设计框图STC12C5A60S2单片机主要I/O口的分配,P1.4、P1.5、P1.6分别接DS1302的SCLK,MCUIO,RST端,P0口接LCD1602八位数据口,P2.7、P3.6、P3.7分别接LCD1602的E、RW、RS端,P2.0-P2.3分别接按键K1-K4.下图7.1.2为电子时钟程序设计流程图。MdGY。图7.1.2电子时钟程序设计流程图2、温度测量模块温度测量程序主要包括主程序,读出温度子程序,温度转换子程序,计算温度子程序,显示STC12C5A60S单片机课程设计报告数据子程序等。主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其系统程序流程见图7.2.1所示。RD40S。图7.2.1温度测量主程序流程图3、红外遥控解码模块(1)遥控器发射端程序流程图:[匸戶序斤升女台]I±_--十氐电〒月打-口MtS£IW幷x^r彳氐半I鬥工月氷沖违十蚁>:*I』■-兀」屁功台旨巫呈序(二)程序源代码1、实时时钟模块/*************DSi302#include#include#include#defineuintunsignedint#defineucharunsignedchar//变量定义sbitSCLK=P1A4;sbitDATA_IO=P1A5;sbitRESET=P1A6;sbitACC0=ACCA0;sbitACC7=ACCA7;uchartable1[16];uchartable2[16];ucharsecond,minute,hour,day,month,year;〃定义秒分时日月年变量/*********DS1302寸寸钟部分子程^序****************************///向DS1302写入一个字节的函数时寸钟显示程^序**********************///DS1302时钟控制总线//DS1302数据传送总线//DS1302复位总线〃移位时的第0位〃移位时的第7位ivjYT。PeuzH。voidSentByte(ucharbyte){uchari;ACC=byte;for(i=8;i>0;i--)//相当于汇编中的RRC{DATA_IO=ACC0;//将自己的最低位传到时钟的数据总线上SCLK=1;//时钟上升沿发送数据有效SCLK=0;//清时钟总线ACC=ACC>>1;//将累加器中的数据右移1位}}//从DS1302读取一个字节函数ucharReceiveByte(void){uchari;for(i=8;i>0;i--)//相当于汇编中的RRC{ACC=ACC>>1;//将累加器中的数据右移1位ACC7=DATA_IO;//将数据线上的1位数据存入累加器中SCLK=1;//时钟上升沿发送数据有效SCLK=0;//清时钟总线}return(ACC);//函数最终返回读取的1字节数据}//向DS1302的某个地址里写入数据函数voidWriteClock(ucharAddress,ucharData)//Address:要写入数据的DS1302地址;Data:要写的数据DSE4d。{RESET=0;//复位引脚为低电平所有数据传送中止SCLK=0;//清时钟总线RESET=1;〃复位引脚为高电平逻辑控制有效delay(10);SentByte(Address);//写入地址命令SentByte(Data);//写入1字节数据SCLK=1;〃时钟总线置高RESET=0;//逻辑操作完毕,清复位总线}//读取DS1302某地址的数据ucharReadClock(ucharAddress)//Address:要读取数据的DS1302地址NptBl。{ucharData;//定义数据变量RESET=0;//复位引脚为低电平所有数据传送终止SCLK=0;//清时钟总线RESET=1;//复位引脚为高电平逻辑控制有效delay(1);SentByte(Address|0X01);//写入地址命令,读取地址为写入地址+1HData=ReceiveByte();//读取1字节数据SCLK=1;//时钟总线置高RESET=0;//逻辑操作完毕,清复位总线return(Data);//返回读取的数据}//时钟芯片初始化函数voidInit_Clock(void){ucharSecond=ReadClock(0x81);//读取秒数据if(Second&0x80)//判断时钟芯片是否关闭{WriteClock(0x8e,0x00);//写入允许WriteClock(0x8c,0x11);//一下写入初始化时间11年11月25日15:05:00WriteClock(0x88,0x11);WriteClock(0x86,0x25);WriteClock(0x84,0x15);WriteClock(0x82,0x05);WriteClock(0x80,0x00);WriteClock(0x8e,0x80);//禁止写入}}voidRead_Date(void){ucharReadValue;//定义变量ReadValue=ReadClock(0x81);second=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//将读取的秒数据的BCD码转换成十进制数据GGFaOReadValue=ReadClock(0x83);if(ReadValue>0x60)ReadValue=ReadClock(0x83);minute=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//将读取的分数据的BCD码转换成十进制数据rDczK。ReadValue=ReadClock(0x85);if(ReadValue>0x24)ReadValue=ReadClock(0x85);hour=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//将读取的时数据的BCD码转换成十进制数据16KBJ。ReadValue=ReadClock(0x87);day=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//将读取的日数据的BCD码转换成十进制数据YcjtR。ReadValue=ReadClock(0x89);month=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//将读取的月数据的BCD码转换成十进制数据lvdkY。ReadValue=ReadClock(0x8d);year=((ReadValue&0xf0)>>4)*10+(ReadValue&0x0F);//将读取的年数据的BCD码转换成十进制数据vwTxL。table1[0]='D';table1[1]='a';table1[2]='t';table1[3]='a';table1[4]=':';table1[5]='2';table1[6]='0';table1[7]=0x30+year/10;table1[8]=0x30+year%10;table1[9]='-';table1[10]=0x30+month/10;table1[11]=0x30+month%10;table1[12]='-';table1[13]=0x30+day/10;table1[14]=0x30+day%10;table1[15]='';table2[0]='';table2[1]='';table2[2]='';table2[3]='';table2[4]=0x30+hour/10;table2[5]=0x30+hour%10;table2[6]=':';table2[7]=0x30+minute/10;table2[8]=0x30+minute%10;table2[9]=':';table2[10]=0x30+second/10;table2[11]=0x30+second%10;table2[12]='';table2[13]='';table2[14]='';table2[15]='';}//时钟显示函数voidshow_Data()1个字1个字{uinti;Lcd_WriteAddress(0x00);//设置显示位置为第一行的第for(i=0;i<16;i++)//显示字符{Lcd_WriteData(table1[i]);delay(10);}Lcd_WriteAddress(0x40);//设置显示位置为第二行的第for(i=0;i<16;i++)//显示字符{Lcd_WriteData(table2[i]);delay(10);}}voidmain(){Lcd_Int();//1602初始化huanying_show();Lcd_WriteCom(0x01);Init_Clock();//将1302初始化while(1){Read_Date();show_Data();}}2、温度测量模块/*********DS18B29温度显示程序********************#include#include#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1A7;//DS18B20与单片机连接口unsignedchara,b;uinttvalue;//温度值uchardisdata[12];voiddelay_18B20(unsignedinti)//延时1微秒{while(i--);_nop_();_nop_();}voiddelay1ms(uintm)//延时m毫秒{while(m--)delay_18B20(1000);}voidDS18B20rst()/*ds18b20复位*/{DQ=1;//DQ复位delay_18B20(10);//延时DQ=0;//DQ拉低delay_18B20(600);DQ=1;//拉高_nop_();_nop_();while(DQ);_nop_();_nop_();while(~DQ);_nop_();}ucharDS18B20rd()/*读数据*/{unsignedchari;unsignedchardat;DQ=1;for(i=8;i>0;i--){dat>>=1;DQ=0;//给脉冲信号_nop_();_nop_();_nop_();_nop_();DQ=1;//给脉冲信号delay_18B20(5);if(DQ){dat|=0x80;}delay_18B20(50);}return(dat);}voidDS18B20wr(ucharwdata)/*写数据*/{unsignedchard;inti;DQ=1;for(i=8;i>0;i--){d=wdata&0x01;wdata>>=1;if(d){DQ=0;delay_18B20(2);DQ=1;delay_18B20(60);}else{DQ=0;delay_18B20(60);DQ=1;_nop_();_nop_();}}}read_temp()/*读取温度值并转换*/{DS18B20rst();DS18B20wr(0xcc);//*跳过读序列号*/DS18B20wr(0x44);//*启动温度转换*/delay1ms(30);DS18B20rst();DS18B20wr(0xcc);//*跳过读序列号*/DS18B20wr(0xbe);//*读取温度*/a=DS18B20rd();b=DS18B20rd();tvalue=b;tvalue=tvalue<<8;tvalue=tvalue|a;if(tvalue&0x8000)tvalue=~tvalue+1;tvalue=tvalue*(0.625);return(tvalue);}voidDS18B20disp()//温度值显示{uinti;disdata[0]='T';disdata[1]='e';disdata[2]='m';disdata[3]='p';disdata[4]='t';disdata[5]=':';disdata[6]=(int)tvalue/1000+0x30;//百位数disdata[7]=(int)(tvalue%1000)/100+0x30;//十位数disdata[8]=(int)(tvalue%100)/10+0x30;//个位数disdata[9]='.';disdata[10]=(int)tvalue%10+0x30;//小数位disdata[11]='C';Lcd_WriteAddress(0x40);//设置显示位置为第二行的第1个字for(i=0;i<12;i++)//显示字符{Lcd_WriteData(disdata[i]);delay(100);}}voidinitLCD(){Lcd_Int();huanying_show();}intmain(){a=0x00;b=0x00;initLCD();Lcd_WriteCom(0x01);//清屏幕指令,将以前的显示内容清除delay1ms(1000);while(1){read_temp();//读取温度DS18B20disp();//显示}return0;}3、红外遥控解码模块#include#include#defineucharunsignedcharucharflag;//标志变量,0x01为下降沿进,0x02为引导码,0x03为连发码unsignedintsys,dat;ucharda[4];sbitout=P3A3;sbito仁卩3人4;sbito2=P3A5;/**************************************/voidadjust(void){if(flag==0x01){start();TOC\o"1-5"\h\zif(flag==0x02)//{getdata();o1=0;}elseif(flag==0x03)//{o2=0;}}}voidgetdata(void){inti;intj;for(j=0;j<4;j++)for(i=0;i<8;i++){da[j]=da[j]>>1;while(~out);TL1=0x00;TH1=0x00;TR1=1;while(out);TR1=0;if(TH1>7)da[j]|=0x80;}}voidstart(void){while(~out);TR0=0;if(TH0>60){EA=0;TR1=1;while(out);TR1=0;if(TH1>30)flag=0x02;elseif(TH1>15)flag=0x03;}else{flag=0x00;EA=1;}}voidinitintterrupt(void){TL0=0x00;TH0=0x00;TL1=0x00;TH1=0x00;IT1=1;EX1=1;EA=1;}voidInt1_Routine(void)interrupt2{EA=0;TL0=0x00;TH0=0x00;TL1=0x00;TH1=0x00;TMOD=0x91;TR0=1;ET0=1;flag=0x01;EA=1;}intmain(void){out=1;o1=1;o2=1;initintterrupt();while(1){EA=0;adjust();EA=1;}return0;}八、整机硬件、软件联机仿真调试中出现的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,解决方案、结果九、设计总结十、参考文献
本文档为【STC12C5A60S2单片机课程设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
與因
暂无简介~
格式:doc
大小:218KB
软件:Word
页数:0
分类:
上传时间:2021-10-17
浏览量:0