这是单片机4X4的键盘识别程序,请帮我解释,最好每句执行 *** 作和原理都有,特别是case 0X0e; key=7的原因

这是单片机4X4的键盘识别程序,请帮我解释,最好每句执行 *** 作和原理都有,特别是case 0X0e; key=7的原因,第1张

temp等于0x0e时,键值key等于7 :这个键值是你自己定义的,就是起一个悉燃伍标志位的作用,然后用程序判断键值,当键值等段慧于7时,该进行什么动作,这就相当于当你那个按键按下时执行什么动作

写单片机C程序 一定要活用标志位

还有你好像都大四了,怎么这样普通的矩阵键盘程序还看不懂,该好好学习呀 兄弟

I和J 只是一个变量用来决定延时时间的长短 延时是为了消除按键的抖睁或动

毕竟机械按键存在抖动(按下去并不是电平直接就跳变并稳定下来了)

延时是软件消抖 增强系统的稳定性

void main(void)

{

while(1)

{

if(P3_7==0)//判断是否有按下,为0则按下

{

delay10ms()//延时10MS,去抖动

if(P3_7==0)//再次判宏咐断,如果还为0则真的按下了。

{

count++//每按下一次就加1

if(count==16)//加到16返回0

{

count=0

}

P1=~count//P1口把按下的次数输出,如第一次就是11111110,第二次就厅绝芹扮毕是11111101:十六进制转成IO口的二进制

while(P3_7==0)//直到按键放开才判断下一次按键

}

}

}

P3=0xfe

//P3=0b1111

1110,令P3.0=0,同时令高四位为高电平,作好读端口准备(51IO特点)

temp=P3

//读回P3口的状态

temp=temp&0xf0

//temp&1111

0000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高四位对应的端口状态读进来。

while(temp!=0xf0)

//上步处理后哪侍信,高四为不全为1,说明有按键按下(结合矩阵键盘的电路结构才能理解,这里不方便上图)

{

delay(5)

temp=P3

temp=temp&0xf0//这三句跟上面重复,功能是软件消抖谈磨

while(temp!=0xf0)

//延时一段时间后判断还有按键按下,李轮说明是真有按键按下,进入按键扫描与键值的判断,否则可能是意外抖动引起的,就不进行按键扫描。

{

temp=P3

switch(temp).....

我想注释完应该能读懂,关键是要理解矩阵键盘的扫描原理。


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

原文地址:https://54852.com/yw/12487766.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存