一种频率编码键盘的设计与实现

2006-05-07 15:49:38来源: 电子技术应用

单片机在消费电子、自动化仪表、工业控制等领域已得到广泛的应用,它以灵活的设计、低廉的成本、微小的功耗在电子器件市场中占有十分重要的地位。今天发发越来越多的芯片厂商在不遗余力地竞争这个应用空间,如INTEL、NEC、MICROCHIP等公司都已形成了自己强大的新产品线,给产品的设计带来了越来越多的选择。

几乎在每一个单片机应用系统中,键盘都是必备的人机交互的主要输入设备。传统的按键识别方法是采用编码式键盘芯片,如8279;或采用软件控制多条I/O线扫描的方法。这种方法用到的I/O引脚数常常在4条以上。然而单片机I/O引脚资源有限,特别是在引脚数秒、功耗低、系统成本敏感的场合,成全和功耗决定了设计人员不可能另外扩充I/O空是,如采用ATMEL公司的AT89C1051/AT89C2051及AT90SXX系列、MICROCHIP公司的PIC16CXX系列的单片机时就是这样。如何利用有限的I/O资源实现我个按键的识别是经常遇到的问题。作者根据实际的开发经验,结合单片机自身的特点,提出一种利用单片机的定时器/计数和测频原理、用一个I/O引脚实现多个按键识别的方法,并给出了MCS-51单片机的汇编源程序。由于在各种型号的单片机中,定时器/计数器几乎是一种必备的配置资源,因此其原理很容易移植到其它型号的单片机应用系统中。

1 硬件电路的分析

频率编码式键盘的硬件电路如图1所示。由NE555定时器组成的多谐振荡器产生一定频率的方波[1],单片机利用其定时器/计数器对这个方波的频率进行测量。NE555定时器组成的多谐振荡器的放电时间常数为:τ放=RS·C1,而充电时间常数为:τ充=(Ri+RS)C1,(i=1,2,…,n),n为按键的数目。

当不同的按键接下时,NE555定时器组成的多谐振荡器的充电时间常数不同,放电时间常数不变,因而输出方波的频率也不同,使得不同的键按下时对应不同的输出频率。只要准确地测量出NE555定时器的输出频率,就可以精确地识别出被按下的按键号,这就是频率编码式键盘设计的理论依据。

在实际应用中,考虑到电阻阻值和电容容量的分散性以及电路的时间稳定笥和温度稳定性,在满足单片机测量频率的分辨率和量程的基础上,应尽量将各个键之间的频率间隔拉大。这样即使每一按建输出的频率有一定的误差,但只要保证输出的各个频率互不相同,就可以通过软件去判断被测的频率究竟落在了哪一个范围,而不是判断落在了哪一个频点上。这样使设计的软件对电路产生的误差具有一定的适应性,从而摆脱了本电路对元器件参数的高度敏感性,大大加快了电路调试 和批量生产的速度。

2 汇编程序的设计

在作者设计的系统中,采用AT89C51单片机,外接晶振频率为12MHz。单片机仅具有15个I/O线,由于系统采用电池供电,需要进行低功耗设计。而采用本电路后,简化了系统的硬件,满足了低功耗的要求,另外的14个I/O线能满足一般的便携式应用。本系统用的8个按键,键盘电路的中C1=C2=0.01μF,RS=150Ω,其余的阻容值和设计的中心频率如表1所示。其中,中心频率是指在电路参数误差为零时对应的频率。由于实际电路中误差总是存在的,所以频率就落在此中心频率附近。

表1 键盘设计参数表

键号 Ri(Ω) 中心频率(kHz)

50ms内的按键频率计数值及判断区间

中心测量值 下限值 上限值
K1 2.1K 60.112 301 250 350
K2 1.5K 80.150 400 350 450
K3 1.1K 103.05 505 450 550
K4 900 120.22 600 550 650
K5 730 140.07 700 650 750
K6 600 160.30 801 750 850
K7 500 180.34 901 850 950
K8 420 200.37 1002 950 1050

在软件设计上要实现以下三个功能:(1)判断有无键按下;(2)有键按下时,进行按键消抖;(3)正确识别被按下的按键编号。首先设置单片机定时器/计数顺的工作试,让定时器/计数器T0设为外部计数方式,允许T0中断;并给TL0、TH0赋初值FFH,一旦有键接下时,T0便产生中断,由此可以判断是否有键按下;然后延时8ms实现按键抖动的消除;接着将T1设为内部定时方式,定时时间为50ms,T0在这50ms的时间里对NE555输出频率信号进行计数,通过对计数值的大小范围的判断就可以识别按键的编号。有关延时和测频的程序很常见,读者可以参考有关资料。按键识别这部分的汇编剧程序如下文[2]。程序入口参数FRQH、FRQL分别是50ms定时时间内对外部频率计数的高位和低位,判断结果放在KEYCODE中。

KEYCODE EQU 30H ;存放键值(1-8)有效;

;0FFH无键按下,0EEH出错

FRQH EQU 32H ;频率测量值高位

FRQL FQU 31H ;频率测量值低位

ORG 0000H

MOV DPTR,#TABLE

MOV R0,#0

MOV KEYCODE,#0

NEXT:MOV A,R0

MOVC A,@A+DPTR

INC R0

CJNE A,FRQH,J1

MOV A,R0

INC R0

MOVC A,@A+DPTR

CJNE A,FRQL,J2

MOV KEYCODE,#EEH;频率在边界上出错

LJMP WAIT

J1:JNC WAIT

J1:JNC WAIT

INC R0

NNT:INC KEYCODE

LJMP NEXT

J2:JNC WAIT

JMP NNT

WAIT:MOV A,KEYCODE

;…

;… 添加用户应用程序

;判断频率区间上下限的数据表;

TABLE:DB 00H,0FAH,01H,5EH,01H,0C2H

DB 02H,26H,02H,8AH,02H,0EEH

DB 03H,52H,03H,0B6H,04H,1AH

DB 04H,7EH,0FFH,0FFH

3 特点及注意事项

采用频率编码具有抗干扰力强、接口简单的优点,并且易于实现光电隔离。在键盘与主机分离的场合,还可以大大简化二者互连的电缆。另外,若将此信号去调制红外发射组件,也可以实现遥控键盘而无需额外的编码逻辑。但是它对多键的同时按下和单键的连击检测能力较差,在与实际应用结合的时候,应尽量避免这两种情况的再现并恰当地进行处理。同时NE555的上限工作频率是500kHz,采用传统的MCS-51单片机测量外部频率时,最高可测的频率为晶振频率的24分频,设计中应考虑可用的频率范围。采用其它型号的单片机时,也应注意这一点。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/control/200605/1667.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved