您的位置:首页 > 其它

4.1.按键--按下按键使LED点亮

2016-06-01 16:17 288 查看

实验目的:按键–按下按键使LED点亮

预备知识:

(1)按键原理图



(2)上拉电阻。



从独立按键的原理图可以看出,每一个按键的一极接在IO引脚地上,一极接在GND上。当按键被按下的时候,按键两极接通,相应的按键的IO引脚变成0(低电压),其实按键还会接一个上拉电阻,当按键弹起的状态下,上拉电阻拉高按键的点评,也就是说,按键弹起的时候,相应的按键对应的IO引脚是高电平。我么可以通过每个按键对应的IO引脚的电平高低来判断按键是否被按下。

(3)轮询式、中断式。轮询式:CPU每隔一段时间就去读按键对应的IO引脚的电平。中断后面再讲。

(4)独立按键可以同时按下多个按键,而矩阵按键同一时间只能按下一个按键。

实验过程:

(1)分析原理图对应接线按键和LED灯

(2)led1是led的正极

实验代码:

#include<reg51.h>

sbit led1 = P0^0;   //定义位变量 一个led
sbit key1 = P1^0;   //定义位变量一个按键

void main(void)
{
while(1)
{
if(key1 == 1)       //按键处于弹起状态时,上拉电阻使该IO引脚为高电平
{
//按键弹起状态
led1 = 0;     // 熄灭led

}
else
{
//按键被按下
led1 = 1;     //  点亮led

}
}

}


/********************************************************************/
上面是只有一个按键对用一个led,现在多写几个看看好不好使
/********************************************************************/

#include<reg51.h>

sbit led1 = P0^0;
sbit led2 = P0^1;
sbit led8 = P0^7;
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key8 = P1^7;

void main(void)
{
while(1)
{
if(key1 == 1)       //按键处于弹起状态时,上拉电阻使该IO引脚为高电平
{
//按键弹起状态
led1 = 0;     // 熄灭led

}
else
{
//按键被按下
led1 = 1;     //  点亮led

}

if(key2 == 1)
{
led2 = 0;
}
else
{
led2 = 1;
}

if(key8 == 1)
{
led8 == 0;
}
else
{
led8 == 1;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: