5×4键盘控制实验.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5×4键盘控制实验

5×4键盘控制实验 【实验目的】 通过实验掌握中断式键盘控制与设计方法。 掌握中断式键盘检测程序的设计思路。 熟练编写ARM核处理器S3C44BOX 中断处理程序。 【实验设备】 硬件:Embest EDUKIT – II/III 实验平台,Embest ARM标准/增强型仿真器套件,PC机。 软件:Embest IDE pro 2004 集成开发环境,Window98/2000/NT/XP操作系统。 【实验内容】 使用实验板上5×4 用户键盘,编写程序接收键盘中断。 通过I2C总线读入键值,并将读到的键值发送到串口。 【实验原理】 用户设计行列键盘接口,一般常采用3种方法读取键值。一种是中断式,另外两种是扫描法核反转法。 1.中断式:在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下。本实验采用中断式实现用户键盘接口。 2.扫描法:对键盘上的某一行送低电平,其他行为高电平,然后读取列值。若列值中有一位是低,则表明该行与低电平对应列的键值被按下;否则扫描下一行。 3.反转法:先将所有行扫描线输出低电平,读列值。若列值有一位是低,则表明有键值按下,读列值;然后所有列扫描线输出低电平,再读行值。根据读到的值组合就可以查表得到键码。 【实验设计】 键盘硬件电路设计 ①:键盘控制电路 键盘控制电路使用芯片ZLG7290控制,如下图1-①,1-②. 图1-① 5×4键盘控制电路 1-② 5×4键盘控制电路 ② 工作过程 键盘动作由芯片ZLG7290检测。当键盘按下时,芯片检测到后在INT引脚产生中断触发电平通知处理器,处理器通过I2C总线读取芯片中保存的键值。 ③键值显示控制 Embest EDUKIT –II/III 教学实验板在按键按下后,其对应键值在八段数码管上显示。其控制电路如下图1--③所示。 图1--③八段数码管连接电路 程序流程图如下图所示: 【实验操作步骤】 准备实验环境 使用Embest 仿真器连接目标板,使用Embest EDUKIT –II/III 实验板附带的串口线连接实验板上的UART0和PC机的串口。 设置串口接收 在PC 机上运行Windows自带的超级终端串口通信程序(波特率115200,8位数据位,1位停止位,无奇偶校验位和无硬件流控制),或者使用其他串口通信程序。 操作实验例程 ①使用Embest IDE,通过Embest JTAG 仿真器连接实验板,打开实验历程目录下的keyboard_test.ews 例程,编译,链接工程。 ②选择菜单项Debug→Remote Connect,远程连接目标板。 ③选择菜单项Debug→Download,下载调试代码到目标系统的RAM中。 ④在“keyboard_test();”设置断点后,选择菜单项Debug→Go运行程序。 观察实验结果 在PC机上观察超级终端程序主窗口,可以看到如下信息: 用户可以按下试验系统的5×4键盘,在超级终端上观察结果。 2.程序设计 结合试验系统中的用户键盘硬件控制电路,编写相关的程序,包括: 键盘中断程序; 按键识别程序; 键值显示程序 【实验参考程序】 键盘控制初始化 名称:keyboard_test 功能:测试八段数码管 参数: 无 返回:无 Voed keyboard_test(void) { int i, j, k; UINT8T ucChar, t; Iic_init(); //set EINT2 interrupt handler; Pisr_eint2 =(int)keyboard_int: For( ; ; ) { f-nkeypress=0; rINTMSK = rINTMSK(~(BIT_GLOBAL|BIT_EINT2)); //使能//EINT2 中断 while(f_nKeyPress ==0); iic_read(ox70,0x1,ucChar); if(ucChar !=0) rart_printf(“press dey % d\n”,ucChar,t); } While(1); } 中断服务程序 名称: keyboard_int 功能: 键盘中断处理 参数:无 返回:无 void keyboard_int (void) { UINT8T ucChar; rINTMSK = rINTMSK | BIT_EINT2; //禁止EINT2中断 rI-ISPC=BIT_EINT2; f_nKeyPress=1; }

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档