51单片机 LED 灯

得到8盏LED交替亮灭的实验效果

#include <reg51.h>

void Delay10ms(unsigned int c); // 延时10ms

void main() 
{
    while(1) 
    {
        P0 = 0x00; // 设置 P0 为低电平
        Delay10ms(50); // 延时
        P0 = 0xff; // 设置 P0 为高电平
        Delay10ms(50); // 延时
    }
}

void Delay10ms(unsigned int c)
{
    unsigned char a, b;
    for (; c > 0; c--)
    {
        for (b = 38; b > 0; b--)
        {
            for (a = 130; a > 0; a--);
        }
    }
}

LED灯做二进制加1显示

#include <reg51.h>

void Delay10ms(unsigned int c); // 延时10ms

void main() 
{
    unsigned char count = 0x00;
    while(1) 
    {
        P0 = count;
        Delay10ms(50); // 延时
        count++;
    }
}

void Delay10ms(unsigned int c)
{
    unsigned char a, b;
    for (; c > 0; c--)
    {
        for (b = 38; b > 0; b--)
        {
            for (a = 130; a > 0; a--);
        }
    }
}

延时实现LED流水灯效果P2口八个灯作跑马灯

#include <reg51.h>
// #include <intrins.h>
/** intrins.h 方法
_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空操作8051 NOP 指令
_testbit_ 测试并清零位8051 JBC 指令函数名: _crol_,_irol_,_lrol_
*/

void Delay10ms(unsigned int c); // 延时10ms

void main() 
{
    unsigned char LED;
    LED = ~0xfe;   // 0xfe = 1111 1110
    while(1) 
    {
        P0 = LED;
        Delay10ms(50); // 延时
        LED <<= 1;
        if (P0 == 0x00)
        {
            LED = ~0xfe;
        }
        // LED = _crol_(LED, 1);
    }
}

void Delay10ms(unsigned int c)
{
    unsigned char a, b;
    for (; c > 0; c--)
    {
        for (b = 38; b > 0; b--)
        {
            for (a = 130; a > 0; a--);
        }
    }
}

LED灯做跑马灯左右移动

#include <reg51.h>

void Delay10ms(unsigned int c); // 延时10ms
unsigned char LED;
void main() 
{
    unsigned char i;
    LED = 0xfe; // 0xfe = 1111 1110
    while(1) 
    {
        for (i = 0; i < 7; i++) 
        {
            P0 = LED;
            Delay10ms(50);
            LED <<= 1;
            LED |= 0x01;
        }
        for (i = 0; i < 7; i++) 
        {
            P0 = LED;
            Delay10ms(50);
            LED >>= 1;
            LED |= 0x80;
        }

    }
}

void Delay10ms(unsigned int c)
{
    unsigned char a, b;
    for (; c > 0; c--)
    {
        for (b = 38; b > 0; b--)
        {
            for (a = 130; a > 0; a--);
        }
    }
}
发布了39 篇原创文章 · 获赞 21 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章