轻松学51单片机--基于普中科技开发板练习蓝桥杯及机器人大赛等(2--按键驱动)

按键(独立按键与矩阵键盘)

单片机按键是一种常用的输入设备,用于检测用户的按键操作。在51单片机中,按键通常通过一个外部电路连接到特定的IO口上,通过读取相应IO口的电平状态来判断按键是否按下。

电路图(根据普中A2电路图绘制)

在这里插入图片描述

按键消抖

为了避免按键抖动带来的误触发,我们还可以在软件中添加一些延时和滤波处理。比如,在检测到按键按下时,可以在一定的延时后再次读取IO口的电平状态,如果仍然为低电平则确认按键按下,否则忽略。
下面是独立按键的驱动代码Key.c

#include "Delay.h"
unsigned char Key()
{
	unsigned char KeyNumber=0;
	
	if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;}
	if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;}
	if(P3_2==0){Delay(20);while(P3_2==0);Delay(20);KeyNumber=3;}
	if(P3_3==0){Delay(20);while(P3_3==0);Delay(20);KeyNumber=4;}
	
	return KeyNumber;
}

Key.H

#ifndef __KEY_H__
#define __KEY_H__
unsigned char Key();
#endif

不过这种使用Delay函数的消抖尽量不要用。太占用CPU资源了,因为有40毫秒的时间CPU不做事情。下面推荐另一种处理方式Key.c

unsigned char Key()
{
	unsigned char KeyNumber=0;
	if(P3_1==0) KeyNumber=1;
	if(P3_0==0) KeyNumber=2;
	if(P3_2==0) KeyNumber=3;
	if(P3_3==0) KeyNumber=4;
	return KeyNumber;
}

驱动里面不做消抖,在按键处理函数里面做。同理矩阵键盘的驱动也类似,在后面放
本案例完成的功能就是按按键1,第1个灯亮,按按键2,第2个等亮。按按键3,第3个灯亮,按按键4,第4个灯亮。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值