51单片机 独立按键与矩阵键盘
51单片机 独立按键与矩阵键盘独立按键
独立按键位于普中开发版的右下角,有四个按键,为什么说他是独立按键呢?看原理图
每一个按键都有单门一个IO口(引脚),所以就叫他独立按键
接下来就是写代码判断按键是否被按下了~
从图中可以看到按钮K1的引脚为P31,所以我们只需要判断P31是否为0
if (P3_1 == 0)
然后总要表现点啥吧!,就把led点亮把!
#include <8052.h>
void main() {
P2_0 = 0;
while(1) {
if (P3_1 == 0) {
P2_0 = 0;
}
else {
P2_0 = 1;
}
}
}
看效果:
按下的时候亮,松开的时候灭
这里有一个很重要的点
按钮他在按下的一瞬间回回弹几次,大概是20ms,所以在这按下去一瞬间后的20ms是不准确的,我们需要把这20ms过滤掉
接下来就是按下点亮,再按下熄灭!
#include <8052.h>
void Sleep(unsigned int xms)
{
unsigned char i, j;
while (xms)
{
i = 2;
j = 199;
do {
while (--j);
} while(--i);
xms--;
}
// _nop_();
}
void main() {
P2_0 = 0;
while(1) {
if (P3_1 == 0) {
Sleep(30);
while (P3_1==0);
Sleep(30);
if (P2_0 == 1) {
P2_0 = 0;
}
else {
P2_0 = 1;
}
}
}
}
也就是这个玩意
矩阵键盘
遇事不要慌,先看原理图
由图可知,图中8个引脚控制16个按键,怎么实现监听一个按键呢?
有两种方法:纵向遍历和横向遍历
由于横向遍历可能受到舵机的干扰,在这里暂且不提
比如我们要判断S1是否被按下,与S1相关联的引脚有P17和P13
先给P17一个0,然后检测P13是否为0(因为两个都为0就是接通了)
#include <8052.h>
void main() {
P1_3 = 0;
while (1) {
if (P1_7 == 0) {
P2_0 = 0;
}
}
}
想要遍历所有的就留给你们了😋
最后,如果有错误欢迎大佬们指出!
也可以在我的博客看哦~https://cxwindlight.online/ 支持,学习! Python_tkinter 发表于 2023-1-18 08:21
我爱51
{:5_109:} 谢谢分享,学习
楼主学习速度好快 Python_tkinter 发表于 2023-1-18 09:15
草,哥们这我小号
{:5_101:}
页:
[1]