基于51单片机的节日彩灯设计程序以及原理图
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include"reg51.h"
- void delay_ms(unsigned int);
- void disp0(void);
- void disp1(void);
- void disp2(void);
- void disp3(void);
- void disp4(void);
- void disp5(void);
- void disp6(void);
- void disp7(void);
- unsigned char code biao0[]={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x18,0x3C,0x7E,0xDB,0x99,0x18,0x18,0x18,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
- unsigned char code biao1[4][8]={
- 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
- 0x00,0x00,0x3C,0x24,0x24,0x3C,0x00,0x00,
- 0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00,
- 0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF};
- unsigned char code biao2[7][8]={
- 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
- 0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
- 0x00,0x18,0x24,0x42,0x42,0x24,0x18,0x00,
- 0x18,0x24,0x42,0x81,0x81,0x42,0x24,0x18,
- 0x24,0x42,0x81,0x00,0x00,0x81,0x42,0x24,
- 0x42,0x81,0x00,0x00,0x00,0x00,0x81,0x42,
- 0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81};
- unsigned char code biao3[][8]={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
- 0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,
- 0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,
- 0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x3C,0x18};
- unsigned char code biao4[10][8]={
- 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
- 0x42,0xA5,0x42,0x18,0x18,0x42,0xA5,0x42,
- 0x04,0x0A,0x44,0xBA,0x5D,0x12,0x38,0x10,
- 0x04,0x4A,0xA4,0x58,0x1A,0x25,0x52,0x20,
- 0x04,0x4E,0xE4,0x58,0x1A,0x27,0x72,0x20,
- 0x42,0xA5,0x42,0x18,0x18,0x42,0xA5,0x42,
- 0x42,0xE7,0x42,0x18,0x18,0x42,0xE7,0x42,
- 0x20,0x72,0x27,0x1A,0x58,0xE4,0x4E,0x04,
- 0x10,0x38,0x12,0x5F,0xFA,0x48,0x1C,0x08,
- 0x08,0x1C,0x48,0xFA,0x5F,0x12,0x38,0x10};
-
- void main(void)
- {
- while (1)
- {
- switch (P1)
- {
- case 0xfe:delay_ms(10);
- if (P1==0xfe)
- {
- for (;;)
- {
- if (P1==0xfe)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0xfe);
- if (P1==0xfe) continue;
- else break;
- }
- disp0();
- }
- break;
- case 0xfd:delay_ms(10);
- if (P1==0xfd)
- {
- for (;;)
- {
- if (P1==0xfd)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0xfd);
- if (P1==0xfd) continue;
- else break;
- }
- disp1();
- }
- break;
- case 0xfb:delay_ms(10);
- if (P1==0xfb)
- {
- for (;;)
- {
- if (P1==0xfb)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0xfb);
- if (P1==0xfb) continue;
- else break;
- }
- disp2();
- }
- break;
- case 0xf7:delay_ms(10);
- if (P1==0xf7)
- {
- for (;;)
- {
- if (P1==0xf7)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0xf7);
- if (P1==0xf7) continue;
- else break;
- }
- disp3();
- }
- break;
- case 0xef:delay_ms(10);
- if (P1==0xef)
- {
- for (;;)
- {
- if (P1==0xef)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0xef);
- if (P1==0xef) continue;
- else break;
- }
- disp4();
- }
- break;
- case 0xdf:delay_ms(10);
- if (P1==0xdf)
- {
- for (;;)
- {
- if (P1==0xdf)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0xdf);
- if (P1==0xdf) continue;
- else break;
- }
- disp5();
- }
- break;
- case 0xbf:delay_ms(10);
- if (P1==0xbf)
- {
- for (;;)
- {
- if (P1==0xbf)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0xbf);
- if (P1==0xbf) continue;
- else break;
- }
- disp6();
- }
- break;
- case 0x7f:delay_ms(10);
- if (P1==0x7f)
- {
- for (;;)
- {
- if (P1==0x7f)
- continue;
- else break;
- }
- for (;;)
- {
- while (P1==0x7f);
- if (P1==0x7f) continue;
- else break;
- }
- disp7();
- }
- break;
- default: break;
- }
- }
- }
-
- void disp7(void)
- {
- char i,temp;
- temp=0x01;
- for(i=0;i<=3;i++)
- {
- temp=0x01;
- P0=(temp<<(4+i)|temp<<(3-i));
- P2=0;
- temp=temp<<1;
- delay_ms(500);
- }
- for(i=0;i<=3;i++)
- {
- temp=0x01;
- P0=(temp<<(7-i)|temp<<(0+i));
- P2=0;
- temp=temp<<1;
- delay_ms(500);
- }
- P2=0xff;
- P0=0x00;
- }
- void disp6(void)
- {
- char i,temp;
- temp=0xfe;
- for(i=0;i<=7;i++)
- {
- P0=~temp;
- P2=0x00;
- temp=temp<<1;
- delay_ms(500);
- }
- temp=0x80;
- for(i=0;i<=7;i++)
- {
- P0=~temp;
- P2=0x00;
- temp=temp>>1;
- delay_ms(500);
- }
- P2=0xff;
- P0=0x00;
- }
-
- void disp5(void)
- {
- unsigned char i,temp;
- temp=0x01;
- for(i=0;i<=7;i++)
- {
- P0=temp;
- P2=0x00;
- temp=temp<<1;
- delay_ms(500);
- }
- temp=0x80;
- for(i=0;i<=7;i++)
- {
- P0=temp;
- P2=0x00;
- temp=temp>>1;
- delay_ms(500);
- }
- P2=0xff;
- P0=0x00;
- }
- void disp4(void)
- {
- unsigned char i=0,j=0,k=0;
- for (;;)
- {
- for (i=0;i<=7;i++)
- {
- P2=0xff;
- P0=biao4[k][i];
- P2=~(0x80>>i);
- delay_ms(1);
- }
- if (j++>=70)
- {
- j=0;
- if(k++>=9) k=0;
- }
- if (P1!=0xff)
- {
- P2=0xff;
- P0=0x00;
- break;
- }
- }
- }
-
- void disp3(void)
- {
- unsigned char i=0,j=0,k=0;
- for (;;)
- {
- for (i=0;i<=7;i++)
- {
- P2=0xff;
- P0=biao3[k][i];
- P2=~(0x80>>i);
- delay_ms(1);
- }
- if (j++>=70)
- {
- j=0;
- if(k++>=4) k=0;
- }
- if (P1!=0xff)
- {
- P2=0xff;
- P0=0x00;
- break;
- }
- }
- }
-
- void disp2(void)
- {
- unsigned char i=0,j=0,k=0;
- for (;;)
- {
- for (i=0;i<=7;i++)
- {
- P2=0xff;
- P0=biao2[k][i];
- P2=~(0x80>>i);
- delay_ms(1);
- }
- if (j++>=70)
- {
- j=0;
- if(k++>=6) k=0;
- }
- if (P1!=0xff)
- {
- P2=0xff;
- P0=0x00;
- break;
- }
- }
- }
-
- void disp1(void)
- {
- unsigned char i=0,j=0,k=0;
- for (;;)
- {
- for (i=0;i<=7;i++)
- {
- P2=0xff;
- P0=biao1[k][i];
- P2=~(0x80>>i);
- delay_ms(1);
- }
- if (j++>=70)
- {
- j=0;
- if(k++>=3) k=0;
- }
- if (P1!=0xff)
- {
- P2=0xff;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
节日彩灯设计程序.rar
(155.67 KB, 下载次数: 45)
|