引言
目前,针对单片机应用的专用键盘接口芯片可谓种类繁多,但大多数都应用于对功耗没有严格要求的场合,满足不了一些小巧的便携式设备(例如遥控器的低功耗、低成本要求)。TC9148是一款应用广泛的红外发码专用芯片,一般与红外接收芯片TC9149配合使用来构成一套完整的遥控发射、接收系统。而由于TC9148具有功耗极低且价格低廉的特点,凶而在许多要求有键盘控制的低功耗、低成本应用中可将其作为键盘接口芯片使用,并直接与微处理器连接实现复杂的键盘处理。本文采用TC9148作为键盘接口芯片,给出了基于Microchip公司的低功耗单片机PIC16F73实现的低功耗键盘接口设计方法。
1 TC9148传送波形分析
TC9148是一款功耗极低且价格低廉的红外发码专用芯片。用TC9148设计键盘接口电路的关键是对TC9148的输出信号进行解码。下面就详细地讨论一下TC9148的传送波形。
1.1 基本传送波形
TC9148的振荡频率fosc为455 kHz,传送的基本波彤是图1所示的12位串行码。其中C1~C3为用户码标识,H、S1和S2为连续/单发码标识,K1~K6为键输人标识。根据TC9148数据手册介绍,这里:a=(1/fosc)×192≈420μs。然而,通过示波器观察及后续的程序调试发现,每位码的实际位宽约为420μs,即图1中的4a才等于420μs。
1.2 载波
为了增加红外信号的发送和接收距离,一般需要50~100 mA的电流通过红外发射二极管,所以,从减少电池消耗考虑,需尽可能的减少红外发光管的导通时间。TC9148的发码信号采川占空比为1:3的载波调制波形,其载波频率为38 Hz。
图2和图3所示为用示波器观察所得的脉冲凋制后的传送波形。图2是位码“0”和“1”的波形表示。图3则是发射一个完整码的实际波形。
由于应用了载波调制,TC9148的发射码波形相对比较复杂,采用常用的定时读取高低电平的方式解码有一定的难度,且误码率也比较高。本设计考虑到载波调制部分具有电平变化的特点,因而采用PIC16F73单片机的RB端口电平变化中断来作为辅助判断。
2 键盘接口电路
本设计将TC9148作为键盘接口芯片使用,其硬件电路的设计相对比较简单,其电路如图4所示。图4中,TC9148的串行输出端TxOUT接PIC16F73的RB4脚,其它外围电路采用其典型连接方法,键盘则应根据需要做一定裁减。另外,电路调试中,有时TC9148会起振困难,因此应注意合理设置晶振电路中的电容C9和C8的值,一般的经验是:C8略小于C9。
可见,键盘接口设计的关键就是实现PIC16F73对TC9148传送码的正确解码。考虑到TC9148传送波形的复杂性,PIC16F73的接入引脚采用的是RB口的RB4,即加入了RB端口电平变化中断作为辅助判断。
3 解码算法的设计
3.1 TC9148发码起始的判断
根据TC9148的传送波形,无论“0”或“1”,起始处均为载波调制波形,这一点具有电平变化的特点,因此,开RB电平变化中断后,一旦进入该中断程序即认为开始发码。
3.2 传送波形中“0”和“1”的判断
事实上,本设计中解码的难点是对传送波形中“0”和“1”的判断。最初在考虑解码时,也曾尝试过通过精确的延时、定时程序并按照时序来读取波形,但通过大量的测试发现:TC9148数据手册上提供的波形与实际示波器上观察的波形略有出入,致使设计时无法得到精确的延时数值;另外,由于加入了载波,但载波调制部分的低电平保持时间较短,硬件无法灵敏反应,致使误码率很高。故而只能再做其它的打算。
仔细对位“0”和位“1”的波形进行分析和比较后发现:由于加入载波,在前半周期内,位“0”和位“1”的波形均会发生电平变化;而在后半周期内,只有位“1”的波形会产生电平变化,而位“0”的波形则保持高电平不变,具体波形变化如图5所示。
因此,通过适当的延时和电平变化的判断,就可以很准确的判断出位“0”和位“1”,问题也就迎刃而解了。
3.3 基本传送波形的解码
TC9148的键盘输入可以实现单键和多重按键,与之对应的有两种发射码的波形:一种是单发码波形,另一种是连续码波形。这两种波形都是基于传送的基本波形,只是加入了一定的延时和校验部分,并且单发码波形只传送一次,而连续码波形是要重复传送的,具体波形图可参考TC9148的数据手册。
这里,由于设计中的算法并不是基于波形的读取,而是直接对位“0”和位“1”波形进行判断,因此,不论是单发码波形或连续码波形,都可只读其中的基本传送波形部分即以得到正确的解码,这在很大程度上避免了干扰的影响。
图6所示是一个基本传送波形的解码判断过程图,其重复部分可以采用循环来实现。
4 程序代码
下面给出基于PIC16F73单片机的解码部分的程序代码和详细注释:
5 结束语
本文针对低功耗应用场合,采用Microchip公司的低功耗单片机PIC16F73和红外发码芯片TC9148完成了键盘接口设计,并在设计过程中实现了PIC单片机对红外发码芯片TC9148的直接解码,从而拓展TC9148芯片的应用领域,提升了产品的性价比,具有一定的创新意义。