点阵屏流水灯的源程序和pcb文件下载:
点阵流水灯.zip
(491.16 KB, 下载次数: 27)
源码预览:
- //P0和P3控制LED灯显示
- //P2和P1控制led点阵显示
- #include<reg52.h>
- sbit VD00 = P0^0;
- sbit VD01 = P0^1;
- sbit VD02 = P0^2;
- sbit VD03 = P0^3;
- sbit VD04 = P0^4;
- sbit VD05 = P0^5;
- sbit VD06 = P0^6;
- sbit VD07 = P0^7;
- sbit VD30 = P3^0;
- sbit VD31 = P3^1;
- sbit VD32 = P3^2;
- sbit VD33 = P3^3;
- sbit VD34 = P3^4;
- sbit VD35 = P3^5;
- sbit VD36 = P3^6;
- sbit VD37 = P3^7;
- unsigned char code image1[ ] = {0xFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};//低到高,1.7~1.0 1111 1110,0XFE
- unsigned char code image01[] = {0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0x7F};
- unsigned char code image2[ ] = {0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE};//高到低
- unsigned char code image02[] = {0XBF,0XDF,0XEF,0XF7,0XFB,0XFD};
- unsigned char code image3[ ] = {0xEE,0XCC,0X88,0X00};//低到高
- unsigned char code image4[ ] = {0X00,0X88,0XCC,0XEE};//高到
- unsigned char code image04[] = {0X88,0XCC,0XEE };
- unsigned char code image5[ ] = {0xFE,0XFC,0XF8,0XF0,0XE0,0XC0,0X80,0X00};
- unsigned char code image05[] = {0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00};
- unsigned char code image55[] = {0XFC,0XF8,0XF0,0XE0,0XC0,0X80,0X00};
- unsigned char code image055[] ={0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00};
- unsigned char code image6[ ] = {0X7F,0X3F,0X1F,0X0F};
- unsigned char code image06[] = {0XF7,0XF3,0XF1,0XF0};
- unsigned char code image7[ ] = {0X7E,0XBD,0XDB,0XE7};
- unsigned char code image07[] = {0xE7,0XDB,0XBD,0X7E};
- unsigned char code image9[ ] = {0xFE,0XFC,0XF8,0XF0};
- unsigned char code image09[] = {0XEF,0XCF,0X8F,0X0F};
- unsigned char code image8[29][8] = {
- {0xFF,0x7F,0x7F,0xFF,0xFF,0x7F,0xFF,0x7F},
- {0xFF,0x3F,0x3F,0x7F,0x7F,0x3F,0x7F,0x3F},
- {0xFF,0x1F,0x1F,0x3F,0x3F,0x1F,0x3F,0x1F},
- {0xFF,0x0F,0x0F,0x9F,0x9F,0x0F,0x9F,0x0F},
- {0xFF,0x87,0x87,0xCF,0xCF,0x87,0xCF,0x87},
- {0xFF,0xC3,0xC3,0xE7,0xE7,0xC3,0xE7,0xC3},
- {0xFF,0x61,0xE1,0x73,0x73,0xE1,0xF3,0xE1},
- {0xFF,0x30,0x70,0x39,0x39,0xF0,0x79,0xF0},
- {0xFF,0x18,0x38,0x1C,0x1C,0x78,0x3C,0xF8},
- {0xFF,0x0C,0x9C,0x0E,0x0E,0x3C,0x1E,0x7C},
- {0xFF,0x06,0xCE,0x07,0x07,0x1E,0x0F,0x3E},
- {0xFF,0x03,0x67,0x03,0x03,0x0F,0x07,0x9F},
- {0xFF,0x01,0x33,0x01,0x01,0x87,0x03,0xCF},
- {0xFF,0x00,0x99,0x00,0x00,0xC3,0x81,0xE7},
- {0xFF,0x80,0xCC,0x80,0x80,0xE1,0xC0,0xF3},
- {0xFF,0x40,0x66,0x40,0x40,0x70,0x60,0xF9},
- {0xFF,0x20,0x33,0x20,0x20,0x38,0x30,0x7C},
- {0xFF,0x90,0x99,0x90,0x90,0x1C,0x98,0x3E},
- {0xFF,0xC8,0xCC,0xC8,0xC8,0x0E,0xCC,0x1F},
- {0xFF,0x64,0x66,0x64,0x64,0x07,0x66,0x0F},
- {0xFF,0x32,0x33,0x32,0x32,0x03,0x33,0x87},
- {0xFF,0x99,0x99,0x99,0x99,0x81,0x99,0xC3},
- {0xFF,0xCC,0xCC,0xCC,0xCC,0xC0,0xCC,0xE1},
- {0xFF,0xE6,0xE6,0xE6,0xE6,0xE0,0xE6,0xF0},
- {0xFF,0xF3,0xF3,0xF3,0xF3,0xF0,0xF3,0xF8},
- {0xFF,0xF9,0xF9,0xF9,0xF9,0xF8,0xF9,0xFC},
- {0xFF,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE},
- {0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF},
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
- };
- #define unint unsigned int
- unint i;
- unint j;
- void delay (unint c);
- void delay(unint c)
- {
- unint a,b;
- for ( a=c; a > 0;a--)
- for( b = 100; b> 0;b--);
- }
- void display1() //p0和p3亮灭3次
- {
- for(i = 0;i < 3;i ++ )
- {
- P0 = 0X00;P3 = 0X00;
- delay(620); //延时1S ,1230为1S
- P0 = 0XFF;P3 = 0XFF;
- delay(620);
- }
- }
- void display2() //p3和p1高位依次点亮。
- {
- for(i = 0;i < 1;i++)
- {
- VD00 = 0;VD30 = 0;
- delay(255); //延时50MS ,delay255为20MS
- VD01 = 0;VD31 = 0;
- delay(255);
- VD02 = 0;VD32 = 0;
- delay(255);
- VD03 = 0;VD33 = 0;
- delay(255);
- VD04 = 0;VD34 = 0;
- delay(255);
- VD05 = 0;VD35 = 0;
- delay(255);
- VD06 = 0;VD36 = 0;
- delay(255);
- VD07 = 0;VD37 = 0;
- delay(255);
- P0 = 0XFF;P3 = 0XFF;
- VD07 = 0;VD37 = 0; //p3和p1低位依次点亮。
- delay(255);
- VD06 = 0;VD36 = 0;
- delay(255);
- VD05 = 0;VD35 = 0;
- delay(255);
- VD04 = 0;VD34 = 0;
- delay(255);
- VD03 = 0;VD33 = 0;
- delay(255);
- VD02 = 0;VD32 = 0;
- delay(255);
- VD01 = 0;VD31 = 0;
- delay(255);
- VD00 = 0;VD30 = 0;
-
- P0 = 0XFF;P3 = 0XFF;
- }
- }
- void display02() //p3和p1高位依次点亮。
- {
- for(i = 0;i < 1;i++)
- {
- VD00 = 0;VD30 = 0;
- delay(125); //延时50MS ,delay255为20MS
- VD01 = 0;VD31 = 0;
- delay(125);
- VD02 = 0;VD32 = 0;
- delay(125);
- VD03 = 0;VD33 = 0;
- delay(125);
- VD04 = 0;VD34 = 0;
- delay(125);
- VD05 = 0;VD35 = 0;
- delay(125);
- VD06 = 0;VD36 = 0;
- delay(125);
- VD07 = 0;VD37 = 0;
- delay(125);
- P0 = 0XFF;P3 = 0XFF;
- VD07 = 0;VD37 = 0; //p3和p1低位依次点亮。
- delay(125);
- VD06 = 0;VD36 = 0;
- delay(125);
- VD05 = 0;VD35 = 0;
- delay(125);
- VD04 = 0;VD34 = 0;
- delay(125);
- VD03 = 0;VD33 = 0;
- delay(125);
- VD02 = 0;VD32 = 0;
- delay(125);
- VD01 = 0;VD31 = 0;
- delay(125);
- VD00 = 0;VD30 = 0;
-
- P0 = 0XFF;P3 = 0XFF;
- }
- }
- void display3() /* p0和p3逐个点亮,正反各一次*/
- {
- for( i = 0;i < 8;i ++)
- {
- P0 = image1[i];
- delay(210);
-
- }
- P0 = 0XFF;
- for( i = 0;i < 8;i++)
- {
- P3 = image2[i];
- delay(210);
-
- }
- P3 = 0XFF;
- for(i = 0;i < 7;i++)
- {
- P3 = image01[i];
- delay(210);
-
- }
- P3 = 0XFF;
- for(i = 0;i <8;i++)
- {
- P0 = image2[i];
- delay(210);
-
- }
- P0 = 0XFF;
- }
- void display4()
- {
- for( j = 0;j < 4;j++)
- for( i = 0;i < 4;i++)
- {
- P0 = image3[i];
- P3 = image3[i];
- delay(210);
-
- }
- P0 = 0XFF;P3 = 0XFF;
- for(j = 0;j < 1;j++)
- for( i= 0;i < 3;i++)
- {
- P0 = image04[i];
- P3 = image04[i];
- delay(210);
-
- }
- P0 = 0XFF;P3 = 0XFF;
- for(j = 0;j < 1;j++)
- for( i= 0;i < 4;i++)
- {
- P0 = image4[i];
- P3 = image4[i];
- delay(210);
-
- }
- P0 = 0XFF;P3 = 0XFF;
- }
- void display5()
- {
- for(i = 0;i <2;i++)
- {
- P0 = 0XF0;
- delay(620); //370为30MS delay125为10MS
- P0 = 0x0F;
- delay(620);
- P0 = 0XFF;
- P3 = 0X0F;
- delay(620);
- P3 = 0xF0;
- delay(620);
- P3 = 0XFF;
- }
- P0 = 0XFF;P3 = 0XFF;
- }
- void display6()
- {
- for(i = 0;i < 2;i++)
- {
- P0 =0X00;
- delay(620);
- P0 = 0XFF;
- delay(620);
- P3 =0X00;
- delay(620);
- P3 = 0XFF;
- delay(620);
- }
- P0 = 0XFF;P3 = 0XFF;
- }
- void display7()
- {
- for(i = 0;i < 3;i++)
- {
- P0 = 0XF0;
- P3 = 0XF0;
- delay(620);
- P0 = 0X0F;
- P3 = 0X0F;
- delay(620);
- }
- P0 = 0XFF;P3 = 0XFF;
- }
- void display8()
- {
- for(i = 0;i < 2;i++)
- {
- P0 = 0XF0;
- delay(620);
- P3 = 0X0F;
- P0 = 0XFF;
- delay(620);
- P0 = 0X0F;
- P3 = 0XFF;
- delay(620);
- P3 = 0XF0;
- P0 = 0XFF;
- delay(620);
- P0 = 0XFF;
- P3 = 0XFF;
- }
-
- }
- void display9()
- {
- for(i = 0;i < 4;i++)
- {
- P0 = image9[i];
- delay(255);
- }
- P0 = 0XFF;
- for(i = 0;i < 4;i++)
- {
- P0 = image09[i];
- delay(255);
- }
- P0 = 0XFF;
-
- for( i = 0;i < 4;i++)
- {
- P3 = image6[i];
- delay(255);
- }
- P3 = 0XFF;
- for(i = 0;i < 4;i++)
- {
- P3 = image06[i];
- delay(255);
- }
- P3 = 0XFF;
- }
- void display10()
- {
- for( j = 0; 1 < 1; j++)
- for(i = 0; i < 4;i++)
- {
- P0 = image7[i];
- P3 = image7[i];
- delay(345); //此处循环三次依次比一次快,
- }
- P0 = 0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image7[i];
- P3 = image7[i];
- delay(345);
- }
- P0 = 0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image07[i];
- P3 = image07[i];
- delay(345);
- }
- P0 =0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image07[i];
- P3 = image07[i];
- delay(345);
- }
- P0 =0XFF;P3 = 0XFF;
- }
- void display11()
- {
- for(j = 0;j < 1;j++)
- for(i = 0; i < 4;i++)
- {
- P0 = image7[i];
- P3 = image7[i];
- delay(255); //此处循环三次依次比一次快,
- }
- P0 = 0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image7[i];
- P3 = image7[i];
- delay(255);
- }
- P0 = 0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image07[i];
- P3 = image07[i];
- delay(255);
- }
- P0 =0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image07[i];
- P3 = image07[i];
- delay(255);
- }
- P0 =0XFF;P3 = 0XFF;
- }
- void display12()
- {
- for(j = 0;j < 1;j++)
- for(i = 0; i < 4;i++)
- {
- P0 = image7[i];
- P3 = image7[i];
- delay(125); //此处循环三次依次比一次快,
- }
- P0 = 0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image7[i];
- P3 = image7[i];
- delay(125);
- }
- P0 = 0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image07[i];
- P3 = image07[i];
- delay(125);
- }
- P0 =0XFF;P3 = 0XFF;
- for( i = 0;i < 4;i++)
- {
- P0 = image07[i];
- P3 = image07[i];
- delay(125);
- }
- P0 =0XFF;P3 = 0XFF;
- }
- void display13()
- {
- for(i= 0;i < 1;i++)
- {
- P0 =0X00;P3 = 0X00;
- delay(620);
- P0 =0XFF;P3 = 0XFF;
- }
- }
- void display14()
- {
- for(j = 0;j<2;j++)
- for(i = 0;i < 8;i++)
- {
- P0 = image5[i];
- P3 = image05[i];
- delay(255);
- }
- P0 = 0XFF;P3 = 0XFF;
- for(i = 0;i < 7;i++)
- {
- P0 = image055[i];
- P3 = image55[i];
- delay(255);
- }
- P0 = 0XFF;P3 = 0XFF;
- for(i = 0;i < 8;i++)
- {
- P0 = image05[i];
- P3 = image5[i];
- delay(125);
- }
- P0 = 0XFF;P3 = 0XFF;
- for(i = 0;i < 7;i++)
- {
- P0 = image55[i];
- P3 = image055[i];
- delay(125);
- }
- P0 = 0XFF;P3 = 0XFF;
- delay(1000);
- }
- void interrupttime0() interrupt 1
- {
- static unsigned char k = 0;
- static unsigned char tmr = 0 ;
- static unsigned char index = 0;
- TH0 = 0XFC;
- TL0 = 0X18;
- P2 = 0XFF;
- switch(k)
- {
- case 0: P1 = 0xFE;k ++; P2 = image8[index][0];break;
- case 1: P1 = 0XFB;k ++; P2 = image8[index][1];break;
- case 2: P1 = 0XFD;k ++; P2 = image8[index][2];break;
- case 3: P1 = 0XF7;k ++; P2 = image8[index][3];break;
- case 4: P1 = 0XEF;k ++; P2 = image8[index][4];break;
- case 5: P1 = 0XBF;k ++; P2 = image8[index][5];break;
- case 6: P1 = 0XDF;k ++; P2 = image8[index][6];break;
- case 7: P1 = 0X7F;k = 0;P2 = image8[index][7];break;
- default:break;
- }
- tmr ++;
- if(tmr >= 250)
- {
- tmr = 0;
- index ++;
- if( index >= 29)
- {
- index = 0;
- }
- }
- }
- void main( )
- {
- EA = 1;
- TMOD = 0X01;
- TH0 = 0XFC; //x*12/11.0592*10^6=0.001,x=921.6取整为921,65536-921=64615
- TL0 = 0X18;//64615换成16进制,TH0=0XFC,TL0=0X67,晶振为12MHZ就是FC18
- ET0 = 1; // 开启中断
- TR0 = 1;//开定时器
- while(1)
- {
- display1 ();
- display2 ();
- display02();
- display3 ();
- display4 ();
- display5 ();
- display9 ();
- display6 ();
- display7 ();
- display8 ();
- display10();
- display13();
- display11();
- display13();
- display12();
- display13();
- display14();
- }
- }
复制代码
|