寒风1999

记录每一天的点滴进步

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

实验目的:按键–按下按键使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;
        }
    }

}
阅读更多
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/Hanfeng_1999/article/details/51556905
个人分类: 51单片机
上一篇3.2.了解一些74HC595的预备知识并编写其时序函数
下一篇4.2.第十个实验--检测键值并使用数码管显示
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭