DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 362|回复: 0
打印 上一主题 下一主题

基于PIC单片机的低功耗键盘接口设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 18:21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
引言 目前,针对单片机应用的专用键盘接口芯片可谓种类繁多,但大多数都应用于对功耗没有严格要求的场合,满足不了一些小巧的便携式设备(例如遥控器的低功耗、低成本要求)。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芯片的应用领域,提升了产品的性价比,具有一定的创新意义。
                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-6-8 01:48 , 耗时 0.097262 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表