《温度报警器论文.doc》由会员分享,可在线阅读,更多相关《温度报警器论文.doc(32页珍藏版)》请在三一办公上搜索。
1、商丘学院 毕业设计(论文) 学号: 08601027 WZ-1型数字温度测量报警器的设计与实现分 院 电子信息工程学院 专 业 电子信息科学与技术 班 级 0801 姓 名 杜孝军 指 导 教 师 张振华 2012 年5月10日摘要数字温度测量报警器是利用传感器检测温度,采用数字数码管显示当前温度,当温度低于下限温度或者高于上限温度时系统发出声报警,从而起到测量和报警的功能。本系统以AT89S51单片机作为主控系统,利用DS18B20数字温度传感器作为温度传感器件。通过四位共阳极数码管作为显示器件,通过单片机控制继温度显示温度。并可以设置温度上下限,当温度不在设置的温度范围内,蜂鸣器发出报警声
2、。分析了温度传感器的工作原理。系统硬件电路以及软件部分的设计。实际测试表明,该方案切实可行并已在许多通信领域得到广泛应用。 关键词: 单片机,温度报警, DS18B20,AT89S51AbstractDigital temperature measurement is the use of sensors to detect alarm temperature, the use of digital LED displays the current temperature, when the temperature falls below the lower limit temperature
3、 or higher than the sound of the alarm system when the temperature, and thus play a measurement and alarm function. The design of the digital temperature alarm system introduced with the traditional temperature alarm, compared with a reading convenience, a wide range of temperature measurement, temp
4、erature measurement accuracy, the output of the temperature digital display, the controller design using microcontroller AT89S51, temperature sensor uses DS18B20 , with four achieving common cathode LED digital temperature display, It can meet the above requirements. The system can set the upper and
5、 lower alarm temperature range when the temperature can not set the alarm. The following introduction to the circuit diagram and circuit analysis. Keywords: microcontroller, temperature alarm, DS18B20, AT89S51 显示对应的拉丁字符的拼音字典目 录1 绪论12 温度传感器工作原理23 WZ-1型温度报警系统框图44 温度报警系统工作原理分析54.1 单片机芯片介绍54.2 单片机模块功能54
6、.3 振荡电路原理及分析:64.4 温度测量模块分析74.4.1 温度传感器DS18B20的引脚介绍74.4.2 DS18B20的内部结构分析84.4.3 DS18B20的测温原理分析104.5 DS18B20温度传感器与单片机的接口电路114.6 数字数码显示模块分析134.7 报警系统分析135 系统软件设计155.1 主程序155.2 读出温度子程序155.3 温度转换命令子程序165.4 计算温度子程序165.5 显示数据刷新子程序176 结论18致谢19参考文献20附录1 系统整体电路图21附录2 源程序代码221 绪论在日常生活及工农业生产中经常要涉及到温度的检测及控制。像电力、化
7、工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。因此,各行各业对温度控制的要求都越来越高。可见,温度的测量是非常重要的。传统的测温元件有热电偶,热敏电阻还有一些输出模拟信号的温度传感器。而这些测温元件所测出的一般都是电压或电流,再将其转换成对应的温度,所以
8、需要比较多的外部硬件支持。如果需要进行数字显示,就还需要进行A/ D转换,才能和主控制器进行通信, 其硬件电路复杂、而且软件调试繁琐、制作成本高。故在本设计中将采用另外一种方案,即使用DS 18B20数字温度传感器作为测温元件。该数字温度传感器即是美国DA LLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器。本数字温度测量报警器的设计主要采用上述改进型智能温度传感器DS18B20作为检测元件,以AT89S51单片机作为主控系统,采用四位共阳极数码管作为显示器件,通过单片机控制继温度显示温度,并设置了超限报警功能,如果测得的温度超过了预设温度值,蜂鸣器将会发出报警信号,同时数码管
9、正常显示温度值,按下复位键系统停止报警,系统将再次检测测得的温度值,若在预设范围内,数码管正常显示测得的温度值,否则产生报警信号。而且传感器DS 18B20是采用3线制与单片机相连,减少了外部的硬件电路,主控制器通过软件处理接收到的数据,从而使得整个系统具有低成本、易使用和稳定性高等特点。在通信以及其他相关领域有着不可忽视的美好前景!2 温度传感器工作原理DS18B20温度传感器采用3脚FR35封装或8脚SOIC封装。其与传统的热敏电阻等测温元件相比,能直接读出被测温度值,并且可根据实际要求通过简单的编程实现9 12位的数字值读数方式。DS18B20的主要性能特点在于其负电压特性,当电源极性接
10、反时,温度计不会因发热而被烧毁;同时,其还具有用户自定义的非易失性温度报警设置以及实现多点组网等强大功能!DS18B20 的具体测温原理图则如图1所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2 的脉冲输入。图中还隐含着计数门,当计数门打开时,DS 18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度的测量,计数门的开启时间由高温度系数振荡器来确定,每次测量前,首先将55 所对应的一个基数分别置入减法计数器1、温度寄存器中,减法计数器1和温度寄存器被预置在55 所对
11、应的一个基数值1。 减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0 时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0 时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。斜率累加器则用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。 图2.1 DS18B20测温原理图由于DS18B20单线通信功能是分时完成的,它有很严格的时序概念,因此其读写时序非常重要2。
12、 当DS18B20 处于写存储器操作和温度A/ D转换操作时,总线上必须有很强的上拉,上拉开启时间最大为10s,采用寄生电源供电方式时VDD和GND端需接地。另外,由于单线制只有一根线,因此发送接口必须是三态的。同时,系统对DS18B20 的各种操作必须按协议进行,其操作协议为:初始化DS18B20(发复位脉冲)ROM功能命令发存储器操作命令处理数据。 3 WZ-1型温度报警系统框图本系统单片机电路采用智能温度传感器DS18B20作为检测元件,此传感器可以直接读取被测温度值进行转换,采用独立按键的方式,使实现起来比较简单。此系统采用单片机AT89S51,温度传感器采用DS18B20,用4位LE
13、D数码管传送数据实现温度显示。如图3.1为数字温度报警器系统结构框图: 报警模块主 控 制 器数码管显示温度测量模块单片机复位时钟振荡报警点按键调整图3.1 总体方框图4 温度报警系统工作原理分析4.1 单片机芯片介绍 AT89S51是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使AT89S51为众多嵌入式控制应用系统提供高灵活、超有效的解决方
14、案。AT89S51具有以下标准功能:4k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止3。l l 与MCS-51单片机产品兼容l l 8K字节在系统可编程Flash存储器l l 10000次擦写周期l l 全静态操作:0Hz
15、33Hzl l 三级加密程序存储器l l 32个可编程I/O口线l l 三个16位定时器/计数器l l 全双工UART串行通道l l 低功耗空闲和掉电模式l l 掉电后中断可唤醒l l 看门狗定时器l l 双数据指针l l 掉电标识符4.2 单片机模块功能该模块有以下几个部分组成:复位电路:为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V5%,即 4.755.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器 稳定工作时,复位信号才被
16、撤除,微机电路开始正常工作4。图4.1 复位电路目前为止,单片机复位电路主要有四种类型:(1) 微分型复位电路;(2) 积分型复位电路;(3) 比较器型复位电路;(4) 看门狗型复位电路。4.3 振荡电路原理及分析:晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低 的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶 振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构
17、成正弦波振荡电路,由于晶振等效为电感的频率范围很窄, 所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化,震荡电路的电路图如图4.2所示.图4.2 晶振电路晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率5。一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。4.4 温度测量模块分析4.4.1 温度传感器DS18B20的引脚介绍DS18B20温度传感
18、器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。 TO92封装的DS18B20的引脚排列见下图4.3,其引脚功能描述见表4.1。图4.3 DS18B20引脚图表4-1 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B
19、20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。4.4.2 DS18B20的内部结构分析DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图4.4所示。I/OC64位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd图4.4 DS18B20内部结构64位ROM的结构开始位是产品类型的编号,接
20、着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限6。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3-4所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图E所示。低位一直为,是工作模式位,用于设置DS18B2
21、0在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率7。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC表4.2 DS18B20字节定义由表4.2可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补
22、码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表4.3 DS18B20温度转换时间表R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出
23、的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索8。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。4.4.3 DS18B20的测温原理分析DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进
24、而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表4.4 一部分温度对应值表温度/二
25、进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另
26、外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据9。4.5 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图5 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,
27、总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先10。图4.5 DS18B20复位时序对于DS18
28、B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。图4.60DS18B20读时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。图4.7 DS18B20写时序4.6 数
29、字数码显示模块分析采用动态节能四位共阳极数码管显示,由四个三极管驱动,三级管是位选,和数码管共的那个阳串联控制开和管,数码管别的连段选,和控制器连接。为什么要用三级管驱动,因为它的功率相对大,并且数码管显示几段是不定的,这里要通过足够的电流。由于不定,所以每段要分别串联限流电阻。图4.8 数码显示模块图4.7 报警系统分析图4.9 报警系统电路图本报警系统中有三个独立式按键可以分别调整温度计的上下限报警设置,电路中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时红色LED闪烁,实现报警功能。复位的实现是通过单片机的复位电路实现上电复位加手动复位,使用比较方便,在程序跑飞时,可以手
30、动复位,这样就不用在重起单片机电源,就可以实现复位。 5 系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。5.1 主程序初始化调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNY图5.1 主程序流程图5.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图5.2所示。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY图5.2 读温度
31、流程图5.3 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图5.3所示.发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图5.3 温度转换流程图5.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图5.4所示。开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY图5.4 计算温度流程图5.5 显示数据刷新子程序显示数据刷新子程序
32、主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图5.5。温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY图5.5 显示数据刷新流程图6 结论本设计是利用数字温度传感器DS18B20作为温度传感器件,采用价格低廉性能稳定的AT 89S51单片机作为主控芯片,用四位一体共阳极的数码管作为显示器件,蜂鸣器及报警电路器件构成了整个系统整体。本设计的优点是价格低廉、性能稳定、精确度高、测量准确、方便携带、便于用在工农业等温度控制领域。其电源部分采用了比较普通的三端稳压器L7805,便于提供比
33、较稳定的电源。另外,本系统采用了宽电源设计,可以用7 +12V的直流电源供电,也可以直接用5V 的直流电源。通过具体设计及实际测试,充分证明了该系统设计方案的可行性和有效性,各项性能指标均达到了预期的要求。传感器技术与单片机技术有机结合的综合体将会是现代通信的一个必然的趋势! 如果把单片机换成贴片的封装器件利于大规模的工业商业生产。在毕业设计过程中,巩固了在大学4年内学过的知识,尤其是单片机和模拟电子方面的知识,同时通过这次毕业设计提高了单片机编程的能力,尤其是获得的软件调试经验,同时加强了我的实际编程能力,同时也让自己更加的知道了自己知识领域里的不足和缺陷。该温度测量报警器只是DS18B20
34、在温度控制领域的一个简单实例,还有许多需要完善的地方,例如可以将测得的温度通过单片机与通讯模块相连接,以手机短消息的方式发送给用户,使用户能够随时对温度进行监控。此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业。本温度报警系统可以应用于多种场合,像的温度、育婴房的温度、水温的测量报警。用户可灵活选择本设计的用途,有很强的实用价值。致谢大四即将结束,我也将走入社会。在此毕业论文完成之际,我想感谢那些在我大学生活中深深影响我的老师,同学。首先我要感谢我的指导教师张振华老师在学术上的精心指导和严格要求,在思想、学习和生活等各个方面的典范作用,在科研中创造的良好学术气氛,在系统研究和调试
35、过程中给予的及时帮助。从他身上我不仅学到了专业知识,学到了积极的人生态度和做人的道理,更重要的是明确了今后努力的方向。在此,我再一次对张老师的培养和关怀表示诚挚的谢意!我要感谢张振华老师对我们的学习和工作严格要求,并耐心地教导激励我们积极进取,培养我们形成良好的科研作风,所有这些,我们将终生受益。其次我要感谢大学这四年来所有教授过我知识的老师们,是你们让我打下了坚实的基础,让我的大学生涯变得更为充实。此外,我还要特别感谢屈晓良老师,卢丹老师等实验室的老师们和同学们。在你们的教导下和大力帮助下,我取得了很大的进步,学会了单片机软件编程和硬件电路设计,将理论和实践结合了起来。这段时间内我之所学将会
36、成为我人生的一笔财富,让我受益终生。最后感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,愿你们永远健健康康,快快乐乐。在论文即将完成之际,再次向给予我帮助的老师们同学们说一声:您们辛苦了! 参考文献1 谭浩强.C程序设计(第4版)M.北京:清华大学出版社,2010:52-58.2 郭天祥.新概念51单片机c语言教程M.北京:电子工业出版社,2009:125-128.3 刘海青,许锦峰,姚恩涛等基于电容式传感器的建筑围护结构含水率测试J.传感器与微系统,2008,27(7):201-2034 黄智伟,王彦.全国大学生设计竞赛训练教程M.武汉:华中科技大学出版社,2006:82-86.5
37、 王成安.电子产品生产工艺与生产管理M.北京:人民邮电出版社,2010:163-166.6 戢卫平.单片机系统开发实例经典M.北京:冶金工业出版社,2008:38-42.7 黄庆华.单片机开发技术与实训M.北京:电子工业出版社,2009.8 于京.51系列单片机C程序设计与应用方案M.北京:中国电力出版社,2007.9 John MatsoukisDesigning Embedded HardwareM北京:中国电力出版社,2004.10 CHRISTIAN P, ANNE F. Ultrasonic waster- water treatment:incidence of ultrason-
38、 ic frequency on the rate of phenol and carbon tetrachloride degradation J . Ultrasonic So-nochemist Chemistry, 1997( 4) : 295- 300.附录1 系统整体电路图附录2 源程序代码#include #include DS18B20.h#define uint unsigned int#define uchar unsigned char /宏定义#define SET P3_1/定义调整键#define DEC P3_2/定义减少键#define ADD P3_3/定义增
39、加键#define BEEP P3_7/定义蜂鸣器bit shanshuo_st;/闪烁间隔标志bit beep_st;/蜂鸣器间隔标志sbit DIAN = P27; /小数点uchar x=0;/计数器signed char m;/温度值全局变量uchar n;/温度值全局变量uchar set_st=0;/状态标志signed char shangxian=38;/上限报警温度,默认值为38signed char xiaxian=5;/下限报警温度,默认值为38uchar code LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
40、0x90,0xff;/*延时子程序*/void Delay(uint num)while( -num );/*初始化定时器0*/void InitTimer(void)TMOD=0x1;TH0=0x3c;TL0=0xb0;/50ms(晶振12M)/*定时器0中断服务程序*/void timer0(void) interrupt 1TH0=0x3c;TL0=0xb0;x+;/*外部中断0服务程序*/void int0(void) interrupt 0EX0=0;/关外部中断0if(DEC=0&set_st=1)shangxian-;if(shangxianxiaxian)shangxian=x
41、iaxian;else if(DEC=0&set_st=2)xiaxian-;if(xiaxian99)shangxian=99;else if(ADD=0&set_st=2)xiaxian+;if(xiaxianshangxian)xiaxian=shangxian; /*读取温度*/void check_wendu(void)uint a,b,c;c=ReadTemperature()-5;/获取温度值并减去DS18B20的温漂误差a=c/100;/计算得到十位数字b=c/10-a*10;/计算得到个位数字m=c/10;/计算得到整数位n=c-a*100-b*10;/计算得到小数位if(m
42、99)m=99;n=9;/设置温度显示上限/*显示开机初始化等待画面*/Disp_init() P2 = 0xbf; /显示-P1 = 0xf7;Delay(200);P1 = 0xfb;Delay(200); P1 = 0xfd;Delay(200);P1 = 0xfe;Delay(200);P1 = 0xff; /关闭显示/*显示温度子程序*/Disp_Temperature() /显示温度P2 =0xc6; /显示CP1 = 0xf7;Delay(300);P2 =LEDDatan; /显示个位P1 = 0xfb;Delay(300);P2 =LEDDatam%10; /显示十位DIAN = 0; /显示小数点P1 = 0xfd;Delay(300);P2 =LEDDatam/10; /显示百位P1 = 0xfe;Delay(300);P1 = 0xff; /关闭显示/*显示报警温度子程序*/Disp_alarm(uchar baojing)P2 =0xc6; /显示CP1 = 0xf7;Delay(200);P2 =LEDDatabaojing%10;/显示十位P1 = 0xfb;Delay