1、 编号 淮安信息职业技术学院毕业论文题目基于ATmega16无线环境监测系统的设计学生姓名胡海洋学 号71095034系 部电子工程学院专 业电子信息工程技术班 级710950指导教师杜锋 顾问教师六月摘 要设计一个无线环境监测系统,以ATmega16单片机为控制核心,制作一个终端和2个节点,整个系统采用无线监测系统调制方式,终端能从节点获取节点的环境温度和光照信息,并且节点可以实现中继转发的功能。实践结果表白,该系统可以通过无线的方式对环境温度进行监测。环境监测是指通过对影响环境质量因素的代表值的测定,拟定环境质量(或污染限度)及其变化趋势。随着科技的不断进步,特别是计算机技术和网络技术的不
2、断发展,环境检测由经典的化学分析向仪器与计算机和网络相结合的方式,实现了无线环境的检测。本文中设计了一个无线环境检测系统.以ATmega16单片机为控制核心实际制作一个终端和2个节点,终端能从节点获取节点的环境温度和光照信息,并且节点可以实现中继转发的功能。整个系统采用无线调制方式,收发都使用一个天线,终端发射信号时.将欲传输的信息通过串口输出的电平控制本振的开断从而实现无线调制,后级使用丙类功放发射,接受端节点将天线上的信号进行放大,然后倍压检波,通过自适应比较器解调出数据,最后再向终端回传环境信息。系统以ATmega16单片机作为终端和节点的主控芯片,光照探测山光敏电阻来实现,温度可由单片
3、机内部自带的温度传感器得到,数据的调制、接受采用串口通信,使用VU口来控制天线的收发模式。关键词:ATmega16单片机 1602液晶显示 无线温度传感目 录摘 要I第一章 绪论1第二章 总体设计方案32.1无线环境监测方案论证32.2无线环境监测系统框图3第三章 系统硬件设计53.1单片机最小系统电路设计53.1.1单片机的选型53.1.2 ATmega16 性能指标53.1.3 ATmega16的引脚53.1.4 ATmega16最小系统电路设计63.2显示电路设计73.2.1显示器件的选择73.2.2 1602管脚功能73.2.3 ATmega16与1602的接口电路83.3无线监测电路
4、设计93.3.1 DS18B20无线温度传感器93.3.2 DS18B20结构框图93.3.3 DS18B20无线温度传感器与单片机的接口电路103.4稳压电源电路设计113.4.1稳压电源电路框图113.4.2稳压电源工作原理12第四章 系统软件设计134.1系统软件设计分析134.2 ADC转换程序设计134.3 显示程序流程图14第五章 总结与展望15致 谢17参考文献19附录1 原理图21附录2 源程序23第一章 绪论近年来,随着无线传感器网络技术的迅猛发展,以及人们对于环境保护和环境监督提出的更高规定,越来越多的公司和机构都致力于在环境监测系统中应用无线传感网络技术的研究。环境监测是
5、指通过对影响环境质量因素的代表值的测定,拟定环境质量(或污染限度)及其变化趋势。随着科技的不断进步,特别是计算机技术和网络技术的不断发展,环境检测由经典的化学分析向仪器与计算机和网络相结合的方式,实现了无线环境的检测。本文中设计了一个无线环境检测系统.以ATmega16单片机为控制核心实际制作一个终端和2个节点,终端能从节点获取节点的环境温度和光照信息,并且节点可以实现中继转发的功能。无线传感器网络是由大量分布的不同规格和功能的具有感知、计算和通信能力的微型传感器节点,通过自组织的方式构成的一个以数据为中心的无线网络。大量传感器节点通过互相之间的分工协作,可实时感知、监测和采集分布区域内的监测
6、对象或周边环境的信息。在国防安全、工农业领域各种控制、城市管理、生物医疗、环境监测、抢险救灾、防恐反恐、危险区域远程控制等许多领域都有着重要的科研价值和实用价值,具有十分广阔的应用前景。在工农业生产中,对环境的温度和光照等参数经常会提出一些特殊的规定,甚至规定实现对温度和光照的实时监视和控制。该无线环境监测系统智能化限度高,可实现对周边环境温度和光照信息的探测,并实时显示数据,将采集到的数据进行保存和分析解决,每个探测节点可与监测终端进行无线传输。第二章 总体设计方案2.1无线环境监测方案论证方案一:由于本设计是环境监测电路,可以使用热敏电阻之类的器件运用其感温效应,在将随被测温度变化的电压或
7、电流采集过来,进行A/D转换后,就可以用单片机进行数据的解决,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二:考虑到用无线温度传感器,在单片机电路设计中,大多都是使用无线传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计规定。从以上两种方案,很容易看出,采用方案二,电路比较简朴,软件设计也比较简朴,故采用了方案二。2.2无线环境监测系统框图无线环境监测总体设计方框图如图21所示,控制器采用单片机ATmega16,温度传感器采用DS18B20,用1602来实现
8、温度显示。在整个系统的设计过程中,终点和节点都需要一个主控芯片进行解决。主芯片选用ATmega16系列单片机。在信号调制方面采用了无线传感器调制方案。初始化调用显示子程序1S到?初次上电读出温度值温度计算解决显示数据刷新ADC转换开始命令NYNY图2-1 主程序流程图第三章 系统硬件设计3.1单片机最小系统电路设计3.1.1单片机的选型ATmega16作为温度测试系统设计的核心器件。ATmega16是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和解决速度之间的
9、矛盾。3.1.2 ATmega16 性能指标(1)高性能、低功耗的8位AVR微解决器(2)先进的RISC结构:32个8位通用工作寄存器(3)非易失性程序和数据存储器:可以对锁定位进行编程以实现用户程序的加密(4) JTAG 接口:支持扩展的片内调试功能(5)外设特点:两个具有独立预分频器和比较器功能的8位定期器/计数器;两个可编程的串行USART(6)特殊的解决器特点:片内/片外中断源;6种睡眠模式:空闲模式、ADC噪声克制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式(7)I/0和封装:32个可编程的I/0口(8)工作电压:ATmega16L:2.7-5.5V;AT
10、mega16:4.5-5.5V(9)速度等级8MHz ATmega16L;0-16MHz ATmega16(10) ATmega16L在1MHz,3V,25时的功耗正常模式:1.1mA;空闲模式:0.35mA3.1.3 ATmega16的引脚ATmega16 的引脚图,如图3-1所示。图3-1 ATmega16 的引脚图3.1.4 ATmega16最小系统电路设计ATmega16单片机的最小硬件系统,涉及:复位电路、晶振电路、AD转换滤波电路、串口电平转换电路、JTAG仿真接口,电源。ATmega16最小系统电路图,如图3-2所示。图3-2 ATmega16最小系统电路图ATmega16内置了
11、上电复位设计,并且在熔丝位里可以设立复位时的额外时间,故AVR外部的复位线路在上电路时,可以设计的很简朴:直接拉一只10K的电阻到VCC即可(Rrst)。为了可靠复位,再加上一只0.1uF的电容(Crst)以消除干扰、杂波。IN4148(Drst)的作用有两个:(1)将复位输入的最高电压钳在Vcc+0.5V左右;(2)系统断电时,将Rrst(10K)电阻短路,让Crst快速放电,从而当下一次通电时,能产生有效的复位。在AVR单片机工作期间,按下S-RST(复位按钮)开关再松开时,将在复位脚产生一个低电位的复位脉冲信号,触发AVR单片机复位。ATmega16还内置了RC振荡线路,可以产生1M、2
12、M、4M、8M的振荡频率。但是,内置的毕竟是RC振荡,在一些对时间参数规定较高的场合,比如有要使用AVR单片机的UART与其它的单片机系统或PC机通信时,为了实现高速可靠的通信,就需要比较精确时钟来产生精确的通信波特率,这时就要使用精度高的片外晶体振荡电路作为AVR单片机系统的工作时钟。3.2显示电路设计3.2.1显示器件的选择显示电路使用1602液晶显示模块,它有以下几个优点:(1)显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线显示器那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。(2)数字式接口:液晶显示器是数字式的,和单片机系统
13、的接口更加简朴可靠,操作更加方便。(3)体积小、重量轻:通过显示屏上的电极控制液晶分子状态来得到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。(4)功耗低:液晶显示器的功耗重要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。3.2.2 1602管脚功能1602的管脚图,如图3-3所示。图3-3 1602的管脚图1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多余来的2条线是背光电源线 。VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全同样,其中由表3.1可见。表3.1 引脚与功能引脚符号功能说明1VSS一般接地2VDD接电源(+5V
14、)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、
15、双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15BLA背光电源正极16BLK背光 电源负极寄存器选择控制表,由表3.2可见 表3.2 寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注:关于E=H脉冲开始时初始化E为0,然后置E为1,再清0。busy flag(DB7):在此位为被清除为0时,LCD将无法再解决其他的指令规定。 3.2.3 ATmega16与
16、1602的接口电路ATmega16与液晶模块1602的接口电路,如图3-4所示图3-4 液晶显示1602与ATmega16的接口电路3.3无线监测电路设计3.3.1 DS18B20无线温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改善型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际规定通过简朴的编程实现912位的数字值读数方式。DS18B20的性能特点如下:(1)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;(2)无须外部器件;(3)可通过数据线供电,电压范围为3.05.5;(4)零待机功耗;(5)温度以9或12
17、位数字;(6)用户可定义报警设立;(7)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。3.3.2 DS18B20结构框图DS18B20采用3脚PR35封装,其框图如图3-5所示。DS18B201 2 3GND I/O VDD图3-5 PR35封装DS18B20有三个重要数字部件:1)64位激光ROM,2)温度无线传感器,3)非易失性温度报警触发器TH和TL。R1R0分辨率/位温度最大转向时间/ms00993.750110187.510113751112750 表3.3 DS18B20温度转换时间表由表3.3可见,DS18B20温度转换的时间比较长,并且分辨率越高,所需要的
18、温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。当符号位S=0时,表达测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表达测得的温度值为负值,要先将补码变成原码,再计算十进制数值。DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中尚有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完毕温度测量。计数门的启动时间由高温度系数振荡器来决定,每次测量前,一
19、方面将55所相应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在55所相应的一个基数值。此外,由于DS18B20单线通信功能是分时完毕的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令解决数据。3.3.3 DS18B20无线温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3-6 所示单片机端口接单线总线,为保证在有效的DS18B2
20、0时钟周期内提供足够的电流,可用一个MOSFET管来完毕对总线的上拉。图3-6 DS18B20与单片机的接口电路当DS18B20处在写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉启动时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。3.4稳压电源电路设计3.4.1稳压电源电路框图稳压电源电路框图,如图3-7所示启动电路基准电压误差放大短路保护过热保护恒流源调整管安全工作区保护输入地输出RscRARB图3-7稳压电源电路框图3.4.2稳压电源工作原理稳压电源电路重要由电源变压器、桥式整流电路、电容及三端稳压器组成。三端稳压器采
21、用LM7805集成稳压器。如图3-8所示电路为输出电压+5V、输出电流1.5A的稳压电源。它由电源变压器T1,桥式整流电路D1D4,滤波电容C1、C3,防止自激电容C2、C3和一只固定式三端稳压器(7805)极为简捷方便的搭成的。图3-8 稳压电路图220V交流市电通过电源变压器变换成交流低压,再通过桥式整流电路D1D4和滤波电容C1的整流和滤波,在固定式三端稳压器LM7805的Vin和GND两端形成一个并不十分稳定的直流电压(该电压经常会由于市电电压的波动或负载的变化等因素而发生变化)。此直流电压通过LM7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。本稳
22、压电源可作为TTL电路或单片机电路的电源。三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。第四章 系统软件设计4.1系统软件设计分析运用无线传感器对环境进行监测,无线温度传感器是与ATmega16单片机进行电路设计的无线传感器。需要通过软件设计与分析才干进行无线环境监测。软件部分重要涉及:1602显示转换程序、ADC转换程序、LCD初始化程序。主程序的重要功能是负责温度的实时显示、读出并解决DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测
23、量一次被测温度。4.2 ADC转换程序设计温度转换命令子程序重要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完毕。温度转换命令子程序流程图如图4-1所示发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图4-1 ADC转换流程图转换程序/*函数功能:初始化ADC入口参数:无返回值:无*/void init_ADC(void)ADMUX=0x40;/内部5v基准电源,ADC 转换结果右对齐,单端输入ADC0 ADCSRA=0xff;/ADC使能,开始转换,自动触发,中断标志,中断使能,128预分频 SFIOR=(0A
24、DTS2)|(0ADTS1)|(0ADTS0);/连续转换模式/*函数功能:数据解决入口参数:adc_datah,adc_datal返回值:无*/void data_do(uint adc_datadh,uint adc_datadl) uint temp_1,temp_2,temp_3; temp_1=adc_datadh*256; temp_2=adc_datadl; temp_3=temp_1+temp_2; temp_4=(long)(temp_3 * 5) / 1.024; NYN无线温度显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束Y图4
25、-2显示流程图4.3 显示程序流程图第五章 总结与展望通过将近一个月的单片机课程设计,终于完毕了我的无线环境监测系统的设计,虽然没有完全达成设计规定,但从心底里说,还是快乐的,通过自己的努力完毕毕业设计!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件系统的设计,需要有很巧妙的程序算法,虽然以前也有编写过几次程序,但我觉的写好一个程序并不是一件简朴的事,有好多的东西,只有我们去试着做了,才干真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。通过毕业设计论文让我更多的学会了去收集资料,去自主的学习。不仅能掌握学习技巧
26、还能学到课外知识,更加丰富了我的大学生活。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序的设计只有在经常的写与读的过程中才干提高,硬件的操作只有一次次的实验才干成功,这就是我在这次课程设计中的最大收获。致 谢在论文完毕之际,我一方面向关心帮助和指导我的指导老师杜锋老师表达衷心的感谢并致以崇高的敬意!在论文工作中,碰到了很多的困难,一直得到杜锋老师的亲切关怀和悉心指导,使我克服了这些。杜锋老师以其渊博的学识、严谨的治学态度、求实的工作作风和他灵敏的思维给我留下了深刻的印象,我将终生难忘。再一次向他表达衷心的感谢
27、,感谢他为学生营造的浓郁学术氛围,以及学习、生活上的无私帮助! 值此论文完毕之际,谨向杜锋老师致以最崇高的谢意!在学校的学习生活即将结束,回顾两年多来的学习经历,面对现在的收获,我感到无限欣慰。为此,我向热心帮助过我的所有老师和同学表达由衷的感谢!特别感谢我的师兄、师姐以及班主任对我的学习和生活所提供的大力支持和关心!还要感谢一直关心帮助我成长的室友(、)在我即将完毕学业之际,我深深地感谢我的家人给予我的全力支持!最后,衷心地感谢在百忙之中评阅论文和参与答辩的各位专家、专家!参考文献1.彭同明,徐学勤.单片机原理及应用M.北京:中国电力出版社,20232.潘勇,孟庆斌.基于DSl 8B20的多
28、点温度测量系统设计电子量技术,20233.昂志截,金海红.基于ATmega16的无线传感器网络节点的设计与通信实现J.现代电子技术,20234.李文伸,段朝玉.短距离无线数据通信入门与实战M.北京:北京航空航天大学出版社,20235.李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19986.李广弟.单片机基础M.北京:北京航空航天大学出版社,19947.廖常初.现场总线概述J.电工技术,19998. 谢自美.电子线路综合设计M.武汉:华中科技大学出版社,20239. 夏继强.单片机应用设计培训教程实践篇M.北京:北京航空航天大学出版社,202310. 王毅.单片机器
29、件应用手册M.人民邮电出版社,199511. 康华光.电子技术基础(模拟部分)(第五版)M.武汉:华中科技大学出版社,2023附录1 源程序/*8M晶振条件*/#include #include #define uchar unsigned char#define uint unsigned int#define nop() asm(nop)#define Ds18b20_Port PORTB#define Ds18b20_DDR DDRB#define Ds18b20_PIN PINB#define SIO 7/* DS18B20操作定义*/#define CLR_DS18B20Ds18b2
30、0_Port&=(1 SIO )/数据线强制拉低#define SET_DS18B20Ds18b20_Port|=(1SIO)/数据线强制拉高,上拉#define HLD_DS18B20Ds18b20_DDR|=(1SIO)/Mega16控制总线#define RLS_DS18B20 Ds18b20_DDR&=(1 SIO ) /释放总线#define STU_DS18B20Ds18b20_PIN&=(1SIO)/数据线的状态#define RS_1 PORTB|=(10)#define RS_0 PORTB&=(10)#define RW_1 PORTB|=(11)#define RW_0
31、PORTB&=(11)#define E_1 PORTB|=(16)#define E_0 PORTB&=(10;i+);/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/ void delay(unsigned char n) unsigned char i; for(i=0;in;i+) delay1ms(); /*函数功能:判断液晶模块的忙碌状态返回值:resu
32、lt。result=1,忙碌;result=0,不忙*/ unsigned char BusyTest(void) unsigned char result; DDRD=0X00; RS_0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW_1; E_1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反映时间 result=PIND; /将忙碌标志电平赋给result result=result&0x80; E_0; return result; /*函数功能:将模式设立指令或显示地址写入液晶模
33、块入口参数:dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest(); /假如忙就等待 DDRD=0XFF; RS_0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW_0; E_0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反映时间 PORTD=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空
34、操作四个机器周期,给硬件反映时间 E_1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反映时间 E_0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 函数功能:初始化ADC入口参数:无返回值:无*/void init_ADC(void)ADMUX=0x40;/内部5v基准电源,ADC 转换结果右对齐,单端输入ADC0 ADCSRA=0xff;/ADC使能,开始转换,自动触发,中断标志,中断使能,128预分频 SFIOR=(0ADTS2)|(0ADTS1)|(0ADTS0);/连续转换模式/*函数功能:数据解决入口参
35、数:adc_datah,adc_datal返回值:无*/void data_do(uint adc_datadh,uint adc_datadl) uint temp_1,temp_2,temp_3; temp_1=adc_datadh*256; temp_2=adc_datadl; temp_3=temp_1+temp_2; temp_4=(long)(temp_3 * 5) / 1.024; /*函数功能:用1602显示转换后的数据入口参数:无返回值:无*/void show_data(void) WriteAddress(0x47); WriteData(temp_4/1000+0x30
36、); WriteData(temp_4/100)%10+0x30); WriteData(temp_4%100)/10+0x30); WriteData(.); WriteData(temp_4%100%10+0x30); WriteData(c); WriteData(m);#pragma interrupt_handler ADC_end:15/ADC 转换结束中断服务程序void ADC_end(void) uint adc_datal,adc_datah;ADCSRA&=BIT(ADIE); /关转换结束中断adc_datal=ADCL;adc_datah=ADCH;data_do(a
37、dc_datah,adc_datal);show_data();ADCSRA|=BIT(ADIE); /开转换结束中断void main() uint temp_h,temp_t,temp_p,temp_z1,temp_z2; uint temp,temp1; uchar temp_count; PORTD=0XFF; DDRD=0XFF; PORTB=0XFF; DDRB=0XFF; DDRA=0X00; CLI();/disable all interrupts init_ADC(); LcdInitiate(); WriteAddress(0x40); WriteData(H); Wri
38、teData(e); WriteData(i); WriteData(g); WriteData(h); WriteData(t); WriteData(:); while(1) CLI();/disable all interrupts temp=readTempDS18B20(); temp1=(float)temp*0.625; temp_h=(uint)temp1/1000+0x30; temp_t=(uint)temp1%1000/100+0x30; temp_p=(uint)temp1%1000%100/10+0x30; temp_z2=(uint)temp1%10+0x30; WriteAddress(0x00); WriteData(T); WriteData(e); WriteData(m); WriteData(p); WriteData(:); WriteData(temp_t); WriteData(temp_p); WriteData(.); WriteData(temp_z2); WriteData(0XDF); WriteData(C); SEI(); /re-enable interrupts delay(800); 附录2 源程序