51单片机的自学之路(5)——独立按键和矩阵按键实验

本文介绍了51单片机独立按键和矩阵按键的实验,包括消抖原理、软件消抖方法及其实现。独立按键通过检测IO口低电平判断按键状态,矩阵键盘使用行列扫描或线翻转法检测按键位置。实验中强调了消抖处理和程序编写注意事项。
独立按键实验

做按键的实验,首先需要知道的,就是关于按键的消抖。
一般的情况下,消抖分为两种:硬件和软件消抖。下面做实验用的是软件消抖。

软件消抖的方式:先读取按键的状态,如果在得到按键按下的讯息之后,进行延迟处理。之后在读取按键的状态,如果这时候按键还是处于按下的状态,那么说明按键已经被按下了。其中的延时程序,就是软件消抖处理。

常用的软件消抖方法:
1,先设置IO口输出为高电平,基本上因为单片机IO口有上拉电阻的缘故,所以默认IO口为高电平了。
2,读取按键IO口的输出电平状态确认是否按下:如果有IO口为低电平,那么就进行延时消毒处理。
3,再对这个IO口的电平状态进行确认,如果仍然为低电平状态,那么此时确定了IO口被按下。
4,执行相应的按键程序。
5,检测按键是否松开:while(!按键的借口值)。

独立按键的检测原理如下:

独立按键电路构成是由各个按键的一个管脚连接在一起接地,按键其他引脚 分别接到单片机 IO 口(这个按键,他的一个引脚接地,另一个引脚接在IO口上,负责输入)。开始时先给该 IO 口赋一高电平,然后让单片机不断地检测该 I/O 口是否变为 低电平,当按键闭合时,即相当于该 I/O 口通过按键与地相连,变成低电平, 程序一旦检测到 I/O 口变为低电平则说明按键被按下,然后执行相应的指令

实验程序如下:

#include "reg52.h"
#include<intrins.h>
sbit  k1=P0^0;
sbit led=P1^0;
void delay10ms(void)   //误差 10ms
{
   
   
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
void keypros()   // 键盘扫描函数
{
   
   
	if
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值