51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言程序实现,

51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言程序实现,,第1张

定义一个按键缓冲区

用普通的按键扫描程序,当扫描到有按键按下的时候。按键键的值写入缓冲区。继续扫描直到完成。

然后返回缓冲区地址就可以得到多个按键的数据了。

这样只要定义16字节的缓冲区全部按键都能检测到。(一般不需要那么多6个足够)

还有一种方式 是 如果只返回2个按键的话。

可以这样

常规按键扫描 返回范围在0-15也就是0-F

读取到一个值后把这个值左移4位

再继续读取。当读取到第二个值的时候与上第一个值。就能获取2个按键的值了。

四个按键,定义如下:

KEY1 BIT P30

KEY2 BIT P31

KEY3 BIT P32

KEY4 BIT P33

按键处理程序:

;-----------------------------------

READ_KEY:

JB KEY1, K2

CALL DELAY

JB KEY1, K2

JNB KEY1, $

PUSH ACC

INC 75H

MOV A, 75H

CJNE A, #10, ZINT01

MOV 75H, #0

ZINT01:

POP ACC

JMP K_EXIT

;---------------

K2: JB KEY2, K3

CALL DELAY

JB KEY2, K3

JNB KEY2, $

PUSH ACC

INC 76H

MOV A, 76H

CJNE A, #10, ZINT01

MOV 76H, #0

ZINT01:

POP ACC

JMP K_EXIT

;---------------

K3: JB KEY3, K4

CALL DELAY

JB KEY3, K4

JNB KEY3, $

PUSH ACC

DEC 75H

MOV A, 75H

CJNE A, #255, ZINT03

MOV 75H, #9

ZINT03:

POP ACC

JMP K_EXIT

;---------------

K4: JB KEY4, K_EXIT

CALL DELAY

JB KEY4, K_EXIT

JNB KEY4, $

PUSH ACC

DEC 76H

MOV A, 76H

CJNE A, #255, ZINT04

MOV 76H, #9

ZINT04:

POP ACC

K_EXIT:

RET

;---------------

DELAY:

DJNZ R7, $

DJNZ R7, $

RET

;-----------------------------------

这个一般是经验值,可这样判断:连续两次击键间隔时间超过500ms,则视为单击,否则视为双击按键。去抖动时间一般使用30ms。如果按键质量不太好,时间可以加倍。可以选择几组参数

然后实践一下看看手感。

以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。

程序中使用了P10到P13作为控制灯的引脚,P32作为按键的引脚。每当按下按键时,通过判断状态值来切换不同的灯亮灭模式。定时器中断函数用来实现灯的闪烁,可根据需求自行调整闪烁频率。

编程不易,忘采纳

这个容易,判断按键按下了,这个会吧。

先定义一个变量,每当这个按键接下一次,变量加1,当变量超过最大值后,回最小值,最大值是5,超过5,就回1。

接下来就是判断,变量值分别为1,2,3,。。。时,都要执行什么程序了。这个应该会做吧,用if 语句,或用case语句。

如果不执行什么,只是显示,就更简单了,不需要判断了,直接把变量显示出来就行了。

以上就是关于51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言程序实现,全部的内容,包括:51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言程序实现,、51单片机汇编语言编程独立按键、如何用单片机判断按键单击双击等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10134703.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存