1 系统构成和核心接口电路的工作原理 设计家电控制器的核心是成本、功耗的控制。现在市场上的同类产品中需要的硬件资源比较多,包括国个MCU和个三-八译码器,其中三-八译码器用于扩展I/O端口。实际上,在国般MCU的I/O端口足够的情况下,可以充发利用MCU,采用软件编码模块完全代替三-八译码器,从而降低成本和功耗。 1.1 用户端的输入信号源和输出信号源 冷风扇除了具有普通电风扇的基本功能外,还有国个最重要的功能——冷风功能,用于选择是否冷风输出。控制功能需要两个水位信号源——缺水(L)、水满(H),输出信号国个。 从用户使用方面来讲,有下列输入源和输出源。 输入源: ·6个键盘:关机、开机/风速、风类、导风、定时和冷风; ·6个红外遥控功能键:与键盘相对应; ·2个水位信号。 输出源: ·12个LED指示灯; ·5个控制信号:高风HF、中风MF、低风LF、导风SWI和冷风输出控制; ·蜂鸣信号。 1.2 系统构成框图 本设计中采用单片机SST868542R。该单片机有20个I/O端口,352字节片上SRAM,16KB Flash EEPROM,以及两个可充当计数器的模块Core Timer和Carrier Modulator Transmitter。采用6805精简指令集。 6个红外输入共有国个红外输入端口,根据输入的红外码来判断输入的按键。6个键盘输入共用国个键盘输入端口。12个LED指示灯与单片机的接口有8个,分别为6个扫描端口和2个控制端口。系统框图如图1所示。 1.3 LED和键盘输入的接口电路及其工作原理 为了节省I/O端口,接口电路将12个LED排列成一个6行×2列的矩阵,如图2所示。每列有6个LED,其阳极相连并通过一个反相器连接到单片机的I/O口,称为控制端口。每行有2个LED,其阴极相连并与单片机I/O口相连,称为扫描端口。每一行的扫描端口后串联一个二极管和一个脉冲式键盘,6个键盘的另一端相连并与单片机的公共键盘输入端口相连。这样LED和键盘仅需要9个端口。 由于电路上的需要,LED和键盘检测采用行扫描的工作方式。每次扫描将需扫描行的扫描端口置低,其它扫描端口置高。如果此时按下被扫描行的键盘,那么公共键盘输入端口为低电平,否则为高电平。为了让指标灯持续发亮没有闪烁感,扫描频率要求75Hz以上。每周期扫描6行,因此扫描时间间隔应小于2.2ms。 2 软件模块的设计 系统软件分为主程序和实时中断两个模块。 主程序包括系统参数初始倾向循环工作过程。系统参数初始化包括单片机状态参量和程序自定义的状态变量的初始化。循环工作过程循环执行水位检测、红外码流检测、输入状态字变化检测、输出端口赋值和定时器检查等任务。 实时中断服务程序是本设计中的关键,主要处理与时间有关的任务,包括扫描端口和控制端口的赋值、键盘检测、定时器的处理、蜂鸣波形的产生和红外信号的捕获等。 2.1 键盘和LED的扫描编码 指示灯用于指示系统的当前状态,而系统的状态由用户输入的信号来改变。根据6种不同的输入源,定义6个输入状态变量,每一次按键,相应的状态字将产生变化,表示系统的不同状态。从上述的电路及其工作原理可以看出,输入键盘和扫描端口的值是相互对应的,如‘关闭键’对应0111,状态变量设为OFF,只有两个状态,开/关,因此用一个比特就能表示。同理可以得到其它5个状态变量的定义和编码。编码应尽量简单,状态的变经如能采用自编码应尽量简单,状态的变化如能采用自减一或自加一则最好。详细见表1。
表1 输入状态变量的定义及编码 输入键 扫描端口PA7-2 红外码字 状态变量 状态变化的编码 关闭
开机/风速 | 风类 | 定时 | 导风 | 冷风 |
011111 | 22h | |||
101111 | 60h | |||
110111 | 40h | |||
111011 | 01h | |||
111101 | E0h |