2011基于单片机设计带温度检测的时钟

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于单片机设计带温度检测的时钟李秋霞徐辉高建阳(电信学院08级电子2班)摘要:随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,尤其是各种智能化的仪器、仪表在农、工业的广泛应用给社会带来了极大的便利。本文就是一个实现温度时间双显示的例子。它完成了从温度的采集、显示以及控制和时间显示等一系列任务。广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和时间的显示。关键词:温度检测,时钟,STC89C52,DS18B20一、方案论证按照系统设计功能的要求,本温度时钟的设计采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制确定系统时钟、温度的检测和显示。确定设计系统由单片机主控模块、测温模块、整点报时模块、显示模块、键盘接口模块五个模块组成。电路系统图如图1所示。图1(1)时钟方案选择时钟功能的实现有两种方案:一是用软件实现,直接用单片机的定时器编程以实现时钟;二是专门的时钟芯片实现时钟的时计,再把时间数据送入单片机,由单片机控制显示。比较两种方法,方案一相对方便一些,所以选择方案一。(2)显示方案选择方案一:液晶显示,适合于显示数据比较多的设计;方案二:用数码管,显示的信息较少,适合显示量小的。所以选择方案二。(3)测温元件方案选择方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,再将随着温度变化的电压或电流采集过来,进行A/D转换后,用单片机进行数据的处理,就可以将所测温度显示出来。这种设计需要用到A/D转换电路,测温电路较复杂;方案二:温度传感器DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度。通过比较我们选择方案二。二、系统硬件电路的设计电路设计原理图如图2所示,采用STC89C52单片机,最小化应用程序;P0口输出段码数据,P1.0,P1.1,P1.2口接三个按钮开关,用于调节时间,具有改变当前时间数值功能,P3.7口接温度传感器,用于温度的测量。温度传感器使用DS18B20,用4DS18B20STC89C52主控制器显示模块键盘部分报时模块位共阳LED数码管以动态扫描法实现温度显示。采用12MHz晶振,有利于提高通信波特率的准确性。图21、主控制器单片机STC89C52具有低电压供电和小体积等特点,其端口刚好满足电路系统的设计需要,很适合便携手持式产品的设计使用。2、显示电路显示电路采用8位共阳LED数码管,从P0口输出段码,列扫描用P2.2~P2.7口来实现,列驱动用9018三极管。3、流程图主程序框图如图3所示:开始显示缓冲区初始化T0初始化TH0,TL0装入初值必要参数初始化图3计时工作流程三、温度数据的计算处理方法从DS18B20读取的二进制数值必须先转换成十进制数值,才能用于字符的显示。因为DS18B20的转换精度为9~12为可选,为了提高精度采用12位。在采用12位精度时,温度寄存器里的值是以0.0625为步进,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。通过观察表1可以发现一个十进制值和二进制值之间有很明显的关系,就是把二进制高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就是温度值的百、十、个位值,而剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。因为小数部分是半字节,所以二进制值的范围是0~F,转换成十进制小数值就是0.0625的倍数(0~15倍)。这样需要4位数码管来显示小数部分,实际应用不必有那么高的精度,采用1位数码管来显示小数,可以精确到0.1Co。表2就是小数部分二进制和十进制的近似对应关系表。表2DS18B20温度与测得值对应表温度∕Co二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H表3小数部分二进制和十进制的近似对应关系表小数部分二进制值0123456789ABCDEF等待中断T0工作并开中断十进制值0112334456678899四、调试及性能分析系统调试以程序为主。硬件调试比较简单,首先检查电路的焊接是否正确,然后用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的准确性检验,然后分别进行主函数、DS18B20复位函数、DS18B20写字节函数、DS18B20读字节函数、温度计算转换函数、整点报时函数、时间调整函数、显示函数等程序的编程及调试。由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读∕写编程时必须严格地保证读∕写时序,否则将无法读取测量结果。本程序采用单片机C语言编写,用KeilC51编译器编程调试。软件调试到能显示温度值,而且在有温度变化时(例如用手去接触),显示温度能改变就基本完成。性能测试可以用制作的温度计和已有的成品温度计来同时测量比较。由于DS18B20的精度很高,所以误差指标可以限制在±0.5Co以内,另外-55~+125Co的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持式待测温度的电子钟。五、注意问题在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦DS18B20接触不好或断线,当程序读DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。六、结束语本设计可以测量并显示温度值,温度测量误差小,温度显示稳定。可交替显示当前测量时间、温度;可调整显示时间;可设置闹钟,能启动整点报时;具有掉电保护功能。参考文献[1]黄小波.基于STC89C52单片机与DS18B20的温度监控系统,2008[2]李光飞,李良儿,楼然苗等编著.单片机C程序设计实例指导,北京航天航空大学出版社,2005

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功