首页 百科知识 ×键盘控制实验

×键盘控制实验

时间:2023-10-27 百科知识 版权反馈
【摘要】:(2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP.在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下.本实验采用中断方式实现用户键盘接口.对键盘上的某一行发送低电平,其他为高电平,然后读取列值,若列值中有一位是低,表明该行与低电平对应列的键被按下;否则扫描下一行.先将所有行扫描线输出

7.8 5×4键盘控制实验

7.8.1 实验目的

(1)通过实验掌握键盘控制与设计方法.

(2)熟练编写ARM核处理器S3C2410X中断处理程序.

7.8.2 实验设备

(1)硬件:Embest EduKit-Ⅲ实验平台,ULINK USB-JTAG仿真器套件,PC.

(2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP.

7.8.3 实验内容

(1)使用实验板上5×4用户键盘,编写程序接收键盘中断.

(2)通过IIC总线读入键值,并将读到的键值发送到串口.

7.8.4 实验原理

(1)常规键盘电路设计原理.

用户设计行列键盘接口,一般常采用三种方法读取键值.一种是中断式,另两种是扫描法和反转法.

①中断式.

在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下.本实验采用中断方式实现用户键盘接口.

②扫描法.

对键盘上的某一行发送低电平,其他为高电平,然后读取列值,若列值中有一位是低,表明该行与低电平对应列的键被按下;否则扫描下一行.

③反转法.

先将所有行扫描线输出低电平,读列值,若列值有一位是低,表明有键按下;接着所有列扫描线输出低电平,再读行值.根据读到的值组合就可以查表得到键码.

(2)使用ZLG7290的键盘电路设计原理.

①ZLG7290的特点.

a.IIC串行接口,提供键盘中断信号,方便与处理器接口;

b.可驱动8位共阴数码管或64只独立LED和64个按键;

c.可控扫描位数,可控制任一数码管闪烁;

d.提供数据译码和循环、移位、段寻址等控制;

e.8个功能键,可检测任一键的连击次数;

f.无需外接元件即直接驱动LED,可扩展驱动电流和驱动电压;

g.提供工业级器件,多种封装形式PDIP24,SO24.

②ZLG7290的引脚说明.

采用24引脚封装,引脚图如下所示.

③ZLG7290的寄存器说明.

系统寄存器(SystemReg):地址00H,复位值11110000B.系统寄存器保存ZLG7290的系统状态,并可对系统运行状态进行配置.

KeyAvi(SystemReg.0):置1时表示有效的按键动作(普通键的单击、连击和功能键状态变化),/INT引脚信号有效变为低电平.清0表示无按键动作./INT引脚信号无效变为高阻态.有效的按键动作消失后或读Key后KeyAvi位自动清0.

键值寄存器(Key):地址01H,复位值00H.Key表示被压按键的键值.当Key=0时,表示没有键被压按.

连击次数计数器(RepeatCnt):地址02H,复位值00H.RepeatCnt=0时,表示单击键.RepeatCnt大于0时,表示键的连击次数.RepeatCnt用于区别出单击键或连击键,判断连击次数可以检测被按时间.

img380

图7-30 ZLG7290引脚图

功能键寄存器(FunctionKey):地址03H,复位值0FFH.FunctionKey对应位的值=0表示对应功能键被压按(FunctionKey.7~FunctionKey.0对应S64~S57).

命令缓冲区(CmdBuf0~CmdBuf1):地址07H~08H,复位值00H~00H.用于传输指令.

闪烁控制寄存器(FlashOnOff):地址0CH,复位值0111B/0111B.高4位表示闪烁时亮的时间,低4位表示闪烁时灭的时间,改变其值的同时也改变了闪烁频率,也能改变亮和灭的占空比.FlashOnOff的1个单位相当于150~250ms(亮和灭的时间范围为:1~16,0000B相当1个时间单位),所有像素的闪烁频率和占空比相同.

扫描位数寄存器(ScanNum):地址0DH,复位值7.用于控制最大的扫描显示位数(有效范围为0~7,对应的显示位数为:1~8),减少扫描位数可提高每位显示扫描时间的占空比,以提高LED亮度.不扫描显示的显示缓存寄存器则保持不变.如ScanNum=3时,只显示DpRam0~DpRam3的内容.

显示缓存寄存器(DpRam0~DpRam7):地址10H~17H,复位值00H~00H.缓存中位置1表示该像素亮,DpRam7~DpRam0的显示内容对应Dig7~Dig0引脚.

④ZLG7290的通信接口.

ZLG7290的IIC接口传输速率可达32kbit/s,容易与处理器接口通信,并提供键盘中断信号,提高主处理器时间效率.ZLG7290的从地址slave address为70H(01110000B).我们从它的键值寄存器(01H)中读取按键值(ucChar用于保存读到的键值):

iic_read(0x70,0x1,&ucChar);

有效的按键动作都会令系统寄存器(SystemReg)的KeyAvi位置1,/INT引脚信号有效(变为低电平).用户的键盘处理程序可由/INT引脚低电平中断触发,以提高程序效率;也可以不采样/INT引脚信号节省系统的I/O数,而轮询系统寄存器的KeyAvi位.要注意读键值寄存器会令KeyAvi位清0,并会令/INT引脚信号无效.为确保某个有效的按键动作所有参数寄存器的同步性,建议利用IIC通信的自动增址功能连续读RepeatCnt、FunctionKey和Key寄存器,但用户无需太担心寄存器的同步性问题,因为键参数寄存器变化速度较缓慢(典型250ms,最快9ms).

ZLG7290内可通过IIC总线访问的寄存器地址范围为:00H~17H,任一寄存器都可按字节直接读写,也可以通过命令接口间接读写或按位读写,请参考ZLG7290芯片手册.ZLG7290支持自动增址功能(访问一寄存器后寄存器子地址自动加1)和地址翻转功能(访问最后一寄存器后寄存器子地址翻转为00H).ZLG7290的控制和状态查询全部都是通过读/写寄存器实现的,用户只需像读写24C02内的单元一样即可实现对ZLG7290的控制,关于IIC总线访问的细节请参考IIC总线规范.

7.8.5 实验设计

(1)键盘硬件电路设计.

①键盘连接电路.

键盘连接电路如图7-31所示.

img381

图7-31 5×4键盘连接电路

②键盘控制电路.

键盘控制电路使用芯片ZLG7290控制,如图7-32.对应下图中的14引脚KEY_INT捕捉由键盘按下产生的中断触发信号.

img382

图7-32 5×4键盘控制电路

③工作过程.

键盘动作由芯片ZLG7290检测,当键盘按下时,芯片检测到后在INT引脚产生中断触发电平通知处理器,处理器通过IIC总线读取芯片ZLG7290键值寄存器(01H)中保存的键值.

7.8.6 实验操作步骤

(1)准备实验环境.

使用ULINK USB-JTAG仿真器连接到目标板上.使用Embest EduKit-Ⅲ实验板附带的串口线,连接实验板上的UART0和PC机的串口.

(2)串口接收设置.

在PC上运行Windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制),或者使用其他串口通信程序.

(3)打开实验例程

①拷贝实验平台附带光盘CD1\CD1_Basic_070615\Software文件夹到RealView MDK软件的安装目录的Keil\ARM\Boards\Embest\目录下(如果已经拷贝,可跳过此步骤).

②使用μVision IDE for ARM通过ULINK USB-JTAG仿真器连接实验板,打开实验例程目录5.2_keyboard_test子目录下的keyboard_test.Uv2例程,编译链接工程成功.

③根据ReadMe目录下的ReadMeCommon.txt及readme.txt文件配置集成开发环境(工程默认已经配置正确),点击工具栏“img383”,在Option for Target对话框的Linker页中选择RuninRAM.sct分散加载文件,点击MDK的Debug菜单,选择Start/Stop Debug Session项或点击工具栏“img384”,下载工程生成的.axf文件到目标板的RAM中调试运行.

④如果需要将程序烧写固化到Flash中,仅需要更改分散加载文件即可(须慎用,这一步的操作将会破坏Flash中原有固化程序,建议实验中不操作).在Option for Target对话框的Linker页中选择RuninFlash.sct分散加载文件,重新编译工程,点击MDK的Flash菜单,选择Download烧写调试代码到目标系统的Nor Flash中,重启实验板,实验板将会运行烧写到Nor Flash中的代码.

⑤点击Debug菜单的Go或F5键运行程序.

(4)观察实验结果.

①在PC上观察超级终端程序主窗口,可以看到如下界面:

Boot success…

Keyboard Test Example

②用户可以按下实验系统的5×4键盘,在超级终端上观察结果.

7.8.7 实验参考程序及流程图

img385

图7-33 键盘控制实验流程图

代码

(1)键盘控制初始化.

img386

img387

(2)中断服务程序.

img388

7.8.8 练习题

1.编写程序实现一个简单的计算器,包括加减乘除功能,并能将结果显示在数码管上.

2.编写程序实现双键同时按下时键盘的检测及处理程序.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈