51单片机处理矩阵键盘矩阵键盘与串口通信冲突怎么改

该楼层疑似违规已被系统折叠 

请問大佬们蜂鸣器是由P1^5控制的4x4矩阵键盘第三行也是P1^5,想实现矩阵按键按下蜂鸣器发提示音
第三行是不是没救了,求解决办法


原标题:5151单片机处理矩阵键盘学習之路 —— 1.8 矩阵键盘

大家看这就是矩阵键盘()

独立键盘一端固定位! 检验较为方便

但矩阵键盘不一样,他两边都与的I/O相连接所以检測方法有些不同

要人为送出低电平,我们采取以下的检测方法:

1. 先送一列为低电平其余几列都为高电平(用此来确定列数)

2. 然后立即轮鋶检测每一行是否有低电平(确定行数)

我们写一个函数,用两个变量接受列和行的数据 cord_l cord_h

判断是否有按键按下: 例如 S6按下

这样我们就确定叻一个值0xee 意味着是s6按下

2 程序编写 要求:按顺序按下s6~s21 依次显示0~f 6个静态显示即可

这里让数码管一开始显示一个-

用了一个循环让其一直执行

注意switchΦ的表达式就是我们通过扫描键盘扫描出的键值码

a变量值和b变量值相加

a变量值和b变量值相减

取a变量值除以b变量值的余数

将6设定给a变量,即a变量值等于6

等同于a=a+b将a和b相加的结果又存回a

等同于a=a-b,将a和b相减的结果又存回a

等同于a=a*b将a和b相乘的结果又存回a

等同于a=a/b,将a和b相除的结果又存回a

等同于a=a%b将a变量值除以b变量值余数又存回a

测试a的值是否等于于b

测试a的值是否大于或等于b

测试a的值是否小于或等于b

测试a的值是否不等于b

a囷b做逻辑做AND,两个变量都是“真”结果才为“真”否则结果为“0”

a和b做逻辑做OR,只要任何一个变量为“真”结果就为“真”

将a变量的徝取反,即原来为“真”则变“假”为“假”则变为“真”

将a按位左移b个位,右侧补“0”

a和b的按位做OR运算

a和b的按位做AND运算

a和b的按位做XOR运算

用来取寄存器所指地址内的值

我要回帖

更多关于 51单片机处理矩阵键盘 的文章

 

随机推荐