51单片机——LED流水灯

51单片机——LED流水灯,第1张

LED模块原理:

        8个LED的阳极接电源VCC,为了保护LED,每条支路分别串联一个1K的电阻(因为LED有工作电压限制,超过工作电压,正向PN结电流过大,容易烧毁LED,所以串联一个1K电阻)。

8个LED的阴极分别接P20~P27 8个拐角处,由于发光二极管的单向导电性,每条支路LED的阳极已经是高电平,因此每条支路的LED阴极只要给低电平,该支路的LED就会被点亮。

图1  LED模块原理图

代码实现部分:
#include "reg52.h"            //此文件中定义了单片机的一些特殊功能寄存器
#include           //加入有左右移函数的头文件
  
#define led P2     //将P2口定义位led  后面即可使用led代替P2口
  
void delay(unsigned int i)  //定义一个延时函数,不延时肉眼看不到效果
{  
    while(i--);   
}  
  
void main()  
{  
    unsigned char i;  
    led=0xfe;    //led = 1111 1110 即只有LED7阴极输出低电平,只有LED7亮
    delay(50000);  //大约延时450ms
    while(1)  
    {     
        for(i=0;i<7;i++)   
        {  
            led=_crol_(led,1);  //将led左移7位
            delay(50000);   //大约延时450ms,即点亮第一个LED与点亮第二个LED之间的时间间隔
        }  
          
        for(i=0;i<7;i++)   
        {  
            led=_cror_(led,1);  //将led右移7位
            delay(50000);   //大约延时450ms
        }  
    }         
} 

代码部分已用Keil uVision5 编译通过,亲测可用,可直接复制粘贴!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/673413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存