描述

列线输入端P1.0~P1.3通过电阻接正电源,行线P1.4~P1.7所接的单片机的I/O口作为输出端。将输入端置为高电平,输出端置为低电平。这样,当按键没有按下时,所有的输入端无变化,代表无键按下。一旦有键按下,则输入线就受输出线的影响被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

行扫描法

行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。

判断键盘中有无键按下 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。

判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

/*************************C语言键盘扫描子函数************************/

uchar KeyV()

{  uchar Key,a;

P3=0x0f;                 //确定P3.0~P3.3为输入线,P3.4~P3.7为输出线。

if(P3==0x0f) return(0);      //无键按下返回0.

else

{ mling(6);               //调用延时函数,去前沿键抖

for(a=0;a<4;a++)

{ P3=_cror_(0x7f,a);   //计算键值,依次将输出线置低电平,检查输入线。

if(P30==0) break;   //P30表示p3.0口引脚。预先定义,以下类同

if(P31==0) break;

if(P32==0) break;

if(P33==0) break;

}  Key=P3;          //取得键值

for(;P3!=0x0f;P3=0x0f) ;  //等待按键释放,去后沿键抖

return(Key);            //带键值返回

}

计算后变量Key得到的键值对照:

【0 0xee】 【1 0xed】 【2 0xeb】 【3 0xe7】 【4 0xde】 【5 0xdd】 【6 0xdb】 【7 0xd7】

【8 0xbe】 【9 0xbd】 【A 0xbb】 【B 0xb7】 【C 0x7e】 【D 0x7d】 【E 0x7b】 【F 0x77】

单片机矩阵式键盘C语言扫描子函数详细N_S图

打开APP精彩内容

点击阅读全文

c语言经典程序 流程图,c语言超经典矩阵式键盘的接法,流程图和扫描程序相关推荐

  1. c语言主程序子程序流程图,c语言超经典矩阵式键盘的接法,流程图和扫描程序

    标签:单片机(2591)程序(73)C语言(456) 列线输入端P1.0~P1.3通过电阻接正电源,行线P1.4~P1.7所接的单片机的I/O口作为输出端.将输入端置为高电平,输出端置为低电平.这样, ...

  2. c语言超经典矩阵式键盘的接法,c语言超经典矩阵式键盘的接法,流程图和扫描程序...

    列线输入端P1.0~P1.3通过电阻接正电源 单片机解密,行线P1.4~P1.7所接的单片机的I/O口作为输出端.将输入端置为高电平,输出端置为低电平.这样,当按键没有按下时,所有的输入端无变化,代表 ...

  3. linux编写一个简单的端口扫描程序,小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2)...

    当前位置:我的异常网» Linux/Unix » 小弟我在linux下写了个简单的多线程端口扫描程序, 小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2) www. ...

  4. 【按键】短按,长按,按键释放,三种模式的按键扫描程序(软件消抖动)

    先来说一下这三种模式的意思: 1. 短按模式:单击按键时,返回一次有效按键值:长按时也只返回一次有效按键值.这样可以有效地排除因不小心长按带来的返回多次有效按键,进而执行多次按键处理程序. 2. 长按 ...

  5. c语言程序stm8s,经典STM8s20实用C语言编程大全

    经典STM8s20实用C语言编程大全 我学单片机开门三砖总是要砸的. 第一砖:电源系统,这没什么好说的,只是它是stm8工作的基础总 是要提一下 第二砖:时钟系统,这等下再说. 第三砖:复位系统,st ...

  6. c语言if怎么结束_07if与循环案例超经典C语言

    本讲将通过几个经典例子来讲解选择与循环嵌套. 选择与选择嵌套 if 与 if嵌套 判断变量a是否在3~10之间. int a = 4;if (a > 3) { if (a 10) { print ...

  7. c语言编写数据存储的游戏,c语言经典小程序和c语言编写的小游戏带注释(自动保存的).doc...

    c语言经典小程序和c语言编写的小游戏带注释(自动保存的) 1.写一个定时?关机的小程?序,可以立即关?闭计算机,也可以一段?时间后关闭?计算机. #inclu?de #inclu?de #inclu? ...

  8. 07-if与循环-案例超经典-C语言

    本讲将通过几个经典例子来讲解选择与循环嵌套. 选择与选择嵌套 if 与 if嵌套 判断变量a是否在3~10之间. int a = 4;if (a > 3) {if (a < 10) {pr ...

  9. c语言简单收银系统程序编码,我有个C语言编写的超市收银系统,请高手修改下,帮做流程图,可追加分...

    我有个C语言编写的超市收银系统,请高手修改下,帮做流程图,可追加分0 #includestruct goods{ char no[8];3char name[20];  float price;  i ...

最新文章

  1. S2JH经验分享:控制jdbc:initialize-database与其他bean加载顺序
  2. R语言attach函数、detach函数(全局注册或者全局解除)实战
  3. ubuntu下修改文件权限
  4. MySQL 数据库慢查询日志分析脚本
  5. 第一次上计算机课日记500,第一次上网课作文500字
  6. 利用树求解算术表达式的值
  7. 微信小程序_(表单组件)button组件的使用
  8. POJ 1002 解题分析
  9. 广成 USBCAN-II Pro V502 linux下升级经验
  10. TortoiseSVN--Subversion客户端使用详解及问题解决
  11. 分治法经典问题-逆序对个数
  12. 虚拟化--062 vsphere workstation bios启动
  13. python逻辑型数据也叫什么_python基础(三)python数据类型
  14. 《Adobe Premiere Pro CC经典教程》——6.2 节目监视器控件
  15. 身份证归属地查询接口
  16. Photoshop学习之旅--通道抠图
  17. 什么是反射(Reflection)?它能做什么?
  18. [转]94个比付费软件更好的免费软件
  19. 解读国内外园艺机器人的应用现状
  20. 115道Java面试题及答案分享,java程序员赶紧收好

热门文章

  1. mybatis plus分页插件
  2. 准备机试时候不懂的问题
  3. 前有阿里苏宁,后有拼多多国美
  4. 计算工资及所得税java_根据最新税法的相关规定,个人所得税工资、薪金的计算适用( )...
  5. Day228229.上传查询医院接口、上传查询删除科室接口、上传查询删除排班接口 -尚医通
  6. Python Turtle绘图[难度2星]:多边形螺旋线(颜色交叉/颜色分层)
  7. Canvas 旋转风车绘制
  8. easyexcel导入时读不到数据_java编程中通过easypoi导入excel文件并验证导入数据
  9. 一个简单的支付系统设计
  10. 解决adb devices出现no permission的问题(转)