4x3矩阵键盘扫描法c语言,四种4*4矩阵键盘的扫描方法
第一种:这种方法就是郭天祥书上教的扫描方法,很容易理解,但是程序比较长。
P2=0xfe;//给第一列送低电平
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(10); //去抖
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{ case 0xee:num=1;break;
case 0xee:num=2;break;
case 0xee:num=3;break;
case 0xee:num=4;break;
}
while(temp!=0xf0) //按键释放
{
temp=P2;
temp=temp&0xf0;
}
}
}
然后再给第二、三、四列依次送低电平检查,也就是说再重复上边的程序四次
第二种
uchar keyscan(void)
{
unsigned char cord_h,cord_l;
P2=0x0f; //行线输出全为0
cord_h=P2&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delayms(10); //去抖
if((P2&0x0f)!=0x0f)
{
cord_h=P2&0x0f; //读入列线值
P2=cord_h|0xf0; //输出当前列线值
cord_l=P2&0xf0; //读入行线值
while((P2&0xf0)!=0xf0);//等待松开并输出
return(cord_h+cord_l);//键盘最后组合码值
}
}
return(0xff); //返回该值
第三种
uchar keyscan()
{
uchar i=0,j=0,key;
P2=0xf0; // 高位拉高,低位拉低
if(((~P2)&0xf0)!=0)
{
delay(10);
if(((~P32&0xf0)!=0)
{
P2=0xfe;
while(((~P2)&0x0f)!=0) // 此语句保证只扫描四行
{
if(((~P2)&0xf0)!=0)
{
switch((~P2)&0xf0)
{
case 0x10:
j=0;break;
case 0x20:
j=1;break;
case 0x40:
j=2;break;
case 0x80:
j=3;break;
}
return(4*i+j);
}
else
{
P3=P3<<1; //循环4次
i++;
}
}
}
}
return (key) ;
}
第四种
uchar keyscan(void)
{
uchar code K_Tab[4][4] = {
0xee, 0xde, 0xbe, 0x7e, 0xed, 0xdd, 0xbd, 0x7d,
0xeb, 0xdb, 0xbb, 0x7b, 0xe7, 0xd7, 0xb7, 0x77};
uchar temp1 = 0xfe, temp2, i, j;
for(i = 0; i < 4; i++)
{ //扫描低四位
P3 = temp1; //输出一行0
temp2 = P3; //马上就读入
if((temp2 & 0xf0) != 0xf0) //如果有键按下
{
for(j = 0; j < 4; j++) //就扫描高四位
if(temp2 == K_Tab[j]) //查表
return i * 4 + j; //查到了就返回按键的数值
}
else temp1 = _crol_(temp1, 1);
}
return 16; //没有查到,返回按键松开的代码
}
4x3矩阵键盘扫描法c语言,四种4*4矩阵键盘的扫描方法相关推荐
- win10运行在哪里打开_Win10在哪里卸载软件程序?Win10四种正确卸载软件或者游戏的方法...
如今Win10系统已经是目前主流的操作系统,各个功能都十分完善了,可能熟悉Win7或者XP的朋友,刚刚开始使用Win10操作系统的一些朋友,连卸载软件程序都不知道怎么卸载,找不到地方.那么Win10在 ...
- php订单怎么生成,四种PHP生成唯一订单号的方法
这几天一直在写个人使用的用户中心,虽然期间遇到不少的问题,但还是一点点的都解决了,也从制作期间学到不少的知识,今天就说一说利用PHP生成订单单的方法. 订单号,大家都不陌生,无论从在网上购物,还是在线 ...
- python中内置的四种数值类型为_浅谈python语言四种数值类型
Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...
- C语言四种方法求最大公约数
一.实验要求 运行最大公约数的常用算法,并进行程序的调试与测试,要求程序设计风格良好,并添加异常处理模块. 二.实验方法(四种) 1.辗转相除法(欧几里德法) C语言中用于计算两个正整数a,b的最大公 ...
- 比较排序算法的时间复杂度 c语言,c语言四种排序算法时间复杂度比较(10页)-原创力文档...
1.方案设计: 我这次实验通过随机生成30000个随机数,把随机数存到数组中,用这同一组随机数据分别进行四种排序,直接插入排序.直接选择排序.冒泡排序和快速排序.还通过了调用txt文件把运算所需时间导 ...
- 四种Python爬虫常用的定位元素方法对比,你偏爱哪一款?
作者:陈熹 来源:早起Python 在使用Python本爬虫采集数据时,一个很重要的操作就是如何从请求到的网页中提取数据,而正确定位想要的数据又是第一步操作. 本文将对比几种 Python 爬虫中比较 ...
- Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 获取map的值主要有四种方法,分为两类: 调用 map.keySet() 方法来获取 key ...
- Map四种获取key和value值的方法,以及对map中的元素排序
2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另 ...
- 菜鸟学习四种制作Word自动生成目录的方法!
Word给我们办公带来了不少方便,相信大家也是非常熟悉不过了.但是你确定在Word里面所有功能你都会使用吗?相信就算经常与Word打交道的高手也不会说是.今天Word联盟就为大家介绍五种制作Word自 ...
最新文章
- 又是华为!名校的差距太扎心!清华 2020 年毕业生就业质量报告出炉
- 网页请求复制为curl,然后导入postman调用
- AAAI 2019 Oral | 把Cross Entropy梯度分布拉‘平’,就能轻松超越Focal Loss
- jquery扩张函数
- ASCII Unicode GBK UTF的联系
- RabbitMQ消息订阅与轮询
- postgresql索引
- Linux和Windows文件实时同步
- 前端面试题及答案(持续更新)
- 【深度】揭穿QQ偷窥6亿用户隐私的三大阳谋
- android底部导航栏
- 国家统计局可以获取到全国5级行政区域数据
- 17届华为杯数学建模大赛B题代码
- QtCreator 报错-1: error: [debug/myapp_res.o] Error 1
- 360网站卫士php-dos,360网站卫士的CDN缓存加速功能详解
- 第八届蓝桥杯C/C++程序设计本科B组决赛 ——瓷砖样式(填空题)【DP?我的暴力排列搜索】...
- Python生成动态二维码,运用神库:qrcode
- html链接ppt,PPT超链接的各种使用方法
- 如何使用 R 从 Internet 下载文件
- 一个软硬件牛人的学习经历---给同是换行的人以共勉
热门文章
- [转]Error: SQL BPA command line has encountered a problem and needs to close
- Eclipse最新插件的下载地址大全[收集整理] zt
- 后端开发如何设计数据库系列文章(一)设计传统系统表结构(Java开发)
- php加本地音乐代码,WordPress添加音乐播放器(纯代码实现)
- jQueryEasyUI Messager基本使用
- Kafka概念和基本架构概述
- 关于Nocas的几个问题
- Fusion Upload组件 对接 阿里云OSS/七牛/又拍
- 如果我是一线技术主管…… 1
- libc.so.6删除恢复