天天看點

【C51單片機】流水燈(仿真)1、流水燈功能2、PROTEUS中設計的電路圖3、源代碼4、流水燈效果

1、流水燈功能

所謂流水燈就是8個發光二極管(LED)輪流點亮,周而複始,實作多花樣流水燈效果,如:8個發光二極管循環點亮(第①号燈亮、第②号燈亮……第⑧号燈亮,第①号燈亮、第②号燈亮……第⑧号燈亮,……,每次隻亮一個燈);8個LED從左到右循環依次點亮(第①号燈亮、第①②号燈亮……第①②③④⑤⑥⑦⑧号燈亮),間隔1s,直到8個燈全亮後,蜂鳴器響一下,然後都熄滅,再又從左到右循環依次點亮,如此循環;同時要做出多種效果 

2、PROTEUS中設計的電路圖

【C51單片機】流水燈(仿真)1、流水燈功能2、PROTEUS中設計的電路圖3、源代碼4、流水燈效果

3、源代碼

#include <reg51.h>
#define u8 unsigned char
#define u16 unsigned int
sbit button=P2^0;
u8 k=0;
sbit FM = P2^3;
void delay_ms(int x)
{
    int i,j;
     for(i=0;i<=x;i++)
         for(j=0;j<=110;j++);
}

//從左向右
void light1()
{
    unsigned char temp,i;
    temp=0xff;
    for(i=0;i<9;i++)
    {    delay_ms(500);
        P0=temp; 
         delay_ms(500);
        temp=temp<<1;
    }
    TR0=1;
    delay_ms(1000);
    P0=0xff;
        
}
//從右向左
void light2()
{
    unsigned char temp,i;
    temp=0xff;
    for(i=0;i<9;i++)
    {
        delay_ms(500);
        P0=temp; 
         delay_ms(500);
        temp=temp>>1;
    }
    TR0=1;
    delay_ms(1000);
    P0=0xff;
}

//兩個燈一起亮
void light3()
{
    unsigned char temp,i;
    temp=0xff;
    for(i=0;i<5;i++)
    {
        delay_ms(500);
        P0=temp; 
         delay_ms(500);
        temp=temp<<2;
    }
    TR0=1;
    delay_ms(1000);
    P0=0xff;
}


//兩邊向中間    
void light4()
{
         
     unsigned char i;
     unsigned char *Temp[4];
     Temp[0] = 0x7e;
     Temp[1] = 0x3c;  
     Temp[2] = 0x18; 
     Temp[3] = 0x00;
     for(i=0;i<4;i++)
     {    
         delay_ms(500);
           P0=Temp[i];
         delay_ms(500); 
     }
    TR0=1;
    delay_ms(1000);
    P0=0xff;
}

void main()
{
    FM=1;
    TL0 = (8192-1250)%32;
    TH0    = (8192-1250)/32;
    TMOD = 0X00;
    EA=1;//總中斷允許
    ET0 = 1;
    while(1){
        
        light1();
        light2();
        light3();
        light4();
    } 
}

void time0() interrupt 1
{
    TL0 = (8192-1000)%32;
    TH0    = (8192-1000)/32;
    FM = ~FM;
    k++;
    if(k==50) {FM=1;k=0;TR0=0;}
}
           

4、流水燈效果

效果視訊展示

【C51單片機】流水燈(仿真)1、流水燈功能2、PROTEUS中設計的電路圖3、源代碼4、流水燈效果

問題咨詢及項目源碼請加群:

QQ群

名稱:IT項目交流群

群号:245022761

繼續閱讀