智能化键盘的设计及其在便携式产品中的应用

2006-05-07 15:49:41来源: 互联网

键盘(keyboard)是智能化测控系统主要的信息输入方式,是实现人机对话的重要途径,因此如何有效地控制键盘并为系统服务是每个设计者需要切实考虑的问题。在由单片机系统构成的便携式产品设计中,由于单片机硬件资源比较紧张,而键盘控制又需要占用大量的硬件资源(I/O口)。为此,笔者利用低价位的单片机GMS97C2051设计了一种智能化的键盘,键盘(key value)通过串行接口I2C传送给主机,节省了大量的主机CPU硬件资源。这种键盘外围元件少,扩充灵活,而且功耗低,符合便携式产品设计的要求。

1 硬件电路及其工作原理

GMS97C2051是由LG公司和武汉力源公司共同研制开发的低价位单片机芯片,采用CMOS工艺,功耗低,外部20个引脚:VCC、GND、RST、P1.0~P1.7、P3.0~P3.5、P3.7。GMS97C2051是一个有2K字节可编程EPROM(E2PROM)的高性能微控制器(microcontroller)。本器件与工业标准MCS-51 TM的指令系统和功能引脚兼容。GMS97C2051是一种功能强大的微控制器,为很多嵌入式控制应用提供了一个高度灵活的、有效的解决方案。GMS97C2051有如下特点:2K字节的E2PROM,128字节RAM,15根I/O线,2个16位定时/计数器,5个向量二级的中断结构,1个全双向的串行口,1个精密的模拟比较器、片内振荡器和时钟电路。此外,GMS97C2051支持两种软件可选的节电方式。空闲方式:停止CPU,而让RAM、定时/计数器、串行口和中断系统继续有效;掉电方式:保存RAM的内容,但振荡器停振,以静止芯片所有的其它功能直到下一次硬件复位。有关GMS97C2051的详细内容请参阅文献[1]。利用GMS97C2051设计的智能化键盘的硬件电路如图1所示。

由图1可以看了,该键盘为4行4列(4×4)共16个键,使用8条I/O口作为控制线,其P1.2、P1.3、P3.4、P3.7为行扫描线,P1.4~P1.7作为列加复线。其工作原理是,首先,使P1.4~P1.7为低电平,P1.2、P1.3、P3.4、P3.7为高电平,读取P1.4~P1.7的状态并存放在某个存储器的4低位中,而高4位位置零。然后,使P1.4~P1.7为高电平,P1.2、P1.3、P3.4、P3.7为低电平,读取P1.2、P1.3、P3.4、P3.7的状态并存放在另一个存储器的高4位中,而低4位置零。最后,将这两个寄存器存放的数值取逻辑或,再判断其结果生产按键的键值。单片机外接晶振11.0592MHz和看门狗电路(watchdog),使单片机上复位后自动运行。当然,根据实际情况GMS97C2051的晶振输入端和复位端可与主机CPU共用。主机CPU对键值的摄取采用申请中断方式,GMS97C2051在中断服务程序中,将扫描到的键值按照一定的软件协议(software protocol)通过I2C接口传送给主机CPU,由主机完成相应的按键功能。

2 串行接口I2C协议

I2C总线是一种串行数据总线,只有2根信号线:一根是双向的数据线SDA(Serial Data),另一根是时钟控制线SCL(Serial Clock)。在I2C总线上传送的每个数据字节由8位(bit)组成。总线对每次传送的字节数没有限制,但每个字节后必须跟1位应答位(acknowledge bit)。数据从最高位(MSB)开始传送。首先,由主机发出启动信号“S”(SDA在SCL高电平期间由高电平跳变为低电平),然后,由主机发送1个字节的数据。启动信号后的第1个字节数据具有特殊含义:高7位是从机的地址,第8位是传送方向位,0表示主机发送数据(写),1表示主机接收数据(读)。被寻址到的从机设备按传送方向设置为对应工作方式。标准I2C总线的设备都有一个7位地址,所有连接在I2C总线上的设备都接收启动信号后的第1个字节,并将接收到的地址与自己的地址进行比较,如果地址相符则为主机要寻访的从机,应在第9位答时钟脉冲时向SDA线送出低电平作为应答。除了第1字节是通用呼叫地址或十位从机地址之外,第2字节开始即为数据字节。数据传送完毕,由于主机发出停止信号“P”(SDA在SCL高电平期间由低电平跳变为高电平)。I2C接口是与SPI相对应的一种接口标准,它仅用1条双向数据线和1条时钟控制线即可进行数据传输,大大节省了硬件资源。

由于本文所使用的单片机没有直接支持I2C协议的硬件资源,因此,必须用其普通I/O来软件模拟I2C协议,从而实现主机对GMS97C2051的键值读取。主机CPU定义发送数据方为发送器,接收数据方为接收器。发送器初始化并启动数据传输,为发送数据方和接收数据方提供同步时钟信号。数据传输由发送器发送1个启动信号开始,然后进行数据传输,最后由发送器发个停止信号结束本次操作。其中接收器每收到1个字节,必须给发送器1个应答信号。传输数据过程中,SDA、SCL信号的变化如图2所示。使用这种方式读取键值,主机CPU还可以通过这2个I/O口对其它支持I2C接口协议的器件进行操作,实现端口的复用(multiplexing)。

此外,在使用单片机软件模拟I2C协议时,时序一定要正确,而且还要注意通信双方的同步。

3 软件设计

GMS97C2051 CPU上电后一直处于扫描状态,一旦检测到有键按下,进行行列查询找到按下的键,计算出键值,在中断程序中按照一定的软件协议,通过I2C接口将键值传送给主机,其流程如图3所示。

部分源程序如下:PROFC PRESS_KEY

PRESS_KEY: ;扫描键盘

MOV P1,#0F0H

CLR P3.7

CLR P3.4

NOP

NOP

MOV A,P1

ANL A,#0F0H

MOV R1,A

NOP

MOV P1,#0CH

SETB P3.7

SETB P3.4

NOP

NOP

MOV A,P1

MOV C,P3.4

MOV ACC.1,C

MOV C,P3.7

MOV ACC.1,C

ANL A,#R1

ORL A,R1

MOV R1,A

MOV P1,#0FFH

SETB P3.4

SETB P3.7

MOV A,R1

CJNE A,#0FFH,KEY_VALUE

RET

KEY_VALUE: ;处理键值

……

RET

END

PROC I2C

IIC: ;发送键值

……

MOV 10H,#8

MOV A,1FH

LOPI1:JB SCL,LOPI2

LOPI2:JNB SCL,LOPI2

RLC A

MOV SDA,C

DJNZ 10H,LOPI1

NOP

LOPI3:JB SCL,LOPI3

MOV 1FH,#0FFH

NOP

NOP

SETB SDA

……

RET

END

结束语

本文所介绍的智能化键盘设计方法已用在便携抄表终端——“便携式无线抄收仪”中,其与主机(W78E58)的I2C接口连接如图4所示。这种主机和键盘分开设计,不仅简化了主机设计,也方便了主机硬件软件的调试。此外,若将GMS97C2051的键值输出端信号通过接口电路转换为RS232信号或RS485信号,可与具有RS232、RS485电平接口的控制系统相连作为远程键盘。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/control/200605/1765.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