您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 基于18B20与1302温度测量和实时时钟设计书
第1页共22页温度测量设计摘要本设计采用80c51单片机、DS18B20、DS1302为核心设计温度显示以及年月日、星期和时间的显示。单片机技术在设计中所体现在出来的优势越来越明显,它不仅是电子信息类专业的一个重要部分,而且在其它类专业工程中也是不可缺少的。广泛地应用于家电、工业过程控制、仪器仪表、智能武器、航空和空间飞行器等领域发展更是迅速。一、方案设计与论证方案一:用EDA技术及VHDL语言控制来实现显示及测温度,且显示也可以用数码管,但是数码管屏幕有限不是很方便的显示很多的数据以及文字等。故不采用此方案。方案二:用C语言编程来控制单片机让它在传输数据及文字。单片机结构简单、控制功能强、可靠性高、体积小、价格低等优点,以及液晶屏幕可以完整的同时显示数据及文字等内容。综合上述方案的选择与比较,虽然都能实现但是考虑到实际应用中的经济、可靠运行,我们决定采用方案二。二、系统设计本次设计主要用1302时钟芯片及单片机控制程序让它在液晶上显示年、月、日、时、分、秒及星期,同时用18B20温度传感器来接受外面的信号,单片机将接受到的信号输出,且让它在液晶上显示测的温度。时、分、秒的计数结果经过数据处理可直接送显示器显示。当计时发生误差的时候可以用键盘校时电路进行校正。时计数器计满24小时后自动向日计数器进一,日计数器由平年、闰年的28/30/31对大、小月和二月的判断应与当月相应的日期相一致,当日计数器计满时,向月计数器进位,月计数器计满12月时向年计数器进位,当年计数器计满100时计数器清零。设计采用的是年、月、日和时、分、秒、星期以及温度的同时显示。设计电路主要由五大模块构成:温度采集模块,单片机控制电路,键盘,时钟芯片,显示电路。单片机实现液晶显示万年历以及温度总框图1、单片机接口电路单片机接口电路原理图时钟芯片第2页共22页单片机是由CPU、程序存储器、数据存储器、I/O接口、定时、计数器、中断系统等集成到一块芯片上,形成单片形态的计算机。2、温度采集模块温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。3、显示模块显示模块原理图第3页共22页此次设计我们采用了字符型液晶显示,此模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。1602字符型液晶显示器实物图。1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:1为高电平、0为低电平)。芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0—D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0—D7=数据写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉冲输出无4、键盘设置为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正液晶上显示的时间。键盘模块原理图第4页共22页5、1302实时时钟芯片DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。1302电路原理图如图6、蜂鸣器电路原理图第5页共22页三、系统调试1、软件调试软件调试的任务是利用ISIS开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现仿真结果故障。程序的调试应一个模块一个模块地进行,我们首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。调试的基本步骤如下:(1)、修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。例如将DISP0~DISP5单元置为“012345”,应能在LCD上从左到右显示“012345”。若显示不正确,可在中断子程序相应位置设置断点调试检查。然后修改计时缓冲区内容,调用拆字程序,调试显示模块。(2)、运行主程序调试模块,不按下任何键,检查是否能开始正确显示。若不能正确显示,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC单元是否随断点运行而变化。然后屏蔽缓冲区初始化部分,用仿真器修改万年历显示缓冲区内容为2008年12月12日,运行主程序(调进位键),检验能否正确进位,以及试调时间看能否正确的进位,以及温度显示。(3)、调试键盘扫描模块,先用延时5ms子程序代替显示子程序延时消抖,第6页共22页在求取键号后设置断点,中断后观察A累加器中的键号是否正确;然后恢复用显示子程序延时消抖,检验与显示模块能否正确连接。(4)、调试时间设置模块。首先屏蔽COMB子程序,单独调试键盘设置模块,观察显示缓冲区DISP0~DISP5单元的内容是否随键入的键号改变,以及键号能否在LCD上显示。然后屏蔽子程序,单独调试合字模块。(5)、运行主程序联调,检查能否用键盘修改当前万年历,时间,以及温度能否正确显示。2、硬件调试(1)元器件明细表:参数元件名封装参数元件名封装1KR5AXIAL0.3CON2J1SIP2.1KR1AXIAL0.3CON4J3SIP41KR7AXIAL0.3CON9J4SIP91KR6AXIAL0.3DIODED2AXIAL0.44.7KR3AXIAL0.3DS18B20U2SIP310kR2VR5DS1302U4DIP811.0592MHZY1JZLCD1602U3160222uC3rb.2/.4LEDD1DIODE0.130pC2RAD0.3PNPQ1VR530pC1RAD0.3RES2R9AXIAL0.330pC6RAD0.3SPEAKERLS1SP30pC7RAD0.3SW-PBS1AN32.768KHzY2DIODE0.1SW-PBS2AN200R8AXIAL0.3SW-PBS3AN(2)原理图的绘制和注意事项①蜂鸣器驱动电路一般都包含以下几个部分:一个三极管、一个蜂鸣器、一个续流二极管。蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。②在设计原理图时注意上拉电阻,下拉电阻的使用,在必要时要加阻值合适的电阻,是电路更加完善。(3)电路原理图:第7页共22页(3)PCB的设计和注意事项①在原理图定义元件封装的时候,要根据元器件实际大小进行定义,如果库里没有的话自己再绘制一个。②在放置元器件时,一定要考虑元器件的实际尺寸大小(所占面积和高度)、元器件之间的相对位置,以保证电路板的电气性能和生产安装的可行性和便利性同时,应该在保证上面原则能够体现的前提下,适当修改器件的摆放,使之整齐美观,如同样的器件要摆放整齐、方向一致。这个步骤关系到板子整体形象和下一步布线的难易程度,所以一定要花大力气去考虑。PCB布线时要设定好焊盘的尺寸大小与实际器件相一致,信号线、电源线和地线的宽度要合适。(4)PCB图第8页共22页(5)焊接的注意事项万年历的制作过程中焊接最容易出现问题,在焊接前,必须先对元器件的PCB图和原理图,以免防止元器件的正负极接反或者把元器件接错。在焊接时要注意虚焊,根据焊接的经验,在焊点处焊锡是尖角的,一般都是焊实了;如果焊点处出现圆颗状,则容易出现虚焊,元器件的管脚可能没有焊实,出现接触不良的情况。检查是否虚焊可以在完成焊接后,接上电源,看电路是否能正常工作,如果不行,则可以用数字万用表进行检测。用数字万用表检测,可以很方便的检测出电路的通断,判断在做板的时候是否有断路,也很容易检测是否虚焊。四、软件程序#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^7;////18b20信号端定义sbitRW=P2^3;////1602读写端定义sbitRS=P2^2;////1602数据指令端定义sbitE=P2^4;////1602使能端定义sbitIO=P1^1;////1302数据端定义sbitCLK=P1^0;////1302时钟端定义sbitRST=P1^2;////1302复位端定义第9页共22页sbitSPEAKER=P2^7;sbitACC0=ACC^0;sbitACC7=ACC^7;uchartime,ge=0,shiwei=0,bai=0,xiaoshu=0,l,k;ucharcodetab[]=0123456789.-NO18B20;ucharcodetab1[]=day-:;ucharnian,nian1,nian2;ucharyue,yue1,yue2;ucharri,ri1,ri2;ucharshi,shi1,shi2;ucharfen,fen1,fen2;ucharmiao,miao1,miao2;ucharday,key=0;sbittiaozheng=P3^1;//////时间调整模式及暂停按钮sbitjia=P3^2;////////时间调整加按钮sbitjian=P3^3;///////时间调整减按钮sbitqidong=P3^4;/////定义时间启动按钮bitflag,flagfu;////18b20检测标志位和负温度显示标志位////////延时子函数///////voiddelay(ucharz){uchari,j;for(i=z;i0;i--)for(j=110;j0;j--);}/////初始化18b20子函数////////voidchushihua18b20(){DQ=1;_nop_();DQ=0;for(time=0;time200;time++);DQ=1;for(time=0;time10;time++);flag=DQ;for(time=0;time80;time++);DQ=1;for(time=0;time120;time++);}//////向18b20写指令子函数///////voidxiezhiling18b20(ucharzhiling)第10页共22页{uchari;for(i=0;i8;i++){DQ=1;_nop_();DQ=0;_nop_();DQ=zhiling&0x1;for(time=0;time15;time++);DQ=1;zhiling=1;_nop_();}}///////读取18b20温度子函数////////uchardu18b20(void){uchari,wendu;for(i=0;i8;i++){DQ=1;_nop_();DQ=0;_nop_();DQ=1;for(time=0;time2;time++);wendu=1;for(time=0;time1;time++);if(DQ==1){wendu=wendu|0x80;}else{wendu=wendu|0x00;}for(time=0;time10;time++);}return(wendu);}///////向1602写指令子函数/////////第11页共22页voidxiezhiling1602(ucharzhiling){RS=0;E=0;delay(5);P0=zhiling;E=1;delay(5);E=0;}//////向1602写数据子函数////////voidxieshuju1602(ucharshuju){RS=1;E=0;delay(5);P0=shuju;E=1;delay(5);E=0;}////显示查表子函数1/////////voiddesplay(ucharweizhi,ucharshuju){x
本文标题:基于18B20与1302温度测量和实时时钟设计书
链接地址:https://www.777doc.com/doc-3296135 .html