当前位置:文档之家› 温度控制器的设计与制作共13页

温度控制器的设计与制作共13页

温度控制器的设计与制作一、功能要求设计并制作一个温度控制器,用于自动接通或断开室内的电加热设备,从而使室内温度达到设定温度要求,并能实时显示室内温度。

当室内温度大于等于设定温度时,控制器断︒时,控制器接通电加热设备。

开电加热设备;当室内温度比设定温度小2C控温范围:0~51C︒控温精度:≤1C︒二、硬件系统设计1.硬件系统由七部分组成,即单片机及看门狗电路、温度检测电路、控制输出电路、键盘电路、显示电路、设置温度储存电路及电源电路。

(1)单片机及看门狗电路根据设计所需的单片机的内部资源(程序存储器的容量、数据存储器的容量及I/O口数量),选择AT89C51-24PC较合适。

为了防止程序跑飞,导致温度失控,进而引起可怕的后果,本设计加入了硬件看门狗电路IMP813L,如果它的WDI脚不处于浮空状态,在1.6秒内WDI不被触发(即没有检测到上什沿或下降沿),就说明程序已经跑飞,看门狗输出端WDO将输出低电平到手动复位端,使复位输出端RST发出复位信号,使单片机可靠复位,即程序重新开始执行。

(注:如果选用AT89S51,由于其内部已具有看门狗电路,就不需外加IMP813L)(2)温度检测电路温度传感器采用AD590,它实际上是一个与绝对温度成正比的电流源,它的工作电压为4~30V,感测的温度范围为-550C~+1500C,具有良好的线性输出,其输出电流与温度成正比,即1μA/K。

因此在00C时的输出电流为273.2μA,在1000C时输出电流为373.2μA。

温度传感器将温度的变化转变为电流信号,通过电阻后转变电压信号,经过运算放大器JRC4558运算处理,处理后得到的模拟电压信号传输给A/D转换部分。

A/D转换器选用ADC0804,它是用CMOS集成工艺制成的逐次逼近型模数转换芯片,分辨率8位,转换时间100μs,基准电压0~5V,输入模拟电压0~5V。

(3)控制输出电路控制信号由单片机的P1.4引脚输出,经过光耦TLP521-1隔离后,经三极管C8550直接驱动继电器WJ108-1C-05VDC,如果所接的电加热设备的功率≤2KW,则可利用继电器的常开触点直接控制加热设备,如果加热设备的功率>2KW,可以继电器控制接触器,由接触器直接控制加热设备。

(4)键盘电路键盘共有四个按键,分别是S1(设置)、S2(+)、S3(-)、S4(储存)。

通过键盘来设置室内应达到的温度,键盘采用中断方式控制。

(5)显示电路显示电路由两位E10501_AR数码管组成,由两片74LS164驱动,实现静态显示,74LS164所需的串行数据和时钟由单片机的P3.0和P3.1提供。

对于学过“串行口”知识的班级,实习时,可以采用串行口工作于方式0,即同步移位寄存器的输出方式,通过串行口输出显示数据(实时温度值或设置温度值);对于没学过“串行口”知识的班级,实习时,可以采用模拟串行口的输出方式,实现显示数据的串行输出。

(6)设置温度存储电路为了防止设定温度在电源断电后丢失,此设计加入了储存电路,储存器选用具有I2C总线功能的AT24C01或FM24C01均可。

每次通过键盘设置的室内设定温度都通过储存器储存起来,即使是电源断电,储存器存储的设定温度也不丢失,在电源来电后,单片机自动将设定温度从储存器中读出,一方面避免了断电后的更新设置工作;另一方面也保护了控制器控制的安全性,可靠性。

(7)电源电路电源采用了串联型集成稳压器电路,电源有两路输出,一路由L7805CV稳压输出+5V,除JRC4558、AD590外,电路的其它部分均由+5V供电;一路由MC78L12和LM79L12稳压输出±12V,给JRC4558、AD590供电。

当然这里还可以选择现成的开关型稳压电源,但它的价格相对来说要高一些。

2.硬件系统电路原理图:3三、软件系统设计1.温控系统采用模块化程序结构,可分为四大模块:(1)系统初始化模块:完成变量的设定、中断入口的设定、各变量赋初值、堆栈设定、读设置温度、定时器T0工作方式及初值的设定并启动、开中断。

(2)循环模块:完成A/D转换及温度值的换算、温度值显示、温度比较、看门狗的触发。

(3)定时器T0中断模块:完成1秒的定时。

(4)外部中断INT1中断模块:完成键盘对温度值的设定。

2.软件流程框图:3.参考程序:;温度控制器源程序s1 bit p1.0 ;s1按键控制口位s2 bit p1.1 ;s2按键控制口位s3 bit p1.2 ;s3按键控制口位s4 bit p1.3 ;s4按键控制口位wdkz bit p1.4 ;温度控制口位wdi bit p1.5 ;看门狗触发端sda bit p1.7 ;AT24C01的数据线scl bit p1.6 ;AT24C01的时钟线drxd bit p3.0 ;74LS164数据dtxd bit p3.1 ;74ls164时钟intr bit p3.2 ;A/D转换结束信号控制口位szled bit p3.5 ;设置LEDsbz bit 00h ;秒标志位swwd equ 30h ;十位温度的BCD码存储单元gwwd equ 31h ;个位温度的BCD码存储单元adpj equ 32h ;A/D转换后的平滑滤波值存储单元szwd equ 33h ;设置温度值存储单元adwz equ 34h ;5次A/D值的初始位置,即34h~38hmjsz equ 39h ;1秒记数值(50ms次数)smjsz equ 3ah ;3秒记数值(200ms次数)shmjsz equ 3bh ;10秒记数值(200ms次数)org 0000hljmp startorg 000bhljmp timezd ;T0中断org 0013hljmp temszzd ;INT1中断org 0030hstart: clr sbzmov mjsz,#20mov shmjsz,#50mov sp,#60h;--------------赋初值;lcall durommov szwd,a;--------------读设置温度mov tmod,#01hmov th0,#3chmov tl0,#0b0hsetb tr0;--------------定时器T0的设定及启动 setb it1setb ex1setb et0setb ea;--------------开中断(INT1和T0中断) cyc: lcall adzhmov a,adpjlcall bcdzhlcall displcall tembjjnb sbz,$clr sbzlcall wdogsjmp cyc;模数转换子程序名:adzh;入口参数:无;出口参数:adpjadzh: push pswpush accmov r1,#adwzmov r2,#5adzh1: movx @r0,ajb intr,$movx a,@r0mov @r1,ainc r1djnz r2,adzh1;--------------5次A/D值完成mov r0,#adwzmov r2,#5lcall paix;--------------5次A/D值排序mov r6,#00hmov r7,#3mov a,#adwzadd a,#1mov r1,ajiafa: mov a,@r1add a,r5mov r5,amov a,r6addc a,#0mov r6,ainc r1djnz r7,jiafa;--------------去极值后,余下的3个值求和(和在r6r5中) chufa: mov r3,#16mov r4,#30mov r7,#0mov a,r5add a,r5mov r5,amov a,r6addc a,r6mov r6,amov a,r5add a,#15mov r5,amov a,r6addc a,#0mov r6,a;--------------为"四舍五入"作准备即和值乘以2加上15除以30 chufa1: clr cmov a,r5rlc amov r5,amov a,r6rlc amov r6,amov a,r7rlc asubb a,r4jnc chufa2add a,r4sjmp chufa3chufa2: inc r5chufa3: mov r7,adjnz r3,chufa1mov adpj,r5;-------------完成温度平均值pop accpop pswret;排序子程序名:paix(从大到小);入口参数:R0指向数据存储区的首地址,R2存放数据长度paix: push pswpush accpaix0: mov a,r0mov r1,amov a,r2mov r5,adec r5clr f0paix1: mov a,@r1inc r1clr csubb a,@r1jnc paix2setb f0add a,@r1xch a,@r1dec r1mov @r1,ainc r1paix2: djnz r5,paix1jnb f0,paix3clr f0dec r2cjne r2,#01h,paix0paix3: pop accpop pswret;T0中断程序名:timezd;出口参数:sbittimezd: mov th0,#3chmov tl0,#0b0hdjnz mjsz,timezd1mov mjsz,#20setb sbztimezd1: reti;温度设置中断程序名:temszzd ;入口参数:szwd;出口参数:szwdtemszzd: push pswpush accclr rs1setb rs0clr tr0mov a,szwdlcall bcdzhlcall disptemsz0: lcall wdoglcall delay200msjb s1,temsz0aljmp temsz0btemsz0a: ljmp ret0temsz0b: djnz smjsz,temsz0 mov smjsz,#15clr szledwdog1: lcall wdoglcall delay200msjnb s1,wdog1ljmp temsz2temsz1: lcall delay200msdjnz shmjsz,temsz2 mov shmjsz,#50ljmp ret0temsz2: jb s2,temsz3lcall delay20msjb s2,temsz3wdog2: lcall wdoglcall delay200msjnb s2,wdog2inc szwdmov a,szwdcjne a,#52,temsz2a mov a,#51mov szwd,atemsz2a: lcall bcdzhlcall dispmov shmjsz,#50sjmp temsz2temsz3: jb s3,temsz4lcall delay20msjb s3,temsz4wdog3: lcall wdoglcall delay200msjnb s3,wdog3dec szwdmov a,szwdcjne a,#255,temsz3a mov a,#0mov szwd,atemsz3a: lcall bcdzhlcall dispmov shmjsz,#50sjmp temsz2temsz4: jb s4,temsz1lcall delay20msjb s4,temsz1wdog4: lcall wdoglcall delay200msjnb s4,wdog4lcall xieromret0: setb szledmov a,adpjlcall bcdzhlcall displcall wdogsetb tr0pop accpop pswreti;bcd码转换子程序名:bcdzh;入口参数:a;出口参数:swwd、gwwd bcdzh: push pswpush bmov b,#10div abmov swwd,amov gwwd,bpop bpop pswret;温度比较子程序名:tembj;入口参数:adpj、szwd;出口参数:wdkztembj: push pswpush accmov a,adpjcjne a,szwd,tembj0tembj0: jc tembj1setb wdkzsjmp tembj3tembj1: add a,#2cjne a,szwd,tembj2tembj2: jnc tembj3clr wdkztembj3: pop accpop pswret;读ROM子程序名:durom;出口参数:adurom: push pswclr sda ;启动AT24C01mov a,#0a0hlcall a_sendmov a,#08hlcall a_sendsetb sclsetb sdaclr sdamov a,#0a1hlcall a_sendlcall a_receiveclr sdanopnopsetb sclnopnopsetb sdapop pswret;字节发送子程序名:a_send;入口参数:aa_send: push pswmov r0,#08ha_send1: clr sclrlc amov sda,cnopsetb sclnopnopnopdjnz r0,a_send1clr sclnopnopnopsetb scla_loop: mov c,sdajc a_loopclr sclpop pswret;字节接收子程序名:a_receive ;出口参数:aa_receive:push pswmov r0,#08ha_rec: setb sclnopnopmov c,sdarlc aclr sclnopnopdjnz r0,a_recsetb sdanopnopsetb sclnopnopclr sclpop pswret;写ROM子程序名:xierom;入口参数:szwdxierom: push pswpush accsetb sclsetb sdaclr sdamov a,#0a0hlcall a_sendmov a,#08hlcall a_sendmov a,szwdlcall a_sendclr sdanopnopsetb sclnopnopsetb sdalcall delay50mspop accpop pswret;延时200mS子程序名:delay200ms delay200ms:mov r7,#4del1: mov r6,#200del2: mov r5,#123nopdjnz r5,$djnz r6,del2djnz r7,del1ret;延时50ms子程序名:delay50ms delay50ms:mov r7,#200dela1: mov r6,#123nopdjnz r6,$djnz r7,dela1ret;延时20ms子程序名:delay20ms delay20ms:mov r7,#80delay1: mov r6,#123nopdjnz r6,$ret;看门狗子程序名:wdog wdog: clr wdisetb wdiclr wdiret;显示子程序disp;入口参数:swwd、gwwd disp: push pswpush accpush bmov dptr,#tabmov a,swwdcjne a,#00h,n0mov a,#0ffhajmp n1n0: movc a,@a+dptrn1: lcall zjfsmov a,gwwd movc a,@a+dptr lcall zjfspop bpop accpop pswretzjfs: mov r0,#08hclr czjfs1: rrc amov drxd,csetb dtxdnopnopnopnopnopnopclr dtxdnopnopnopnopnopnoprettab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hend四、系统调试1. 硬件系统的调试(1)看温度检测电路部分,图中标有V i1、V i2、V o ,由运放构成的差分比例运算电路可得: 21)22321)(424231()223211(i i o V R RP R RP R R V R RP R V +++-++= 搭接电路前,要准确调整RP3,保证422321=+R RP R ;要准确调整RP4,保证4142423=+RP R R ;保证了上述两项,即保证了)(521i i o V V V -=。

相关主题