【蓝桥杯单片机备赛】4.【KEY】关于按键KEY的一些整理含长按短按及基本模板

本节包含的知识点:

  1. 按键的基本知识【源自大佬】
  2. 按键的一些模板
    1. 独立按键
    2. 矩阵按键
    3. 如何进行长按操作

按键功能选择(J5)
1-2 短接:选择 4 x 4 键盘功能
2-3 短接:选择 4 个独立按键功能
【蓝桥杯单片机备赛】4.【KEY】关于按键KEY的一些整理含长按短按及基本模板_第1张图片

独立按键基本模板

#include "reg52.h"
void KeysDelay()
{
	unsigned int t = 100;
	while(t--);
}
void KeysScan()
{
	if(S4 == 0){						//	按下
		KeysDelay();					//	延时一段时间判断是否是真的按下:松手检测
		if(S4 == 0){					//	如果是真的按下
		/*按下进行的操作*/
			while(S4 == 0);			    //	按键松开
		/*松开进行的操作*/
		}
	}
	if(S5 == 0){
		KeysDelay();
		if(S5 == 0){
			
			while(S5 == 0);

		}
	}
	if(S6 == 0){
		KeysDelay();
		if(S6 == 0){
			
			while(S6 == 0);
			
		}
	}
	if(S7 == 0){
		KeysDelay();
		if(S7 == 0){
			while(S7 == 0);
			
		}
	}
	
}

矩阵键盘基本模板

【蓝桥杯单片机备赛】4.【KEY】关于按键KEY的一些整理含长按短按及基本模板_第2张图片

sfr P4 = 0XC0;
//定义行
sbit R1 = P3 ^ 0;
sbit R2 = P3 ^ 1;
sbit R3 = P3 ^ 2;
sbit R4 = P3 ^ 3;
//定义列    
sbit C1 = P4 ^ 4;
sbit C2 = P4 ^ 5;   
sbit C3 = P3 ^ 4;
sbit C4 = P3 ^ 5;

void KeyScan()
{
    // 以扫描第一行按键情况为例
	R1 = 0;R2 = 1;R3 = 1;R4 = 1;
    C1 = 1;C2 = 1;C3 = 1;C4 = 1;
    if(C3 == 0){
        while(C3 == 0)
            // 按下矩阵键一行三列按键后的CMD
    }
}

你可能感兴趣的:(蓝桥杯单片机,单片机,C51)