1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| # include <reg52.h> #include<intrins.h>
typedef unsigned int u16; typedef unsigned char u8;
sbit SER=P3^4; //p3.4串行数据输入 DS sbit CLK=P3^5;//串行输入时钟,上升沿有效 SHCP 第11脚 数据输入时钟线 sbit SRCLK=P3^6;//串行寄存器时钟,上升沿有效 STCP 第12脚 输出存储器锁存时钟线
u8 code ledwidth[][8]= { {0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60,0x00}, {0x30,0x78,0x3C,0x1E,0x3C,0x78,0x30,0x00}, {0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18,0x00}, {0x00,0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18}, {0x00,0x30,0x78,0x3C,0x1E,0x3C,0x78,0x30}, {0x00,0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60},
{0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60,0x00}, {0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60,0x00}, {0x30,0x78,0x3C,0x1E,0x3C,0x78,0x30,0x00}, {0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18,0x00}, {0x00,0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18}, {0x00,0x30,0x78,0x3C,0x1E,0x3C,0x78,0x30}, {0x00,0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60},
{0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60,0x00}, {0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60,0x00}, {0x30,0x78,0x3C,0x1E,0x3C,0x78,0x30,0x00}, {0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18,0x00}, {0x00,0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18}, {0x00,0x30,0x78,0x3C,0x1E,0x3C,0x78,0x30}, {0x00,0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60},
{0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60,0x00} };
u16 ledlength[]= {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay\_ms(u16 i) { while(i--); }
void send(u8 n) { u8 i; CLK=0; SRCLK=0; for(i=0; i<8; i++) { SER=n>>7; n<<=1; SRCLK=0; SRCLK=1;
} CLK=1; }
int main() { u16 n,i,j=0; while(1) { for(i=0; i<100; i++) { for(n=0; n<8; n++) {
P1=ledlength[n]; send(ledwidth[j][n]); delay\_ms(100); P1=0xff; send(0x00);
} } j++; j%=21; } return 0; }
|