




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 一、温度万年历设计的目的和意义.1二、电路设计方案1三、原理设计1四、方案结构图3五、温度万年历1602驱动及显示的详细设计6六、心得与总结14- 14 -一、温度万年历设计的目的和意义 随着社会的发展,信息量的不断提升以前对信息交换的要求提高,温度万年历的发展以及投入市场变得非常有必要。本设计是基于51单片机并模拟日常所用的日历,而51系列单片机是各单片机中最为典型和最有代表性的一种。通过本次设计,学习和巩固了单片机指令编程的相关知识,熟悉单片机各部件的组成及其功能。 本设计将制作一种基于单片机控制的带实时温度显示、具有定时功能的电子万年历。传统的电子日历大都体积大,功耗大,显示不准确等特点。为了缩小体积,减小功耗,使其变得小巧灵敏,本设计加入了时钟芯片DS1302,可对时间进行准确记时,同时可设置定时时间,实现定时功能。另外本设计具有显示实时温度的功能。传统的温度传感器系统大都采用放大、调理、A/D转换,转换后的数字信号送入计算机处理,处理电路复杂、可靠性相对较差,占用计算机的资源比较多。本设计将采用DS18B20一线制数字温度传感器,可将温度信号直接转换成数字信号送给微处理器,电路简单,成本低,实现了时间温度同时显示的效果。最后,温度和时间都将通过LCD1602液晶显示器进行显示。测试表明系统达到了设计要求的各项功能,各部分工作正常。二、电路设计方案采用AT89S52作为主控制系统; 直接采用单片机定时计数器提供秒信号;LCD液晶显示屏作为显示。三、原理设计1. 基本原理:本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路直接采用单片机定时计数器提供秒信号;温度的采集由DS18B20构成;显示部份由LCD液晶显示屏显示。同时还添加了提醒功能,通过蜂鸣器实现。2. 总体框图Lcd1602液晶屏显示模块晶振振荡模块STC89C52主控制模块 键盘模块图13. 单元电路设计u 单片机主控制模块的设计 AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图2所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。 DS18B20性能l 独特的单线接口仅需一个端口引脚进行通信l 简单的多点分布应用l 无需外部器件l 可通过数据线供电l 零待机功耗l 测温范围-55+125,以0.5递增l 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625l 温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字l 应用包括温度控制、工业系统、消费品、温度计和任何热感测系统l 负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作l GND:地l DQ:单线运用的数据输入/输出引脚l VD:可选的电源引脚4. 元件列表元件列表器件数量光汇51单片机开发板1杜邦线若干DS18B201LCD1602液晶屏1四、方案结构图 此方案由于只用到51单片机芯片,因此各个功能都是由编程来实现。大体程序流程框图如下按键调整结构图: 时钟调整一 时钟调整二 Protues电路图(部分): 温度万年历整体电路图 时钟调整按键图时钟调整LCM显示图五、温度万年历1602驱动及显示的详细设计驱动部分的代码:头文件如下:#ifndef_1602_H_#define_1602_H_void RdBusy(void);void WrCommand(char command);void WrData(char wrdata);#endif1602驱动源代码如下:/*LCM1602驱动程序8线间接控制方式晶体频率12MHz*/*1602LCD各引脚接口说明VSS 电源地VDD 电源正极VL 液晶显示偏压RS 数据/命令选择R/W RW 读写选择/*LCM1602驱动程序8线间接控制方式晶体频率12MHz*/#include #include /*1602LCD各引脚接口说明VSS 电源地VDD 电源正极VL 液晶显示偏压RS 数据/命令选择R/W RW 读写选择E 使能信号D0 数据 背光源正极D1 数据 背光源负极*/*1602接口定义*/#defineLCMP0 sbitRS=P25;/0,command; 1,datajkhjholkhkksbitRW=P26;/0,write; 1,readsbitE=P27; /下降沿有效/*常数定义*/#defineCMD0 /RS=0,命令#define DAT1 /RS=1,数据/模块忙闲判断void RdBusy(void)char flag=0xff; doLCM=0xff;RS=CMD;RW=1;E=1;_nop_();_nop_();_nop_();/这三句很重要flag=LCM;E=0;flag&=0x80;while(flag);/写命令void WrCommand(char command)LCM=command;RS=CMD;RW=0;E=1;E=0;RW=1;RdBusy();/等待LCM完成本次操作/写数据void WrData(char wrdata)LCM=wrdata;RS=DAT;RW=0;E=1;E=0;RW=1;RdBusy();/等待LCM完成本次操作/*E 使能信号D0 数据 背光源正极D1 数据 背光源负极*/显示头文件:#ifndef_DISPLAY_H_#define_DISPLAY_H_#defineuchar unsigned charvoiddelayx5ms(int dcnt);void LcmInit(void);void ClrLine(uchar line );void Write1Line(uchar line,uchar* buf);void WrData2Addr(uchar addr,uchar dat);void disall();void offall();#endif显示C源代码:#include #include 1602.h#defineLCMP0#defineuchar unsigned charextern uchar flag;extern uchar year,month,date,day,hour,minu,sec;extern uchar Dispbuf016;extern uchar Dispbuf116;extern code uchar Num2Asc16;extern code uchar WEEK21;extern uchar s1num;/延迟子程序,基数5msvoiddelayx5ms(int dcnt) int tmp;for(; dcnt0; dcnt-)tmp=0x230;while(tmp-)continue;/模块初始化void LcmInit(void)LCM=0;delayx5ms(40);/延迟200msWrCommand(0x38);/8bit接口,两行显示,57点阵delayx5ms(2);/延迟10msWrCommand(0x38);/同上,该指令要写两次delayx5ms(1);/延迟5msWrCommand(0x06);/地址加一,字符不移动WrCommand(0x0c);/开显示,光标不显示,光标不闪烁WrCommand(0x01);/清屏/指定行清屏子程序void ClrLine(uchar line )unsigned char i=0;WrCommand(0x80+line);/指向擦除行的首字符位for(;i16;i+)WrData( );void Write1Line(uchar line,uchar* buf)uchar addr=0,i;if(line=0)addr=0x80;elseaddr=0xc0;WrCommand(addr);for(i=0;i16;i+)WrData(*buf+);void WrData2Addr(uchar addr,uchar dat)WrCommand(addr);WrData(dat);void disall()Dispbuf03=Num2Ascyear/10;Dispbuf04=Num2Ascyear%10;Dispbuf06=Num2Ascmonth/10;Dispbuf07=Num2Ascmonth%10;Dispbuf09=Num2Ascdate/10;Dispbuf010=Num2Ascdate%10;Dispbuf012=WEEKday*3;Dispbuf013=WEEKday*3+1;Dispbuf014=WEEKday*3+2;Dispbuf11=Num2Aschour/10;Dispbuf12=Num2Aschour%10;Dispbuf14=Num2Ascminu/10;Dispbuf15=Num2Ascminu%10;Dispbuf17=Num2Ascsec/10;Dispbuf18=Num2Ascsec%10;Write1Line(0,&Dispbuf00);Write1Line(1,&Dispbuf10);void offall()switch(s1num)case 1:Dispbuf17= ;Dispbuf18= ;break;case 2:Dispbuf14= ;Dispbuf15= ;break;case 3:Dispbuf11= ;Dispbuf12= ;break;case 4:Dispbuf012= ;Dispbuf013= ;Dispbuf014= ;break;case 5:Dispbuf09= ;Dispbuf010= ;break;case 6:Dispbuf06= ;Dispbuf07= ;break;case 7:Dispbuf03= ;Dispbuf04= ;break;default : *Dispbuf0 = ;*Dispbuf1 = ;Write1Line(0,&Dispbuf00);Write1Line(1,&Dispbuf10);六、心得与总结经过万年历的设计,让我学到了很多,让我认识到了学习基础知识的重要性,当设计完整的系统时,要考虑到硬件和软件两者的结合,有时硬件的不足,我们可以用软件程序来弥补,从而节约硬件成本,在设计软件程序时要模块化,可以提高程序的可读性。有一些灵活的技巧就需要我们认真的阅读元件的数据手册,从中索取对自己有用的信息。在这短暂的一个星期课程序设计中,收获知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年济南市章丘区卫生健康局所属事业单位公开招聘工作人员(116人)考前自测高频考点模拟试题含答案详解
- 2025湖北大学博士后、师资博士后招聘考前自测高频考点模拟试题附答案详解(典型题)
- 2025年4月第二批永州市本级就业见习岗位招聘14人考前自测高频考点模拟试题及一套参考答案详解
- 甜甜的秘密教学设计小学音乐人音版五线谱三年级下册-人音版(五线谱)
- 2025年甘肃省兰州新区石化产业投资集团有限公司急需紧缺专业技术岗位招聘14人模拟试卷完整答案详解
- 2025江苏苏州市吴江区引进教育重点紧缺人才12人模拟试卷及答案详解(名师系列)
- 2025第十三届贵州人才博览会贵阳幼儿师范高等专科学校引进高层次及急需紧缺人才模拟试卷及一套参考答案详解
- 2025安徽水安建设集团股份有限公司校园招聘142人笔试题库历年考点版附带答案详解
- 2025贵州大方县人民医院专项引进高层次急需紧缺人才模拟试卷及一套答案详解
- 2025江西青原区文化馆招聘就业见习人员1人考前自测高频考点模拟试题及答案详解(典优)
- 公共营养师考试题库(附答案)四级真题及答案
- 广东省深圳市福田区2024-2025学年八年级上学期语文期中考试试卷(含答案)
- SAP QM质量管理模块配置详解(S4系统)
- 机械制图选择题试题库及答案
- 医院安全警示教育
- 2025届名校名师模拟卷(九)语文试题(PDF版含答案)
- 技术部工作汇报与未来规划
- 学员游泳培训合同协议
- 虚拟电厂综合管理制度
- 2025年周年热点大事件复习课件-【知识精讲精研】高三历史统编版(2019)二轮复习
- 【道法】做自强不息的中国人课件+-2024-2025学年统编版道德与法治七年级下册
评论
0/150
提交评论