试验六中断控制试验.docVIP

  • 5
  • 0
  • 约3.02千字
  • 约 6页
  • 2019-08-03 发布于天津
  • 举报
实验七 2×8键盘扫描实验(I/O控制) 【实验目的】 了解W90P710的键盘的工作原理与扫描方法。 掌握I/O口扫描键盘的的寄存器的设定及程序设计方法。 【实验设备】 硬件: (1)W90P710实验系统; (2)PC机; (3)JTAG仿真器; 软件: (1)PC机操作系统(Windows 2000或Windows XP); (2)ARM Developer Suite v1.2; 【实验内容及要求】 在W90P710下编写基于中断的KPI控制程序。首先先将键盘跳线接好,并设置键盘中断及相应GPIO接口,进入中断后在控制台上打印相应键值。 【实验原理】 1.W90P710下KPI的工作原理 行列式键盘以矩阵形式排列,每个键有一常开触点,其两端分别与输出扫描线和输入状态线相连,键盘中有无键按下,是由列线扫描输出、读入行线状态来判断的。每个键都有一个键值和键号,通常有两个办法计算键值和键号,第一种方法是将行、列线按二进制顺序组合成键值,经过查表得到键号,此方法适合于4×4排列的键盘。第二种方法是经过适当的运算得出键值,此键值也是键号。 本实验系统的键盘为2×8排列,采用的是第二种办法。在线路上采用的是GPIO 50和GPIO 51输出扫描线,作为键盘的行扫描信号,键盘的列状态由GPIO 42~49输入,实验原理及接线图见图9-1。              图 7-1(a) 图7-1(b)           图9-1 2×8键盘扫描实验线路图       (图 9-1(a):GPIO口连接线路图   9-1(b):2×8键盘线路图) W90P710系统板的键盘设计为4行输出扫描,8列输入扫描的方式。其键盘的模式可以通过相应的寄存器设定(最大支持16×8)例如设定为2×8键盘,其键值的判断不需要设计者另行判断,系统提供了相应的寄存器来判断按键值,只需要读相应的寄存器就可以知道按键值。当有1个或者2个键值按下的时候,键盘的扫描顺序是ROW0 CL0-1-2-3-4-5-6-7,RW1 CL0-1-2-3-4-5-6-7 …RW16(或者RW8或者RW4) CL0-1-2-3-4-5-6-7。因此两个键同时按下的时候,只会读较小的键值。 同时W90P710支持两键中断和三键中断或复位的功能,通过设定相应的寄存器,只要检测到三个键按下,并且键值与设定的键值相对应,就会进入相应的中断或者复位。(本次实验未用) 2.W90P710下KPI程序设计 本次试验采用中断的方式进行键盘控制。首先在主程序中对KPI进行初始化,配置好相应的中断(在源程序中有详细的注释),及对应GPIO接口。本程序主要由void KPIInit(void)函数以及中断服务程序组成。 KPI初始化函数void KPIInit(void) 设定对应的GPIO接口、KPI中断及KPI寄存器的配置。 void KPIInit(void) { REG_GPIO_CFG2 |= 0x000aaaaa; //将GPIO设置为KPI模式 REG_GPIO_CFG2 = 0xfffaaaaa; REG_AIC_SCR29 = 0 //将KPI中断设置为高电平有效,优先级为5 REG_AIC_MECR = 0 REG_KPICONF = 0x00142fff; } KPI的相关特殊功能寄存器及其描述 W90P710的键盘控制寄存器如7-2图所示:              图7-2 键盘控制寄存器 键盘控制配置寄存器KPICONF: ENCODE: 编码 :0 :使能编码功能 1:编码不使能(8列输入) ODEN:防止一列同时按下两个键时出现短路现象:1:使能 0:推拉驱动 KPSEL:选择那些GPIO 引脚作为键盘矩阵 1:30-41 0: 42-51 ENKP: 键盘扫描使能 1:使能 0:不使能 KSIZE:键盘排列大小 00:4×8,3×8,2×8,1×8 01:8×8,7×8,6×8,5×8 1X:16×8,15×8,14×8,13×8,12×8,11×8,11×8,10×8,9×8 DBTIC:设定计数,用来判断键盘扫描的中断 PRESCALE:行扫描周期预引比例值 扫描时间:1.067us×PRESCALE×16ROWS ② 键盘控制三键配置寄存器KPI3KCONF与键盘控制低功耗配置寄存器KPILPCONF在本次实验中没有用到,这里不再赘述,有兴趣的同学可以查阅W90P710的键盘控制寄存器的相关资料进行配置。 ③ 键盘标志位寄存器 KPISTATUS(只读)

文档评论(0)

1亿VIP精品文档

相关文档