迅维网
标题:
自己制作的点阵屏加流水灯!水平不高……
[打印本页]
作者:
バ幸福De右岸
时间:
2016-2-16 16:41
标题:
自己制作的点阵屏加流水灯!水平不高……
登录/注册后看高清大图
登录/注册后看高清大图
登录/注册后看高清大图
源码预览:
//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
3 = 0X00;
delay(620); //延时1S ,1230为1S
P0 = 0XFF
3 = 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
3 = 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
;
delay(210);
}
P0 = 0XFF;
for( i = 0;i < 8;i++)
{
P3 = image2
;
delay(210);
}
P3 = 0XFF;
for(i = 0;i < 7;i++)
{
P3 = image01
;
delay(210);
}
P3 = 0XFF;
for(i = 0;i <8;i++)
{
P0 = image2
;
delay(210);
}
P0 = 0XFF;
}
void display4()
{
for( j = 0;j < 4;j++)
for( i = 0;i < 4;i++)
{
P0 = image3
;
P3 = image3
;
delay(210);
}
P0 = 0XFF;P3 = 0XFF;
for(j = 0;j < 1;j++)
for( i= 0;i < 3;i++)
{
P0 = image04
;
P3 = image04
;
delay(210);
}
P0 = 0XFF;P3 = 0XFF;
for(j = 0;j < 1;j++)
for( i= 0;i < 4;i++)
{
P0 = image4
;
P3 = image4
;
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
;
delay(255);
}
P0 = 0XFF;
for(i = 0;i < 4;i++)
{
P0 = image09
;
delay(255);
}
P0 = 0XFF;
for( i = 0;i < 4;i++)
{
P3 = image6
;
delay(255);
}
P3 = 0XFF;
for(i = 0;i < 4;i++)
{
P3 = image06
;
delay(255);
}
P3 = 0XFF;
}
void display10()
{
for( j = 0; 1 < 1; j++)
for(i = 0; i < 4;i++)
{
P0 = image7
;
P3 = image7
;
delay(345); //此处循环三次依次比一次快,
}
P0 = 0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image7
;
P3 = image7
;
delay(345);
}
P0 = 0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image07
;
P3 = image07
;
delay(345);
}
P0 =0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image07
;
P3 = image07
;
delay(345);
}
P0 =0XFF;P3 = 0XFF;
}
void display11()
{
for(j = 0;j < 1;j++)
for(i = 0; i < 4;i++)
{
P0 = image7
;
P3 = image7
;
delay(255); //此处循环三次依次比一次快,
}
P0 = 0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image7
;
P3 = image7
;
delay(255);
}
P0 = 0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image07
;
P3 = image07
;
delay(255);
}
P0 =0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image07
;
P3 = image07
;
delay(255);
}
P0 =0XFF;P3 = 0XFF;
}
void display12()
{
for(j = 0;j < 1;j++)
for(i = 0; i < 4;i++)
{
P0 = image7
;
P3 = image7
;
delay(125); //此处循环三次依次比一次快,
}
P0 = 0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image7
;
P3 = image7
;
delay(125);
}
P0 = 0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image07
;
P3 = image07
;
delay(125);
}
P0 =0XFF;P3 = 0XFF;
for( i = 0;i < 4;i++)
{
P0 = image07
;
P3 = image07
;
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
;
P3 = image05
;
delay(255);
}
P0 = 0XFF;P3 = 0XFF;
for(i = 0;i < 7;i++)
{
P0 = image055
;
P3 = image55
;
delay(255);
}
P0 = 0XFF;P3 = 0XFF;
for(i = 0;i < 8;i++)
{
P0 = image05
;
P3 = image5
;
delay(125);
}
P0 = 0XFF;P3 = 0XFF;
for(i = 0;i < 7;i++)
{
P0 = image55
;
P3 = image055
;
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();
}
}
复制代码
来源:网络转载
作者:
libaotian
时间:
2016-8-8 13:18
{:4_129:}{:4_129:}{:4_129:}{:4_129:}{:4_129:}
作者:
爱在西元前
时间:
2016-8-15 22:38
你才是高手啊
欢迎光临 迅维网 (https://www.chinafix.com/)
Powered by Discuz! X3.4