毕业设计_基于AT89S52单片机的温度控制系统设计 下载本文

开始 设置堆栈 定时器0初始化 数据存储器RAM初始化 定时器0中断 置5s循环次数 调用按键子程序

图 4-1 主程序流程图

4.2 中断服务程序

中断由T0产生,每隔5秒中断一次。功能:温度检测;A/D转换;读入采样数据;数字滤波;朝鲜温度报警;温度控制;显示。流程图如图4-2所示。程序为程序二。

重设T0值 保护现场 R5-1 R5 N 5s到了吗? Y 置5s循环次数 调用温度监测子程序 ADC转换后的温度值送显示缓冲区 调用显示子程序 调用温度控制子程序

调用报警子程序 恢复现场 中断返回 图4-2 中断程序流程图

4.3 键盘管理模块

上电或复位后系统处于键盘管理状态,其功能是监测键盘输入,接收温度预置和

启动键。程序设有预置温度合法检测报警,当预置温度超过500℃时会报警并将温度设定在500℃。键盘管理子程序流程如如图4-3所示,程序为程序三。

A预置温度合法检查预置温度→显示缓冲区调用显示子程序P1.1=0NP1.2=0NP1.3=0NNP1.0=0Y返回启动加热NA 图4-3 按键管理子程序流程图

Y100→AY10→AY1→A有键闭合Y调用显示子程序延时去抖NA+预置温度→预置温度数据区键释放YN有键闭合Y4.4 温度检测模块

A/D转换采用查询方式。为提高数据采样的可靠性,对采样温度进行数字滤波。数字滤波的算法很多,这里采用4次采样取平均值的方法。如前所述,本系统A/D转换结果乘2正好是温度值,因此,4次采样的数字量之和除以2就是检测的当前温度。检测结果存入40H。温度检测子程序流程图如图4-4所示。程序为程序四。

A清检测结果缓冲区采样次数4→R2NR2-1=0Y启动A/D转换 N4次累加结果除2→检测结果缓冲区转换结束Y累加采样结果结果低8位→51H高8位→50HA 返回图4-4 温度检测子程序流程图

4.5 温度控制模块

将当前温度与预置温度比较,当前温度小于预置温度时,继电器闭合,接通电阻丝加热;当前温度大于预置温度时,继电器断开,停止加热;当二者相等时电炉保持原来状态;当前温度降低到比预置温度低2℃时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热。由于电炉开始加热时,当前温度可能低于报警下限,为了防止误报,在未达到预置温度时,不允许报警,为此设置了报警允许标志F0。模块流程见图4-5。程序见程序五。

当前温度-预置温度差高字节→A差低字节→B 置允许报警标志差>5Y允许报警Y开报警器,关电炉N当前温度≤预置温度Y

N N预置温度-当前温度差高字节→A差低字节→B返回图4-5 温度控制子程序流程图

4.6 显示模块

显示子程序的功能是将显示缓冲区45H的二进制数据先转换成三个BCD码,分别存入百位、十位和个位显示缓冲区(42H、43H和44H单元),然后通过串口送出显示。程序见程序六。

4.7 温度超限报警模块

报警上限温度值为预置温度+5℃,即当前温度上升到高于预置温度+5℃时报警,并停止加热;报警下限温度值为预置温度-5℃,即在当前温度下降到低于预置温度-5℃,且报警允许时报警,这是为了防止开始从较低温度加温时误报警。报警的同时也关闭电炉。图4-6为报警子程序流程图。程序见程序七。