实验4 4×4键盘实验_第1页
实验4 4×4键盘实验_第2页
实验4 4×4键盘实验_第3页
实验4 4×4键盘实验_第4页
实验4 4×4键盘实验_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验目的实验目的u通过实验掌握行列式键盘工作原理及按键识别过通过实验掌握行列式键盘工作原理及按键识别过程。程。u掌握掌握S3C2440处理器系统下行列式键盘识别程序处理器系统下行列式键盘识别程序的设计思想及实现方法。的设计思想及实现方法。实验内容实验内容一、验证实验一、验证实验 输入并调试实验教程提供的参考程序,实现当按下实验输入并调试实验教程提供的参考程序,实现当按下实验箱小键盘时,在所有数码管上显示按键值。箱小键盘时,在所有数码管上显示按键值。二、设计实验二、设计实验 分别在小键盘键入自己学号后分别在小键盘键入自己学号后6位数字并在位数字并在6位数码管上位数码管上顺序显示。顺序显示。行列式

2、键盘结构及工作原理行列式键盘结构及工作原理 行列式键盘电路通常采用的按键识别方法有行列扫描行列式键盘电路通常采用的按键识别方法有行列扫描法和反转法。法和反转法。u 行列反转法行列反转法 (略略)u 行列扫描法行列扫描法 主要实现过程主要实现过程: (1)输出)输出 (写操作写操作) 仅有一列为仅有一列为0的列数据,的列数据, (2)输入)输入 (读操作读操作) 全部行数据,并判断全部行数据,并判断4位行值是否全为位行值是否全为1。 (3)如果)如果4位行值全为位行值全为1,则无键按下。,则无键按下。 继续扫描:变换下一列为继续扫描:变换下一列为0,转移到,转移到 ( 1 ) 。 (4)如果)如

3、果4位行值不全为位行值不全为1,则有键按下。,则有键按下。实验程序流程框图实验程序流程框图熄灭所有数码管熄灭所有数码管运用行扫描法发现按键并获得其扫描码运用行扫描法发现按键并获得其扫描码将扫描码转换为按键值显示码码表地址将扫描码转换为按键值显示码码表地址获取按键显示码并输出到数码管显示获取按键显示码并输出到数码管显示ldr r0,= 0 x20006000ldr r1, =0 xffstr r1, r0ldr r0,=0 x20007000ldr r1,=0 x0str r1,r0用行扫描法发现按键并获得其扫描码用行扫描法发现按键并获得其扫描码流程流程输出仅有一列为输出仅有一列为0的的4位列数

4、据位列数据4位行数据全为位行数据全为1?有键按下有键按下输入输入 (读操作读操作) 全部全部4位行数据位行数据变换下一列为变换下一列为0防抖动延迟防抖动延迟+5VS00S01S02S10S20S30S03S13S23S33输出输出列数据列数据读入读入行数据行数据例例: 当当S02键按下时键按下时, 输出列数据为输出列数据为: 1011; 读入行数据为读入行数据为: 1110; 由由4位列和位列和4位位行数据组合成行数据组合成8位位的扫描的扫描码。码。3列列2列列1列列0列列3行行2行行1行行0行行输出输出 (写操作写操作) 所有列为所有列为0的的4位列数据位列数据4位行数据全为位行数据全为1?

5、输入输入 (读操作读操作) 全部全部4位行数据位行数据判断是否有键按下判断是否有键按下NYYNS32S31延时延时520mS无无键键按按下下行列式键盘行扫描法按键识别参考程序行列式键盘行扫描法按键识别参考程序LOOP0ldr r3,=0 x1; r3内最低位的内最低位的1不断左移,标示扫描的列不断左移,标示扫描的列LOOP1cmp r3,#0 x10; 当当1移位到移位到D4位时表明所有位时表明所有4列已全部扫描完列已全部扫描完beq LOOP0; 如果全部扫描完,则重新扫描如果全部扫描完,则重新扫描ldr r2,=0 x0ff; bic r2,r2,r3; 根据根据r3内内1的位置清零的位置

6、清零r2内对应位,保持内对应位,保持r2低低4位内仅位内仅1位为位为0ldr r0,=0 x2000c000 ; 设置列数据锁存器设置列数据锁存器74HC273选通信号地址选通信号地址str r2,r0; 将仅含将仅含1位为位为0的列数据输出到键盘所有列的列数据输出到键盘所有列bl Delay; 延迟,防抖动延迟,防抖动ldr r0,=0 x2000c000 ; 设置行数据驱动器设置行数据驱动器74LVCH244选通信号地址选通信号地址ldr r1,r0 ; 读取键盘读取键盘4位行数据赋予位行数据赋予r1and r1,r1,#0 x0f; 只保留读取数据的低只保留读取数据的低4位,高位清位,高

7、位清0cmp r1,#0 x0f; 判断判断r1内的低内的低4位行数据是否有为位行数据是否有为0的位(是否有健按下)的位(是否有健按下)bne LOOP2; 如果不相等则说明有为如果不相等则说明有为0的位(有按键按下),跳转到的位(有按键按下),跳转到LOOP2mov r3,r3,lsl #1; 如果相等则说明没有按键按下,如果相等则说明没有按键按下,r3左移一位,扫描下一列左移一位,扫描下一列b LOOP1; 继续扫描继续扫描LOOP2bl Delay; 延时延时mov r4,r1; 将将r1的值赋给的值赋给r4and r3,r3,#0 x0f; 列扫描码列扫描码and r4,r4,#0 x

8、0f; 行扫描码行扫描码实验箱实验箱4 44 4行列式小键盘行列式小键盘0 0F F值定义值定义 针对实验箱内的针对实验箱内的4 4行列式小键盘,编写行列扫描方行列式小键盘,编写行列扫描方式的按键识别程序,并将获得的按键扫描码转换为对应的十式的按键识别程序,并将获得的按键扫描码转换为对应的十六进制值显示在六进制值显示在8段数码管上。显示字符的对应关系如下。段数码管上。显示字符的对应关系如下。按键按键显示显示按键按键显示显示按键按键显示显示按键按键显示显示112233C445566D778899CELE00.ADELBENTF实验箱小键盘键值安排及显示码表建立实验箱小键盘键值安排及显示码表建立A

9、REA RamData, DATA, READWRITEseg7table DCB 0 x8e,0 x83,0 x88,0 xc0,0 x86,0 x90,0 x80,0 xf8,0 xa1,0 x82,0 x92,0 x99,0 xc6,0 xb0,0 xa4,0 xf9; F, B, A, 0, E, 9, 8, 7, D, 6, 5, 4, C, 3, 2, 1END123C456D789E0ABF3行行2行行1行行0行行3列列 2列列 1列列 0列列0 x8e0 x830 xc00 x860 xf80 xc60 xf9seg7tableFBA0E9 8 7C3210行行1行行0列列1列

10、列2列列3列列按键显示码地址按键显示码地址=seg7table + (行号行号4 + 列号列号)例:例:8键显示码地址键显示码地址=seg7table +4+2实验箱小键盘实验箱小键盘0列列1列列2列列3列列3行行将按键扫描码转换为将按键扫描码转换为8 8段显示码码表地址段显示码码表地址mov r2,#0 x0; r2清零清零, r2用于加用于加1计数至行号计数至行号mov r1,#1LOOP3mov r0,#0 x0fbic r0,r0,r1;以以r1内为内为1的位将的位将r0内对应位清内对应位清0cmp r0,r4;比较比较r0与与r4的值的值beq LOOP4;如果相等则跳转到如果相等则

11、跳转到LOOP4mov r1,r1,lsl #1;r0左移一位左移一位add r2,r2,#1;r2加加1b LOOP3LOOP4mov r4,r2;保存行号保存行号 mov r2,#0 x0;r2清零清零, r2用于加用于加1计数至列号计数至列号LOOP5mov r0,#0 x1mov r0,r0,lsl r2;r0左移左移r2位位cmp r0,r3;r0与与r3比较比较beq LOOP6;相等则跳转到相等则跳转到LOOP6add r2,r2,#1;r2加加1b LOOP5LOOP6 ldr r0,=seg7table;取取seg7table的地址的地址 mov r4,r4,lsl #2;

12、行号行号 4add r4,r4,r2;r4保存偏移地址保存偏移地址add r0,r0,r4;取键值的地址取键值的地址将将r4内的行数据内的行数据转换为行序号。转换为行序号。例例: 行数据行数据1011对应对应的行号为的行号为2将将r3内的列数据内的列数据转换为列序号。转换为列序号。按键显示码地址按键显示码地址 =seg7table + (行号行号4 + 列号列号)键盘行键盘行/ /列数据输入列数据输入/ /输出端口地址输出端口地址u列数据驱动采用了列数据驱动采用了8D锁存器锁存器74HC274,当,当CLK引脚信号有效时引脚信号有效时输入端数据将选通到输出端并保持到下一次输入端数据将选通到输出

13、端并保持到下一次CLK有效。有效。 u 产生产生8D锁存器锁存器74HC274选通并向键盘输出列数据的操作是向端选通并向键盘输出列数据的操作是向端口地址口地址0 x2000c000输出列数据。输出列数据。u 行数据驱动采用了行数据驱动采用了8位数据驱动器位数据驱动器74LVCH244,当,当G引脚信号引脚信号有效时输出端由高阻态变为开通态,输入端数据出现在输出端。有效时输出端由高阻态变为开通态,输入端数据出现在输出端。u产生产生8位数据驱动器位数据驱动器74LVCH244选通并从键盘输入行数据的操选通并从键盘输入行数据的操作是从端口地址作是从端口地址0 x2000c000读入行数据。读入行数据

14、。 行列式键盘结构及工作原理行列式键盘结构及工作原理+5VS00S01S02S10S20S30S03S13S23S33D0 Q0D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6D7 Q7CLKY0 D0Y1 D1Y2 D2Y3 D3Y4 D4Y5 D5Y6 D6Y7 D7G8D锁存器锁存器74HC2378位驱动器位驱动器74VCH244处理器数据总线处理器数据总线CS1CS2注注: CS1 = 0 x2000c000+0 x2000c000+写操作控制信号写操作控制信号WEWE,为为8D锁存器锁存器74273选通信号,选通信号, CS2 = 0 x2000c000+0 x2000c

15、000+读操作控制信号读操作控制信号RDRD,为为8位驱动器位驱动器74244选通信号。选通信号。01110111ldr r3,=0 x01ldr r2,=0 x0ffbic r2,r2,r3ldr r0,=0 x2000c000str r2,r0ldr r0,=0 x2000c000ldr r1,r0and r1,r1,#0 x0f cmp r1,#0 x0f向键盘列线输出向键盘列线输出(写写)仅有一列为仅有一列为0的数据。的数据。读读(输入输入)键盘行线数据键盘行线数据并判断是否有为并判断是否有为0的列。的列。8D锁存器锁存器74xx273结构及工作原理结构及工作原理CLKDQDQCLKD

16、0D7Q0Q7CLRCLR8 8位锁存器位锁存器74LVCH27374LVCH273功能表功能表u 锁存器就是带三态输出的锁存器就是带三态输出的D D触发器,通常以触发器,通常以8 8个个D D触发器为一个封装。触发器为一个封装。u 74LVCH27374LVCH273就是一个典型的就是一个典型的8D8D锁存器。锁存器。u 当当MRMR为高电平时,为高电平时,CPCP脉冲上升沿将使得输出脉冲上升沿将使得输出QiQi等于其输入等于其输入DiDi。u 若若CPCP脉冲无上升沿,则脉冲无上升沿,则DiDi的变化不会影响的变化不会影响QiQi的状态,这种现象称为锁存。的状态,这种现象称为锁存。CLRC

17、LRC CLKLK 操操 作作 1 Qi = Di 1其它其它Qi =不变不变 0 XQi =高高阻态阻态CLKCLKVccVcc Q7Q7 D7D7 D6D6 Q6Q6 Q5Q5 D5D5 D4D4 Q4Q4 CLKCLKCLRCLR Q0Q0 D0D0 D1D1 Q1Q1 Q2Q2 D2D2 D3D3 Q3Q3 GNDGND74LVCH27374LVCH27324位三态驱动器位三态驱动器74xx24474xx244内部逻辑结构内部逻辑结构 引脚功能引脚功能实验程序流程框图实验程序流程框图 建立异常向量表建立异常向量表 程序从程序从0X0开始开始 预存存储器参数预存存储器参数 关闭看门狗定时器关闭看门狗定时器 关闭所有中断关闭所有中断 设置系统时钟设置系统时钟将存储器参数写入处将存储器参数写入处理器特殊功能寄存器理器特殊功能寄存器区内的存储器参数区区内的存储器参数区获取显示码表起始地址获取显示码表起始地址向数码管输出显示码向数码管输出显示码选通选通6个数码管位选择个数码管位选择

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论