AVR32单片机 矩阵按键 按键键值函数解析
矩阵按键电路图
函数名:key_scan
功能:读行线列线电平,根据按键键值定位
返回值:按键代表的十六进制数字
uchar是定义了unsigned char类型
key_scan函数
uchar key_scan(){//定义几个变量uchar key;uchar i=0x7f;uchar j;delay(10);//消抖if(key_press()){
重点这个do…while
do{i=(i<<1|i>>7);//左移1位|右移7位 每一次只输出一个低电平1111 1110
1.一开始定义i等于0x7f,为了先让P0输出为低电平。
2.当按键按下M1,M5,M9,M13,高四位(P7P6P5P4)其中有一位会因为按键导通拉低电平,输出低电平。
3.j不等于0xf0,退出do…while循环,数码管输出0,1,2,3
4.若按下不是P0对应的按键,.j等于0xf0,继续do…while循环
5.i的值会依次输出1111 1101(对应M2,M6,M10,M14),1111 1011(对应M3,M7,M11,M15),1111 0111(对应M4,M8,M12,M16),循环到按键对应i值,则退出循环,数码管输出数值
PORTD=i;//给D口1111 1110 0XFE,DDRD=0X0F;//高4位输入,低4位输出 key=PIND;//D 口给keyj=key&0xF0;//读取状态 找到是哪个KEY按下了}while(j==0xf0);while(key_press());//等待哪个按键松开
按键代表的十六进制数字
switch(key)//有16种情况{case 0xEE://1110 1110 说明第一个按下key=0x00;//显示 一个0break;case 0xDE:key=0x01;break;case 0xBE:key=0x02;break;case 0x7E:key=0x03;break;case 0xED:key=0x04;break;case 0xDD:key=0x05;break;case 0xBD:key=0x06;break;case 0x7D:key=0x07;break;case 0xEB:key=0x08;break;case 0xDB:key=0x09;break;case 0xBB:key=0x0A;break;case 0x7B:key=0x0B;break;case 0xE7:key=0x0C;break;case 0xD7:key=0x0D;break;case 0xB7:key=0x0E;break;case 0x77:key=0x0F;break;default:key=16;}
}
else
{key=16;
}
return key;
}
AVR32单片机 矩阵按键 按键键值函数解析相关推荐
- 20150218【改进信号量】IMX257实现GPIO-IRQ中断按键获取键值驱动程序
[改进信号量]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 前面我们使用POLL查询方式来实现GPIO-IRQ按键中断程序 这里我们来使用信号量,让我们的驱动 ...
- 20150218【改进Poll定时查询】IMX257实现GPIO-IRQ中断按键获取键值驱动程序
[改进Poll定时查询]IMX257实现GPIO-IRQ中断按键获取键值驱动程序 2015-02-18 李海沿 按键驱动程序中,如果不使用read函数中使程序休眠的,而是还是使用查询方式的话,可以使用 ...
- 如何获取自己键盘上按键的键值(KeyCode)
文章目录 通过C语言获取部分按键键值 获取字母按键键值 获取方向键键值 键码值汇总 字母和数字的键值 数字键盘上按键的键值 功能键的键值 控制键键值 多媒体按键键值 通过C语言获取部分按键键值 这里提 ...
- HarmonyOS/OpenHarmony按键设备键值
按键设备键值. 作者:坚果整理,欢迎大家加入坚果组织一起学习HarmonyOS/OpenHarmony应用开发 导入模块 import {KeyCode} from '@ohos.multimodal ...
- boost::spirit模块实现将由某个分隔符分隔的任意键/值对解析为 std::map的测试程序
boost::spirit模块实现将由某个分隔符分隔的任意键/值对解析为 std::map的测试程序 实现功能 C++实现代码 实现功能 boost::spirit模块实现将由某个分隔符分隔的任意键/ ...
- boost::spirit模块实现将由某个分隔符分隔的任意键/值对解析为 std::vector的测试程序
boost::spirit模块实现将由某个分隔符分隔的任意键/值对解析为 std::vector的测试程序 实现功能 C++实现代码 实现功能 boost::spirit模块实现将由某个分隔符分隔的任 ...
- python中字典按键或键值排序
字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排 ...
- python中字典按键或键值排序_[宜配屋]听图阁
字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排 ...
- 键盘按键VK键值列表及宏定义
VK键值列表及宏定义 /* * Virtual Keys, Standard Set */ #define VK_LBUTTON 0x01 #define VK_RBUTTON ...
最新文章
- java-方法。(新手)
- CCpp.CallGraph
- linux查找文件find
- 关于MyEclipse项目的名字的修改对项目导入导出的影响
- 面象对象设计6大原则之五:依赖倒置原则
- 简单调试 Python 程序
- win10如何远程连接BCC云服务器?
- 使用DocFx生成文档网站并将其发布到GitHub Pages
- UNIX网络编程——常用服务器模型总结
- MongoDB简单CRUD场景
- 参观移动公司机房感想
- PS2021最新下载Photoshop2021最新中文下载安装PS下载安装
- 2021微信大数据挑战赛总结(微信视频号推荐)
- win10浏览器账户退出
- 网站pc端和手机端视频的处理
- IoT DDoS警报系统是如何帮助我们预测网络攻击的?
- windows系统服务器巡检仪哪个工具,机械振动巡检仪功能概述
- 如何访问局域网内宿主机上的虚机服务
- 机器学习:李航-统计学习方法-代码实现
- Linux中防火墙firewalld