基于单片机的温度显示报警器(共40页)_第1页
基于单片机的温度显示报警器(共40页)_第2页
基于单片机的温度显示报警器(共40页)_第3页
基于单片机的温度显示报警器(共40页)_第4页
基于单片机的温度显示报警器(共40页)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录 TOC o 1-3 h z u HYPERLINK l _Toc430813900 第1章 绪 论3 HYPERLINK l _Toc430813902 1.1设计内容以及详细功能3 HYPERLINK l _Toc430813903 1.2设计目的3 HYPERLINK l _Toc430813904 第2章 方案论证4 HYPERLINK l _Toc430813905 2.1温度传感器的选择4 HYPERLINK l _Toc430813906 2.2显示器的选择5 HYPERLINK l _Toc430813907 2.3单片机的选择5 HYPERLINK l _Toc4308

2、13908 第3章 硬件电路的设计6 HYPERLINK l _Toc430813909 3.1 主控制器6 HYPERLINK l _Toc430813910 3.1.1 STC89C52的介绍6 HYPERLINK l _Toc430813911 3.1.2 DS18B20的介绍7 HYPERLINK l _Toc430813912 3.2 单片机最小系统设计10 HYPERLINK l _Toc430813913 3.2.1 时钟电路10 HYPERLINK l _Toc430813914 3.2.2 复位电路11 HYPERLINK l _Toc430813915 3.3 DS18B2

3、0与单片机接口电路的设计12 HYPERLINK l _Toc430813916 3.4 显示电路的设计13 HYPERLINK l _Toc430813917 3.4.1 LED数码管主要技术参数13 HYPERLINK l _Toc430813918 3.4.2 LED数码管的引脚说明13 HYPERLINK l _Toc430813919 第4章 系统程序的设计15 HYPERLINK l _Toc430813921 4.1主程序15 HYPERLINK l _Toc430813922 4.2读出温度子程序15 HYPERLINK l _Toc430813923 4.3 温度转换命令子程

4、序16 HYPERLINK l _Toc430813924 4.4计算温度子程序17 HYPERLINK l _Toc430813925 4.5 温度数据的计算处理方法17 HYPERLINK l _Toc430813926 结 论19 HYPERLINK l _Toc430813927 参考文献20 HYPERLINK l _Toc430813928 附录21第1章 绪 论1.1设计(shj)内容以及详细功能采用(ciyng)89C51单片机和温度传感器DS18B20设计一种(y zhn)数字温度计,测量精度为0.1,由按键设定报警上下限值TH和TL,采用点阵字符型液晶模块作为数字温度计的显

5、示器。当实测温度超过设定温度限制范围时,发出声光报警信号。1.2设计目的随着电子技术的发展,人们的生活日趋数字化,多功能的数字温度计可以给我们的生活带来很大的方便;支持“一线总线”接口的温度传感器简化了数字温度计的设计,降低了成本;以美国MAXIM/DALLAS半导体公司的单总线温度传感器DS18B20为核心,以ATMEL公司的AT89S51为控制器设计的DS18B20温度控制器结构简单、测温准确、具有一定控制功能的智能温度控制器。本课题研究的重要意义在于生产过程中随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数,就需要受制于

6、现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是数字温度传感器技术,在我国各领域已经应用的非常广泛可以说是渗透到社会的每一个领域,与人民的生活和环境的温度息息相关。第2章 方案(fng n)论证若采用一般温度传感器采集温度信号,则需要设计信号调理(tio l)电路、A/D 转换及相应(xingyng)的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。这样,由于各种因素会造成检测系统较大的偏差;又因为检测环境复杂及各种干扰的影响,会使检测系统的稳定性和可靠性下降 。所以温度检测

7、系统的设计的关键在于:温度传感器的选择。温度传感器应用范围广泛、使用数量庞大,也高居各类传感器之首。温度传感器的选择方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,这样就使得测温装置的结构较复杂. 方案二:采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100摄氏度时,最大线形偏差

8、小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS1820和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大,且由于AT89C51可以带多个DSB1820,因此可以非常容易实现多点测量.轻松的组建传感器网络。采用温度芯片DS18B20测量温度,可以体现系统芯片化这个趋势。部分功能电路的集成(j chn),使总体电路更简洁,搭建电路和焊接电路时更快。而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。所以集成芯片的使用将成为电路发展的一种趋势。本方案应用这一温度芯片,也是

9、顺应这一趋势。显示器的选择(xunz)方案(fng n)一:采用传统的七段数码LED显示器。LED虽然价格便宜,且能够满足一般的要求显示0-9字符,但是现代的许多仪表、各种电子产品显示要求很高,在这些产品中已经逐渐被LCD所取代。方案二:采用LCD液晶屏进行显示。LCD液晶显示器是一种低压、微功耗的显示器件,只要23伏就可以工作,工作电流仅为几微安,是任何显示器无法比拟的,同时可以显示大量信息,除数字外,还可以显示文字、曲线,比传统的数码LED显示器显示的界面有了质的提高。在仪表和低功耗应用系统中得到了广泛的应用。优点为:(1)由于数码管价格便宜且容易驱动。(2) 功率消耗小,相比而言数码管显

10、示器的主要功耗在内部电极和驱动IC上,因而耗电量比其他器件要小很多。虽然LCD液晶屏的功能强大,但数码管的足以实现温度的显示,所以在本设计中采用数码管显示。单片机的选择(xunz)对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而(yn r)不适用。STC89C52是STC公司生产的一种低功耗高性能CMOS8位微控制器,具有8k在系统可编程Flash储存器。其使用经典的MCS-51内核,但做了很多的改进使得芯片(xn pin)具有传统51单片机不具备的功能。在芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C5

11、2为众多嵌入式控制应用系统提供高灵活超有效的解决方案。所以这次选择STC89C52。第3章 硬件电路的设计3.1 主控制器STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。3.1.1 STC89C52的介绍STC89C52引脚如图3-1-1所示:图3-1-1 STC89C52引脚图3.1.2 DS18B20的介绍(jisho)许多情况下需要测量(cling)温度参数。通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。但采用热敏电阻

12、的测温系统需要AD转换,而且测量精度不高。本文采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、AD转换于一体,其测量范围宽(-55+125),精度高(0.0625),DS18B20是一款具有单总线结构的器件。由DS18B20组建的温度测量单元体积小,便于携带、安装。同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级AD转换,控制简单。由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个(du )DS18B20来组建温度测量网络。图3-1-2 DS18B20的实物(shw)管脚分布图(1)引脚功能(gngnng)说明GND是地址(dzh)信

13、号;DQ是数据输入/输出引脚,开漏单总线接口引脚,当被用在寄生电源下,也可以向器件提供电源;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 (2)DS18B20内部结构及功能图3-1-3 DS18B20内部结构DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构如3.1-3图所示,主要包括:寄生电源,温度传感器,64位ROM和单总线接口,存放中间数据(shj)的高速暂存器RAM,用于存储用户设定温度上下限值的TH和TL触发器,存储与控制逻辑,8位循环冗余校验码(CRC)发生器等7部分。如上图3-1-3所示(3)DS18B20的测温原理(yunl) 如图3-1-4所示,图中

14、低温度系数振荡器的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给(sn i)减法计数器1;高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。预置斜率累加器低温度系数振荡器减法计数器1预置减到0温度寄存器计数比较器高温度系数振荡器减法计数器2减到0 图3-1-4 DS18B20测温原理图图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生(chnshng)的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器和温度寄存

15、器被预置在-55 所对应的一个基数值。减法计数器1对低温度(wnd)系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,并重新开始对低温度系数振荡器产生的脉冲信号进行计数。如此循环,直到(zhdo)减法计数器2计数到0时,停止温度计数器值的累加,此时温度寄存器中的数值就是所测温度值。图3-1-4中的斜率累加器用于补偿和修正测温过程的非线形性,直到温度寄存器达到被测温度值。另外,DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读/写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS

16、18B20(发复位脉冲发ROM功能命令发存储器操作命令处理数据。3.2 单片机最小系统(xtng)设计单片机最小系统(xtng)就是指能使单片机工作的最少的器件构成的系统。因为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。3.2.1 时钟(shzhng)电路图3-2-1是时钟电路的PROTEUS仿真图。图3-2-1时钟电路单片机允许的振荡晶体可在1.224MHz之间选择,一般为11.0592MHz。电容C2,C3的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20100pF之间选择,典型值位30pF。3.2.2 复

17、位电路计算机每次开始(kish)工作,CPU和系统中的其他部件都必须要有一个确定的初值,即复位状态。图3-2-2是单片机复位(f wi)电路仿真图。图3-2-2 复位(f wi)电路单片机RST引脚是高电平有效。单片机在上电瞬间C1充电,RST引脚端出现正脉冲,只要RST断保持两个机械周期(大约10ms)以上的高电平,单片机就能复位。在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。当晶体振荡频率为12MHz时,RC的典型值为C=10F,R=8.2K。3.2.3 最小系统图3-2-3 单片机最小系统(xtng)3.3 DS18B20与单片机接口(ji ku)电路的设计

18、 DS18B20可以采用两种供电方式:一种是采用电源供电方式,此时DS18B20的第1引脚接地,第2引脚作为(zuwi)信号线,第3引脚接电源;另外一种是寄生电源供电方式当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最长为500ms。采用寄生电源供电方式时,VDD和GND端接地。由于单线制只有一根线,因此发送接口必须是三态的。3.4 显示(xinsh)电路的设计3.4.1 LED数码管主要(zhyo)技术参数 图3-4-1 数码管 数码管使用(shyng)条件: a、段及小数点上加限流电阻; b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色

19、决定; c、使用电流:静态:总电流 80mA(每段 10mA); 动态:平均电流 4-5mA; 峰值电流 100mA; 上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的,4位数码管引脚图数码管使用注意事项说明:()数码管表面不要用手触摸,不要用手去弄引角;()焊接温度:度;焊接时间:()表面有保护膜的产品,可以在使用前撕下来。3.4.2 LED数码管的引脚说明这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LE

20、D的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个LED分别与上面那个图中的ADP各段相对应,通过控制(kngzh)各个LED的亮灭来显示数字。 图3-4-2(1) 共阳数码管内部结构 图3-4-2(2) 共阴数码管内部结构第4章 系统程序(chngx)的设计4.1主程序 主程序主要功能是负责温度的实时显示(xinsh)、读出处理DS18B20的测量温度值。主程序流程图如图4-1所示:开始调用显示子程序显示当前四路温度初始化Y读取并显示序列号图4-1 主程序流程图4.2读出温度(wnd)子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验

21、,校验有错时不进行温度数据的改写。读出温度子程序流程图如图4-2所示: 开始复位DS18B20发跳过ROM命令发出温度转换命令转换完毕复位DS18B20发匹配ROM命令发1个DS18B20序列号读温度值存入储存器指向下一个延时NY图4-2 读出温度(wnd)子程序流程图4.3 温度转换(zhunhun)命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待(dngdi)转换的完成。温度转换命令子程序流程图如图4-3所示:发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图4-3 温度转换命令子程

22、序流程图4.4计算(j sun)温度子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算(yn sun),并进行温度值正负的判定。计算温度子程序流程图如图4-4所示:开始温度零下?温度值取补码置“-”标志位计算小数位温度BCD值计算小数位温计算小数位温度BCD值度BCD值结束置“+”标志NY图4-4 计算(j sun)温度子程序流程图4.5 温度数据的计算处理方法 从DS18B20读取出的二进制值必须转换成十进制值,才能用于字符的显示。DS18B20的转换精度为912位,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为寄存器里的二进制

23、值乘以0.0625,就是实际的十进制温度值。通过观察表4-5可以发现,一个十进制与二进制间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制化为十进制后,就是温度值的百、十、个位字节,所以二进制值范围是0F,转换成十进制小数就是0.0625的倍数(015倍)。这样需要4位的数码管来表示小数部分。实际应用不必这么高的精度,采用(ciyng)1位数码管来显示小数,可以精确到0.1。表4-5 二进制与十进制的近似对应(duyng)关系表小数部分二进制值0123456789ABCDEF十进制值0011233455667889结 论该基于DS18B20的多点温度

24、测量系统具有硬件结构简单、易于制作、价格低廉、测量值精确和易于操作等许多优点,但由于实验室条件所限,暂时只做四点的温度测量。但在实际应用中可根据具体情况进行更多点的扩展和对多点进行控制。随着现代信息技术的飞速发展和传统工业改造的逐步(zhb)实现,基于DS18B20的多点温度测量系统已经广泛应用于控制、化工等诸多领域。总结这次(zh c)的论文工作,得到以下结论: 1.针对现有测温系统的特点,提出了一套应用数字式温度传感器DS81B20组建温度测控网络新型(xnxng)方案,该方案的突出特点是系统的数字化、快速化及其经济实用性。 2.以单总线为基本结构,采用STC公司的 STC89C52单片机

25、为总线命令,实现与DSl8B20的总线接口,并提供具体电路设计。 3.软件编程采用模块化、结构化设计,易于修改和维护。 由于时间和精力的限制,对后续的研究还应在以下方面逐步完善: 1.应用软件的完善。温度采集方面,一次命令全部单总线上的DS18B20进行温度转换,减少系统所需时间。 2.进一步完善系统的可靠性。由于实际经验的欠缺,设计上难免有考虑不周之处。当某一个传感器出现故障时,虽然系统能发现该测温点故障,但是更换传感器时涉及到其序列号的修改和应用程序的修改,这些还需要在今后应用时加以完善。 3.可以增加控制部分,以后在该部分进行PID算法控制,以提高控制精度。总之 ,本论文在新型数字温度测

26、控系统方面做了一定的研究工作。该系统初步完成了温度测控方案的预定目标,为今后实现数字化与网络化的温度测控系统工程提供了一种参考。参考文献黄智伟. 凌阳单片机课程设计指导(zhdo)北京(bi jn):北京航空航天大学出版社,2007周航慈.单片机程序设计(chn x sh j)基础北京:北京航空航天大学出版社,1997求实科技.单片机典型模块设计实例导航北京:人民邮电出版社,2004黄智伟全国大学生电子设计竞赛技能训练北京:北京航空航天大学出版社,2007黄智伟印制电路板(PCB)设计技术与实践(第二版)北京:电子工业出版社,2012(6) 基于Proteus的51系列单片机设计与仿真(第二版

27、) 陈忠平编著附 录附录(fl)1电路原理图附录(fl)2 温度计实物图附录(fl)3 温度计程序(chngx)#include /包含头文件,一般情况不需要改动,头文件包含特殊功能(gngnng)寄存器的定义#include intrins.h #define u8 unsigned char#define uchar unsigned char#define uint unsigned int#define u16 unsigned intuchar yushe_wendu=50;/温度预设值uint wendu; /温度值全局变量/运行模式 uchar Mode=0; /=1是设置温度阀

28、值 =2是设置烟雾阀值=0是正常监控模式/管脚声明sbit LED_wendu= P14; /温度报警灯sbit baojing= P11; /蜂鸣器接口void delay(uint z) /延时函数大约延时z msuint i,j;for(i=0;iz;i+)for(j=0;j121;j+);void Init_Timer0(void);bit ReadTempFlag;/定义读时间(shjin)标志/管脚声明(shngmng)sbit Led_Reg =P15; /红灯(hn dn)sbit Buzzer =P33; /蜂鸣器sbit DQ = P10; /ds18b20的数据引脚#de

29、fine SMG_NUM 4u8 code DisplayNum16=0 xc0,/00 xf9,/10 xa4,/20 xb0,/30 x99,/40 x92,/50 x82,/60 xf8,/70 x80,/80 x90,/90 x88,/A0 x83,/b0 xc6,/C0 xa1,/d0 x86,/E0 x8e/F;/u8 code DisplayOther=0 xff, /0空0 x7f, /1.0 xbf,/2-0 xa7/3c;/* 名称(mngchng) : delay_1ms()* 功能(gngnng) : 延时1ms函数* 输入(shr) : q* 输出 : 无*/void

30、 delay_ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j110;j+);/数码管位选定义sbit smg_we1 = P20; /东西数码管2sbit smg_we2 = P21;/东西数码管1sbit smg_we3 = P22;/南北数码管2sbit smg_we4 = P23;/南北数码管1/*数码(shm)位选函数*/i:0,东西(dngx)数码管2/1,东西(dngx)数码管1/2,南北数码管2/3,南北数码管1void smg_we_switch(uchar i)switch(i)case 0: smg_we1 = 0; smg_we2 =

31、 1; smg_we3 = 1; smg_we4 = 1; break;case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;/* 名称 : delay_1ms()* 功能 : 延时1ms函数* 输入 : q* 输出 : 无*/void delay_1ms(

32、uint q)uint i,j;for(i=0;iq;i+)for(j=0;j110;j+);/* 名称(mngchng) : u8 ChangeFor(u8 dat)* 功能 : 交换一个字节位的位置(wi zhi),用于数码管显示* 输入 : 需要(xyo)改变的数* 输出 : 改变后的数*/#define LED_a0/数码管段选的a段接在段选IO口的第0位#define LED_b2#define LED_c6#define LED_d4#define LED_e3#define LED_f1#define LED_g7#define LED_dp5u8 ChangeFor(u8 da

33、t)u8 temp=0;if(dat&0 x01)/判断数据(shj)的第一位是否为1temp|=0 x01LED_a;/如果为1,放到控制(kngzh)数码管a段的位置if(dat&0 x02)temp|=0 x01LED_b;if(dat&0 x04)temp|=0 x01LED_c;if(dat&0 x08)temp|=0 x01LED_d;if(dat&0 x10)temp|=0 x01LED_e;if(dat&0 x20)temp|=0 x01LED_f;if(dat&0 x40)temp|=0 x01LED_g;if(dat&0 x80)temp|=0 x01=SMG_NUM)i=

34、0;/*延时子程序:该延时主要(zhyo)用于ds18b20延时*/void Delay_DS18B20(int num) while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 Delay_DS18B20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 Delay_DS18B20(80); /精确延时,大于480us DQ = 1; /拉高总线(zn xin) Delay_DS18B20(14); x = DQ; /稍做延时后,如果x=0则初始化成功(chnggng),x=

35、1则初始化失败 Delay_DS18B20(20);/*读一个(y )字节*/unsigned char ReadOneChar(void) unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) ET0=0; /定时器中断关闭 DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0 x80; Delay_DS18B20(4);ET0=1; /定时器中断打开 return(dat);/*写一个字节*/void WriteOneChar(unsigned char dat) unsign

36、ed char i=0; for (i=8; i0; i-) ET0=0; /定时器中断(zhngdun)关闭 DQ = 0; DQ = dat&0 x01; Delay_DS18B20(5); DQ = 1; dat=1;ET0=1; /定时器中断(zhngdun)打开 u8 tempflag=0; /负号(f ho)显示/*读取温度*/unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; u8 tt=0; u8 ttt=0; Init_DS18B20(); Wri

37、teOneChar(0 xCC); /跳过读序号列号的操作 WriteOneChar(0 x44); /启动温度转换 Init_DS18B20(); WriteOneChar(0 xCC); /跳过读序号列号的操作 WriteOneChar(0 xBE); /读取温度寄存器 a=ReadOneChar(); /读低8位 b=ReadOneChar(); /读高8位 t=b; t4);/得到(d do)整数位ttt=(u8)(t%16)*0.0625*10);/得到(d do)小数位;乘以10代表保留一位小数;if(tt&0 x80)tempflag=1; /负号显示tt=tt+1; /实际温度

38、值为读取值的补码elsetempflag=0; /正号显示 t= tt*10+ttt; /放大10倍 return(t);/*校准温度*/u16 check_wendu(void)u16 c;c=ReadTemperature(); /获取温度值并减去DS18B20的温漂误差return c;/按键(n jin)sbit Key1=P15; /设置(shzh)键sbit Key2=P33; /加按键(n jin)sbit Key3=P34; /减按键#define KEY_SET 1/设置#define KEY_ADD2/加#define KEY_MINUS3/减/=/ 函数: u8 Key_

39、Scan()/ 应用: temp=u8 Key_Scan();/ 描述: 按键扫描并返回按下的键值/ 参数: NONE/ 返回: 按下的键值/ 版本: VER1.0/ 日期: 2015-05-29/ 备注: 该函数带松手检测,按下键返回一次键值后返回0,直至第二次按键按下/=u8 Key_Scan() static u8 key_up=1;/按键按松开标志if(key_up&(Key1=0|Key2=0|Key3=0)delay_ms(10);/去抖动 key_up=0;if(Key1=0)return 1;else if(Key2=0)return 2;else if(Key3=0)retu

40、rn 3;else if(Key1=1&Key2=1&Key3=1)key_up=1; return 0;/ 无按键(n jin)按下void main (void)u8 key;wendu=check_wendu(); /初始化时调用温度读取函数 防止(fngzh)开机85Cdelay_ms(1000);wendu=check_wendu(); /初始化时调用温度(wnd)读取函数 防止开机85CInit_Timer0();while (1) /主循环key=Key_Scan();/按键扫描if(ReadTempFlag=1)ReadTempFlag=0;wendu=check_wendu(); /读取温度值if(key=KEY_SET)Mode+;switch(Mode)/判断(pndun)模式的值case 0:/监控(jin kn)模式if(tempflag)dis_smg0 = DisplayOt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论