基于I2C和单总线通信的全天分段热水智能控制器
3 软件的实现
程序设计是本设计的核心部分。整个程序包括主程序、按键处理子程序、I2C总线读写子程序、单总线读写子程序、定时器子程序、键中断服务子程序、按键消抖子程序、上电自检子程序和显示子程序等。
主程序流程图如图5所示,初始化主要是各I/O口、各寄存器、定时器的初始化,上电自检,开定时器和定时中断允许,显示LOGO,读时钟以及当前温度并显示等。然后判断标志位F是否等于1,若F=1,说明加热键按下,则CPU直接查询温度判断循环泵的启动或停止,当实际温度小于设置温度3度时,水泵启动且LCD显示对应的RUN,当实际温度大于设置温度时,水泵停止工作且LCD显示对应的STOP;若F=0,说明加热键没按下,则CPU先进行时间段判断,再进行温度判断,当时间在设置的三段范围内且实际温度小于设置温度3度时,水泵启动,否则水泵停止工作。
设定按键外部中断为高优先级,使主程序能实时响应按键处理,进行相应的操作。若长按设置键,则进入设置环节,否则有按键按下时则背光亮5秒钟,便于用户读取时间和温度,然后自动熄灭。键处理子程序是本设计的重点和难点。其流程图如图6所示。
单片机与DS18B20之间数据交换采用单总线,由于只有一根线通信,所以必须采用严格的主从结构,当主机呼叫从机时,从机才能应答,主机访问单线期间必须严格遵循单线命令的序列,如果命令序列混乱,单线器件不会响应主机。
单片机与时钟芯片PCF8563及外部存储器之间通信采用I2C总线,I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据,最高传送速率100 kbps。各种被控制电路均并联在这条总线上,但每个电路和模块都有唯一的地址。本设计中的PCF8563和AT24C02B虽然挂在同一条总线上,其地址分别为0xa2和0xa0,彼此独立,互不相关。这点在编程时必须注意,很容易出错。I2C总线的优点是简单和有效。由于接口直接在组件之上,因此,I2C总线占用的空间非常小,减少了电路板的空间和器件引脚的数量,降低了成本。
系统采用单片机C语言编写,开发环境是Microchip的MPIAB IDE V8.50,在线调试及下载工具是ICD3。
4 结束语
文中从硬件和软件的角度出发,设计了一套基于PIC16F72单片机的温度智能控制系统。与传统的温控系统相比,本系统大大地提高了资源利用率,且元器件选择颇具考究,有很大创新,硬件结构简单、体积小巧,成本低廉、界面直观、安全可靠。并且在设计时考虑到以后扩展系统工程的需要,单片机留出了一定的控制引脚以便于外接其他功能模块。该控制器已经成功运用在小型即热式电热水器中。
- 嵌入式单总线控制器设计(11-09)
- 用单总线技术设计环境状态监控系统(11-14)
- I2C总线原理及应用实例 (01-18)
- I2C总线在多机通信中的应用(01-17)
- 带RTC的I2C总线铁电存储器FM31256(01-17)
- ZLG7290在智能仪表面板接口设计中的应用(03-10)