毕设--基于AT89C52及PT100的电烤箱控制器设计 下载本文

北京联合大学 毕业设计

图4-7 温度设定proteus仿真图

4.5 STC89C52及光耦MOC3041控制电热丝加热程序设计

STC89C52检测已设定的温度 STC89C52检测已设定的时间 STC89C52检测按 键是否为D 按键扫描结果为D STC89C52检测设定温度与当前温度 设定时间不为0 设定温度不为0 满足所有条件 P1.4端口置低电平,电热丝工作 设定小于当前 不满足任意一个条件 P1.4端口置高电平,电热丝不工作 图4-8 控制电热丝加热程序设计流图

此段程序是主程序的主要部分,因为直接关系到电热丝的工作状态,首先由单片机STC89C52检测当前的参数状态,包括当前的温度、当前的按键值、当前设定的时间值、当前的温度值跟设定的温度值大小比较,除此之外还要判断当前的温度值跟时间值是否不为零,如果发现时间值的设定为零温度值不为零,则当按下D键的时候,则不让电热丝加热,因为如果没有时间的设定,电热丝将无限制的工作,将导致温度无限制增加,相同的如果时间的设定不为零温度的设定为零,则温度值可能会小于环境温度,则此时电热丝也不工作,同理当时间跟温度都没有设定的时候,电热丝也将不会工作,在综合考虑了这三个方面的情况的前提下我合理的设定了P1.4的工作状态,保证了系统的稳定可靠性。

而在程序的设定时将综合考虑四个方面的问题,如流图中所显示的,一是设定的温度要不为零、设定的时间要不为零、按键的扫描结果要是13,在加上设定的温度一定要高于当前测定的温度,否则P1.4口电平要置高,当满足这四个条件的时候将使P1.4口的电平置低,此时电热丝工作。

以下为proteus仿真图:

33

北京联合大学 毕业设计

P1.4管脚电平情况:

高电平 电热丝两端电压情况:

低电平

不工作时 工作时

图4-9 电热丝工作过程proteus仿真

4.6 LCD1602显示模块程序设计

Number=16 只在LCD第一行左起 显示当前温度 Number=A 进入温度设定界面 Number=# 设定温度 >当前温度 且设定值不为零 设定温度<=当前温度

34

Number=B 进入时间设定界面 Number=# 设定值为零 设定值不为零 北京联合大学 毕业设计

在LCD第一行左起 只在LCD第一行左起 显示当前温度,在第一显示当前温度 行右边显示温度设定 值 Number=D 在LCD第一行左起显示当前温度,在第二 在第一行右边显示温度设定,在第 行的左侧是DS1302计时显示, 二行右边显示时间设定值

只在LCD第一行左起 显示当前温度 在LCD第一行左起 显示当前温度,在第二行右边显示时间设定值 Number=C 只在LCD第一行左起 显示当前温度 图4-10 LCD1602显示程序流图

LCD显示的部分是需要细心琢磨的部分,他跟按键扫描需要注意很多相同的问题,依据流图可以总结如下:首先程序进入温度获取显示阶段,此时的按键值设定为16,即number=16,这个使按键的值不与0~15冲突,在这里交代一下给各个按键设定的值,0~9按键的值一一相对应,然后*键对应数字14,#键对应数字15,A~D键分别对应数字10~13,此时要求只在LCD第一行左起

显示当前温度,当按键的值发生变化的时候,假如变成了10,此时进入温度设定界面,但是温度设定有两种结果,一种是没有设定温度值,一种是设定了温度值比当前的温度值小,还有一种是设定了温度值比当前温度值大,当没设温度值和设定的温度值比当前测定的温度值小时,按下#号键则要求只在LCD第一行左起显示当前温度,而如果是设定了温度值比当前温度值大,则要求在LCD第一行左起显示当前温度,在第一行右边显示温度设定,同理对于时间的显示也是如此,分为两种情况,即当设定的温度值为零时按下#号返回键不显示设定的时间,而当不为零时,则显示设定的时间。

当时间与温度的设定值都在主界面上显示出来的时候,此时按下D键,number=13时,电热丝开始工作,当按下C键时,所有的设置都被置零,返回到开始时的状态,一切归零,即C键起到一个复位的作用。

以下为proteus仿真结果:

35

北京联合大学 毕业设计

图4-11 正常显示proteus仿真图

36