×
单片机 > 单片机程序设计 > 详情

51单片机心形流水和数码管同步效果显示仿真与程序

发布时间:2022-04-21 发布时间:
|

LED流水和数码管流水效果"独立"进行,实现方法包里有代码,互相交流。
仿真原理图:

单片机源程序如下:

#include

#include


#define Number 50       //数码管数字长亮时间,t=Number*50ms=2500ms

#define Speed 6         //数码管数字显示流动速度,t=Speed*50ms=300ms

#define time100 100   //延时函数时间:t=time100=100ms

#define time1000 1000   //延时函数时间:t=time1000=1000ms

#define uchar unsigned char

#define uint unsigned int


bit flag=0;


uchar timer=0; 

uchar K=0;

uchar N=0;

uchar num;

uchar num1;

uchar a;

uchar b;

uchar c;

uchar code temp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xc7,0xc1,0x86};

uchar code table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar code led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


/****************************************

           延时函数(ms)

****************************************/                 

void delay(uint t)

{

        int x,y;

        for(x=t;x>0;x--)

                for(y=110;y>0;y--);

}

/****************************************

           流水灯显示

****************************************/

                                                          //闪烁

void ledBlink_display()

{                  

         P1=P3=0x00;                        // 闪烁  1

         delay(time100);

         P1=P3=0xff;

         delay(time100);


         P1=P3=0x00;                        // 闪烁  2

         delay(time100);

         P1=P3=0xff;

         delay(time100);

}

                                                          //流动  1

void ledFlow_display1()

{

         for(b=0;b<8;b++)

             {P3=led[b];

                 delay(time100);

         }

        P3=0x00;

         for(c=0;c<8;c++)

             {P1=led[c];

                 delay(time100);

                 }

        P1=0x00; 

}

                                                        //           流动 2

void ledFlow_display2()

{

        for(b=0;b<8;b++)

             {P3=led[b];

                 delay(time100);

         }

        P3=0x00;

         for(c=0;c<8;c++)

             {P1=led[c];

                 delay(time100);

                 }

        P1=0x00; 

}

                                                         //流动  3

void ledFlow_display3()

{

        for(b=0;b<8;b++)

             {P3=led[b];

                 delay(time100);

         }

        P3=0x00;

         for(c=0;c<8;c++)

             {P1=led[c];

                 delay(time100);

                 }

        P1=0xff; 

}

                                                          //流动  4

void ledFlow_display4()

{

         for(b=7;b>0;b--)

             {P3=led[b];

                 delay(time100);

         }

        P3=0x00;

         for(c=7;c>0;c--)

             {P1=led[c];

                 delay(time100);

                 }

        P1=0x00; 

}

        

                                                                  //           流动 5

void ledFlow_display5()

{

        for(b=7;b>0;b--)

             {P3=led[b];

                 delay(time100);

         }

        P3=0x00;

         for(c=7;c>0;c--)

             {P1=led[c];

                 delay(time100);

                 }

        P1=0xff; 

}                 

                                                         //流动  6

void ledFlow_display6()

{

        for(b=7;b>0;b--)

             {P3=led[b];

                 delay(time100);

         }

        P3=0x00;

         for(c=7;c>0;c--)

             {P1=led[c];

                 delay(time100);

                 }

        P1=0x00;         

}                 

                                                   //交替闪

void ledExchangeBlink_display()

{

        P3=0xaa;

        P1=0x55;

        delay(time100);

        P3=0x55;

        P1=0xaa;

        delay(time100);        

        

        P3=0xaa;

        P1=0x55;

        delay(time100);

        P3=0x55;

        P1=0xaa;

        delay(time100);

        

        P3=0xaa;

        P1=0x55;

        delay(time100);

        P3=0x55;

        P1=0xaa;

        delay(time100);        

}        


                                                //左右闪 1

void led_RL_Blink_display1()

{

   P3=0x00;

   P1=0xff;

   delay(time100);


   P3=0xff;

   P1=0x00;

   delay(time100);

}

                                                   //左右闪 2

void led_RL_Blink_display2()

{

   P3=0x00;

   P1=0xff;

   delay(time100);


   P3=0xff;

   P1=0x00;

   delay(time100);

}

                                                   //左右闪 3

void led_RL_Blink_display3()

{

   P3=0x00;

   P1=0xff;

   delay(time100);


   P3=0xff;

   P1=0x00;

   delay(time100);

}        

                                                //4组流

void ledFourGroupFlow_display()

{

        P1=P3=0x11;                                        

        P3=0xf0;

P1=



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何升级STM32单片机的代码