51单片机操作小灯

1 点亮第一个小灯

两种方式:

位操作方法

#include <reg52.h>
sbit p0=P1^0; 
void main()
{
    P0=0;
}

注:sbit为特殊功能位声明。
P0=0;给P1^0口提供低电平,使其点亮。

总线操作方法

#include <reg52.h>
void main()
{
    P1=0xfe;
}

注:要将第一个灯泡点亮,则P1各引脚电平应为11111110(二进制),转化为十六进制为0xfe。

2 点亮任意一个小灯

点亮其他小灯,就像点亮第一个小灯是同样的原理。

只是位声明进行变化或者十六进制数变化一下。

各个小灯对应的十六进制分别是:0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f

3 让小灯闪烁

以第一个小灯为例:

#include <reg52.h>

sbit p0=P1^0;
void delay()
{
    int i;
    for(i=0;i<6666;i++)
    ;   
}
void main()
{
    while(1)
    {
        p0=0;
        delay();
        p0=1;
        delay();
    }
}

注:delay() 为延迟函数

4 流水灯设计

小灯从第一个到最后一个依次闪烁:

#include <reg52.h>

const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  //八个小灯的地址

void delay()  //延迟函数
{
    int i;
    for(i=0;i<6666;i++)
    ;
}
void main()
{
    char i;
    while(1)
    {
        for(i=0;i<8;i++)
        {
            P1=tab[i];  //点亮小灯
            delay();
            P1=0xff; //小灯熄灭(二进制11111111的十六制形式)
            delay();
        }
    }
}
0

Leave a Reply

Your email address will not be published.