基于PIC单片机的低功耗键盘接口设计
出处:sunwave 发布于:2007-07-16 15:31:52
目前,针对应用的专用键盘接口芯片可谓种类繁多,但大多数都应用于对功耗没有严格要求的场合,满足不了一些小巧的便携式设备(例如遥控器的低功耗、低成本要求)。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芯片的应用领域,提升了产品的性价比,具有一定的创新意义。
参考文献:
[1]. TC9149 datasheet //tgdrjb.cn/datasheet/TC9149_641963.html.
[2]. Microchip datasheet //tgdrjb.cn/datasheet/Microchip_1097736.html.
[3]. PIC16F73 datasheet //tgdrjb.cn/datasheet/PIC16F73_88082.html.
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//tgdrjb.cn,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 什么是树莓派?一文快速了解树莓派基础知识2025/6/18 16:30:52
- 什么是有机液分析与有机液知识介绍2025/6/7 16:31:44
- FPGA中的双线性插值算法2025/5/29 17:16:30
- keil4和keil5的区别,哪个好?2025/5/22 17:03:33
- MOLEX 441331000高密度板对板连接器技术解析2025/4/24 11:24:50