51单片机主控的32位心形流水灯仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- void delay(uchar shu);
- void sszzgdl();
- void sszzgxm();
- void lmtsdl();
- void lmtsxm();
- void bgdlxh();
- void lgbgdlxh();
- uchar code shuzhu1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
- uchar code shuzhu2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
- uchar code shuzhu3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
- uchar code shuzhu4[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
- void main()
- {
- while(1)
- {
- sszzgdl();
- sszzgxm();
- sszzgdl();
- sszzgxm();
- lmtsdl();
- lmtsxm();
- lmtsdl();
- lmtsxm();
- bgdlxh();
- lgbgdlxh();
- }
- }
- ///////延时函数///////
- void delay(uchar shu)
- {
- uchar i,j;
- for(i=0;i<shu;i++)
- for(j=0;j<120;j++);
- }
- ///////顺时针逐个点亮/////////
- void sszzgdl()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- P2=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P1=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P0=shuzhu2[i];
- delay(500);
- }
- }
- ///////顺时针逐个熄灭/////////
- void sszzgxm()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- P2=shuzhu3[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu3[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P1=shuzhu3[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P0=shuzhu4[i];
- delay(500);
- }
- }
- ///////俩面同时点亮/////////
- void lmtsdl()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- P2=shuzhu1[i];
- P0=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu1[i];
- P1=shuzhu2[i];
- delay(500);
- }
- }
- ///////俩面同时熄灭/////////
- void lmtsxm()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- P2=shuzhu3[i];
- P0=shuzhu3[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu3[i];
- P1=shuzhu4[i];
- delay(500);
- }
- }
- ///////8个点亮循环/////////
- void bgdlxh()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- P2=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P2=shuzhu3[i];
- P3=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu3[i];
- P1=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P1=shuzhu3[i];
- P0=shuzhu2[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P0=shuzhu4[i];
- P2=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P2=shuzhu3[i];
- P3=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu3[i];
- P1=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P1=shuzhu3[i];
- P0=shuzhu2[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P0=shuzhu4[i];
- delay(500);
- }
- sszzgdl();
- sszzgxm();
- }
- ///////俩个8个点亮循环/////////
- void lgbgdlxh()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- P2=shuzhu1[i];
- P1=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P2=shuzhu3[i];
- P1=shuzhu3[i];
- P3=shuzhu1[i];
- P0=shuzhu2[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu1[i];
- P0=shuzhu4[i];
- P2=shuzhu1[i];
- P1=shuzhu1[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P2=shuzhu3[i];
- P1=shuzhu3[i];
- P3=shuzhu1[i];
- P0=shuzhu2[i];
- delay(500);
- }
- for(i=0;i<8;i++)
- {
- P3=shuzhu3[i];
- P0=shuzhu4[i];
- delay(500);
- }
- }
复制代码
Proteus仿真只能用7.5版本:
01 单片机32位流水灯设计.rar
(48.95 KB, 下载次数: 243)
|