AT89C51单片机,设计一个从左到右的流水灯系列,要求8个LED灯依次点亮并循环,每个LED灯点亮时间为500毫秒,要求绘制出系统硬件电路并设计相应的c语言程序。
1条回答 默认 最新
独角鲸网络安全实验室 2025-12-22 09:36关注针对你要的AT89C51 8路流水灯(左到右依次亮、500ms/个、循环),我精简一下:
一、硬件接线
- 8个LED负极分别接P1.0~P1.7,正极各串220Ω限流电阻后接5V;
- 单片机接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; } }三、关键提醒
- 限流电阻别省:220Ω是标配,不然烧LED/单片机IO;
- 延时精准度:如果晶振不是11.0592MHz,调delay里的i/j数值就行;
- 逻辑核心:靠移位操作实现“左到右”,低电平点亮LED。
解决 无用评论 打赏 举报