有关温度报警器的程序,有关DS18B20的程序已写好,求助有关蜂鸣器报警和温度上下限设置的程序

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 23:00:20
有关温度报警器的程序,有关DS18B20的程序已写好,求助有关蜂鸣器报警和温度上下限设置的程序
x[nɕ~Y#R`'x<, X v/ %IٖuնDҖ,w :դƙ`CuԹ~?|deʫS/w\ʭs{?_ï$~1%Oڎ~N`g_;t΋^Wjՠeʗ___}xXSqTŜ^Lfn5OĽgS3I!쒷AMv#1/-KGWp[kjVKX C Ɂp>.Aj[^Ul1z>>X"4  ՔXs/5uupZY{/5M 8y:hcQA7.K^zeBkVRfLg-A=o)Ōi]^t:2S-νm'Κ;~a2};mstzv{ LcCXh/CQBtNd|wS؈²R8sЙ#{WƉ0[->EL0ֵ%ª+I`CX~Xا ea<C'sKooA܄)W)%p/BUB,V4"xPi+ !Vv敦_ :/͂q L4L6;`p:D/Y~( ` 䀫6+Ck졵@{mBwÌg$_NZYjpX9uÖ73+՗o\Vq M뗎\$cs7FS ;%ذ9}(2r)&YFxҁa|vZpX !_2 qW+: 4Vq/-BӬͼL!, _Cc\ EAjا]5byG/Dh }&s&CzUB:|Gz,?)h=\LwЎ,Pf*jbL`Ige)~ 70n$gG<)|P@#ųG4:'PYJI ,=[80,|W*}zUSţYé:%4/}y1ߑ'{>Kt%`f(Q>H$Af*{=/[/F^ T"zx*MbrV:%;2$ţ ~'vX*FUv68˗9L^0D[1%`;~NS0̍lZE7+&:h fakYy|!FPspA[[E$Z+:4/ e[N;% M,EDBѱP5jDֶxu\"SvnqqN9*X}I#{ZR`y߼vmAt?>2? Ru9Rؔkד$i#I?SK(!chĸOȏ5| M%eO 'B!gYzu(9vgqg5D|YC|!aIKPէ"*u{9&/8MGדN0`V ` YW.j@m H#^V5,%:tu{uATBpf."={$hn>`cw:![y+KQg+wڏw*g8.iQe_|)8SK& UIzƟCTִsal<5/iʨX$7ev d!s@ϬC'$#XI[EmHi.WNهUrVk SkE+_N'ힴvwApuU??RMh:|6 >Ąi^O)b wJONU$kɯ [#*XFZT;v ذz-2M aX\ځIW,%iYO Gkʾ!̈́Y-~jML)C`r/o(Ę`>:Lo{bR k;Ku#L T좘!LβV P)0#?.#ǎӟT-{41L+}Vb%>Z.]>_w.kDǷI S)rp`L -o[%кKϡ 1ġٚ~nϬVmut[ő_==tUg-W% 71ޝahY7(<2)9Ì#O ƢVI :nͥГrI;0}˨McZ*x)=Ԇ4*j {+_aW.5?RZ%RԦש324Meƿ`c |"`r.B0{eԅz>* rMMƤJե<.-l=Z+턈q|T=.^QƛEmeHUo^kok4*yjYu(hY@u\݁[ 0Zs l*'p9Bh\g7!v!?sט 6g~je1?7e`*;-&I1>NQwDL&mjqDȬOsFOb"%&i"Ӝq],!ɌqF-KPǓgPjH㿴Nr}T+wJ Q⊁?mر> s^];E_ HN@Bo#$ibvɩHC-F' $HiwDL2 HhYYX~ 9: n7[ eH9 rȎNㆡ]Nҏl֨DDǦR'dРnU٘">If7:NRq)tQ $ ,|| c)1HڒtpɌYlE>J6NŨΣ"3oo5(7nuiQ;[/{״U*m#_]fj"sTh0OVwVr= W,a݁2T-Mh P'4`SYrpÃT֖'䢘 cX Su͕l-R۪V瑥SqMPj&RR5RZ 6 * mTVH[Udyآʓk r>6]/2ftJ8&1тN6]MzwA<}t)Rt.$otcjM 4s˹Ý*5V=+ykQgnF~3'!9Q2+U׽~s>-?a9P`~UnypwS2{WJ )o"f 8^CYu!:)VK{[UuUrʻ:p5HT[ U:i.dm:&wR2 1Ej$ ѶLȔu(:z讹D e}vŘq3v.nE%fwJ[j"qG:V7q]Z]7pZkjt3Eyr㝰N}Ǯx(QDCr"4uMwHszAà BOo(]V==p^k2b mu"^k|u:C(GѡZ- ^(R櫺F S^1xDaǪWOgvdޟ Y7\Aq.HCO&K|/݂wekY]7ÔGldoo(<4>;NrdD+*.²ZMdL.r YI=;%'Nߋ`eλRՀ@zͷ.0o jafb^D؁6cͺtMዹ"JgOP"Tk|®B휫V0rZ7j*hv WMYYwae~!OڦH/UT3x5&mL!"$e$ӧu:LU33EJ>шY׽YLȸ7]

有关温度报警器的程序,有关DS18B20的程序已写好,求助有关蜂鸣器报警和温度上下限设置的程序
有关温度报警器的程序,有关DS18B20的程序已写好,求助有关蜂鸣器报警和温度上下限设置的程序

有关温度报警器的程序,有关DS18B20的程序已写好,求助有关蜂鸣器报警和温度上下限设置的程序
本设计的温度测量及加热控制系统以 AT89S52 单片机为核心部件,外加温度采集电
路、键盘及显示电路、加热控制电路和越限报警等电路.采用单总线型数字式的温度传
感器 DS18B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制
的开关器件.本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到
用户需要的温度,并使其恒定在这一温度.人性化的行列式键盘设计使设置温度简单快
速,两位整数一位小数的显示方式具有更高的显示精度.建立在模糊控制理论上的控制
算法,使控制精度完全能满足一般社会生产的要求.通过对系统软件和硬件设计的合理
规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降
低了硬件成本,系统操控简便.
实验证明该温控系统能达到 0.2℃的静态误差,0.45℃的控制精度,以及只有 0.83%
的超调量,因而本设计具有很高的可靠性和稳定性.
关键 词: 单片机 恒温控制 模糊控制

1


引 言
温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于
冶金、化工、机械、食品等领域.温度控制是工业生产过程中经常遇到的过程控制,有
些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度
控制系统是非常有价值的.

硬件 系统的设计
1、电路总体原理框图
温度测量及加热系统控制的总体结构如图 1 所示.系统主要包括现场温度采集、实
时温度显示、加热控制参数设置、加热电路控制输出、与报警装置和系统核心 AT89S52
单片机作为微处理器.

图 1:系统总体原理框图
温度采集电路以数字量形式将现场温度传至单片机.单片机结合现场温度与用户设
定的目标温度,按照已经编程固化的模糊控制算法计算出实时控制量.以此控制量控制
固态继电器开通和关断,决定加热电路的工作状态,使水温逐步稳定于用户设定的目标
值.在水温到达设定的目标温度后,由于自然冷却而使其温度下降时,单片机通过采样
回的温度与设置的目标温度比较,作出相应的控制,开启加热器.当用户需要比实时温
度低的温度时,此电路可以利用风扇降温.系统运行过程中的各种状态参量均可由数码
管实时显示.
2、温度采集电路的设计
温度采集电路模块如图 2 示.DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、
温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器.其中 DQ 为数字信号输
入/输出端;GND 为电源地;VDD 为外接供电电源输入端.

2


图 2:温度采集电路
DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 位符号扩展
的二进制补码读数形式提供,以 0.0625℃/LSB 形式表达,其中 S 为符号位.

这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进
制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘
于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加 1
再乘于 0.0625 即可得到实际温度.
3、键盘和显示的设计
键盘采用行列式和外部中断相结合的方法,图 3 中各按键的功能定义如下表 1.其
中设置键与单片机的 INT 0 脚相连,S 0 −−S 9 、YES、NO 用四行三列接单片机 P0 口,REST
键为硬件复位键,与 R、C 构成复位电路.模块电路如下图 3:
表 1:按键功能

按键 键名 功能
REST 复位键 使系统复位
RET 设置键 使系统产生中断,进入设置状态
S 0 −−S 9 数字键 设置用户需要的温度
YES 确认键 用户设定目标温度后进行确认
NO 清除键 用户设定温度错误或误按了 YES 键后使用

3


图 3 键盘接口电路
显示采用 3 位共阳 LED 动态显示方式,显示内容有温度值的十位、个位及小数点后
一位.用 P2 口作为段控码输出,并用 74HC244 作驱动.P1.0—P1.2 作为位控码输出,
用 PNP 型三极管做驱动.模块电路如下图 4:


4、加热控制电路的设计

图 4 显示接口电路

用于在闭环控制系统中对被控对象实施控制,被控对象为电热杯,采用对加在电热
杯两端的电压进行通断的方法进行控制,以实现对水加热功率的调整,从而达到对水温
控制的目的.对电炉丝通断的控制采用 SSR-40DA 固态继电器.它的使用非常简单,只
要在控制端 TTL 电平,即可实现对继电器的开关,使用时完全可以用 NPN 型三极管接
成电压跟随器的形式驱动.当单片机的 P1.3 为高点平时,三极管驱动固态继电器工作
接通加热器工作,当单片机的 P1.3 为低电平时固态继电器关断,加热器不工作.控制
电路图如下图 5:

4


图 5 加热控制电路
5、报警及指示灯电路的设计
当用户设定的目标温度达到时需用声音的形式提醒用户,此时蜂鸣器为三声断续的
滴答滴答的叫声.在本系统中我们为用户设计了越限报警,当温度低于用户设置的目标
温度 10 度或高于 10 度时蜂鸣器为连续不断的滴答滴答叫声.当单片机 P1.7 输出高电
平时,三极管导通,蜂鸣器工作发出报警声.P1.7 为低电平时三极管关断,蜂鸣器不
工作.
D1 为电热杯加热指示灯,P1.5 低电平有效;D0 为检测到 DS18B20 的指示,高电平
有效;D10 为降温指示灯,低电平有效.报警及指示灯电路如下图 6 示:

图 6 报警及指示灯电路

5


软 件系统的设计
系统的软件由三大模块组成:主程序模块、功能实现模块和运算控制模块.
1、主程序模块
主程序主要完成加热控制系统各部件的初始化和实现各功能子程序的调用,以及实
际测量中各个功能模块的协调在无外部中断申请时,单片机通过循环对外部温度进行实
时显示.把设置键作为外部中断 0,以便能对数字按键进行相应处理.主程序流程图如
下图 7:

6


图 7 主程序流程图

7


2、功能实现模块
以用来执行对固态继电器及电热杯的控制.功能实现模块主要由中断处理子程序、
温度比较处理子程序、键盘处理子程序、显示子程序、报警子程序等部分组成.键盘显
示及中断程序流程图如下图 8:


3、运算控制模块

图 8 键盘、显示、中断 子程序流程图

该模块由标度转换、模糊控制算法,及其中用到的乘法子程序.
3.1 标度转换
16
式中 A 为二进制的温度值, A0 为 DS18B20 的数字信号线送回来的温度数据.

8


单片机在处理标度转换时是通过把 DS18B20 的信号线送回的 16 位数据右移 4 位得
到二进制的温度值.其小数部分通过查小数表的形式获取.程序流程图如下图 9:

开始

将28H低4位与29H高4位组合成
一个字节

将合成的字节(整数部分)送29H
单元
将29H单元低4位送A

给DPTR赋常数表格2首地址

将查到的数值(即小数部分)送
30H单元

结束


3.2 模糊控制算法子程序

图 9 标度转换子程序流程图

该系统为一温度控制系统,由于无法确切确定电炉的物理模型,因而无法建立其数
学模型和传递函数.加热器为一惯性系统,我们采用模糊控制的方法,通过多次温度测
量模糊计算当用户设定目标温度时需提前关断加热器的温度,利用加热器自身的热惯性
使温度上升到其设定温度.每隔 5 摄氏度我们进行一次温度测量,并当达到其温度时关
断加热器记录下因加热器的热惯性而上升的温度值.从而可以建立热惯性的温度差值
表,在程序中利用查表法,查出相应设定温度对应的关断温度.通过实验数据我们可以
看出,当水温从 0℃加热到 50℃这段温度区域,其温度惯性曲线可近似成线性的直线,
水温从 50℃加热到 100℃这段温度惯性曲线可近似成另一条线性的直线段.通过对设置
的目标温度与温控系统监测温度进行差值处理就可近似的求出单片机的提前关断温度.
程序流程图如图 10:

9



4.源程序见附录[2]

图 10 模糊控制算法子程序流程图

设计 总结
我们的温度控制系统是基于 AT89S52 单片机的设计方案,她能实时显示当前温度,
并能根据用户的要求作出相应的控制.此系统为闭环系统,工作稳定稳定性高,控制精
度高,利用模糊控制算法使超调量大大降低.软件采用模块化结构,提高了通用性.本设
计的目的不仅仅是温度控制本身,主要提供了单片机外围电路及软件包括控制算法设计
的思想,应该说,这种思想比控制系统本身更为重要.
1、设计所达到的性能指标
1.1 温控系统的标度误差
我们将标准温度计和温控系统探头放人同一容器中,选定若干不同的温度点,记
录下标准温度计显示的温度和温控系统显示的温度进行比较.测量数据如下表 2 所示:
表 2 标准温度计测量的温度和温控系统显示的温度

标准温度计和温控系统显示的温度(℃)
标准温度计 16.9 47.7 57.8 63.0 72.8 85.1 90.9
温控系统 16.5 48.0 58.3 62.9 73.0 85.5 90.5
差值比较 -0.4 0.3 0.5 0.1 0.2 0.4 -0.4
标度误差 1.5%

10


1.2 温控系统的静态误差
通过测量在不同的温度点同标准温度的温度差来确定温控系统的静态误差.其测量
数据如下表 3:
表 3 标准温度和温控系统显示的温度

标准温度和温控系统显示的温度(℃)
标准温度 26.0 37.0 46.0 60.0 70.0 83.0
系统显示值 25.7 36.4 46.1 59.6 70.0 83.3
差值 -0.3 -0.6 -0.1 -0.4 0 0.3
静态误差 0.18℃

1.3 温控系统的控制精度
通过设定不同的温度值,使加热器加热,待温度稳定时记录各温度点的温度计数据
和温控系统的显示值.其记录数据如下表 4:

温度计读数和温控系统显示的温度(℃)
设定温度
值 20.0 28.0 35.0 45.0 55.0 75.0 87.0 91.0
系统显示
值 20.5 27.7 34.4 45.1 54.1 74.9 86.1 91.2
差值 0.5 -0.3 -0.6 0.1 -0.9 -0.1 -0.9 0.2
控制精度 0.45℃
超调量 0.83%

2、结果分析论述
我们的系统完全满足设计要求,静态误差方面可以达到 0.18℃的误差,在读数正确
方面与标准温度计的读数误差为 1.5%,对一般的工业生产完全可以采用我们的设计.
该系统具有较小的超调值,超调值大约为 0.83%左右.虽然超调为不利结果,但另
一方面却减小了系统的调节时间.从其数据表可以看出该系统为稳定系统.
3、设计方案评价
3.1 优点
在硬件方面:本设计方案采用了单总线型数字式的温度传感器,提高了温度的采集
精度,节约了单片机的口线资源.方案还使用仅一跟口线就可控制的美国生产的固态继
电器 SSR—40DA 作加热控制器件,使设计简单化,且可靠性强.在控制精度方面,本设
计在不能确定执行机构的数学模型的情况下,大胆的假设小心的求证,利用模糊控制的
算法来提高控制精度.
在软件方面:我们采用模块化编程,思路清晰,使程序简洁、可移植性强.
3.2 缺点
本设计方案虽然采用了当前市场最先进的电子器件,使电路设计简单,但设计方案
造价高.本系统虽然具有较小的超调量,但加大了调节时间.如果需要更高的控制精度,
则我们的模糊控制将不适应,需修改程序.
11


3.3 方案的改进
在不改变加热器容量的情况下,为减小调节时间,可以实行在加热快达到设定温度
时开启风扇来减小热惯性对温度的影响的措施.在控制精度上可采用先进的数字 PID
控制算法,对加热时间进行控制,提高控制精度.
可以改进控制系统使能同 PC 联机通信,以利用 PC 的图形处理功能打印显示温度曲
线.AT89S52 串行口为 TTL 电平,PC 串行口为 RS232 电平,使用一片 MAX232 作为电
平转换驱动.

参考 文献
[1] 李广弟 单片机基础 北京:北京航空航天大学出版社,2001
[2] 王福瑞 单片微机测控系统设计大全 北京:北京航空航天大学出版社,1997
[3] 赵茂泰 智能仪器原理及应用(第 2 版) 北京:电子工业出版社,2004
[4] 赖寿涛 微型计算机控制技术 北京:机械工业出版社,2000
[5] 沙占友 模拟与数字万用表检测及应用技术 北京:电子工业出版社 1999

12


附 录
附录[1]使用说明书

按 键功能说明
数字键:按 SET 键后,按相应的数字键(0~9)可对温度进行设置,所设置的温
度将实时显示在 LED 显示器上;
SET 键:按 SET 键可对温度的十位、个位以及小数部分进行设置;
YES 键:设置好温度后按 YES 键,系统将据你所设置的温度(须大于当前实际
温度)对水进行加热;
NO 键:若误按了 SET 键,或对输入有误,可按 NO 键进行取消;
RST 键:对系统进行复位.
指示 灯及报警器说明
红 灯:加热状态标志;
绿 灯:温度传感器正常工作标志;
蓝 灯:保温状态标志;
报警器:功能①当水温达到预设值时报警提醒;
功能②当水温达到或超越上、下限时报警提示.

13


附录[2]设计总电路

14


附录[3]程序清单
TEMPER_L EQU 29H ;用于 保存读出温度的低 8 位
TEMPER_H EQU 28H ;用于 保存读出温度的高 8 位
FLAG EQU 38H ;是否 检测到 DS 18B20 标志位
DAYU EQU 44H ;设温 >实温
XIYU EQU 45H ;设温

有关温度报警器的程序,有关DS18B20的程序已写好,求助有关蜂鸣器报警和温度上下限设置的程序 ds18b20温度报警器 怎样设置温度上下限 ds18b20温度是几位的呀 51单片机与DS18B20程序11.0592MHz的51单片机,Ds18b20检测温度,传给单片机,求C程序!保证时序的! 设计一个温度报警器,利用51单片机和DS18B20,下图为原理图,假如要在硬件上加个数码管用于设置温度上下限该怎么加,怎么连线,程序具体怎么写,希望高人指点下面是具体要求1)当检测到的温度 温度报警器的原理 ds18b20 温度读回程序我看到郭天祥基于TX 51D中的ds18b20程序,所以抽取了它的读取程序 ,程序如下声明硬件ds18b20电路是VCC供电的,数据传输口即2口连接P2^2口,那么,只有基本的复位和时钟,我可以读 求一个ds18b20数字温度测量的C程序程序比较简单,电路图已上传.P0作为段选,P2位选,希望能得到完整的程序,包括:ds18b20初始化,读字节,写字节,读温度,温度处理,和温度的4位数码管显示, ds18b20测到的温度与实际温度不一样是怎么回事 ds18b20 为什么读不出温度 ds18b20的负温度采集小弟最近写了一个ds18b20的程序,正温度的显示很完美,但是负温度的显示每个都却有近1度的误差,关于温度采集的程序如下,请给我找出原因:TEML=Readebyte();TEMH=Readebyte();if((TEMH PIC单片机ds18b20测温度时,将AD转换的750ms延时使用中断延时的程序后,温度检测的变化几分才转换一次,为 1、如图是一种水位自动报警器的原理图,有关该报警器工作情况的下列叙述,不正确的是: 用LCD1602和DS18B20显示温度和时间C语言程序用51单片机实现 ,时间部分用2个按钮实现对时间的调整 是的, 温度传感器ds18b20的温度和电压有没有换算公式? proteus 仿真ds18b20读出的温度一直为零 DS18B20读出的温度值需要乘0.0625吗 关于ds18b20的温度补偿我的论文是用DS18B20芯片,请问怎么添加温度补偿