基于PIC单片机设计的热水控制器
由图5可知,RTCC工作状态由OPTION寄存器控制,其中OPTION寄存器的RTS位用来选择RTCC的计数信号源,当RTS为“1”时,信号源为来自RTCC引脚的外部信号,RTS为“0”时,信号源为内部时钟。OPTION寄存器的PSA位控制预分频器分配对象,当PSA为“1”,分配给RTCC,即外部或内部信号经过预分频器分频后再输出给RTCC。预分频器的分频比率由OPTION内的PS0~PS2决定。OPTION的RTE位用于选择外部计数脉冲的触发沿,当RTE为"1"时下降沿触发,“0“时为上升沿触发。RTCC计数器采用递增方式计数,当计数至FFH时,在下一个计数发生后,将自动复零,重新开始计数,以此循环下去。在实际设计中,OPTION寄存器为“00100111“,即定时器的信号源来自RTCC引脚的外部信号,预分频器的分频比率为1:256,上升沿触发。RTCC引脚信号的输入频率为1kHz,因此RTCC计数至FFH时需65536ms。通用寄存器F0EH、F0FH用作定时暂存。
当设置定时加水功能时,初始化RTCC、OPTION、F0EH、F0FH,开始进行定时,每隔256ms查询一次RTCC的值,RTCC每循环一次,F0EH-F0FH增1,当增到1318时,24小时定时到,寄存器复位,自动加水。
b) 按下恒温控制钮,恒温LED变亮,表示进行恒温控制,再按一下LED灭,取消恒温控制。与水量设定类似,长按后,进行温度设定。
c) 按下手动加热钮时,加热LED变亮,加热至65℃,如水量少于1档,则先加水到1档,再按一次取消加热。
d) 按下手动加水钮时,加水至设定水量值,长按可设定水量。手动加水过程中,再次按下取消加水。
正常情况下,两个七段码显示当前水温,另一个显示当前水位。
水温测量
温度读取是通过与DS1820通信完成。DS1820通信功能是分时完成的,它有严格的时隙概念。因此系统对DS1820的各种操作必须按协议进行。操作协议为:初始化DS1820(发复位脉冲 →发ROM功能命令 →发存储器操作命令 →处理数据)。各操作时序图如图6和图7所示。
本程序中需用到的操作命令如下:
SKIPROM命令(CCH):此命令执行后,表示以后的存储器操作命令将针对在线的所有DS1820,由于本系统中只有一片DS1820,因此发出此命令后,就可对其进行操作。
CONVERT命令代码[44H]:启动在线DS1280进行温度A/D转换。
READSCRATCHPAD命令代码[BEH]:读取温度寄存器的温度值。
对DS1820操作的总体流程图如图8所示。
其他功能程序
漏电检测、数据处理、定时计数等其他功能程序都根据程序运行时间进行了统筹设计,在此不再进行详述。
图6 读写时序图
图7 初始化时序
图8 DS1820操作流程图
结语
电热水器单片机控制器具有新颖、价廉、安全、实用等优点,并且在国产电热水器上获得了成功应用。本文的一些方法也适用于冰箱、空调等家用电器的电脑控制设计中。
- 基于PIC单片机的智能型漏电断路器设计(11-25)
- 基于PIC单片机的无线实时监控防盗系统的设计与实现(11-18)
- PIC单片机键盘矩阵扫描C语言程序(12-02)
- PIC单片机控制第一个发光管闪动程序(12-02)
- PIC单片机驱动LCD12864液晶显示闪动字体程序(12-02)
- PIC单片机控制8位流水灯C语言程序(12-02)