基于8031单片机的退火炉温控系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于8031单片机的退火炉温控系统设计
1设计目的
该课程设计是为了让同学们在学习完《单片机原理及系统设计》后能将课本知识与实际的系统设计和应用能力的相结合的训练环节。课程设计的任务是使学生通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计调试方法。
2设计任务
该设计的原理是利用热电偶来检测退火炉中的炉内温度,经变送器转变成0—+5范围内的电压信号并将其传送给A/D0808转换器转换成相应的数字量,作为8031单片机的采样值,与最初设定的温度值(600℃—900℃)进行比较来确定相应的输出,来表示不同范围内的温度值,进一步采取措施来控制温度。
若低于600℃(温度下限值),则亮低温报警灯(绿色),报警器发出长音报警单片机控制加热电阻进行加热。若温度高于900℃(温度上限值),则亮高温报警灯(黄色),报警器发出短音报警并且风机开始旋转降温。若温度值处于正常状态(600℃~900℃),则既不亮灯,也不响报警器。
3设计方案
本方案分四个模块:单片机控制模块、温度采集模块、报警模块、附加模块。
单片机控制模块是由单片机8031、时钟电路、复位电路和外部扩展程序存储器四部分组成的最小系统来实现对退火炉的总体控制。
温度采集模块是由一片ADC0808芯片和一个滑动变阻器构成。改变滑动变阻器的阻值可采集到其所对应的电压值即为模拟量,ADC0808芯片则将采集到的电压模拟量转换成与其相对应的数字量并且将转换的数字量传到单片机中。
报警模块是由一个高温报警灯、一个低温报警灯和一个报警器构成。当炉内的温度超出上限时高温报警灯点亮且报警器发出长音报警,当炉内的温度低于下限值时低温报警灯点亮且报警器发出短音报警。
附加模块是由一个风机、一个滑动变阻器、一个加热电阻和一个电压表构成。当炉内温度过高时风机开始旋转向退火炉内吹冷风来降低炉内的温度,通过调解与风机相连的滑动变阻器的阻值来控制风机的转速实现相对精准的温度控制。当炉内温度过低时单片机控制加热电阻开始加热让炉内的温度恢复到稳定范围。电压表接在温度采集模块中的滑动变阻器两端通过读取电压表显示的温度值来检测该采集系统采集到的温度是否与设计的值相同,同时也可以检测整个系统是否正常工作。
4硬件设计
利用Proteus实现模拟仿真,其硬件模拟电路连接图如图1所示。
图1电路连接图
5软件设计
软件设计的流程图如图2所示。
图2流程图
根据流程图编写程序,具体程序见附录。
6实验仿真结果
6.1低于温度下限值
调试效果图如图3所示。
图3低温仿真图
6.2高于温度上限值
调试效果图如图4所示。
图4高温仿真图
6.3正常温度
调试效果图如图5所示。
图5正常工作仿真图
7心得体会
本次单片机课程设计让我学到了很多东西,所谓学习就是为了能更好的在日后的应用中得到好的发挥,而本次课程设计充分的让我将课堂上所学到的知识得到了发挥,例如在本次设计中用到了8031的拓展,A/D转换的知识等诸多知识;并且这次设计也提高了我们解决问题的能力,遇到问题循序渐进的向老师和同学求教总有破解之法,要学会合作与求知,当然也要锻炼自己解决问题的能力。通过这次课程设计训练对我日后的学习和生活有了很大的帮助。
参考文献
[1]王思明,张鑫,苟军年etal,单片机原理及应用系统设计[M].北京:科学出版社,2012.
[2]徐军,单片机技术项目化原理与实训[M].北京:电子工业出版社,2009.
[3]孙洪润,单片机原理及应用[M].北京:清华大学出版社,2008.
附录程序
ADC EQU 35H
TCNTA EQU 36H
TCNTB EQU 37H
L_TEMP EQU 38H ;温度下限
H_TEMP EQU 39H ;温度上限
FLAG BIT 00H
H_ALM BIT P3.0
L_ALM BIT P3.1
SOUND BIT P3.7
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
H BIT P3.2
ORG 0000H
SJMP START
ORG 000BH
LJMP INT_T0
ORG 001BH
LJMP INT_T1
START: MOV H_TEMP,#180 ;180*5=900,最高温900度MOV L_TEMP,#120 ;120*5=600,最低温600度
MOV TMOD,#12H ;定时计数器方式控制寄存器
MOV TH0,#245
MOV TL0,#0 ;计数器0
MOV TH1,#252
MOV TL1,#24 ;计数器1
MOV IE,#8aH ;中断允许寄存器
CLR C
SETB TR0 ;启动计数器0,为ADC0808提供时钟WAIT: SETB H_ALM
SETB L_ALM
SETB H
CLR ST
SETB ST
CLR ST ;启动转换
JNB EOC,$
SETB OE
MOV ADC,P1 ;读取AD转换结果
CLR OE
MOV A,ADC
SUBB A,L_TEMP ;判断是否低于下限
JC LALM
MOV A,H_TEMP
MOV R0,ADC
SUBB A,R0 ;判断是否高于上限
JC HALM
CLR TR1
LJMP WAIT
L_ALM:CLR L_ALM ;低温报警灯亮
CLR H ;启动加热电阻
SETB TR1 ;开启计数器1,引起中断
CLR FLAG
LJMP DELAY
LJMP WAIT
H_ALM:CLR H_ALM ;高温报警灯亮
SETB TR1
SETB FLAG
LJMP DELAY
LJMP WAIT
INT_T0: CPL CLOCK ;提供ADC0808时钟
RETI
INT_T1: MOV TH1,#252
MOV TL1,#24
CPL SOUND
INC TCNTA
MOV A,TCNTA
JB FLAG,I1 ;判断是高温警报还是低温警报
CJNE A,#35,RETUNE ;低温警报声响
SJMP I2
I1: CJNE A,#5,RETUNE ;高温警报声响
I2: MOV TCNTA,#0
INC TCNTB
MOV A,TCNTB
CJNE A,#20,RETUNE
MOV TCNTA,#0
MOV TCNTB,#0
LCALL DELAY2