以下是基于 STC89C52 单片机的流水灯代码:

#include <reg52.h>

sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;

void delay(unsigned int xms) //延时函数
{
    unsigned int i, j;
    for(i = xms; i > 0; i--)
        for(j = 110; j > 0; j--);
}

void main()
{
    while(1)
    {
        LED1 = 0; LED2 = 1; LED3 = 1; LED4 = 1;
        LED5 = 1; LED6 = 1; LED7 = 1; LED8 = 1;
        delay(500); //第一个灯亮,其余灯灭

        LED1 = 1; LED2 = 0; LED3 = 1; LED4 = 1;
        LED5 = 1; LED6 = 1; LED7 = 1; LED8 = 1;
        delay(500); //第二个灯亮,其余灯灭

        LED1 = 1; LED2 = 1; LED3 = 0; LED4 = 1;
        LED5 = 1; LED6 = 1; LED7 = 1; LED8 = 1;
        delay(500); //第三个灯亮,其余灯灭

        LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 0;
        LED5 = 1; LED6 = 1; LED7 = 1; LED8 = 1;
        delay(500); //第四个灯亮,其余灯灭

        LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1;
        LED5 = 0; LED6 = 1; LED7 = 1; LED8 = 1;
        delay(500); //第五个灯亮,其余灯灭

        LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1;
        LED5 = 1; LED6 = 0; LED7 = 1; LED8 = 1;
        delay(500); //第六个灯亮,其余灯灭

        LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1;
        LED5 = 1; LED6 = 1; LED7 = 0; LED8 = 1;
        delay(500); //第七个灯亮,其余灯灭

        LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1;
        LED5 = 1; LED6 = 1; LED7 = 1; LED8 = 0;
        delay(500); //第八个灯亮,其余灯灭
    }
}

此代码通过循环控制每个灯的亮灭状态,实现了流水灯的效果。其中,sbit 关键字用于定义单片机端口的引脚,delay 函数用于实现延时,保证流水灯的效果。

代码解析:

  1. 引脚定义: 使用 sbit 关键字将 P1 端口的 0-7 脚定义为 LED1-LED8。
  2. 延时函数: delay 函数实现延时功能,用于控制流水灯的亮灭速度。
  3. 循环控制: main 函数中的 while(1) 循环不断执行,控制每个灯的亮灭,实现流水灯效果。

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

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