标签:单片机(2591)程序(73)C语言(456)

列线输入端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图

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

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

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

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

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

  3. java输出值_java参数传递(超经典)(强烈建议自己先写出程序的输出值)

    Java中的参数传递机制一直以来大家都争论不休,究竟是"传值"还是"传址(传引用)",争论的双方各执一词,互不相让.不但"菜鸟"们一头雾水, ...

  4. 我的Go+语言初体验——(1)超详细安装教程

    我的Go+语言初体验--(1)超详细安装教程 "我的Go+语言初体验" | 征文活动进行中- Go+ 是什么?为数据而生,实现教学.工程与数据的 "三位一体". ...

  5. C语言延时子程序准确设置

    C语言延时子程序准确设置 (51hei.com) 文章转载自:http://www.51hei.com/mcu/3745.html 推荐这个网站:http://www.51hei.com/  单片机教 ...

  6. 【排序】什么都能排的C语言qsort排序详解【超详细的宝藏级别教程】深度理解qsort排序

    [排序]什么都能排的C语言qsort排序详解[超详细的宝藏级别教程]深度理解qsort排序 作者: @小小Programmer 这是我的主页:@小小Programmer 在食用这篇博客之前,博主在这里 ...

  7. 西门子1200-1500博途追款锁机软件程序例程,经典程序编程及到期催款锁机,采用SCL语言编程子程序,内含物料运输顺序控制

    西门子1200-1500博途追款锁机软件程序例程,经典程序编程及到期催款锁机,采用SCL语言编程子程序,内含物料运输顺序控制,运料车自动装卸料控制,展厅人数控制,风机运行监控,卫生间定时冲水,冒泡排序 ...

  8. adams c语言,Adams2013编译C语言用户子程序

    1.操作系统:Windows xp 32位 2.软件版本:Adams 2013 32位.Visual Studio 2010专业版 32位 3.编译软件:Intel Visual Fortran 11 ...

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

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

最新文章

  1. Web版VS Code上线:最好用的IDE终于发布网页版,然而微软发完秒删
  2. 使用PCB Editor 制作元件封装Footprint
  3. C# 集合类(四):Hashtable
  4. 立德树人与计算机教学案例,‘我的立德树人教育案例’”
  5. SAP UI5 Web Component React应用如何在Component之间跳转
  6. VSCode使用Windows用户名而不是config中设置的User
  7. 华大单片机开发板HC32L13X上手入门
  8. RabbitMQ(七)延迟队列
  9. python ppt自动生成_实战 | Python自动生成PPT调研报告
  10. 外贸软件进出口内贸综合型管理解决方案
  11. 计算机外设:显示器是如何工作的?
  12. 朴树 vs. Lunar少女组,ET选的人你究竟爱谁?
  13. NOIP 2016 蚯蚓 题解
  14. 淘宝网店装修模板尺寸大小及格式大全
  15. mysql 表分区、按时间函数分区、删除分区、自动添加表分区
  16. Encountered an improper argument.问题解决办法
  17. 银行安全用电监管云平台
  18. 人类与计算机之间的围棋,柯洁:计算机说人类围棋全错?要尽我所有智慧终极一战...
  19. 测试一下Wengo的wengovisio
  20. ffmpeg交叉编译报错:aarch64-xxx-linux-gcc is unable to create an executable file. C compiler test failed.

热门文章

  1. 在linux上配置oracle9,ORACLE_9安装与删除( linux下)
  2. 恒位油杯故障原因_油烟机经常出现小故障,小固教你维修方法,学会之后省老钱了!...
  3. Eclipse单元测试Android编程,在Eclipse中进行Android单元测试-Fun言
  4. php 开发微信h5,微信h5页面开发遇到那些坑
  5. linux命令行下命令参数前的一横(-)和两横(--)的区别
  6. mysql文本数据_mysql操作文本数据
  7. 2022年大厂面试八股文上线!
  8. 皮一皮:这才是书法的最高境界...
  9. 少儿不宜!这个开源项目能自动画出各种尺寸的...
  10. 调查与讨论:你在调用别人接口的时候有考虑过失败情况吗?