单片机:独立按键---硬件介绍和软件编程

简介: 单片机:独立按键---硬件介绍和软件编程

54aa59fb1dec4561b0d94b4c034b4326.png

按动按钮,1-2 3-4导通,

延时程序:5-10ms抖动需要延时消除抖动 (软件消抖)

RC电路充放电(硬件消抖)


46058132a79e454ab7fb9b0c3483aa2c.png


34eb6ea39f0a47b59abaa5614596880d.png

ca1d51a7fbdb494783200541c28483ba.png

#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit KEY1=P3^1;//定义特殊位置按键用sbit
sbit KEY2=P3^0;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
sbit LED1=P2^0;
#define KEY1_PRESS  1//只使用一个LED来判断按键K1即可,也可多加几个LED来显示
#define KEY2_PRESS  2
#define KEY3_PRESS  3
#define KEY4_PRESS  4
#define KEY_UNPRESS 0
void delay_time(u16 time_delay)
{
    while(time_delay--);
}
u8 key_scan(u8 mode)//检验按键是否按下的函数
    //mode来选择是否是连续按下还是单次按下
{
    static u8 key=1;//定义变量key通过0/1的值来判断高/低点平
    if(mode)key=1;//1是连续按下,0是单次按下
    if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))
    {
        delay_time(1000);//消抖
        key=0;//1进入循环之后改为0跳出循环
        if(KEY1==0)
          return KEY1_PRESS;
        else if(KEY2==0)
          return KEY2_PRESS;
        else if(KEY3==0)
          return KEY3_PRESS;
        else if(KEY4==0)
          return KEY4_PRESS;
    }
    else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)
    {
        key=1;
    }
    return KEY_UNPRESS;
}
void main()
{
    u8 key=0;
    while(1)
    {
        key=key_scan(0);//0是单独按下,1是连续按下
        if(key==KEY1_PRESS)
            LED1=!LED1;//通过KEY1控制LED1
    }
}


相关文章
|
6月前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
92 1
第二章:单片机硬件结构
第二章:单片机硬件结构
102 0
|
3月前
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
259 1
|
3月前
【51单片机】在LCD1602上显示时间:包含按键进行校准时间+闹钟功能:按键设置闹钟响铃时间,以及响铃的时间长度
【51单片机】在LCD1602上显示时间:包含按键进行校准时间+闹钟功能:按键设置闹钟响铃时间,以及响铃的时间长度
|
3月前
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
100 3
|
3月前
|
C语言
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
|
6月前
|
算法 定位技术 C语言
51单片机实现俄罗斯方块游戏编程
设计了一款基于AT89C51单片机的俄罗斯方块游戏机,使用LCD12864液晶显示,按键控制方块移动与变形。游戏中,7种不同形状的方块随机下落,填满一行得分,满屏则游戏结束。包含电源、单片机最小系统、LCD和按键模块的硬件电路通过Proteus进行了仿真,展示了游戏运行、得分和计时等。代码部分展示了检查碰撞和更新地图的函数。
120 1
|
6月前
|
传感器 人工智能 物联网
单片机:编程实践与应用探索
单片机:编程实践与应用探索
67 4
|
6月前
|
存储 传感器 数据处理
单片机编程入门与实践
单片机编程入门与实践
70 2
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】