数字加热设备温度控制器本科学位论文.docx
《数字加热设备温度控制器本科学位论文.docx》由会员分享,可在线阅读,更多相关《数字加热设备温度控制器本科学位论文.docx(29页珍藏版)》请在冰豆网上搜索。
![数字加热设备温度控制器本科学位论文.docx](https://file1.bdocx.com/fileroot1/2022-12/30/f9aed0d4-0837-457a-8333-b296c44d79f8/f9aed0d4-0837-457a-8333-b296c44d79f81.gif)
数字加热设备温度控制器本科学位论文
电子信息工程专业毕业论文
数字加热设备温度控制器
设计人:
***
指导老师:
***
项目负责人:
***
******************************8
****年**月
1、实物图P2
2、内容提要P3
1.1、本设计意义
1.2、实现功能
3、设计方案P3
3.1、单片机概述
3.2、DS18B29概述
3.3、光电耦合器MOC3041概述
3.4、本设计总体概要
4、硬件电路设计P6
4.1、18B20模块
4.2、MOC3041和双向可控硅构成的输出通道
4.3、数码管动态扫描显示模块
4.4、元件清单
4.5、总硬件电路图P8
5、软件系统设计P9
5.1、主程序流程图及说明
5.2、键盘处理与温度设定
5.3、定时动态显示中断程序流程图及说明
5.4、DS18B20读写程序流程图及说明
5.5、完整程序P17
6、结语P23
8.1、心得体会及致谢
8.2、参考文献
一.实物图
右图为工作状态时的电路实物图。
此时状态,25.5摄氏度,加热。
★二.内容提要:
1.本设计意义:
日新月异的现代社会,怎么生活得更便利,怎么工作的更高效是整个社会进步的动力。
而智能化早已一步步走入人们的生活中工作中。
从小的方面来说,设想一下,当烧热水时,如果有了温度控制监测器的话,我们将不用担心水沸溢出,而有了温度控制器的锅炉将可以随时烧出人们所需要的水温,当我们享受空调的冷暖调温时想一下空调温度的控制核心又是什么,其实,生活中早已离不开温度控制器,就连工业生产过程中也缺它不可。
采用89S51为核心的本设计,通过外围温度传感器18B20对温度的采集,通过单片机控制MOC3041和双向可控硅构成的输出通道所连接的加热器,形成加热设备温度控制系统。
硬件电路虽稍复杂,但可靠性极高。
软件程序严谨不苟。
2.实现功能:
(1)实时显示温度,系统精度为0.5℃。
(2)控制温度,默认的设定温度为上次设定温度。
低于或等于下限温度时加热,高于或等于上限温度时保温,设定时上限比下限大2℃。
(3)用按键可随时修改上下限温度。
(4)可控硅对加热源的开断状态进行控制。
(5)系统可以手动或上电复位。
复位时先自检,接着显示上次的设定温度值(上限值)。
正常工作时显示温度值,状态灯显示当前系统状态。
三.设计方案
3.1.单片机概述
微型计算机具有体积小,功耗低重量轻,价格低,可靠性高,开发使用简便等一系列优点,自问世以来得到了非常广泛的应用。
作为微型计算机发展的其中一大支,单片机系统全力满足测控对象的测控功能,兼顾数据处理能力。
单片机本身有着优异的特色,它性能价格比好,集成度高,体积小,可靠性好控制能力强,且低功耗,低电压,便于生产便携式产品,还易扩展。
目前,应用广泛的主流机型是80C51系列8位单片机。
其优点不容知否,它的性能价格比很高而且开发装置多,被国内技术人员熟悉广泛熟悉,芯片功能也够用适用,还有众多芯片制造厂商加盟,可选择空间大。
而单片机本身又有着优异的特色,它性能价格比好,集成度高,体积小,可靠性好控制能力强,且低功耗,低电压,便于生产便携式产品,还易扩展。
单片机的应用相当广泛,无论是在智能化家用电器,办公自动化设备商业营销设备,工业自动化控制,智能化仪表还是智能化通信产品,汽车电子产品,航空航天系统和国防军事、尖端武器等等都有着不可小觑的地位。
单片机引脚图如上图所示。
单片机系统分为两大部分,一为硬件部分,即组成单片机系统的物理实体。
二为软件部分,即对硬件使用和管理的程序。
单片机程序设计软件语言可分为机器语言,汇编语言,高级语言,本课程设计使用的是AT89S51,汇编语言。
AT89S51单片机是ATMEL公司生产的高性能8位单片机,其管脚图如图2所示,主要功能特性如下:
①兼容MCS-51指令系统;
②32个双向I/O口,两个16位可编程定时/计数器;
③1个串行中断,两个外部中断源;
④可直接驱动LED;
⑤低功耗空闲和掉电模式;
⑥4kB可反复擦写(>1000次)FLASIROM;
⑦全静态操作O~24MHz;
⑧128×8b内部RAM。
该款芯片的超低功耗和良好的性能价格比使其非常适合嵌入式产品应用
3.2DS18B20概述
DS18B20是美国DALLAS公司推出的单总线数字测温芯片。
如下图所示。
它形似三极管,采用3脚TO-92封装!
他具有独特的单总线接口方式,仅需使用1个端口就能实现与单片机的双向通讯。
采用数字信号输出提高了信号抗干扰能力和温度测量精度。
他的工作电压使用范围宽(3.0~5.5V),可以采用外部供电方式,也可以采用寄生电源方式,即当总线DQ为高电平时,窃取信号能量给DS18B20供电。
他还有负压特性,电源极性接反时,DS18B20不会因接错线而烧毁,但不能正常工作。
可以通过编程实现9~12位的温度转换精度设置。
下图为DS18B20工作原理图。
3.3光电耦合器MOC3041概述
MOC3041芯片是一种集成的带有光耦合的双向可控硅驱动电路。
它内部集成了发光二极管、双向可控硅和过零触发电路等器件。
它由输入和输出两部分组成。
输入部分是一个砷化镓发光二极管,在5~15mA正向电流的作用下发出足够强度的红外光去触发输出部分;输出部分包括一个硅光敏双向可控硅和过零触发器,在红外线的作用下,双向可控硅双向导通,与过零触发器一起输出同步触发脉冲,去控制执行机构——外部的双向可控硅。
用于逻辑控制电路系统,如固态继电器,工业控制,电机,电磁铁和消费类电子产品等。
下图左为MOC3041实物图,右下为管脚原理图。
光电耦合器MOC3041管脚功能
1。
阳极
2。
阴极
3。
空
4。
输出1
5。
空
6。
输出2
3.4.本设计总体概要:
本设计主要是对温度进行监测与控制,主要控制器件是单片机89S51。
首先温度传感器DS1820对温度进行采样和转换,将测量结果送给单片机,单片机将输入的温度值与内部指定单元的给定温度值进行比较,根据比较结果,通过执行机构可控硅对加热源的开断状态进行控制。
温度显示与设定体现在4个八段共印数码管。
下图为系统原理框图。
‘
四.硬件电路设计
根据设计思路,硬件电路结构由以下部分:
时钟电路、复位电路、按键输入电路、晶振电路、数码管显示电路、MOC3041和双向可控硅构成的输出通道、DS18B20驱动电路。
本设计虽然所费材料诸多,但性能可靠。
接下来重点剖析DS18B20驱动电路、MOC3041和双向可控硅构成的输出通道的硬件设计。
4.1DS1820模块
如左图所示,信号线接P3.0口。
这一部分主要完成对温度信号的采集和转换工作,忧郁采用了该芯片,温度测量电路变得非常简单。
DS1820像三极管一样,有一根底线,一根信号线和一根电源线,而信号线与IO口P3.0的相连,就能实现单片机对DS1820模式控制,温度值读取等操作。
4.2MOC3041和双向可控硅构成的输出通道
采用Motorola公司推出的单片集成可控硅驱动器件MOC3041来作为对输出的驱动和控制。
有MOC3041组成的过零出发双向可控硅电路简单可靠,电路如上图所示。
该部分的工作过程是:
当单片机的P3.1口输出为低电平时,3041内部导通,G端出现同步触发脉冲,控制可控硅导通,打开加热器;当P3.1为高电平时,MOC3041内部截止,可控硅断开,关闭加热器。
4.3数码管动态扫描显示模块
驱动电路如上图所示,驱动模块主要使用芯片74LS374,其管脚图如右下图所示。
D0~D7数据输入端,此输入端与单片机P0口相连,374为具有三态输出的八D边沿触发器,当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。
CP时钟输入端,单片机通过与非门与其相连,本设计中与非门用的是二输入四与非门的74LS02.O0~O7为输出端,两片74LS374分别与数码管的字形与字段相连。
4.4元件清单
共阴极数码管4个74SL374两个
按键5个MOC3041个
10K电阻2个300Ω电阻8个
4.7K电阻4个20PF电容2个
12MHZ晶振1个10UF电容1个
74LS021个AT89S511个
DS18B201个104电容1个
74LS081个发光二极管4个
电源插孔1个
BT1361个
4.5总硬件设计图
五.软件电路设计
5.1主程序:
启动DS1820测量温度,将测量值与给定值比较,若TX≤TL,则进如加热阶段,置P3.1为低电平。
在该过程中继续对水温进行监测,当TX≥TH时,置P3.1为高电平,断开可控硅,关闭加热器,等待下一次的启动命令。
系统主控程序工作流程如图所示。
主程序代码:
MAIN:
MOVSP,#06H;主程序开始,初始化
MOV20H,#00H;标志位清零
MOV21H,#08H;设定的初始位为第一位
MOV29H,#0FEH;显示的位选信号
LCALLZIJIAN;自检
LCALLREADTHTL;读上限温度和下限温度
LCALLTURNTH;转换TH
LCALLTESTRANGE;范围确定
LCALLDISPLAY;显示TH
SETBIT0;下降沿触发
SETBEX0;允许外中断0中断
SETBEA;开中断
LOOP:
LCALLDELAY;延时以保证转换结束
LCALLGET_TEMP;读转换温度值
LCALLTURN;数制转换
LCALLDISPLAY;送显示
CLRC;比较转换值与设定值
MOVA,24H;
CJNEA,2EH,LOOP1;不等,跳LOOP1
SJMPHOTTING;与下限值相等,跳HOTTING
LOOP1:
JCHOTTING;小于下限值,跳HOTTING
MOVA,24H;大于下限值,与上限值进行比较
CLRC
CJNEA,2DH,LOOP2;不等,跳LOOP2
SJMPSTOPHOT;相等,跳STOPHOT
LOOP2:
JNCSTOPHOT;温度大于上限值,跳STOPHOT
SJMPKEEP;温度小于上限值且大于下限值,跳KEEP
HOTTING:
CLRP3.1;温度低,加热
CLRP1.5;置加热状态灯
SETBP1.6;关保温状态灯
KEEP:
SJMPLOOP;保持原态
STOPHOT:
SETBP3.1;关闭加热器
SETBP1.5;关闭加热状态灯
CLRP1.6;亮保温状态灯
SJMPLOOP;主程序结束
5.2键盘处理与温度设定:
键盘功能:
1号键:
温度设定/确定设定;
2号键:
上档/显示设定温度;
3号键:
上升/下降;
4号键:
右移/左移。
在没有按1号键的情况下按3、4号键无效。
按1号键后为设定温度操作,当前设定位闪烁,按3号键为加减,4号键为移位。
上档时3、4号键分别为上升、右移;反之为下降及左移。
上档时标志灯亮,再次按1号键时为确定设定。
在没有设定温度时,按2号键为显示所设定的温度;在设定时为上档/下档键,按奇次为上档,按偶次为下档。
温度设定的范围是2~125℃,分为三个区域,分别为:
2~9℃,10~99℃和100~125℃。
当最高位为1时,第二位及第三位的最大值分别为2℃、5℃;当第一位及第二位都为0℃时,第三位的最低值为2℃。
主要程序:
TURNTH:
MOV2DH,27H;TH和TL放入缓冲区
MOV2EH,28H
MOV24H,27H;转换TH.入口为24H
ACALLTURN
MOV2AH,30H;送TH值到设定温度子程序的入口
MOV2BH,31H
MOV2CH,32H
MOVA,2CH
CLRC
SUBBA,#0BH
MOV2CH,A
MOV33H,#00H
MOV34H,#15H
RET
;---------------------------------
TESTRANGE:
MOVA,2AH
CJNEA,#01H,NOMAX
MOV22H,#08H;设定范围为100~125°
SJMPEXITTEST
NOMAX:
MOVA,2BH
CJNEA,#00H,MIDD
MOV22H,#02H;设定范围为10~99°
SJMPEXITTEST
MIDD:
MOV22H,#04H
EXITTEST:
RET
5.3定时动态显示中断程序流程图及说明
定时10mS扫描显示程序中,由于只有4个数码管,所以不需要套循环,直接一个个写出来就行了,一进中断首先要做的就是保护现场,接着初始化后显示第一位显示缓冲区的内容,要注意的是千万不要忘记关显示这一步,如果没这一步,显示效果就是数据不断的闪,根本无法达到显示效果!
最后恢复现场退出定时中断程序!
定时扫描中断程序如下:
INT:
PUSHACC
PUSHPSW
MOVP0,90H;将40H缓冲区中的拆分过的最后一位的值送P0
ORLP0,#30H;点亮最后一位
LCALLT1MS;延时一毫米
MOVP0,#0FFH;关显示
MOVP0,91H
ORLP0,#50H
LCALLT1MS
MOVP0,#0FFH
MOVP0,92H
ORLP0,#60H
LCALLT1MS
MOVP0,#0FFH
MOVP0,93H
ORLP0,#50H
LCALLT1MS
MOVP0,#0FFH
MOVTH0,#55536
MOVTL0,#55536;重新给T0赋初值,因为工作方式1无法自己赋初值
POPPSW
POPACC
RETI
T1MS:
MOV80H,#20;1毫秒延时子程序
G0:
MOV81H,#50
DJNZ81H,$
DJNZ80H,G0
RET
5.4DS18B20读写程序流程图及说明
DS18B20由于是单总线,所以其所有操作都在这一根线上,对于DS18B20的读写不是很简单,其时序性也是相当的强!
与DS18B20的所有通讯都是由一个单片机的复位脉冲和一个DS18B20的应答脉冲开始的。
单片机先发一个复位脉冲,保持低电平时间最少480μs,最多不能超过960μs。
然后,单片机释放总线,等待DS18B20的应答脉冲。
DS18B20在接受到复位脉冲后等待15~60μs才发出应答脉冲。
应答脉冲能保持60~240μs。
单片机从发送完复位脉冲到再次控制总线至少要等待480μs。
写时隙需要15~75μs,且在2次独立的写时隙之间至少需要1μs的恢复时间。
写时隙起始于单片机拉低总线。
读时隙需15~60μs,且在2次独立的读时隙之间至少需要1μs的恢复时间。
读时隙起始于单片机拉低总线至少1μs。
DSl8820在读时隙开始15μs后开始采样总线电平。
主要程序:
ET_TEMP:
CLREA;读取温度模块
ACALLINI;初始化
MOVA,#0CCH;跳过ROM(针对在线DS1820)
ACALLWRITE;写数据模块
MOVA,#44H;温度转换命令
ACALLWRITE
ACALLINI
MOVA,#0CCH
ACALLWRITE
MOVA,#0BEH;读数据命令
ACALLWRITE;写命令
ACALLREAD;读数据模块
MOV24H,A
SETBEA
RET
SETTHTL:
CLREA
ACALLINI
MOVA,#0CCH
ACALLWRITE
MOVA,#4EH
ACALLWRITE
MOVA,2DH
ACALLWRITE
MOVA,2EH
ACALLWRITE
ACALLINI
MOVA,#0CCH
ACALLWRITE
MOVA,#48H
ACALLWRITE
ACALLREADTHTL
MOVA,27H
CJNEA,2DH,SETTHTL
MOVA,28H
CJNEA,2EH,SETTHTL
SETBEA
RET
;---------------------------------------
READTHTL:
CLREA;出口为27H,28H
ACALLINI;27H为高字节
MOVA,#0CCH;28H为低字节
ACALLWRITE
MOVA,#0B8H
ACALLWRITE
ACALLINI
MOVA,#0CCH
ACALLWRITE
MOVA,#0B8H
ACALLWRITE
ACALLREAD
ACALLREAD
ACALLREAD
MOV27H,A
ACALLREAD
MOV28H,A
SETBEA
RET
;----------------------------------
INI:
CLRP3.0;DS1820的初始化
MOVR2,#100
I1:
CLRP3.0
DJNZR2,I1
SETBP3.0
MOVR2,#15
I2:
DJNZR2,I2
CLRC
ORLC,P3.0
JCINI
MOVR6,#40
I3:
ORLC,P3.0
JCI4
DJNZR6,I3
SJMPINI
I4:
MOVR2,#120
I5:
DJNZR2,I5
RET
;------------------------------------
WRITE:
MOVR3,#8;写DS1820模块
WR1:
SETBP3.0
MOVR4,#4
RRCA
CLRP3.0
WR2:
DJNZR4,WR2
MOVP3.0,C
MOVR4,#40
WR3:
DJNZR4,WR3
DJNZR3,WR1
SETBP3.0
RET
;-------------------------------------
READ:
MOVR6,#8;读转换温度模块
RE1:
CLRP3.0
MOVR4,#2
SETBP3.0
RE2:
DJNZR4,RE2
MOVC,P3.0
RRCA
MOVR5,#15
RE3:
DJNZR5,RE3
DJNZR6,RE1
RE5:
SETBP3.0
RET
5.5完整程序
ORG0000H
SJMPMAIN
ORG0003H
LJMPINT
ORG0030H
;============主程序================
MAIN:
MOVSP,#06H;主程序开始,初始化
MOV20H,#00H;标志位清零
MOV21H,#08H;设定的初始位为第一位
MOV29H,#0FEH;显示的位选信号
LCALLZIJIAN;自检
LCALLREADTHTL;读上限温度和下限温度
LCALLTURNTH;转换TH
LCALLTESTRANGE;范围确定
LCALLDISPLAY;显示TH
SETBIT0;下降沿触发
SETBEX0;允许外中断0中断
SETBEA;开中断
LOOP:
LCALLDELAY;延时以保证转换结束
LCALLGET_TEMP;读转换温度值
LCALLTURN;数制转换
LCALLDISPLAY;送显示
CLRC;比较转换值与设定值
MOVA,24H;
CJNEA,2EH,LOOP1;不等,跳LOOP1
SJMPHOTTING;与下限值相等,跳HOTTING
LOOP1:
JCHOTTING;小于下限值,跳HOTTING
MOVA,24H;大于下限值,与上限值进行比较
CLRC
CJNEA,2DH,LOOP2;不等,跳LOOP2
SJMPSTOPHOT;相等,跳STOPHOT
LOOP2:
JNCSTOPHOT;温度大于上限值,跳STOPHOT
SJMPKEEP;温度小于上限值且大于下限值,跳KEEP
HOTTING:
CLRP3.1;温度低,加热
CLRP1.5;置加热状态灯
SETBP1.6;关保温状态灯
KEEP:
SJMPLOOP;保持原态
STOPHOT:
SETBP3.1;关闭加热器
SETBP1.5;关闭加热状态灯
CLRP1.6;亮保温状态灯
SJMPLOOP;主程序结束
;---------子程序--------------------------
ZIJIAN:
MOV30H,#08H;自检显示器(888.8°)
MOV31H,#08H
MOV32H,#13H
MOV33H,#08H
MOV34H,#13H
CLRP1.4;红色电源灯亮
CLRP1.5;红色加热状态灯亮
CLRP1.6;绿色保温状态灯亮
CLRP1.7;蓝色上档状态灯亮
MOVR3,#0FFH;自检延时倍数
WAIT0:
ACALLDISPLAY;调显示,自检显示器
DJNZR3,WAIT0
SETBP1.5;加热状态灯灭
SETBP1.6;保温灯灭
SETBP1.7;上档灯灭
RET
;-------------------------------
TURNTH:
MOV2DH,27H;TH和TL放入缓冲区
MOV2EH,28H
MOV24H,27H;转换TH.入口为24H
ACALLTURN
MOV2AH,30H;送TH值到设定温度子程序的入口
MOV2BH,31H
MOV2CH,32H
MOVA,2CH
CLRC
SUBBA,#0BH
MOV2CH,A
MOV33H,#00H
MOV34H,#15H
RET
;---------------------------------
TESTRANGE:
MOVA,2AH
CJNEA,#01H,NOMAX
MOV22H,#08H;设定范围为100~125°
SJMPEXITTEST
NOMAX:
MOVA,2BH
CJNEA,#00H,MIDD
MOV22H,#02H;设定范围为10~99°
SJMPEXITTEST
MIDD:
MOV22H,#04H
EXITTEST:
RET
DISPLAY:
MOVR0,#30H;入口参数为30H