综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章单片机正文
 
智能化键盘的设计及其在便携式产品中的应用
发布日期:2005-12-18 作者:何道刚 宋玉炎 崔 强 孙志行 来源:单片机与嵌入式系统应用

  摘要:介绍一种利用GMS97C2051单片机设计的智能化键盘系统,给出其硬件电路及软件设计,并简要阐述其在便携式产品设计中的应用。

    关键词:智能化键盘 单片机 键值 I2C 便携式产品 GMS97C2051

键盘(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电平接口的控制系统相连作为远程键盘。


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
用户自定制LED驱动器的设计 (11-26)
ARM嵌入式系统软件实时时钟的设计 (11-21)
基于IIC1.0的时钟芯片应用程序设计 (11-29)
I2C总线在单片机上的实现 (11-30)
在P87LPC674单片机I2C总线系统中扩展LCD显示器 (12-01)
采用LpLVDS和CTL实现便携式产品中的接口设计 (04-25)
80C51便携式产品中的低功耗设计 (03-30)
GMS97C2051与ISD2560组成的小型语音系统 (01-06)
一个单片机串行数据采集/传输模块的设计 (12-15)
GMS97C2051与ISD2560组成的小型语音系统 (12-16)
电池供电产品的LED控制问题 (03-04)
在屏显示器件MC141541及其接口技术 (12-01)
USB接口的数字摄像系统设计 (12-01)
用单片机实现基于I2C串行总线的音频处理系统 (12-23)
基于I2C总线技术的USB接口设计 (12-18)
带I2C总线接口的LED驱动器SAA1064及其应用 (12-23)
串行E2PROM 24LC65在单片机中的应用 (12-27)
I2C总线接口时钟芯片DS1307在坦克半主动悬挂电控单元中的应用 (01-05)
用汇编实现I2C BUS总线协议 (12-14)
用单片机实现通用存贮器IC卡的读写 (12-13)
模块化LED大屏幕显示器的设计 (12-01)
S3C2410X的I2C控制器及其应用开发 (12-12)
Blackfin531与PCF8576的接口设计及 I2C协议实现 (12-12)
PCF8563 I2C实时时钟/日历芯片 在8051系统中的应用 (12-13)
模拟I2C总线多主通信研究与软件设计 (01-21)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号