基于单片机饮水机温度控制系统的设计 联系客服

发布时间 : 星期六 文章基于单片机饮水机温度控制系统的设计更新完毕开始阅读0cff4724dd36a32d73758143

3.2 A/D转换子程序

在这一模块的软件设计中,主要完成的是将采集电路采集到的模拟信号转换为数字信号,然后送到单片机进行处理,从而完成A/D转换部分的最后功能,该部分程序流程如3.2所示。根据设计的要求,程序先对端口初始化,根据模式选择的结果,选择其中一路的采集来的数据,然后启动A/D转换功能,在转换一段时间后,判断转换是否结束,如果结束就自动进入下一路的转换,否则继续转换。

开始 启动转换

返回 图3.2 A/D转换子程序流程图

N A/D转换结束? Y 取数据 ADC0809地址加1 Y 地址数小于2 ? N ·21·

3.3 键盘子程序

这部分设计主要完成温度上、下限的设置。其流程图如图3.3所示。本设计使用4个单键,这使得键值的识别问题也比较简单化。在执行程序的时候只需逐位判断P3.2,P3.3,P3.4,P3.5口是高电平还是低电平,若为高电平,则表示没有按键按下,若为低电平,则表示有按键按下。在程序的设计当中,考虑了键的去抖动问题。因为用手按下一个按键时,往往会出现所按键在闭合位置和断开位置之间跳动几下才稳定到闭合状态的情况。在释放一个键的时候,也会出现类似的情况,抖动的时间是不一致的,通常小于10毫秒,若抖动的问题不解决,就会引起闭合键的多次读入。对于键的抖动处理,一般采用软件延时10毫秒的方法。在发现有按键闭合时,不是立即读入该键值,而是延时一段时间以后,再进行键闭合与否的判断,确认此时是否真的有按键下,有则进行该按键的处理,没有则不进行处理。

开始 有按键下?

N 延时10ms Y

图3.3 键盘子程序流程图

判别键号 按键处理 返回 ·22·

3.4 控制子程序

本部分主要是实现声光报警和驱动加热或制冷功能。由于本设计的控制对象有两路,一路是控制饮水机的热水水箱,另一路是控制凉水水箱,因此,有两个子程序,它们分别为控制子程序1和控制子程序2。控制程序1流程图如图3.4所示,控制子程序2流程图如图3.5所示。选择控制模式后,先将采集转换后的数据与设定的值进行比较,如果是加热模式,且采集转换的值低于设定值的下限,置RXD为高电平,加热器开始加热;如果是制冷模式,且采集转换的值高于设定值的上限,则置AT89C51的P2.3、P2.4口为高电平,实现声光报警,同时,置TXD为高电平,制冷装置开始工作。

开始 保存数据

低于下限? N

Y 返回 图3.4 控制子程序1流程图

Y 开始加热 高于上限? Y 报警、停止加热 等于下限? N 取数据 N ·23·

N 开始 保存数据 高于上限? Y 开始制冷 N 低于下限? Y N 取数据 Y 等于上限? 返回 报警、停止制冷 图3.5 控制子程序2流程图

3.5 显示子程序

此模块采用的是动态扫描的方法,这样各位LED能够显示出与本位相应的显示字符。显示子程序流程图见图3.6所示。在编写程序时,在某一时刻,只让某一位的位选线处于选通状态,而其它各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的段码。这样,在同一时刻,两位LED中只显示选通的一位,而另一位是熄灭的。依次循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到同时显示的目的。本次设计,显示一位保持1ms时间,共需2ms时间。

·24·