2501_94369262 2025-12-22 08:16 采纳率: 55.6%
浏览 11

8个流水灯从左到右点亮

AT89C51单片机,设计一个从左到右的流水灯系列,要求8个LED灯依次点亮并循环,每个LED灯点亮时间为500毫秒,要求绘制出系统硬件电路并设计相应的c语言程序。

  • 写回答

1条回答 默认 最新

  • 关注

    针对你要的AT89C51 8路流水灯(左到右依次亮、500ms/个、循环),我精简一下:

    一、硬件接线

    1. 8个LED负极分别接P1.0~P1.7,正极各串220Ω限流电阻后接5V;
    2. 单片机接11.0592MHz晶振+复位电路,5V供电就行。

    二、核心代码

    #include <reg51.h>
    #define LED P1
    // 500ms延时(11.0592MHz晶振适配)
    void delay500ms(){
        unsigned int i,j;
        for(i=500;i>0;i--)
            for(j=110;j>0;j--);
    }
    
    void main(){
        unsigned char led_val=0xFE; // 初始P1.0亮
        LED=led_val;
        while(1){
            delay500ms();
            led_val=(led_val<<1)|0x01; // 左移,补1保证其他灯灭
            if(led_val==0xFF) led_val=0xFE; // 循环复位
            LED=led_val;
        }
    }
    

    三、关键提醒

    1. 限流电阻别省:220Ω是标配,不然烧LED/单片机IO;
    2. 延时精准度:如果晶振不是11.0592MHz,调delay里的i/j数值就行;
    3. 逻辑核心:靠移位操作实现“左到右”,低电平点亮LED。
    评论

报告相同问题?

问题事件

  • 创建了问题 12月22日