4.2 程序流程图及部分程序
4.2.1主程序模块
由于模块化程序的设计,通过调用程序即可实现所用功能,主程序流程图如图14
所示。写程序时,调用程序前即系统运行首要先对系统进行初始化。然后对按键进行扫
描,对按键事件做出相应的反应。接下来看是否有温度数据采集到,如果有就进行A/D
采样及PID处理数据,最后所得结果与设定值比较从而控制继电器通断。
17
4.2.2 系统初始化
系统初始化包括A/D口初始化、按键初始化等。对端口的初始化即是对端口相应位
进行设置,这些初始化程序都嵌入在各个子程序里面。
4.2.3 按键程序
按键扫描:由于机械触点有弹性,在按下或弹起按键时会出现弹跳抖动过程,从最
初按下到接触稳定要经过数毫秒的弹跳时间,因此为了保证探险键识别的准确性,必须
消除抖动。键值处理:图15是对键值的处理流程图。
18
4.2.4 A/D采样数据处理
当采样到温度数据时,为了防止在采样过程中外界干扰而造成采样数据的不准确,
必须调用温度均值处理程序,然后确定温度系数使采样转换得到的电压信号转换成温度
值,并进行十进制转换,用于显示和PID计算。其中均值处理是一个重要的环节,是
A/D转换前必不可少的工具,流程图如图16所示。
4.2.5 PID计算
由于单片机控制是一种采样控制,系统中 PID调节规律可通过数值公式近似计算。
19
由此可
得增量式算法公式:
这个计算的过程可用一个简单的程序来实现。
4.2.6 继电器控制
继电器是和AT89C51单片机的P25口相连的,它的开断完全取决于P25口的输出,
即PID计算的结果。当输出小于零说明设定值小于实际输出值,这是就要关闭电炉,同
时关闭定时器的计时。如果输出值大于设定值5摄氏度时就可以开电炉对水开始加热。
如果设定值与实际输出值差值在5摄氏度以内时,我们就调用中断程序定时加热。
图17数据采样中断服务程序的流程图,此中断程序采用的是2Hz中断定时
0.5秒钟采样一次。
图18控制程序的中断服务程序,用来对继电器定时加热。它利用中断定时器10ms
20