水温控制系统设计毕业论文.doc

上传人:文库蛋蛋多 文档编号:3986131 上传时间:2023-03-30 格式:DOC 页数:17 大小:988.50KB
返回 下载 相关 举报
水温控制系统设计毕业论文.doc_第1页
第1页 / 共17页
水温控制系统设计毕业论文.doc_第2页
第2页 / 共17页
水温控制系统设计毕业论文.doc_第3页
第3页 / 共17页
水温控制系统设计毕业论文.doc_第4页
第4页 / 共17页
水温控制系统设计毕业论文.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《水温控制系统设计毕业论文.doc》由会员分享,可在线阅读,更多相关《水温控制系统设计毕业论文.doc(17页珍藏版)》请在三一办公上搜索。

1、水温控制系统设计 摘要考虑到题目的要求,本设计采用单片机开实现,设计采用现成有的AT89C52单片机(实际AT89C2051即可满足要求)。单片机软件编程灵活,自由度大,可用软件编程实现各种控制算法和各种逻辑控制。本设计的主要特点:1)温度采集部分采用DS18B20单总线数字温度传感器。DS18B20具有微型化,低功耗,高性能,抗干扰能力强的特点。该器件将半导体温敏器件,A/D转换器,存储器等集成在一个芯片上,传感器输出的就是温度信号数字值。使用该器件不仅大大简化了温度采集部分,而且也提高了温度采集部分的抗干扰性。2)控制部分采用固态继电器。a固态继电器内部采用光耦合方式,可实现弱电部分与强电

2、部分的完全隔离。b固态继电器的反应时间较短。考虑到加热器件的热惯性,使用固态继电器在实际温度接近设定温度时可采用调节输出信号占空比的方式(即PWM方式)来控制继电器的通断,使系统稳定时间缩短。3)设定值可被记忆。DS18B20内部含有EEPROM电擦除ROM用于存储设定的上下限报警值,因此每次设定的值都可以被存储下来,直到下一次设定为止。一方案论证和比较(1)方案一采用二位式模拟控制方案,利用上下限比较电路,提高精度。这种方法是模拟控制方式,因此不能实现复杂的控制算法使控制精度做得较高,而且不能用数码显示和键盘设定。(框图见C-1)负载固态继电器信号处理上限比较信号放大采集信号温度预置下限比较

3、(图C-1)二 系统原理(1) 传感器选择 常见的感温元件有热电偶、热电阻、半导体和集成等传感器,它们的主要优缺点是:热电偶价格便宜,但精度低,需冷端补偿,电路设计复杂;热电阻精度高,但需要标准稳定电阻匹配才能使用。而半导体温度传感器需要经过模数转换,数据线多,电路设计比较难。而集成温度传感器具有精度高,线性度好,电路简单,价格适中等优点。因此我们选用由美国DALLAS半导体公司生产的智能型温度传感器DS18B20。(2) 控制算法 实验表明,水温控制系统中,由于加热电炉的热惯性,温度会有一定的超调。而采用单纯的PID控制始终具有较大的超调,因此在输出控制上我们采用PWM方式实现,PWM的基本

4、原理是在一定周期内调节占空比,设定值与实测温度值之差和输出信号的占空比成正比,即实测值与设定值越接近,则输出信号的占空比越小。当实测温度值等于设定值时,输出信号占空比为0,控制继电器关断,停止加热。(3)单元电路描述1. CPU本系统采用AT89C52芯片作为核心部件,89C52内部带有8K字节FLASH闪速存储器,256字节内部RAM,32个I/O口线。(图见11)2. 信号采集电路本系统信号主要由温度传感器DS18B20组成,因为是集成芯片,可以不加其它电路直接将芯片数据输出口接到CPU I/O口上。(见图1-2)(图11) (图12)3. 键盘设定本系统共设4个键:其中一个键是单片机系统

5、复位用,一个是温度设定键(p1.6)、加一(p1.4)、减一键(p1.5)。(图见13) (图13) (图14) 4数码显示数码管采用三位共阳数码管。使用单片机P0口输出段码,用P2.5P2.7控制三极管的导通和截至,进行位选择,实现三位数据动态显示。(图见14)5超温报警 报警电路利用单片机P3.7进行控制有源蜂鸣器。(当温度超过设定温度上限时开始报警)(图略)6继电器控制该部分利用单片机P1.0引脚对固态继电器进行控制,以实现对电炉的加热进行控制,既在温度达到设定值时断开电炉的电源停止加热。(图略)7电源电路电源采用采用7805稳压,对系统供电。如图(图略)一 硬件原理总图(见图C4) (

6、图C4)二 软件系统设计开始1系统软件总流程图如下读温度数据及设定值将温度转换成BCD码设置堆栈,T0中断更新显示缓冲区复位与检测DS18B20显示转换后的温度发跳过ROM命令功能键扫描发温度转换命令实测温度与设定温度比较延时复位DS18B20 执行相应的控制操作发跳过ROM命令发读存储器命令2.功能键扫描子程序:NY/设定值减1K1是否按下K3是否按下Y/进入设定状态Y/设定值加1K2是否按下NNK3是否按下Y/退出设定状态N控制操作子程序:设定值是否大于实测值Y/ 加热N报警,停止加热设定值实测值5度P1.0输出PWM波进行控制设定值大于等于实测值五调试过程(1) 在搪瓷器皿中存放1L水,

7、放置在1KW的电炉上打开控制电源,系统进入准备工作、状态。(2) 用温度计(精度为0.2度)对照测温系统测温,在水温分别为40、50、60、70、80、90摄氏度观察系统测量温度值与实际温度值,(3) 动态测试:设定温度为75摄氏度系统由低温开始进入升温状态。开始记录数据,观测超调量、调节时间和稳态误差;系统进入稳态后,用电扇吹凉观测系统的抗干扰能力。设定温度为80度系统由低温开始进入升温状态。开始记录数据,观测超调量、调节时间和稳态误差;系统进入稳态后,用电扇吹凉观测系统的抗干扰能力。1.温度测量测试条件及仪器:水银温度计,1000W 电炉,环境温度为32T温度计405060708090T测

8、39.749.959.869.679.790.1误 差0.30.10.20.40.30.12.设定温度值(度)稳定时间(小于等于0.2度)最大超调量T温度计(误差)758分32秒0.6度75.2(0.2度)8010分12秒0.8度80.4(0.4度)稳定到75,经实验得知在稳定后,精度可以达到0.1六总结本系统采用AT89C52芯片为核心部件,利用数字温度传感器DS18B20进行温度采集,提高了测温精度,充分利用软件编程,使温度精确度和稳定度均到达题目要求。另外可以改进算法以解决超调和测温精度问题。附程序: TIMER_L DATA 23H TIMER_H DATA 24H TIMER_COU

9、N DATA 25H TEMPL DATA 26H TEMPH DATA 27H TEMP_TH DATA 28H TEMP_TL DATA 29H TEMPHC DATA 2AH TEMPLC DATA 2BH TEMP_ZH DATA 2CH BEEP EQU P3.7 DATA_LINE EQU P3.3 RELAY EQU P1.0 FLAG1 EQU 20H.0; K1 EQU P1.4 K2 EQU P1.5 K3 EQU P1.6 K4 EQU P1.7; ORG 0000H JMP MAIN ORG 001BH JMP T1INT1T1INT1: PUSH ACC PUSH P

10、SW INC 2DH MOV A , 2DH CJNE A , #50 , T1INT1E MOV 2DH , #0 CPL P1.0 INC 2EH MOV A , 2EH CJNE A , #3 , T1INT1E SETB 7FH MOV 2EH , #0T1INT1E: POP PSW POP ACC RETI; MAIN: mov SP,#30H MOV TMOD,#11H ;T0,方式1 MOV TIMER_L,#00H ;50ms定时值 MOV TIMER_H,#4CH MOV TH1 , #00H MOV TL1 , #00H MOV IE,#82H ;EA=1,ET0=1 S

11、ETB ET1 LCALL READ_E2 MOV 20H,#00H SETB BEEP SETB RELAY MOV 7FH,#0AH ;熄灭符 CALL RESET ;复位与检测DS18B20 JNB FLAG1,MAIN1 ;FLAG1=0,DS18B20不存在 JMP STARTMAIN1: CALL RESET JB FLAG1,START LCALL BEEP_BL ;DS18B20错误,报警 JMP MAIN1START: MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#044H ; 发出温度转换命令 CALL WRITE CALL RESET M

12、OV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#0BEH ; 发出读温度命令 CALL WRITE CALL READ ;读温度数据 CALL CONVTEMP CALL DISPBCD CALL DISP1 CALL SCANKEY LCALL TEMP_COMP JMP MAIN1;DS18B20 复位与检测子程序;FLAG1=1 OK, FLAG1=0 ERROR;RESET: SETB DATA_LINE NOP CLR DATA_LINE MOV R0,#64H ;主机发出延时600微秒的复位低脉冲 MOV R1,#03HRESET1: DJNZ R0,

13、$ MOV R0,#64H DJNZ R1,RESET1 SETB DATA_LINE ;然后拉高数据线 NOP MOV R0,#25HRESET2: JNB DATA_LINE,RESET3 ;等待DS18B20回应 DJNZ R0,RESET2 JMP RESET4 ; 延时RESET3: SETB FLAG1 ; 置标志位,表示DS1820存在 JMP RESET5RESET4: CLR FLAG1 ; 清标志位,表示DS1820不存在 JMP RESET6RESET5: MOV R0,#064H DJNZ R0,$ ; 时序要求延时一段时间RESET6: SETB DATA_LINE

14、RET;=WRITE: MOV R2,#8 ;一共8位数据 CLR CYWR1: CLR DATA_LINE ;开始写入DS18B20总线要处于复位(低)状态 MOV R3,#09 DJNZ R3,$ ;总线复位保持18微妙以上 RRC A ;把一个字节DATA 分成8个BIT环移给C MOV DATA_LINE,C ;写入一个BIT MOV R3,#23 DJNZ R3,$ ;等待46微妙 SETB DATA_LINE ;重新释放总线 NOP DJNZ R2,WR1 ;写入下一个BIT SETB DATA_LINE RET;从DS18B20中读出温度低位、高位和报警值TH、TL;重新对 DS

15、18B20 初始化;将设定的温度报警值写入 DS18B20RE_18B20: JB FLAG1,RE_18B20A RETRE_18B20A: CALL RESET MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#4EH ;写暂存寄存器 LCALL WRITE MOV A,TEMP_TH ;TH(报警上限) LCALL WRITE MOV A,TEMP_TL ;TL(报警下限) LCALL WRITE MOV A,#7FH ;12位精确度 LCALL WRITE RET;功能键扫描子程序SCANKEY: MOV P1,#0F0HSCAN_K3: JB K3,SC

16、AN_END CALL BEEP_BL LCALL RESET_TH LCALL RE_18B20 LCALL WRITE_E2SCAN_END: CLR TR0 RET;设置温度报警值RESET_TH: CALL ALERT_TH CALL ALERT_PLAY JNB K3,$ SETB TR0RESET_TH1: CALL ALERT_TH mov 75h,7Eh ; mov 76h,7Dh CALL ALERT_PLAYR_TH02: JNB K1,K021A JNB K2,K021B JNB K3,TH_DEL JNB K3,SCAN_END JMP RESET_TH1K021A:

17、INC TEMP_TH MOV A,TEMP_TH CJNE A,#90,K022A ;没有到设定上限值,转 MOV TEMP_TH,#70K022A: CALL TH_DEL JMP RESET_TH1K021B: DEC TEMP_TH ;减1 MOV A,TEMP_TH CJNE A,#70,K022B ;没有到设定下限值,转 MOV TEMP_TH,#90K022B: CALL TH_DEL JMP RESET_TH1K002: CALL BEEP_BL CLR TR0 ;关闭中断 RET;键延时子程序;多次调用报警值显示程序来延时TH_DEL: ;报警高值延时 MOV R2,#0AH

18、TH_DEL1: CALL ALERT_TH CALL ALERT_PLAY DJNZ R2,TH_DEL1 RET;实时温度值与设定报警温度值 TH 比较子程序;当实际温度大于 TH 的设定值时,继电器关闭蜂鸣器报警;当实际温度小于 TH 的设定值时,”,继电器吸合。TEMP_COMP: SETB TR0 ;启动中断 MOV A,TEMP_TH SUBB A,TEMP_ZH ;减数被减数,则 JC CHULI1 JMP L0 CJNE A ,#5 , LLL1LLL1: JC CHULI1 ;借位标志位C=1,转 SETB TR1L0: SETB RELAY SETB BEEP CLR TR

19、0 RET;超温处理CHULI1: CLR TR1 CLR RELAY ;继电器关闭 CLR BEEP CLR TR0 ;关闭中断 RET;把 DS18B20 暂存器里的温度报警值拷贝到EEROMWRITE_E2: CALL RESET MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#48H ;温度报警值拷贝到EEROM LCALL WRITE RET;把 DS18B20 EEROM 里的温度报警值拷贝回暂存器READ_E2: CALL RESET MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#0B8H ;温度报警值拷贝回暂存器

20、 CALL WRITE RET; 处理温度 BCD 码子程序CONVTEMP: MOV TEMPHC,#0AH ; MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH ;乘0.0625 MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR MOV TEMPLC,A ;TEMPLC LOW=小数部分 BCD MOV A,TEMPL ;整数部分 ANL A,#0F0H SWAP A MOV TEMPL,A MOV A,TEMPH ANL A,#0FH SWAP A ORL A,TEMPL待添加的隐藏文字内容3 MOV TE

21、MP_ZH,A ;组合后的值存入TEMP_ZH LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A ORL A,TEMPHC ;TEMPHC LOW = 十位数 BCD MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH SWAP A ;TEMPLC HI = 个位数 BCD ORL A,TEMPLC MOV TEMPLC,A MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPHC ;TEMPHC HI = 百位数 BCD ANL A,#0FH ORL A,R7 MOV

22、TEMPHC,ATEMPC12: RET; 小数部分码表TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H;显示区 BCD 码温度值刷新子程序DISPBCD: MOV A,TEMPLC ANL A,#0FH MOV 70H,A ;小数位 MOV A,TEMPLC SWAP A ANL A,#0FH MOV 71H,A ;个位 MOV A,TEMPHC ANL A,#0FH MOV 72H,A ;十位 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,A ;

23、百位 MOV A,TEMPHC ANL A,#0F0H CJNE A,#010H,DISPBCD0 SJMP DISPBCD2DISPBCD0: MOV A,TEMPHC ANL A,#0FH JNZ DISPBCD2 ;十位数是0 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,#0AH ;符号位不显示 MOV 72H,A ;十位数显示符号DISPBCD2: RET; 温度显示子程序;显示数据在70H 72H 单元内,用3位共阳数码管显示,P0口输出段码数据,;P2 口作扫描控制,每个 LED 数码管亮 2MS 时间再逐位循环。DISP1: MOV R1,#70

24、H ;指向显示数据首址 MOV R5,#7FH ;扫描控制字初值PLAY: MOV P0,#0FFH MOV A,R5 ;扫描字放入A MOV P2,A MOV A,R1 ;取显示数据到A MOV DPTR,#TAB ;取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P0口 MOV A,R5 JB ACC.6,LOOP5 ;小数点处理 CLR P0.7LOOP5: LCALL DL_MS ;显示2MS INC R1 ;指向下一个地址 MOV A,R5 ;放回 R5 内 JNB ACC.4,ENDOUT ;ACC.4=0时一次显示结束 RR A ;A

25、中数据循环左移 MOV R5,A ;放入 R5 中 AJMP PLAY ;跳回 PLAY 循环ENDOUT: MOV P0,#0FFH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口复位 RETTAB: DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h, ; “0 “1 “2 “3 “4“5“6“7“8“9DL_MS: MOV R6,#0AH ;2MS延时程序,LED 显示程序用DL1: MOV R7,#64HDL2: DJNZ R7,DL2 DJNZ R6,DL1 RET;单字节十六进制转 BCDHEX2BCD1: MOV B,#

26、064H DIV AB MOV R7,A MOV A,#0AH XCH A,B DIV AB SWAP A ORL A,B RET;报警值 TH 数据转换ALERT_TH: MOV 79H,#0DH MOV 78H,#0BH MOV A,TEMP_TH MOV R0,#77H MOV B,#064H DIV AB JMP ALERT_TH2ALERT_TH2: MOV A,#0AH XCH A,B DIV AB DEC R0 MOV R0,A MOV 7DH,A DEC R0 MOV R0,B MOV 7EH,B RET;报警值显示子程序ALERT_PLAY: MOV R1,#75H ;指向显

27、示数据首址 MOV R5,#7FH ;扫描控制字初值A_PLAY: MOV P0,#0FFH MOV A,R5 ;扫描字放入A MOV P2,A MOV A,R1 ;取显示数据到A MOV DPTR,#ALERT_TAB ;取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P0口 LCALL DL_MS1 ;显示2MS INC R1 ;指向下一个地址 MOV A,R5 JNB ACC.3,ENDOUT1 RR A ;A 中数据循环左移 MOV R5,A ;放入 R5 中 AJMP A_PLAY ;跳回 PLAY 循环ENDOUT1: MOV P0,#0

28、FFH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口复位 RETALERT_TAB: DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh,0bfh,0c7h,09h;共阳段码表 “0 “1 “2 “3 “4“5“6“7“8“9“灭 “-DL_MS1: MOV R6,#0AH ;2MS延时程序,LED 显示程序用ADL1: MOV R7,#64HADL2: DJNZ R7,ADL2 DJNZ R6,ADL1 RET;蜂鸣器响一声子程序;P3.7=0,蜂鸣器响BEEP_BL: MOV R6,#100 BL2: CALL DEX1 CPL BEEP ;对 P3.7 取反 DJNZ R6,BL2 MOV R5,#10 CALL DELAY RET DEX1: MOV R7,#180 DE2: NOP DJNZ R7,DE2 RETDELAY: ;(R5)*延时10MS MOV R6,#50 DEL1: MOV R7,#100 DJNZ R7,$ DJNZ R6,DEL1 DJNZ R5,DELAY RET END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号