1、系统设计报告基于51单片机的水温自动控制系统0 引言在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30到96。1 设计任务、要求和技术指标1.1任务设计并制作一水温自动控制系统,可以在一定范围(30到96)内自动调节温度,使水温保持在一定的范围(30到96)内。1.2要求(1) 利用模拟温度传感器检测温度,要求检测电路尽可能简单。(2) 当液位低于某一值时,停止加热。(3) 用AD转换器把采集到的模拟温度值送入单片机。(4) 无竞争-冒险,无抖动。1.3技术指标(
2、1) 温度显示误差不超过1。(2) 温度显示范围为099。(3) 程序部分用PID算法实现温度自动控制。(4) 检测信号为电压信号。2 方案分析与论证2.1主控系统分析与论证根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。2.2显示系统分析与论证显示模块主要用于显示时间,由于显示范围为099,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案:方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主
3、控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。方案二:采用动态显示的方案由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。图1 AT89C51引脚图2.3 检测系统分析与论证1 温度检测:有选用AD590和LM35D两种温度传感器的方案,但考虑到两者价格差距较大,而本系统中对温度要求的精度不很高,因而选用比较廉价LM35D。温度传感器采用的是NS公司生产的LM35D,他具有很高的工作精度和较宽的线性工作范
4、围,他的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供1/ 4 的常用的室温精度。L M35的输出电压与摄氏温度的线形关系可用下面公式表示 ,0 时输出为 0 V , 每升高 1 , 输出电压增加10 mV。其电源供应模式有单电源与正负双电源两种,其接法如图2与图3所示。正负双电源的供电模式可提供负温度的测量,单电源模式在25 下电流约为50 mA ,非常省电。本系统采用的是单电源模式。Vout=10mV/T()2 液位检测:同样考虑到成本问题,选用自己做一个液位传感装置。 图2 单电源模式 图3 双电源模式2.4控制系统分析与论证 由于需要用大功率加热装置对水温进行调节,故采用
5、带过零检测双向可控硅输出光电耦合器MOC3041构成后向控制电路。3系统原理框图硬件组成框图如图4所示:主要由AT89C51单片机、温度信号采集和调理、AD转换、数码显示电路、温度控制等部分组成。温度采集电 路信号调理电 路A/D转换电路单片机系统温度显 示执行电 路液位检测图4 硬件框图电源开启后,可以显示出实时的温度,并且可以判断出此时的温度是否需要对水进行加热操作4 硬件电路4.1温度信号检测和调理电路LM35D采用单电源供电模式如图2将采集到的电压信号送入运放uA741进行放大处理,如图5。图5 信号采集调理电路4.2 显示电路显示电路由两片74LS164和两个数码管构成,为了PCB中
6、作图的方便,故采用如图6的连接方式。图6 温度显示电路时钟由单片机的P1.1提供,第一个数码管的数据由单片机的P1.0提供,第二个数码管的数据由第一个164的Q7提供。164的时序图如图7所示。图7 74LS164的时序图4.3 温度控制电路温度控制电路由光电耦合器MOC3041和双向晶闸管BT137构成,硬件连接如图8。图8 温度控制电路4.4 AD转换电路本部分电路由ADC0809和一些74系列芯片构成,其中74LS74用于对单片机的ALE信号进行分频作为0809的时钟,74LS373用做地址锁存实现单片机P0口的分时复用。该部分硬件电路如图9所示。图9 AD转换电路4.5主控系统电路该系
7、统由AT89C51构成,由5V电源供电,采用6Mhz的晶振。主控系统电路主要承担显示及对温度的PID控制的核心引用,各功能通过软件软件实现。图10为单片机的主控电路。 图10 单片机主控电路4.6整体PCB图见附件A5 软件部分5.1主程序流程说明主程序的任务主要是循环检测采集到的温度值,不断比较实现PID控制。流程图如下:JR=0;冷却开始初始化延时采集一次温度数据并进行转换数据暂存B修改指针延时再采集一次温度数据并进行转换A=B?A=96?AB?JR=0;冷却JR=1;加热图11 主程序流程图5.2各子程序模块流程5.2.1显示部分 显示部分主要包括三个小模块:第一、原始数据的拆分;第二、
8、待显示数据查表;第三、待显示数据的输出。数据分配表如图12,送待显示数据流程如图13,查表流程如图14图13 待显示数据输出流程 图14 查表程序流程5.2.2中断程序部分中断部分包括定时器中断(主要实现1秒刷新一次显示)和外部中断(检测液位。为防止抖动,设置一个标志位,进入中断后判断标志位,如果一秒钟内没有出中断,则响应,否则不响应),流程图分别如图15和图16。入中断保护现场重赋计数初值1S到?调用显示恢复现场返回入中断F1 =1?停止加热F1=1延时1S返回图15 定时器中断流程图 图16 外中断流程图5.3整体程序见附件C6 系统调试6.1 软件调试 调试所用软件:Keil uVisi
9、on2和Proteus7。将编写好的程序用Keil uVision2汇编编译成hex格式的文件后导入Proteus7中的原理图(附件B)内。结果正常显示,说明程序本身没有问题。6.2 硬件调试调试所用工具:直流稳压电源,示波器,万用表等。6.2.1 放大电路的调试:将信号调理部分电路的输入端接地,调节电位器,使输出电压为零(用万用表毫伏档测量)。输入一定的电压值01V范围内,观察电路的输出电压,调节电阻值,使输出为输入的5倍。6.2.2 显示电路的调试:先写一个简单的显示程序,烧入单片机内,接好电路,观察显示是否正常。6.2.3 AD转换电路的调试:写一个简单的控制ADC0809的程序,用示波
10、器观察ADC0809所接受到的信号是否正确,如时钟信号、开始信号等、给定输入端一个电压,给OE端持续加高电平,使允许输出,用万用表或示波器测量各个输出引脚的转换情况,结果与计算值是否相符合。6.2.4 系统的整体调试: 将编写好的程序烧入单片机中,接好整体电路,观察输出结果是否正确。调试中显示一直是99,最后去掉373和排阻,显示正常。主要是因为加的排阻过小,只有330欧姆,而ADC0809向单片机送数据的时间有很短,所以,即使送入0也可能会被单片机认为是1,所以一直显示99。6.2.5 系统存在的问题: 由于实验调试时,只是观察led灯的亮灭变化,没有接上实际的光耦驱动大功率加热器件,而实际
11、测试时,led灯的亮度不高说明驱动电流太小,因而在驱动光耦时还需加入74LS07以增大P1.2口的驱动电流,使之能够驱动光耦。调试的过程中发现所购买的ADC0809的IN0输入端直接与地短接,所以,真正做成的系统用的是通道1。又加上调试时去掉了排阻和74LS373,因而选地址时是直接把地址选择端接成了高低电平,虽然实现了功能但是与初衷不符。参考资料:【1】谢自美 电子线路综合设计 华中科技大学出版社【2】张毅刚 单片机原理及应用附件A:整体PCB图附件B:PROTEUS仿真图附件C:本系统所用程序: DIN BIT P1.0 CLK BIT P1.1 JR BIT P1.2 F1 BIT 21
12、H ORG 0000H SJMP MAIN ORG 0003H LJMP INT00 ORG 000BH LJMP INTDISP ORG 0030HMAIN: SETB EA SETB EX0 SETB ET0 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H mov 20h,#10 SETB TR0 ;中断初始化 CLR F1CJ1: MOV R0,#30H LCALL D1S LCALL AD0809 MOV B,A CJ2: MOV R0,#31H LCALL D1S LCALL AD0809 CJNE A,B,COMP LJMP CJ2 COMP: C
13、JNE A,#30H,N30 SETB CTRO LJMP CJ1 N30: JNC COM96 SETB JR LJMP CJ1COM96:CJNE A,#96H,N96 CLR JR LJMP CJ1N96: JC COMAB CLR JR LJMP CJ1COMAB:CJNE A,B,DR LJMP CJ2DR: JC DOWNRISE: SETB JR LJMP CJ1DOWN: CLR JR LJMP CJ1AD0809: ;数据采集转换 MOV DPTR,#0FFF8HLOOP: MOVX DPTR,A MOV R7,#0AHDELAY: NOP NOP NOP DJNZ R7,D
14、ELAY MOVX A,DPTR MOV DPTR,#TBCD MOVC A,A+DPTR MOV R0,A RETDISP0: ;拆分 MOV R1,#40H MOV A,R0 MOV B,A ANL A,#0F0H SWAP A MOV R1,A inc R1 MOV A,B ANL A,#0FH MOV R1,A RETDISP1: ;查表 MOV R0,#40H MOV R1,#50H MOV R7,#2 L1:MOV DPTR,#SEGTAB MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R0 INC R1 DJNZ R7,L1 RETDISP2: ;显示
15、MOV R0,#50H MOV R1,#2 L2:MOV A,R0 MOV R7,#8 L3:RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,L3 INC R0 DJNZ R1,L2 RETDISP:PUSH ACC PUSH B mov 33h,r0 LCALL DISP0 LCALL DISP1 LCALL DISP2 mov r0,33h POP B POP ACC RETD100MS:MOV R3,#200DEL0: MOV R4,#125DEL1: DJNZ R4,DEL1 DJNZ R3,DEL0 RETD1S: MOV R5,#10DEL2: C
16、ALL D100MS DJNZ R5,DEL2 RET INT00: JNB F1,LINT CLR JR SJMP RETURNLINT:SETB F1 LCALL D1SRETURN: RETIINTDISP: PUSH ACC PUSH B MOV TH0,#3CH MOV TL0,#0B0H djnz 20h,back mov 20h,#10 LCALL DISPback:POP B POP ACC RETITBCD:DB 00H,00H,01H,01H,02H,02H,02H,03H DB 03H,04H,04H,04H,05H,05H,05H,06H DB 06H,07H,07H,
17、07H,08H,08H,09H,09H DB 09H,10H,10H,11H,11H,11H,12H,12H DB 12H,13H,13H,14H,14H,14H,15H,15H DB 16H,16H,16H,17H,17H,18H,18H,18H DB 19H,19H,20H,20H,20H,21H,21H,21H DB 22H,22H,23H,23H,23H,24H,24H,25H DB 25H,25H,26H,26H,27H,27H,27H,28H DB 28H,28H,29H,29H,30H,30H,30H,31H DB 31H,32H,32H,32H,33H,33H,34H,34H
18、DB 34H,35H,35H,35H,36H,36H,37H,37H DB 37H,38H,38H,39H,39H,39H,40H,40H DB 41H,41H,41H,42H,42H,43H,43H,43H DB 44H,44H,44H,45H,45H,46H,46H,46H DB 47H,47H,48H,48H,49H,49H,49H,50H DB 50H,50H,51H,51H,51H,52H,52H,53H DB 53H,53H,54H,54H,55H,55H,55H,56H DB 56H,57H,57H,57H,58H,58H,59H,59H DB 59H,60H,60H,60H,6
19、1H,61H,62H,62H DB 62H,63H,63H,64H,64H,64H,65H,65H DB 66H,66H,66H,67H,67H,67H,68H,68H DB 69H,69H,69H,70H,70H,71H,71H,71H DB 72H,72H,73H,73H,73H,74H,74H,74H DB 75H,75H,76H,76H,76H,77H,77H,78H DB 78H,78H,79H,79H,80H,80H,80H,81H DB 81H,82H,82H,82H,83H,83H,83H,84H DB 84H,85H,85H,85H,86H,86H,87H,87H DB 87H,88H,88H,89H,89H,89H,90H,90H DB 90H,91H,91H,92H,92H,92H,93H,93H DB 94H,94H,94H,95H,95H,96H,96H,96H DB 97H,97H,98H,98H,98H,99H,99H,99H SEGTAB: DB 77H,14H,0B3H,0B6H,0D4H DB 0E6H,0E7H,34H,0F7H,0F6HEND第15页