51学习之键盘应用(独立键盘)

技术 · 2018-12-07 · 517 人浏览

1、键盘的分类

键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.

而靠软件编程来识别的称为非编码键盘;

在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。


按键的主要原理是,在一条电路中,有一处弹性按键,当按下后电路导通,松手后电路断开,通过检测电路的信号来判断按键是否按下。

按键在按下和松开的瞬间均伴随有一连串的抖动,键抖动会引起一次按键被误读多次,然后为了保证单片机对键的一次闭合仅作一次处理,所以我们必须去除抖动。去除抖动有2种,硬件消抖和软件消抖。其中一软件消抖最方便。

按键1.png

软件消抖一般为延时消抖,在程序中加一段延时,再去检测按键是否被按下,如果 是处理一次,否重复检测。

非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。

独立键盘

独立键盘.png

通过电路图可以看出有,独立键盘总共拥有4个独立按键,按键一端接地(GND)一端接P3^0~3IO口。
当S2按下时 P3^0==0;表示按键按下
当S3按下时 P3^1==0;表示按键按下
当S4按下时 P3^2==0;表示按键按下
当S5按下时 P3^3==0;表示按键按下

代码如下:

#include<reg52.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;

sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
void delayms(unsigned int k)//延时函数
{
unsigned int i , j;
for(i = 0;i < k;i++)
for(j = 0;j < 125;j++)
}
void keypros()独立按键控制
if(key1==0)
{
delayms(1000);//消抖
if(key1==0)
{
led1=~led1;//翻转
}
while(!key1);
}
if(key2==0)
{
delayms(1000);//消抖
if(key2==0)
{
led2=~led2;//翻转
}
while(!key2);
}
if(key3==0)
{
delayms(1000);//消抖
if(key3==0)
{
led3=~led3;//翻转
}
while(!key3);
}
if(key4==0)
{
delayms(1000);//消抖
if(key4==0)
{
led4=~led4;//翻转
}
while(!key4);
}

void main()
{
while(1)
{
keypros();
}
}
例程 键盘应用
  1. 黑魔王 2019-12-31

    牛皮牛皮

Theme Jasmine by Kent Liao