第一种:这种方法就是郭天祥书上教的扫描方法,很容易理解,但是程序比较长。

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矩阵键盘的扫描方法相关推荐

  1. win10运行在哪里打开_Win10在哪里卸载软件程序?Win10四种正确卸载软件或者游戏的方法...

    如今Win10系统已经是目前主流的操作系统,各个功能都十分完善了,可能熟悉Win7或者XP的朋友,刚刚开始使用Win10操作系统的一些朋友,连卸载软件程序都不知道怎么卸载,找不到地方.那么Win10在 ...

  2. php订单怎么生成,四种PHP生成唯一订单号的方法

    这几天一直在写个人使用的用户中心,虽然期间遇到不少的问题,但还是一点点的都解决了,也从制作期间学到不少的知识,今天就说一说利用PHP生成订单单的方法. 订单号,大家都不陌生,无论从在网上购物,还是在线 ...

  3. python中内置的四种数值类型为_浅谈python语言四种数值类型

    Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...

  4. C语言四种方法求最大公约数

    一.实验要求 运行最大公约数的常用算法,并进行程序的调试与测试,要求程序设计风格良好,并添加异常处理模块. 二.实验方法(四种) 1.辗转相除法(欧几里德法) C语言中用于计算两个正整数a,b的最大公 ...

  5. 比较排序算法的时间复杂度 c语言,c语言四种排序算法时间复杂度比较(10页)-原创力文档...

    1.方案设计: 我这次实验通过随机生成30000个随机数,把随机数存到数组中,用这同一组随机数据分别进行四种排序,直接插入排序.直接选择排序.冒泡排序和快速排序.还通过了调用txt文件把运算所需时间导 ...

  6. 四种Python爬虫常用的定位元素方法对比,你偏爱哪一款?

    作者:陈熹 来源:早起Python 在使用Python本爬虫采集数据时,一个很重要的操作就是如何从请求到的网页中提取数据,而正确定位想要的数据又是第一步操作. 本文将对比几种 Python 爬虫中比较 ...

  7. Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 获取map的值主要有四种方法,分为两类: 调用 map.keySet() 方法来获取 key ...

  8. Map四种获取key和value值的方法,以及对map中的元素排序

    2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另 ...

  9. 菜鸟学习四种制作Word自动生成目录的方法!

    Word给我们办公带来了不少方便,相信大家也是非常熟悉不过了.但是你确定在Word里面所有功能你都会使用吗?相信就算经常与Word打交道的高手也不会说是.今天Word联盟就为大家介绍五种制作Word自 ...

最新文章

  1. 又是华为!名校的差距太扎心!清华 2020 年毕业生就业质量报告出炉
  2. 网页请求复制为curl,然后导入postman调用
  3. AAAI 2019 Oral | 把Cross Entropy梯度分布拉‘平’,就能轻松超越Focal Loss
  4. jquery扩张函数
  5. ASCII Unicode GBK UTF的联系
  6. RabbitMQ消息订阅与轮询
  7. postgresql索引
  8. Linux和Windows文件实时同步
  9. 前端面试题及答案(持续更新)
  10. 【深度】揭穿QQ偷窥6亿用户隐私的三大阳谋
  11. android底部导航栏
  12. 国家统计局可以获取到全国5级行政区域数据
  13. 17届华为杯数学建模大赛B题代码
  14. QtCreator 报错-1: error: [debug/myapp_res.o] Error 1
  15. 360网站卫士php-dos,360网站卫士的CDN缓存加速功能详解
  16. 第八届蓝桥杯C/C++程序设计本科B组决赛 ——瓷砖样式(填空题)【DP?我的暴力排列搜索】...
  17. Python生成动态二维码,运用神库:qrcode
  18. html链接ppt,PPT超链接的各种使用方法
  19. 如何使用 R 从 Internet 下载文件
  20. 一个软硬件牛人的学习经历---给同是换行的人以共勉

热门文章

  1. [转]Error: SQL BPA command line has encountered a problem and needs to close
  2. Eclipse最新插件的下载地址大全[收集整理] zt
  3. 后端开发如何设计数据库系列文章(一)设计传统系统表结构(Java开发)
  4. php加本地音乐代码,WordPress添加音乐播放器(纯代码实现)
  5. jQueryEasyUI Messager基本使用
  6. Kafka概念和基本架构概述
  7. 关于Nocas的几个问题
  8. Fusion Upload组件 对接 阿里云OSS/七牛/又拍
  9. 如果我是一线技术主管…… 1
  10. libc.so.6删除恢复