(1)代码如下:

#include <reg52.h>

void delay(unsigned int t) // 延时函数
{
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<125;j++);
}

void main()
{
    while(1)
    {
        P1 = 0x01; // 点亮第一个LED
        delay(1000); // 延时1秒
        P1 = 0x00; // 熄灭LED
        delay(1000); // 延时1秒
    }
}

(2)代码如下:

#include <reg52.h>

void delay(unsigned int t) // 延时函数
{
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<125;j++);
}

void main()
{
    unsigned char i;
    while(1)
    {
        for(i=0;i<8;i++) // 依次点亮8个LED
        {
            P1 = ~(0x01 << i); // 位运算得到要点亮的LED
            delay(1000); // 延时1秒
        }
    }
}

(3)代码如下:

#include <reg52.h>

void delay(unsigned int t) // 延时函数
{
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<125;j++);
}

void main()
{
    unsigned char led = 0x01; // 初始点亮第一个LED
    while(1)
    {
        P1 = led; // 显示当前灯的状态
        if(P3 == 0x01) // 如果按下K1
        {
            led <<= 1; // 左移一位
            if(led == 0x00) // 如果最左边的LED灭了
                led = 0x80; // 点亮最右边的LED
        }
        else if(P3 == 0x02) // 如果按下K2
        {
            led >>= 1; // 右移一位
            if(led == 0x00) // 如果最右边的LED灭了
                led = 0x01; // 点亮最左边的LED
        }
    }
}

注意:以上代码仅供参考,具体实现方式可能因硬件情况而异

Keil-51软件进行程序的编写与调试。具体要求:1用程序延时的方法让P1口的1个LED小灯每隔1S交替闪亮。2编写程序使P1口的8个LED小灯从左至右依次闪烁。3利用单片机、按键和LED小灯构成一个LED灯控制电路上电时点亮一位LED按下K1时LED向左移一位按下K2时LED向右移一位。

原文地址: https://www.cveoy.top/t/topic/fKNT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录