

免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机对太阳能热水器水温的监测 题目:基于单片机对太阳能热水器水温的监测33【中文摘要】本设计采用一块单片机(at89s52)作为水温控制系统的控制核心,实现人工设定温度,显示水的实时温度等功能。数字式温度采集系统由主控制器、温度采集电路、温度显示电路、报警控制电路及键盘输入控制电路组成。该装置采用简易键盘对目标温度(099)进行人工设定,并用数码管动态显示水的实时温度。重点阐述系统的硬件构成、各部分的主要作用及系统软件的设计过程。并对单片机在温度控制系统中的基本理论和应用技术做了较为全面的介绍。关键词:at89s52 ,温度测控 ,温度传感器 【abstract】 the design uses a microcontroller(at89s52) as the core of the control water temperature control system. it can achieve artificial set temperature ,and show the real-time water temperature and other functions. digital temperature acquisition system consists of the main controller, the temperature acquisition circuit , the temperature display circuit , the alarm control circuit and keyboard input control circuit. the device uses simple keyboard to artificially set the target temperature(0 to 99 ),and dynamically display the real-time water temperature. this paper focuses on the hardware configuration of the system, the main role of diverse parts, and the design process of system software.then the basic theory and application of techniques of the microcontroller temperature control system in the design are comprehensively presented.keywords: at89s52,temperature monitoring,temperature sensor目录1、 引言.12 、系统硬件电路设计.2 2.1数字温度计设计方案论证.2 2.2 总体设计框图.22.3 ds18b20温度传感器.3 2.3.1 ds18b20温度传感器介绍.4 2.3.2 ds18b20温度传感器工作原理.4 2.3.3 ds18b20与单片机的典型接口.7 2.3.4 测温操作.9 2.3.5 报警搜索操作.9 2.4 单片机控制电路设计.9 2.4.1 atmel公司at89s52单片机. .9 2.4.2 at89s52单片机主要接口描述.10 2.5 显示电路设计.13 2.5.1 七段数码管介绍及应用.13 2.5.2 七段数码管的使用注意事项.13 2.5.3 数码管的驱动方式.13 2.5.4 数码管的测试方法.15 2.6 系统整体电路图.15 2.7 单片机最小系统.17 2.8温度传感器系统.18 2.9 报警电路设计.18 2.10 温度显示电路设计18 2.11 键盘接口技术.19 2.11.1 键盘工作原理.19 2.11.2 独立式按键.20 2.11.3 温度设置.21 2.12 温度控制显示端口213、系统调试及性能分析.22 3.1 系统调试.22 3.2 系统性能分析.224、结束语.23参考文献.24总结与致谢.25附录1:系统软件设计.26 1.1 主程系.26 1.2 读出温度子程系.27 1.3 温度转换命令子程系.27 1.4 计算温度子程系.27 1.5 键盘扫描流程图.29附录2: 源程序 .301.引言水温控制在工业及日常生活中应用广泛,对温度结果进行分析,以做出相应的处理,不同水温控制系统的控制方法也不尽相同。考虑到太阳能热水器人们对水温范围的不同,本设计单片机控制部分采用at89s52单片机为核心,采用软件编程,设定按键,可以根据不同的天气情况使用者对温度的需求设定上下限温度,从而控制电炉的加热和冷水的加入量来实现温度控制。采用ds18b20温度传感器采集温度,并用四位七段数码管显示温度。系统主要技术指标:(1)基本范围0-99(2)精度误差小于0.5(3)led数码直读显示(4)实现声光报警(5)可以任意设定温度的上下限报警功能2系统硬件电路设计2.1数字温度计设计方案论证 方案一由于本设计是测温电路,根据设计要求可以使用热敏电阻之类的感温器件利用其感温效应,然后将随被测温度变化的电压或电流采集过来,经过a/d转换后,将数据传输到单片机进行数据的处理,然后在显示电路上显示,这样就可以将被测温度显示出来,这种设计需要用到a/d转换电路,感温电路比较麻烦。 方案二在单片机电路设计中,大多都是使用传感器,这是非常容易想到利用数字温度传感器,所以可以采用一只温度传感器ds18b20,此传感器,可以很容易直接读取被测温度值,进行转换,然后传输给单片机进行数据处理,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路设计比较简洁,软件设计也比较简单,故采用方案二。2.2总体设计框图按照系统设计功能的要求,系统由5个模块组成:主控制器、温度采集电路、温度显示电路、报警控制电路及键盘输入控制电路。系统总体电路结构框图如图2.1所示。报警控制电路(蜂鸣器)温度采集(ds18b20)主控制器输入控制电路(按键)温度显示图2.1系统总体电路结构框图采用智能温度传感器(ds18b20)采集环境温度并进行简单的模数转换;单片机(at89s52)执行程序对温度传感器传输的数据进行进一步的分析处理,转换成环境对应的温度值,通过i/o口输出到数码显示管(七段led)显示;由键盘输入控制选择某采集电路检测温度及显示;报警电路对设定的最高最低报警温度进行监控报警。2.3温度传感器ds18b202.3.1 ds18b20的介绍温度传感器的种类众多,在应用与高精度、高可靠性的场合时 dallas(达拉斯)公司生产的 ds18b20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 ds18b20 更受欢迎。ds18b20 的主要特征: (1)全数字温度转换及输出;(2)最高 12 位分辨率,精度可达土 0.5摄氏度; (3)12 位分辨率时的最大工作周期为 750 毫秒;(4)可选择寄生工作方式;(5)检测温度范围为55c+125c (67f +257f); (6)内置 eeprom,限温报警功能。用户可定义报警设置 ;(7) 64 位光刻 rom,内置产品序列号,方便多机挂接;(8)多样封装形式,适应不同硬件系统;(9)独特的单线接口仅需要一个端口引脚进行通信;(10)多个ds18b20 可以并联在惟一的三线上,实现多点组网功能;(11)无须外部器件;(12)可通过数据线供电,电压范围为3.05.5v;(13)零待机功耗;(14)温度以9 或12 位数字;(15)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(16)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;ds18b20它有64 位rom 的结构开始8 位是产品类型的编号,接着是每个器件的惟一的序号,共有48 位,最后8 位是前面56位的crc 检验码,这也是多个ds18b20 可以采用一线进行通信的原因。温度报警触发器th 和tl,可通过软件写入户报警上下限。另外,由于ds18b20 单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对ds18b20 的各种操作按协议进行。操作协议为:初始化ds18b20(发复位脉冲)发rom 功能命令发存储器操作命令处理数据。ds18b20芯片封装结构如图2.2: 图2.2 ds18b20芯片封装结构ds18b20采用3脚pr35封装或8脚soic封装,其内部结构框图如图2.3所示。i/oc64位rom和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器th低温触发器tl配置寄存器8位crc发生器vdd图 2.3 ds18b20内部结构框2.3.2 ds18b20 工作原理 ds18b20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18b20的内部存储器资源。ds18b20 共有三种形态的存储器资源,它们分别是: rom 只读存储器,用于存放 ds18b20id 编码,其前 8 位是单线系列编码(ds18b20 的编码是19h),后面48 位是芯片唯一的序列号,最后 8位是以上 56的位的 crc码(冗余校验)。数据在出产时设置不由用户更改。ds18b20 共 64 位 rom。 ram 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,ds18b20 共9 个字节 ram,每个字节为 8 位。第1、2 个字节是温度转换后的数据值信息,第 3、4 个字节是用户 eeprom(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第 5 个字节则是用户第 3 个 eeprom的镜像。第 6、7、8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第 9 个字节为前 8个字节的 crc码。eeprom 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,ds18b20共3位eeprom,并在 ram 都存在镜像,以方便用户操作。ds18b20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如表2-1所示。低5位一直为1,tm是工作模式位,用于设置ds18b20在工作模式还是在测试模式,ds18b20出厂时该位被设置为0,用户要去改动,r1和r0决定温度转换的精度位数,来设置分辨率,如表2-2所示:(ds18b20出厂时被设置为12位) 表2-1:ds18b20字节定义tmr1r011111 表2-2:温度分辨率设置表r1r0分辨率温度最大转换时间009位93.75ms 0110位187.5ms 1011位375ms 1112位750ms 12位转化后得到的12位数据,存储在18b20的两个8比特的ram中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125的数字输出为07d0h,+25.0625的数字输出为0191h,-25.0625的数字输出为fe6fh,-55的数字输出为fc90h 。温度数据如表2-3 表2-3: ds18b20温度数据表(3)ds18b20温度传感器的存储器 ds18b20温度传感器的内部存储器包括一个高速暂存ram和一个非易失性的可电擦除的eepram,后者存放高温度和低温度触发器 th、tl和结构寄存器。 2.3.3 ds18b20与单片机的典型接口ds18b20寄生电源供电:寄生电源的方框图如图2.2 。这个电路会在i/o或vdd引脚处于高电平时“偷”能量。当有特定的时间和电压需求时,i/o要提供足够的能量。寄生电源有两个好处:1)进行远距离测温时,无需本地电源,2)可以在没有常规的条件下读rom。要想使ds18b20能够进行精确的温度转换,i/o线必须在转换期间保证供电。由于ds18b20的工作电流达到1ma,所以仅靠5k上拉电阻提供电源是不行的,当几只ds18b20挂在同一根i/o线上并同时想进行温度转换时,这个问题变得更加尖锐。当进行温度转换或拷贝到存储器操作时,把i/o线直接拉到电源上就可以实现,如图2.4。图2.4 ds18b20寄生电源供电方式2.3.4 测温操作ds18b20通过一种片上温度测量技术来测量温度。图2.5示出了温度测量电路的方框图。预置低温度系数振荡器计数器斜坡累加器比较预置0温度寄存器高温度系数振荡器计数器0 图2.5 温度测量电路方框图ds18b20是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果站周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。这是通过改变计数器对温度每增加一度所需计数的值来实现的。因此,要想获得所需的分辨率,必须同时知道在给定温度下计数器的值和每一度的计数值。ds18b20内部对此计算的结果可提供0.0625的精度。温度以16bit带符号位扩展的二进制补码形式读出。数据通过单线接口以串行方式传输。ds18b20测温范围55125,以0.0625递增。如用于华氏温度,必须要用一个转换因子查找表。2.3.5 报警搜索操作 ds18b20完成一次温度转换后,就拿温度值和存储在th和tl中的值进行比较。th和tl的最高有效位直接对应16位温度寄存器的符号位。如果的高于th或低于tl,器件内部就会置位一个报警标识。每进行一次测温就对这个标识进行一次更新。当报警标识置位时,ds18b20会对报警搜索命令有反应。这样就允许许多ds18b20并联在一起同时测温,如果某个地方的温度超过了限定值,报警的器件就会被立即识别出来并读取,而不用读未报警的器件。2.4单片机控制电路设计2.4.1 atmel公司的at89s52单片机at89s52单片机是一个低功耗,高性能cmos 8位单片机,片内含8k bytes isp(in-system programmable)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,片上flash允许程序存储器在系统可编程,亦适于 常规编程器,在功能强大的微型计算机的at89s52单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得at89s52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案可为许多嵌入式控制应用系统提供高性价比的解决方案。at89s52引脚结构图如图2.6。图2.6 at89s52结构图2.4.2 at89s52单片机主要接口描述 p0 口:p0口是一个8位漏极开路的双向i/o口。作为输出口,每位能驱动8个ttl逻辑电平。对p0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时, p0口也被作为低8位地址/数据复用。在这种模式下,p0具有内部上拉电阻。 在 flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 p1 口:p1 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p1 输出缓冲器能驱动 4 个ttl 逻辑电平。对 p1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。此外,p1.0和p1.2分别作定时器/计数器2的外部计数输入(p1.0/t2)和时器/计数器2的触发输入(p1.1/t2ex) ,具体如表2-4所示。在flash编程和校验时,p1口接收低8位地址字节。 表2-4:p1口第二功能引脚号第二功能p1.0t2(定时器/计数器t2的外部计数输入),时钟输出p1.1t2ex(定时器/计数器t2的捕捉/重载触发信号和方向控制)p1.5mosi(在系统编程用)p1.6miso(在系统编程用)p1.7sck(在系统编程用)p2 口:p2 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲器能驱动 4 个ttl 逻辑电平。对 p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。 在访问外部程序存储器或用16位地址读取外部数据存储器 (例如执行movx dptr)时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送 1。在使用8位地址(如movx ri)访问外部数据存储器时,p2口输出p2锁存器的内容。在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。 p3 口:p3 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲器能驱动 4 个ttl 逻辑电平。对 p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。 p3口亦作为at89s52特殊功能(第二功能)使用,如表2-5所示。 在flash编程和校验时,p3口也接收一些控制信号。 表2-5:p3口第二功能端口引脚第二功能p3.0rxd(串行输入口)p3.1txd(串行输出口)p3.2into(外中断0)p3.3int1(外中断1)p3.4to(定时/计数器0)p3.5t1(定时/计数器1)p3.6wr(外部数据存储器写选通)p3.7rd(外部数据存储器读选通)此外,p3口还接收一些用于flash闪存编程和程序校验的控制信号。rst: 复位输入。晶振工作时,rst脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,rst 脚输出 96 个晶振周期的高电平。特殊寄存器 auxr(地址 8eh)上的disrto位可以使此功能无效。disrto默认状态下,复位高电平有效。单片机复位有两种方式:上电复位(如图2.7) 、人工复位(如图2.8) 图2.7上电复位电路 2.8上电复位和开关复位ale/prog:地址锁存控制信号(ale)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在flash编程时,此引脚(prog)也用作编程输入脉冲。 在一般情况下,ale 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ale脉冲将会跳过。如果需要,通过将地址为8eh的sfr的第0位置 “1”, ale操作将无效。 这一位置 “1”,ale仅在执行 movx 或movc指令时有效。否则,ale将被微弱拉高。这个 ale使能标志位 (地址为8eh的sfr的第0位) 的设置对微控制器处于外部执行模式下无效。 psen:外部程序存储器选通信号(psen)是外部程序存储器选通信号。当 at89s52从外部程序存储器执行外部代码时,psen在每个机器周期被激活两次,而在访问外部数据存储器时,psen将不被激活。ea/vpp: 外部访问允许,欲使cpu仅访问外部程序存储器(地址为0000h-ffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu则执行内部程序存储器的指令。在flash编程期间,ea也接收12伏vpp电压。 xtal1:振荡器反相放大器和内部时钟发生电路的输入端。 xtal2:振荡器反相放大器的输出端。 晶振特性:如图 2.9 所示,at89s52 单片机有一个用于构成内部振荡器的反相放大器,xtal1 和xtal2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,xtal2 可以不接,而从 xtal1 接入,如图2.10 所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求, 最长低电平持续时间和最少高电平持续时间等还是要符合要求的。 图2.9 单片机内部时钟电路 图2.10单片机外部时钟电路石英晶振 c1,c2=30pf10pf 陶瓷谐振器 c1,c2=40pf10pf2.5显示电路设计2.5.1七段数码管介绍及应用七段数码管是数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个发光二极管单元,其基本单元是发光二极管。数码管是一类价格便宜 使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。2.5.2七段数码管的使用注意事项需要使其具有恒定的工作电流采用恒流驱动电路后可防止短时间的电流过载也可能对发光管造成永久性的损坏,以此避免电流故障所引起的七段数码管的大面积损坏。超大规模集成电路还具有热保护功能,当任何一片的温度超过一定值时可自动关断,并且可在控制室内看到故障显示。2.5.3数码管的驱动方式数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,在有些时候需要做一个简单的显示系统,引脚图如图2.11所示。那么在单片机i/o资源够用的情况下可以直接用单片机的i/o口驱动数码管,也可以根据数码管的驱动方式的不同,可以分为静态式和动态式两类。(1)静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的i/o端口进行驱动,或者使用如bcd码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用i/o端口多,如驱动5个数码管静态显示则需要5840根i/o端口来驱动,要知道一个89s51单片机可用的i/o端口才32个呢),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。(2)动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。静态驱动方式简单不容易出错,如果电路设计合适,也能够用较少的线完成多个数码管的驱动。但是动态驱动方式省单片机的资源,如今已经有很多这样成熟的基于动态扫描的芯片。 图2.11:七段数码管引脚图数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定c、使用电流:静态:总电流 80ma(每段 10ma);动态:平均电流 4-5ma,峰值电流 100ma2.5.4数码管测试方法同测试普通半导体二极管一样。注意!万用表应放在r10k档,因为r1k档测不出数码管的正反向电阻值。对于共阴极的数码管,红表笔接数码管的“-”,黑表笔分别接其他各脚。测共阳极的数码管时,黑表笔接数码管的vdd,红表笔接其他各脚。另一种测试法,用两节一号电池串联,对于共阴极的数码管,电池的负极接数码管的“-”,电池的正极分别接其他各脚。对于共阳极的数码管,电池的正极接数码管的vdd,电池的负极分别接其他各脚,看各段是否点亮。对于不明型号不知管脚排列的数码管,用第一种方法找到共用点,用第二种方法测试出各笔段a-g、dp、h等2.6系统组成电路图该系统电路主要包括:单片机最小系统、ds18b20温度传感器系统、报警系统、led显示模块电路等电路,如图 2.11所示。图中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时led数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。图中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。 图2.12 系统总电路图2.7 单片机最小系统最小系统包括晶振电路、复位电路、按键设置部分,at89s52单片机最小系统的电路如图2.13晶振电路:利用芯片内的振荡器,然后在引脚xtal1和xtal2两端跨接晶振,就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。外接晶振时,c1和c2的值为30pf,c1和c2对频率有微调作用,晶振频率为12mhz。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机引脚xtal1和xtal2靠近。单片机at89s52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。 图 2.13 单片机最小系统电路2.8 温度传感器系统ds18b20温度传感器电路,如图 2.14。图 2.14 ds18b20温度传感器系统ds18b20采用单线进行数据传输,外接一个4.7k上拉电阻与单片机的p3.6口相连进行数据的双向传输102.9 报警电路设计报警电路中加一pnp三极管驱动,基极接单片机p3.7口,当端口变成低电平时,驱动三极管会导通,vcc电压加载到蜂鸣器使其发声如图2.15。图 2.15 报警电路2.10显示电路设计如图2.16,led数码管显示电路采用4位共阳led数码管从p2.0,p2.1,p2.2,p2.3串口输出段码。当相应的端口变成高电平时,驱动相应的三极管会导通,驱动三极管给数码管相应的位供电,这时只要p0口送出数字的显示代码,数码管就能正常显示数字。图:2.16数码管显示电路2.11键盘接口技术键盘是一组按键组合,它是最常用的单片机输入设备。键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件译码器实现,并产生键编码或键值的称为编码键盘。靠软件识别的称为非编码键盘。本设计使用非编码键盘,下面主要介绍非编码键盘的原理、接口技术和程序设计。2.11.1键盘工作原理键盘中每个按键都是一个常开开关电路,如图2.17所示当按键k未被按下时,p3.1输入高线平;当k闭合时,p3.1输入低电平。通常按键所用的开关为机械弹性开关,当机械触点端来、闭合时,电压信号波形如图2.18所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,抖动的时间的长短由按键的机械特性决定,一般为510ms。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒。图2.17键盘按键按键抖动会引起一次按键被误读多次。为确保cpu对按键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别键号;当键释放稳定后,再做处理。按键的抖动,可用硬件或软件两种方法消除。本设计使用的是软件。如果按键较多,常用软件方法去抖动,及检测出键闭合后执行一个延时程序,产生510ms的延时;让前沿抖动消失后,再一次检测按键的状态,如果仍保持闭合状态电平则确定真正有键按下。当检测到按键释放后,也要经过510ms的延时,待后沿抖动消失后,才能转入该键的处理程序。图2.18键按下和释放时间的电压波形2.11.2独立式按键键盘可分为独立连接式和行列式(矩阵式)两类,本设计使用的是独立连接式,所以这里只介绍独立连接式。图2.19 独立式键盘独立式按键是指各按键相互独立地接通一条输入数据线,如图2.19所示。这是最简单的键盘结构,该电路为查询方式电路。当任何一个键按下时,与之相连的输入数据线即被清0(低电平),而平时该线为1(高电平)。要判别是否有键按下,用单片机的位处理指令十分方便。2.11.3温度设置 温度设置:单片机p3.1口接设置温度(set)键,p3.2口接温度减少键(sub),p3.3口接温度增加键(add)。当第一次按下set键时,设置最高报警温度,显示如图2.20,第二次按set键时,设置最低报警温度,显示如图2.21,按add、sub键可实现温度的加减。 图2.20设置高温 图2.21设置低温 2.12温度控制端口在单片机p1.5与p1.7口接led灯表示降温与加热,如图2.12,当实时温度小于最低设置温度时,接p1.7的灯亮表示加热,当实时温度大于最高设置温度时,按p1.5的灯亮表示降温。3系统调试及性能分析3.1系统调试.系统调试分为硬件调试和软件调试两步硬件调试硬件调试比较简单,首先检查电路的焊接是否正确及电路中有没有虚焊等问题,然后可用万用表测试或通电检测电路.软件调试软件调试以程序为主.先编写一段显示程序对硬件的正常工作进行检测,然后进行主程序,匹配rom子程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等的编程及调试. 软件调试到能显示温度值,而且在有温度变化时(例如用手去接触)显示温度能够改变就基本完成软件调试.3.2系统性能分析 用制作的测温系统和已有的成品温度计(如水银温度计)来同时测量环境温度,并对测量的结果比较分析. 由比较分析及ds18b20的特点可得,用本系统进行测温时,精度很高,误差指标可以限制在0.5以内,另外在099的测温范围内使得该系统完全适合一般的应用场合.4 结束语通过对本设计的思考,更加加深了对单片机的认识,熟练了单片机的编程,更对当前的温度传感器有了更深刻的认识与了解,本设计系统中,用89s52单片机作为主控机,通过数据采集通道来实现水温控制,在独立按键及显示电路一体化的情况下来实现对采集到的数据进行显示。在单片机中把数据进行进一步处理后一方面送去显示,并判断是否需要报警;另一方面与给定值进行比较并进行控制计算。本文一方面结合实际应用经验,力求做到较为系统和全面的介绍系统设计与实施技术.附录1:系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,按键扫描。1.1主程序主程序的主要功能是负责读出并处理ds18b20的测量的当前温度值,温度的实时显示,并根据设置的上下限判断是否报警。系统开始运行时,温度传感器测量并计算温度值通过p1.0口传输进单片机里进行处理,经过处理后的数据再通过p0口传输到数码管进行显示。通过按键设置温度报警界限,当超过报警界限时单片机将相应的数据通过p1.1口传输进行声光报警。温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图1所示。初始化调用温度模块程序ds18b20存在?是处理温度值转换bcd码送at89s52处理按键扫描模块显示模块,led显示温度是否越限?开始是报警否否错误处理,显示8.8.8.8.图1 主程序流程图1.2读出温度子程序读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图2示 开始发ds18b20复位命令发跳过rom命令发读取温度命令读取操作,crc校验结束nyyn移入温度缓存器9字节完?crc校验?图2读温度流程图1.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图3所示1.4 计算温度子程序计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图4所示。发ds18b20复位命令开始发跳过rom命令发温度转换开始命令结束图 3 温度转换流程图 开始温度零下?温度值取补码置“”标志计算小数位温度bcd值 计算整数位温度bcd值 结束置“+”标志ny图 4计算温度流程图1.5 键盘扫描流程图开始enter_flag为1是否有up按下display显示退出子程序(ret)返回主程序enter子程序flag=1down子程序否是是否否是否否是是enter按键是否按下是否有enter按下是否有down按下up子程序图 5 按键扫描流程图附录2:源程序/*程序名称:ds18b20温度测量、报警系统简要说明:ds18b20温度计,温度测量范围099.9摄氏度 可设置上限报警温度、下限报警温度 即高于上限值或者低于下限值时蜂鸣器报警 默认上限报警温度为56、默认下限报警温度为50 报警值可设置范围:最低上限报警值等于当前下限报警值 最高下限报警值等于当前上限报警值 将下限报警值调为0时为关闭下限报警功能 */#include #include ds18b20.h #define uint unsigned int#define uchar unsigned char /宏定义#define set p3_1 /定义调整键#define dec p3_2 /定义减少键#define add p3_3 /定义增加键#define beep p3_7 /定义蜂鸣器#define hlight p1.5 /降温#define llight p1.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=56; /上限报警温度,默认值为56signed char xiaxian=50; /下限报警温度,默认值为50uchar code leddata=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;/*延时子程序*/void delay(uint num) while( -num );/*初始化定时器0*/void inittimer(void) tmod=0 x1; th0=0 x3c; tl0=0 xb0; /50ms(晶振12m)/*定时器0中断服务程序*/void timer0(void) interrupt 1 th0=0 x3c; tl0=0 xb0; x+;/*外部中断0服务程序*/void int0(void) interrupt 0 ex0=0; /关外部中断0 if(dec=0&set_st=1) shangxian-; if(shangxianxiaxian)shangxian=xiaxian; 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(m99)m=99;n=9; /设置温度显示上限 /*显示温度子程序*/disp_temperature() /显示温度 p0 =0 xc6; /显示c p2 = 0 x08; delay(300); p0 =leddatan; /显示个位 p2 = 0 x04; delay(300); p0 =leddatam%10; /显示十位 dian = 0; /显示小数点 p2 = 0 x02; delay(300); p0 =leddatam/10; /显示百位 p2 = 0 x01; delay(300); p2 = 0 x00; /关闭显示/*显示报警温度子程序*/disp_alarm(uchar baojing) p0 =0 xc6; /显示c p2 = 0 x08; delay(200); p0 =leddatabaojing%10; /显示十位 p2 = 0 x04; delay(200); p0 =leddatabaojing/10; /显示百位 p2 = 0 x02; delay(200); if(set_st=1)p0 =0 x89; else if(set_st=2)p0 =0 xc7; /上限h、下限l标示 p2 = 0 x01; delay(200); p2 = 0 x00; /关闭显示/*报警子程序*/void alarm() if(x=10)beep_st=beep_st;x=0;if(m=shangxian)hlight=1; else hlight=0; if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1)beep=0; else beep=1;/*主函数*/void main(void) uint z; inittimer(); /初始化定时器 ea=1; /全局中断开关 tr0=1; et0=1; /开启定时器0 it0=1; it1=1; check_wendu(); check_wendu(); for(z=0;z2)set_st=0; if(set_st=0) ex0=0; /关闭外部中断0 ex1=0; /关闭外部中断1 check_wendu(); disp_temperature(); alarm(); /报警检测 else if(set_st=1) beep=1; /关闭蜂鸣器 ex0=1; /开启外部中断0 ex1=1; /开启外部中断1 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) disp_alarm(shangxian); else if(s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《GB-T 30693-2014塑料薄膜与水接触角的测量》
- 人教版八年级下册期末复习:Unit 10-Unit 1 书面表达与范文
- 新解读《GB-T 8770-2014分子筛动态水吸附测定方法》
- 新解读《GB 31177-2014学生宿舍卫生要求及管理规范》
- 统编版语文五年级下册第1-8单元小古文阅读检测卷(含答案)
- 重庆产后瑜伽知识培训课件
- 重庆乐理知识培训班课件
- 课件-火力发电项目安全文明施工标准化图集
- 老年人认知症培训课件
- 《日语1》课程介绍与教学大纲
- 水利水电工程单元工程施工质量验收表、安装埋设考证表样、施工期观测精度和限差
- 2024年泰州海陵区数产集团所属泰州城发数字科技有限公司招聘笔试参考题库附带答案详解
- 国际音标卡片(打印版)
- 翁建平MODY识别与诊疗培训课件
- 高中物理校本课程生活中的趣味物理校本课程实施方案
- 防火防烟分区检查
- 《小学开学第一课:学生守则、行为规范、班级班规》课件
- 农产品营销的渠道策略讲义
- 工程总承包(EPC)模式市场应用现状
- 幼儿园行政工作保密协议
- 环境监测课件
评论
0/150
提交评论