|
|
| | -文章搜索 - 最新文章 - | |
智能化键盘的设计及其在便携式产品中的应用 |
| 发布时间:2006年5月19日 点击次数:724 |
| 来源: 作者:山东大学 何道刚 宋玉炎 崔 强 孙志行 |
摘要:介绍一种利用GMS97C2051单片机设计的智能化键盘系统,给出其硬件电路及软件设计,并简要阐述其在便携式产品设计中的应用。 关键词:智能化键盘 单片机 键值 I2C 便携式产品 GMS97C2051 键盘(keyboard)是智能化测控系统主要的信息输入方式,是实现人机对话的重要途径,因此如何有效地控制键盘并为系统服务是每个设计者需要切实考虑的问题。在由单片机系统构成的便携式产品设计中,由于单片机硬件资源比较紧张,而键盘控制又需要占用大量的硬件资源(I/O口)。为此,笔者利用低价位的单片机GMS97C2051设计了一种智能化的键盘,键盘(key value)通过串行接口I2C传送给主机,节省了大量的主机CPU硬件资源。这种键盘外围元件少,扩充灵活,而且功耗低,符合便携式产品设计的要求。 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,由主机完成相应的按键功能。 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电平接口的控制系统相连作为远程键盘。 |
|
|
|
|
[自动控制] 相关文章: P89C51RD2的BootROM与ISP功能的实现简介:
摘要: 简单论述P89C51RD2的ISP和IAP功能,给出实现读取其Boot ROM源代码的硬件电路和程序;初步探讨ISP功能中的波特率的自动跟踪技术、命令字的接收格式和执行方式,给出部分源代码。 关键词: P89C51RD2 Boot ROM ISP(IAP)功能 ...... DS80C320在高速数据采集中的应用
87C196MC与IPM模块组成的变频调速系统
KeilMonitor-51仿真板的制作与使用
单片机程序设计中运用事件驱动机制
汉芯公司低调发布新品 飞思卡尔回避侵权案
基于IIC1.0的时钟芯片应用程序设计
ST9+系列单片机I2C总线驱动程序实现
W77E58在RTU遥信单元中的应用
SST89C54/58系列单片机的IAP应用技术 |
|
|
|