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

行扫描法

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

判断键盘中有无键按下

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

判断闭合键所在的位置

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

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图

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. c语言入门经典+第5版+习题答案,C语言入门经典(第5版)

    摘要: C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础;C语言是iPhone,iPad和其他苹果设备编程中使用的Objective-C语言的基础;C语言是在很 ...

  4. c语言fac函数求n的阶乘,急求C语言编辑题:Cnm=n!/m!(n-m)!其中n,m 由键盘输入。要求设计一个函数fac(n)求某个正整数n 的阶乘。...

    急求C语言编辑题:Cnm=n!/m!(n-m)!其中n,m 由键盘输入.要求设计一个函数fac(n)求某个正整数n 的阶乘. 來源:互聯網  2010-05-29 01:44:10  評論 分類: 電 ...

  5. 超大气APP下载页双语多国语言网站源码

    介绍: 超大气APP下载页双语多国语言网站源码,自带4国语言源码,界面高端大气适合做软件下载页面! 解压下载修改下载链接,上传根目录即可使用! 网盘下载地址: http://kekewl.cc/NaX ...

  6. 嵌入式 C语言/C++ 常见笔试、面试题 难疑点汇总(经典100道)

    #pragma comment.将一个注释记录放置到对象文件或可执行文件中. #pragma pack.用来改变编译器的字节对齐方式. #pragma code_seg.它能够设置程序中的函数在obj ...

  7. c语言键盘驱动程序,c语言键盘扫描程序

    描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /*  4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...

  8. 【C语言初级阶段学习1】使用vscode运行C语言,vscode配置环境超详细过程(包括安装vscode和MinGW-W64安装及后续配置使用的详细过程,vscode用户代码片段的使用)[考研专用]

    vscode配置c语言环境 前言 一.下载vscode和MinGW-W64和安装过程 1. vscode部分 1.1 vscode下载安装过程 1.2 vscode下载插件 2. MinGW-W64部 ...

  9. 《C++新经典》第1章 C/C++语言

    <C++新经典>第1章 C/C++语言 C语言最突出特点: 效率高. 灵活性.可以直接访问物理地址(操作硬件),进行位运算. C++语言特性:封装性.继承性.多态性. Visual Stu ...

最新文章

  1. 阿里云文件存储极速型NAS产品介绍
  2. 雨滴桌面时间插件_如何设置极简桌面?学会了看电脑都赏心悦目
  3. 用 IDEA 看源码的正确姿势!你掌握了吗?
  4. ansible-playbook剧本使用配置
  5. 开源大数据周刊-2018年08月10日 第96期
  6. ArcGIS 10 许可配置
  7. python3命令行运行程序怎么关闭_python中怎样退出程序运行?
  8. 海量数据处理:BitMap
  9. java实现 XSS攻击防护
  10. mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)
  11. Java 读书笔记 (十二) Java Character 类
  12. Docker容器化部署python
  13. 正在使用的文件如何删除?
  14. TCP和UDP数据包结构
  15. 谷歌gmail注册入口_如何阻止Gmail将事件添加到Google日历
  16. Thinkphp中的 I 函数(Thinkphp3.2.3版本)
  17. 绝不要用的 Linux 命令 !
  18. android 7 评测,iQOO 7 评测:性能出众,操控全面升级的横屏旗舰
  19. android wifi热点setting
  20. STM32F4设置NVIC中断优先级分组

热门文章

  1. iOS12+Xcode 10 Error: Multiple commands producei
  2. python 迭代多个对象
  3. 创建第一个Scrapy项目
  4. HTML5拖拽API的使用实例
  5. 利用JavaScript检查用户注册信息是否正确,在以下情况不满足时报错并阻止提交表单...
  6. MySQL数据库“局部”乱码
  7. 无意间发现的java的相关资料
  8. 140303 命令行选项 ccf
  9. Asp.Net IHttpHandler介绍
  10. js将数组中一个或多个字段相同的子元素中合并