|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
<strong>1 引言</strong>
键盘越来越广泛地应用于嵌入式系统中。不同的应用领域键盘扫描方式的设计也各不相同,一般有以下=三种:①软件方法来实现对键盘的扫描。②采用专用芯片实现对键盘的扫描。这是嵌入式系统中设计键盘普遍使用的方法。常用的键盘控制芯片有zl97289A等。这些芯片的内部集成了键盘的驱动电路。配合一定的软件设计即可使用。③与方式②相仿,由于按键的状态变化体现在电平高低的变化,因此通过I/O口模拟键盘的驱动信号也可实现键盘的控制。
随着芯片技术的发展,处理器内部的资源越来越丰富。如韩国三星半导体公司的32位ARM处理器S3C44BOX芯片.其内部集成了外部存储器控制器、LCD控制器、4个DMA通道、2通道异步UART单元、1个同步串行口(SIO),1个多主I2C总线控制器、1个I2S总线控制器。5通道PWM定时器及1个内部定时器、71个通用I/O、8个外部中断源、实时时钟、8通道10位ADC等。由于其内部丰富的I/O口及I/O口扩展,可以通过S3C44BOX的I/O 口模拟键盘的驱动信号实现键盘的控制。
<strong>2 键盘工作原理</strong>
嵌入式系统中应用较多的为矩阵键盘.现以4x4的矩阵键盘为例,说明其下作原理。,4x4行、列结构的16按键矩阵键盘由行线和列线组成。按键位于其行列的交叉点上。结构图如图1所示。要与4x4的矩阵键盘接口,最多需要16根口线,为节省口线。在此选择“键盘循环扫描”方法来检测键盘.采用此方法只需8根口线。
按键设置在行、列交叉点上,行、列分别连接到按键开关的两端。行线通过上拉电阻接到+5V上。平时无按键动作时.行线电平状态将由通过此按键的列线电平决定:列线电平如果为低.行线电平为低;列线电平如果为高,则行线电平亦为高。因各按键之间相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。
<ignore_js_op>
2010-5-4 15:37:37 上传
<strong>下载附件</strong> (4.48 KB)
</ignore_js_op>
图1 矩阵式键盘结构
矩阵键盘循环扫描的识别方法,分两步进行:①识别键盘哪一行的键被按下。让所有列线均为低电平,检杳各行线电平是否为低。如果有行线为低,则说明该行有键被按下,否则说明无键被按下。②如果某行有键被按下。识别键盘哪一列的键被按下(亦称之为扫描法)。逐列置低电平,并置其余各列为高电平,检查各行线电平的变化。如果行电平变为低电平.则可确定此行此列交叉点处按键被按下。
<strong>3 S3C44BOX与键盘硬件接口电路</strong>
S3C44BOX核心ARM板具有71个多功能输入/输出脚,包含在以下7组端口中:1个lO位输出端口 A、1个11位输出端口B、1个16位输入/输出端口c、2个8位输入/输出端口D和G、2个9位输入/输出端口E和F。从端口A~G的功能描述看出.在一般的应用中,PA作为地址线使用;PB作为板块bank选择线和SDRAM的接口线使用;PC可以作为数据线、I2S接口、或LCD数据线等使用;在系统具备LCD的情况下,PD主要作为LCD的信号线使用;PE可以作为串口信号线和定时器输出使用;PF和PG则是多功能I/O口。在ARMsys平台中,很多端口线已被指定了一定的作用,例如PA,PB,PC,PD等;再者PF口集中分布在芯片右侧引脚上,便于硬件连接。因此,在此选取PF口作为检测键盘端口,并设定PF0~PF3为输出扫描码的端口,PF4~PF7为键值读入口。
<strong>4 系统的软件设计</strong>
键盘的扫描程序采用C语言编写。主要由三个部分组成:与S3C44BOX硬件有关的初始化程序、应用主程序、读键子程序。在编写与S3C44BOX硬件有关的初始化程序时主要是对S3C44BOX内部各寄存器进行初始化.首先通过设置PCONF(端口配置)寄存器,来实现端口功能配置。然后再分别设置PDATF(端口数据)及PUPF(端口上拉设置)寄存器。初始化设置程序如下:
//设置PF0~3为输出口(列线),PF4~7位输入口
rfPCONF = Ox55:
//设置PF0~3作为输出口输出扫描码
rPDATF = 0xf0;//PFO~3全写入0
//设置PF4~7作为输入口读入键值
Keyvalue = (rPDATF&Oxf0)>>4;
//设置内部上拉电阻
rPUPF = OxOO.//使能PFO~7的内部上拉电阻
主程序以一定的时间间隔反复调用读键字程序.从而实时响应键入。主、子程序流程图如图2、3所示。
<ignore_js_op>
2010-5-4 15:37:38 上传
<strong>下载附件</strong> (3.14 KB)
</ignore_js_op>
图2 主程序流程图
<ignore_js_op>
2010-5-4 15:37:37 上传
<strong>下载附件</strong> (10.23 KB)
</ignore_js_op>
图3 扫描按键子程序流程图
子程序中定义了键值表格、扫描码数组,程序如下:
const char Keyboard[4][4]=
{
{'7','8','9','/'},
{'4','5','6','*'}
{'1','2','3','-'}
{'0','.','+','='}
}
扫描码数组为scanvalue[4]={0xfe,0xfd,0xfb,0xf7}
<strong>5 结束语</strong>
键盘已成为现代嵌入式设备人机交互的首选输入设备。本文介绍了键盘循环扫描的工作原理,以三星公司ARM7内核芯片S3C44BOX为基础.完成了键盘的软硬件设计,实践证明系统是稳定的、可靠的。
本文作者的创新点是:以ARM内核芯片S3CA4BOX为基础.实现嵌入式设备的输入功能,此系统具有扩展性好、用户界面友好。外围电路简单,可靠性高的特点,其硬件接口采用插板的形式,结构简单、易于装卸,方便系统集成和维护。
作者:余贵水 来源:《微计算机信息》(嵌入式与SOC)2009年第7-2期 |
|