PIC单片机在中央空调控制器中的应用
扫描二维码
随时随地手机看文章
1 引 言
中央空调控制器有别于普通空调控制器。普通空调控制器安装于室内挂机内,对控制器尺寸要求不高,采用任何单片机加上外扩,不管多少外围器件都没问题。但中央空调控制器由于没有可放置的室内机,所以只能单独放置,这样,就要求控制器小巧精致。本设计中,用户要求设计的控制器尺寸与一般的家用开关面板大小相仿,上面排布七个按键,十个LED发光指示和一个温度显示,功能上还有遥控、两路温度采样等。
2 系统硬件设计
根据用户要求,我们进行了初步设计。在排布组件时,我们就发现,这么小的空间,放上面板所需的键盘、显示后,只留下了一片单片机的位置,那么A/D、红外遥控译码和外围驱动电路怎么放?经过比较,我们最终选择了PIC单片机。在开发阶段使用PIC16F877,以后还可改为PIC16C74,以降低产品成本。
PIC16F877应用于本系统具有以下优势:
·自带10位多通道模数转换器,因而无须增加外围模数转换器;
·有三个定时器,有足够的时钟可用,因为空调控制最重要的部分就在时钟上,而且实现红外遥控的软件解码亦需定时器。
设计中,为了减少驱动要求,全部采用低电平有效,这样就进一步减少了外围器件对空间的要求。
图1中,RA3引脚由于模数转换的设置限制而不能使用,RC0、RC1引脚由于时钟定义限制而不能使用。
3 系统软件设计
3.1 总体设计方案
系统主程序非常简单,主要执行一个任务,就是键盘扫描检测,因为PIC16F877只有一个外部中断引脚,为实现红外遥控软解码,键盘须采用扫描查询方式。本系统的技术方案主要集中在红外遥控软件解码和时钟控制上。
3.2 红外遥控软件解码
红外遥控采用HOLTEK公司的HT6221多功能编码芯片,该公司公布的资料显示,该芯片采用PPM进行编码,HT6221每发送一个码,先送出一个 9ms的头码和4.5ms的间隙,然后依次送出16位的地址码(18ms~36ms)、8位数据码(9ms~18ms)和8位数据反码,图2给出了 DOUT引脚上输出的格式。
数据的识别为:1.12ms为 0,2.24ms为1,如图3所示。这样,红外遥控软件解码需设计一时钟,与中断同步计数就可识别了。本系统的系统时钟为4MHz,为了便于识别数据值,我们确定:时钟中断为0.28ms。其基本工作原理为:通过判断两次外部中断间时钟中断的次数(即时间值)来解码。基本算法如下:
3.3 时钟控制设计
时钟中断设计是本系统的重点,系统每一部分功能几乎都围绕时钟进行,例如:制冷室内风机起动20秒后压缩机外风机才起动,温度到时,压缩机关机20秒后关风机,压缩机停机后三分钟才能再开;按键调温度,5秒停止按键后恢复,并显示温度,LED要闪烁。各种模式下,除了本身控制需要的时间要求外,还有许多为保护系统而设的时钟要求。经过对系统的仔细分析,设计方案主要从两个方面着手:
一是处理好各种状态,为此,为每种状态都定义状态标志如下:
系统的四种切换模式定义状态,定义名为mode
上面列出了系统所定义的状态,正是有了这些状态的帮助,才方便了时间控制的处理。
二是经分析,时钟的要求尽管多,但都为秒、分、时,所以就设计了一个真正的“时钟”,把“秒”的控制放在“秒”一段,“分”的放在“分”一段,“时”的放在“时”一段,结合上面的状态,使控制逻辑非常清晰。下面给出算法示意:
时钟中断服务程序
Secs++“秒”计数
If Secs<6
goto sec-1 如果不到1分钟,处理“秒”程序段
else
{
以上程序是用汇编语言实现的,为了清晰及减少篇幅,这里改用算法描述来说明。