单片机行列式键盘扫描原理?

单片机行列式键盘扫描原理?,第1张

单片机行列式键盘扫描原理如下:

1、行线P10~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P10~P13)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。

2、延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。

3、单片机将P10输出为低电平,其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平,其它P10、P12、P13仍为高电平。

4、此时再来读取列线数据,发现列线读到的数据有低电平,数值为1011(0x0B),如果我们的键盘布局已经确定,那么0x0B就代表S5的值了。转到S5键功能处理子程序就可以达到目的。

扩展资料

单片机学习方法

1、基础理论知识学习

基础理论知识包括模拟电路、数字电路和C语言知识。。在学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。

2、单片机实践

准备一台电脑、一块单片机开发板、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板来运行单片机程序,验证实际效果。

2*3的键盘,太简单了,不值得用循环,特别是双重循环。

最简明、高效的程序如下:

sbit P10 = P1^0

sbit P11 = P1^1

sbit P12 = P1^2

sbit P13 = P1^3

sbit P14 = P1^4

char scan_key(void)

{

P13 = 0

if (!P10) return 0

if (!P11) return 1

if (!P12) return 2

P13 = 1

P14 = 0

if (!P10) return 3

if (!P11) return 4

if (!P12) return 5

}

本程序,使用的变量最少,也不涉及其它接口。

代码最少,执行效率最高。

1.设置一个状态变量,如flag,定义flag=0为开状态,flag=1为关状态。

2.因为是按键(不是开关),所以实际上单片机读取的应该是脉冲形式的输入。设按键接单片机P01引脚,故可采用以下程序实现按键扫描

if(P01==0)//按下按键,进入下降沿

{

delay2()//20ms延时去按键前抖动

while(P01==0)//等待上升沿到

来,即按键d起

flag=~flag//flag取反,实现状态切换

}

void

delay2()//20ms延时子程序

{

unsigned

char

i,k

for(i=0i<100i++)

for(k=0k<100k++)

}

注:根据按键的具体接法,若按下按键向单片机输入低电平,则采用以上程序;若按下按键向单片机输入高电平,则将两处P01==0均改为P01==1。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7745152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存