蓝桥杯-单片机系列(二)
蓝桥杯单片机教程。
前言
本文主要介绍蓝桥杯(单片机)按键的使用。
一、按键的原理
这是按键部分的原理图,按键分为两种模式:独立按键和矩阵按键。
- 开发板使用独立按键J5的排针跳线帽连接2脚和3脚
- 开发板使用矩阵按键J5的排针跳线帽连接1脚和2
从转接板原理图中,可以看出P36,P37引脚皆在了P42,P44引脚上(如不能理解只需记住即可)。
二、按键的使用
1.按键的检测
- 独立按键模式:按键左端接地(原理图),我们只需检测右侧引脚电平即可。
- 矩阵按键模式:可以将按键一端设置为低电平,检测按键另一端的电平即可。
代码如下:独立按键的检测
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序,以后讲解
while(1)
{
if(P30==0)P00=0; //P30为需要检测的按键引脚(原理图)
}
}
2.按键消抖
按下按键不可避免地会发生抖动,我们将通过软件进行按键消抖。
代码如下:
if(P30==0)
{
Delay5ms();
if(P30==0)
{
//需要实现的功能
}
while(!P30);
}
3.矩阵按键的实现
代码如下:
//矩阵按键只需将右侧一个引脚置为低电平,检测左端四个引脚电平即可
void key_board(void)
{
unsigned char temp;
P42=1;P44=0;P3=0X7F; //0111 1111 一个引脚置高电平,其他置低电平
temp=P3;
temp=temp&0x0F; //(0111 1111)&(0000 1111)
if(temp!=0x0F)
{
Delay5ms();
temp=P3;
temp=temp&0x0F;
if(temp!=0x0f)
{
temp=P3;
switch (temp)
{
case 0X7E: ;break; //编写功能区
case 0X7D: ;break;
case 0X7B: ;break;
case 0X77: ;break;
}
}
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0F;
}
}
//检测s7,6,5,4按键,其他按键方法相同。
}
总结
本文介绍了独立按键和矩阵按键的使用方式,以及按键消抖方法。