关于矩阵键盘行列扫描的测试实验.docx_第1页
关于矩阵键盘行列扫描的测试实验.docx_第2页
关于矩阵键盘行列扫描的测试实验.docx_第3页
全文预览已结束

下载本文档

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

文档简介

关于矩阵键盘行列扫描的测试实验我会时常分享一些51的程序编写方法,有一定基础的可以来看看。如有不当之处,欢迎大家指正,一同进步。矩阵键盘无非就是两种扫描方式,一为逐行扫描,二为行列一起扫描读取键值。先确定行后确定列的读取方法没有什么可讲的,我针对行列一起扫描来总结一下我常用的一些方法。学习嵌入式或者说硬件一定是从硬件原理开始,因为矩阵键盘电路原理简单,网上讲解较多,我只附上原理图,重点跟大家交流一下程序部分。下图就是矩阵键盘 由P1口控制,P10P13为列 P14P17为行。矩阵键盘电路原理图高四位输出低电平,低四位输出高电平,检测低四位不全为高可确定列;反过来高四位输出高电平,低四位输出高电平,高四位不全为高确定行,行列交叉即可获得按键键值。废话不多说,直接上程序,我已经详细注解过了,不懂多看看哈。/* 函数名 : KeyDown* 函数功能 : 检测有按键按下并读取键值* 输入 : 无* 输出 : 无* 作者 : INK* 日期地点 : NANKING*/void KeyDown(void)char a=0;GPIO_KEY=0x0f; / 位定义的引脚if(GPIO_KEY!=0x0f) /读取按键是否按下Delay10ms(); /延时10ms进行消抖if(GPIO_KEY!=0x0f) /再次检测键盘是否按下/测试列GPIO_KEY=0X0F;switch(GPIO_KEY) /此段程序只是为了确定列的值 方便在后面进行测试行的时候加减运算 获得具体案件的行列值 从而转换为按键值case(0X07): KeyValue=0;break;/扫描第一列case(0X0b): KeyValue=1;break;/按键第二列 是keyValue=1case(0X0d): KeyValue=2;break;/按键第三列case(0X0e): KeyValue=3;break;/按键第四列/测试行 确定了列以后需要翻转 确定行 交叉确定键值GPIO_KEY=0XF0; /屏蔽高四位switch(GPIO_KEY) /已经进行过case(0X70): KeyValue=KeyValue;break;/自己去看为什么是 0X70 列的时候又为什么是0X07 硬件相结合case(0Xb0): KeyValue=KeyValue+4;break; /键值是5 扫描第二行case(0Xd0): KeyValue=KeyValue+8;break; /键值是9 扫描第三行case(0Xe0): KeyValue=KeyValue+12;break; /键值13 扫描第四行 /其实最终返回的键值就是进行过加法运算的while(a50)&(GPIO_KEY!=0xf0) /检测按键松手检测 松手

温馨提示

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

评论

0/150

提交评论