单片机温度控制系统_secret_第1页
单片机温度控制系统_secret_第2页
单片机温度控制系统_secret_第3页
单片机温度控制系统_secret_第4页
单片机温度控制系统_secret_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 一、摘要该系统主电路采用89S51单片机实现温度控制,加热和制冷部分由于条件限制,只采用模拟的方式。电路可实现温度的显示,设置上下限温度,超出范围报警以及和PC机通信的功能。系统测量精度和控制精度良好。我们为本系统共设计了两套程序,我主要负责其中一套程序的编写和单片机最小系统板的组建。方案选择本系统若根据赛题要求可有多种实现方案。(1)方案一 此方案是传统的一位式模拟控制方案,选用模拟电路,用电位器设定给定值,反馈的温度值和设定值比较后,决定加热或不回热。系统受环境影响大,不能实现复杂的控制算法,不能用数码显示,不能用键盘设定。(2)方案二 此方案是传统的二位式模拟控制方案,其基本思想与方案

2、一相同,但由于采用上下限比较电路,所以控制精提高。这种方法还是模拟控制方式,因此也不能实现复杂的控制算法使控制精度做得较高,而且仍不能用数码显示和键盘设定(3)方案三 此方案采用89S51单片机系统来实现。单片机软件编程灵活、自由度大,可用软件编程实现各种控制看法和逻辑控制。可实现数码显示和键盘设定等多种功能,系统电路框图如下:数码显示电源电路键盘设定键盘设定89S51 单片机控制电路串行接口电源电路数据采集方案一和方案二是传统的模拟控制方式,而模拟控制系统难以实现复杂控制规律,控制方案的修改也较麻烦。而方案三是采用以89S51为控制核心的单片机控制系统,尤其对温度控制,它可达到模拟控制所达不

3、到的控制效果,并且可实现显示、键盘设定等多种功能,又易于扩展,大大提高了系统的智能化,也使得系统所测结果精度大大提高。故选择方案三。器件选择由于单片机最小系统板采用的是去年省赛的板子,所以受到了很多限制。如对系统精度至关重要的A/D转换换器,板子上采用的是ADC0809。因为是八位的,所以精度不高,最多只能达到0.4度左右。但考虑到已有现成的板子,采用0809同样可达到实验的目的,所以A/D部分暂不作更改。传感器部分既可采用热敏电阻,也可采用集成的温度传感器。但由于热敏电阻的精度、重复性、可靠性都比较差,所以我们采用的集成的LM35,LM35是一个三端器件(电源、地、输出),的是NS公司生产的

4、集成电路温度传感器系列产品之一,它具有很高工作精度和较宽的线性工作范围,该器件输出电压与摄氏温度线性成比例。LM35与用开尔文标准的线性温度传感器相比更有优越之处,LM35无需外部校准或微调,可以提供1/4的常用的室温精度。其灵敏度为+10.0mV/,精度在+25时为0.5。精度较高,并且价格较低,每片仅售6元。较之性能较好的AD590K便宜许多,性价比高。故采用LM35而舍弃AD590K。电路原理图单片机最小系统电路:由于去年大赛的板子(旧板)是03级的学生设计的,故存在许多缺陷,具体表现在单片机和ADC0809之间的读写线接反,单片机P0口和ADC0809的数据线高低位接反。显示部分的74

5、LS245多接了一个排阻。经过多次的检查,找出了错误。 最终的电路图如图示:单片机最小系统部分:ADC0809的A/D采样部分:四位LED数码管显示部分:单片机串口通信电路RXDTXD: 温度采集部分:报警电路: 温控模拟部分:工作原理具体电路原理详见本组另一成员的报告,在此仅介绍系统的软件部分,我们总共写了两份程序,其中一份为我个人独立完成。下面为程序的主要流程图。主程序显示程序开始开始设初值设初值显示第一位?启动A/D转换是否调整?扫描三位扫描四位否是调上限调下限退出显示数据转换程序开始显示否取数中断完毕?是转换送显缓串口通信程序转ASCII是否超限?送显缓TI为?超上限超下限清零未超报警

6、送数返回返回;显示区地址分别为,;上限温度地址分别为,;下限温度地址分别为,;用到的位地址有,; =主程序= ORG 0000H LJMP MAIN ORG 0003H LJMP INT0 ORG 0030HMAIN: MOV SP,#70H ;置初值 CLR P1.7 MOV R0,#40H SETB PSW.4 SETB PSW.3 SETB IT0 SETB EA SETB EX0 MOV TMOD,#20H ;波特率 MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 MOV SCON,#50H SETB TI CLR 30H CLR 01H SETB P1.7

7、CLR P1.6 CLR P1.5 MOV DPTR,#0BFFFH MOV A,#00H MOV 2EH,#0 MOV 2DH,#0 MOV 2CH,#0 MOV 2BH,#0 MOV 2AH,#0 MOV 29H,#0 MOV 62H,#0LOOP: MOV DPTR,#0BFFFH MOVX DPTR,A ;启动A/D转换 CLR 00HWAIT: LCALL XUANCHAXUN:JNB P1.3,LOOP1 ;调整 JNB P1.4,LOOP2 JNB 00H,GG ;判断是否再启动 LJMP LOOPGG: LJMP WAIT;=上限温度调整=LOOP1: CLR EX0 LCAL

8、L DELAY1 JNB P1.3,$ MOV 62H,2EH MOV 61H,2DH MOV 60H,2CH JB P1.2,M2 MOV A,2EH ADD A,#01 DA A MOV 2EH,A CJNE A,#10H,M1 MOV 2EH,#00M1: JNB P1.2,$M2: JB P1.1,M4 MOV A,2DH ADD A,#01H DA A MOV 2DH,A CJNE A,#10H,M3 MOV 2DH,#00M3: JNB P1.1,$M4: JB P1.0,M5 MOV A,2CH ADD A,#01 DA A MOV 2CH,A CJNE A,#10H,M5 MO

9、V 2CH,#00M5: JNB P1.0,$ SETB 30H ;是否显示第一位的标志位 MOV 63H,#11H ;显示“上” MOV 62H,2EH MOV 61H,2DH MOV 60H,2CH LCALL DELAY JNB P1.3,TUI ;再次中断时,退出 LJMP LOOP1;=下限温度调整=LOOP2: CLR EX0 JNB P1.3,$ MOV 62H,2BH MOV 61H,2AH MOV 60H,29H JB P1.2,L2 MOV A,2BH ADD A,#01 DA A MOV 2BH,A CJNE A,#10H,L1 MOV 2BH,#00L1: JNB P1

10、.2,$L2: JB P1.1,L4 MOV A,2AH ADD A,#01H DA A MOV 2AH,A CJNE A,#10H,L3 MOV 2AH,#00L3: JNB P1.1,$L4: JB P1.0,L5 MOV A,29H ADD A,#01 DA A MOV 29H,A CJNE A,#10H,L5 MOV 29H,#00L5: JNB P1.0,$ SETB 30H ;是否显示第一位的标示位 MOV 63H,#0FH ;显示“下” MOV 62H,2BH MOV 61H,2AH MOV 60H,29H LCALL DELAY JNB P1.4,TUI ;再次中断时,退出 L

11、JMP LOOP2 TUI: MOV A,2BH CLR C CJNE A,2EH,AA ;比较上限是否低于下限 MOV A,2AH CJNE A,2DH,AA CJNE A,60H,E1 LJMP E2E1: JC SHANG_BAO LJMP E2;=超上限温度报警=SHANG_BAO: SETB P1.7 SETB P1.6 CLR P1.5 LJMP X2E2: CLR P1.5 CLR P1.6 CLR P1.7X1: MOV A,2BH CJNE A,62H,E3 MOV A,2AH CJNE A,61H,E3 MOV A,29H CJNE A,60H,E3 LJMP E4E3:

12、JNC XIA_BAO LJMP E4;=低于下限温度报警=XIA_BAO:SETB P1.7 SETB P1.5 CLR P1.6 LJMP X2E4: CLR P1.5 CLR P1.6 CLR P1.7X2: CLR 30H ACALL DELAY;=串口通信= MOV R3,#30H ;转ASCII码 MOV A,62H ADD A,R3 DA AMLP3: JBC TI,MLP2 ;当TI为时清 SJMP MLP3MLP2: MOV SBUF,A MOV A,61H ADD A,R3 DA A MLP5: JBC TI,MLP4 TT: MOV DPTR,#0FAFFHD2: MOV

13、X DPTR,A DJNZ 30H,D2 ;十位 MOV 30H,#40 MOV DPTR,#TAB0 MOV A,60H MOVC A,A+DPTR MOV DPTR,#0FBFFHD3: MOVX DPTR,A DJNZ 30H,D3 ;个位 RETTAB0:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,; 0 1 2 3 4 5 6 7 7FH,6FH,77H,7CH,39H,5EH,79H,71H ; 8 9 A B C D E F DB 76H,78H,38H,6EH,00H ,77H,; H K L Y 无 RDELAY12: MOV R4,00H MOV R

14、5,00H X3: DJNZ R4,$ DJNZ R5,X3 RET;-中断服务程序-INT0: PUSH A PUSH PSW MOV DPTR,#0BFFFH MOVX A,DPTR ;读A/D转换结果 MOV 2FH,#0FFH CLR CY ;程序调整高低位 RLC A JC N1 CLR 78H MOV A,29H CJNE A,2CH,AA LJMP XXX ;正常AA: JNC ERRO ;上限低于下限,跳转 XXX: SETB EX0 MOV A,R0 LCALL XUAN LJMP WAITERRO: MOV 63H,#0EH ;显示“ERRO“ MOV 62H,#15H M

15、OV 61H,#15H MOV 60H,#0H SETB 30H SETB 01HEEEE: LCALL DELAY JNB P1.3,XX1 ;是否重新调整 JNB P1.4,XX2 LJMP EEEEXX1: LJMP LOOP1XX2: LJMP LOOP2;=显示数据转换=Xian: MOV A,R0 MOV B,#100 MUL AB MOV R3,A MOV A,B MOV B,#10 DIV AB MOV R1,#62H MOV R1,A DEC R1 MOV R1,B MOV A,R3 MOV B,#10 MUL AB DEC R1 MOV R1,B CLR 30H ACALL

16、 DELAY MOV A,2EH CJNE A,62H,E1 MOV A,2DH CJNE A,61H,E1 MOV A,2CHSJMP MLP5 MLP4: MOV SBUF,A MOV A,#46 ;小数点MLP8: JBC TI,MLP9 SJMP MLP8MLP9: MOV SBUF,A MOV A,60H ADD A,R3 DA AMLP7: JBC TI,MLP6 SJMP MLP7MLP6: MOV SBUF,A MOV A,#32MLP10: JBC TI,MLP11 SJMP MLP10MLP11: MOV SBUF,A RET;=延时加显示=DELAY: MOV R3,#0

17、A0HD00: ACALL DISPLAY DJNZ R3,D00 RETDISPLAY:JNB 30H,DD MOV 30H,#40 MOV DPTR,#TAB0 MOV A,63H MOVC A,A+DPTR MOV DPTR,#0F8FFHD0: MOVX DPTR,A DJNZ 30H,D0 ;千位DD: MOV 30H,#40 MOV DPTR,#TAB0 MOV A,62H MOVC A,A+DPTR MOV DPTR,#0F9FFHD1: MOVX DPTR,A DJNZ 30H,D1 ;百位 MOV 30H,#40 MOV DPTR,#TAB0 MOV A,61H MOVC A

18、,A+DPTR JB 01H,TT ADD A,#80HN1: RLC A JC N2 CLR 79HN2: RLC A JC N3 CLR 7AHN3: RLC A JC N4 CLR 7BHN4: RLC A JC N5 CLR 7CHN5: RLC A JC N6 CLR 7DHN6: RLC A JC N7 CLR 7EHN7: RLC A JC N8 CLR 7FHN8: MOV A,2FH MOV R0,A SETB 00H POP PSW POP A RETI;=延时=DELAY1: MOV R6,#60DE1: MOV R7,#248 MOV R7,$ DJNZ R6,DE1

19、RET END实验中遇到的问题及分析、单片机最小系统方面由于是去年级的同学设计的,我们用的又是旧板,故存在很多缺陷,一方面我们没有正确的原理图,只有一张其他同学随便画的图,就算有了原理图,也不知道板上错在哪里,所以只能用万用表一个个的找。通过我们的认真检查,结果发现不管是板上还是图纸上都出了相当大的错误,图上很多引脚都标注错误了,而板上就更是离谱了,居然把单片机和ADC0809的读写线接反,把单片机的P0口和ADC0809的数据线高低位接反,74LS245上还多接了一个排阻,造成LED显示不正常。诸如上面的错误给我们造成了相当大的麻烦,因此我们花了相当长的时间在查错上。、由于传感器LM35的灵

20、敏度是+10.0mV/,因此LM35的输出电压为毫伏级,温度为100时,输出也只有1V。而ADC0809的参考电压为伏,所以增益为才能满足要求,易于编程。本系统采用超低温漂移高精度运算放大器OP07将电压放大,再经电压跟随器LM310输出,以便有大的输入阻抗。由于买不到LM310,于是便将OP07接成电压跟随器替代LM310。而电路中的RW1调为K就满足增益为的要求。即(R1+Rf)/R1,其中Rf是反馈电阻,也就是RW1。、程序设计方面,因为是自己头一次尝试独立完成一份相对规模较大程序,因些也遇到了不少的麻烦。第一是程序地址空间分配问题,因为单片机片内资源有限,往往会发生冲突,此时保护就显得相当的重要。第二因为汇编可读性较差,写程序时由于多采用跳转指令,所以往往会把自已搞糊涂掉。要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论