#include<reg51.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char uchar code zou[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//單個(gè)從0到7 uchar code you[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//單個(gè)從7到0 uchar code liang0_7[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐個(gè)點(diǎn)亮0~7 uchar code liang7_0[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐個(gè)點(diǎn)亮7~0 uchar code mie0_7[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐個(gè)滅0~7 uchar code mie7_0[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐個(gè)滅7~0 /***********************************************************/ void delay(uint t); //延時(shí) void zg(uint t,uchar a);//兩邊逐個(gè)亮 void qs(uint t,uchar a);//全部閃爍 void zgxh(uint t,uchar a); // 逆時(shí)針逐個(gè)點(diǎn)亮 //void zgxh1(uint t,uchar a); // 順時(shí)針逐個(gè)點(diǎn)亮 void djs(uint t,uchar a); //對(duì)角閃 void lbzgm(uint t,uchar a);//兩邊逐個(gè)滅 //void sszgm(uint t,uchar a); // 順時(shí)針逐個(gè)滅 void nszgm(uint t,uchar a); // 逆時(shí)針逐個(gè)滅 void sztl(uint t,uchar a);//順時(shí)逐個(gè)同步亮 void nztl(uint t,uchar a);//逆時(shí)逐個(gè)同步亮 void sztm(uint t,uchar a);//順時(shí)逐個(gè)同步滅 void nztm(uint t,uchar a);//逆時(shí)逐個(gè)同步滅 void hwzjl(uint t,uchar a); //橫往中間亮 void hwzjm(uint t,uchar a); //橫往中間滅 //void swzjl(uint t,uchar a); //豎往中間亮 //void swzjm(uint t,uchar a); //豎往中間滅 void nzdl(uint t,uchar a); //逆時(shí)逐段亮 void nzdgl(uint t,uchar a); //逆時(shí)逐段一個(gè)點(diǎn)亮 void jgs(uint t,uchar a); //間隔閃 /**********************************************************/ void zg(uint t,uchar a)//兩邊逐個(gè)亮 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0x00; P0=0x01; delay(t); for(i=0;i<7;i++) { P0=liang0_7[i+1]; P3=liang7_0[i]; delay(t); } P3=0xff;P1=0x01; delay(t); for(i=0;i<7;i++) { P1=liang0_7[i+1]; P2=liang7_0[i]; delay(t); } P2=0xff;delay(t); } } void qs(uint t,uchar a) //全部閃爍 { uchar j; for(j=0;j<a;j++) { P0=P1=P2=P3=0x00; delay(t); P0=P1=P2=P3=0xff; delay(t); } } void zgxh(uint t,uchar a) // 逆時(shí)針逐個(gè)點(diǎn)亮 { uchar i,j; for (j=0;j<a;j++) { P0=P1=P2=P3=0xff; for (i=0;i<8;i++) { P3=liang7_0[i]; delay(t); } for(i=0;i<8;i++) { P2=liang7_0[i]; delay(t); } for(i=0;i<8;i++) { P1=liang7_0[i]; delay(t); } for(i=0;i<8;i++) { P0=liang7_0[i]; delay(t); } } } void nszgm(uint t,uchar a) // 逆時(shí)針逐個(gè)滅 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0xff; for (i=0;i<8;i++) { P3=mie7_0[i];delay(t); } for (i=0;i<8;i++) { P2=mie7_0[i];delay(t); } for (i=0;i<8;i++) { P1=mie7_0[i];delay(t); } for (i=0;i<8;i++) { P0=mie7_0[i];delay(t); } } } void djs(uint t,uchar a) //對(duì)角閃 { uchar j; for(j=0;j<a;j++) { P0=P1=P2=P3=0x00; P0=P3=0xff; delay(t); P0=P1=P2=P3=0x00; P1=P2=0xff; delay(t); } } void lbzgm(uint t,uchar a)//兩邊逐個(gè)滅 { uchar i,j; for (j=0;j<a;j++) { P0=P1=P2=P3=0x00; P3=0x7f;delay(t); for(i=0;i<7;i++) { P3=mie7_0[i+1]; P0=mie0_7[i]; delay(t); } P0=0x00; P2=0x7f;delay(t); for(i=0;i<7;i++) { P2=mie7_0[i+1]; P1=mie0_7[i]; delay(t); } P1=0x00;delay(t); } } void sztl(uint t,uchar a)//順時(shí)逐個(gè)同步亮 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P0=liang0_7[i]; P1=P2=P3=liang0_7[i]; delay(t); } } } void nztl(uint t,uchar a)//逆時(shí)逐個(gè)同步亮 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P0=liang7_0[i]; P1=P2=P3=liang7_0[i]; delay(t); } } } void sztm(uint t,uchar a)//順時(shí)逐個(gè)同步滅 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=mie0_7[i]; P1=P2=P3=mie0_7[i]; delay(t); } } } void nztm(uint t,uchar a)//逆時(shí)逐個(gè)同步滅 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=mie7_0[i]; P1=P2=P3=mie7_0[i]; delay(t); } } } void hwzjl(uint t,uchar a) //橫往中間亮 { uchar i,j; for (j=0;j<a;j++) { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P0=P2=liang0_7[i]; P1=P3=liang7_0[i];delay(t); } } } void hwzjm(uint t,uchar a) //橫往中間滅 { uchar i,j; for (j=0;j<a;j++) { P0=P1=P2=P3=0xff; for(i=0;i<8;i++) { P0=P2=mie0_7[i]; P1=P3=mie7_0[i];delay(t); } } } void nzdl(uint t,uchar a) //逆時(shí)逐段亮 { uchar i,j; for (j=0;j<a;j++) { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P0=liang0_7[i]; delay(t); } P0=0x00; for(i=0;i<8;i++) { P1=liang0_7[i]; delay(t); } P1=0x00; for(i=0;i<8;i++) { P2=liang0_7[i]; delay(t); } P2=0x00; for(i=0;i<8;i++) { P3=liang0_7[i]; delay(t); } P3=0x00; } } void nzdgl(uint t,uchar a) //逆時(shí)逐段一個(gè)點(diǎn)亮 { uchar i,j; for (j=0;j<a;j++) { P0=P1=P2=P3=0x00; for(i=0;i<8;i++) { P3=liang7_0[i]; delay(t); } P3=0x00; for(i=0;i<8;i++) { P2=liang7_0[i]; delay(t); } P2=0x00; for(i=0;i<8;i++) { P1=liang7_0[i]; delay(t); } P1=0x00; for(i=0;i<8;i++) { P0=liang7_0[i]; delay(t); } P0=0x00; } } void jgs(uint t,uchar a) //間隔閃 { uchar j; for (j=0;j<a;j++) { P0=P1=P2=P3=0x55; delay(t); P0=P1=P2=P3=0xaa; delay(t); } } void main() { uchar i; while(1) { zg(100,1); //兩邊逐個(gè)亮 lbzgm(100,1); //兩邊逐個(gè)滅 jgs(300,10); djs(100,20); //對(duì)角閃 //////////////////////////////////////////// P1=P2=P3=0x00; for(i=0;i<3;i++) { P0=0xff;delay(800); P0=0x00;delay(800); } P0=0xff; for(i=0;i<3;i++) { P1=0xff;delay(800); P1=0x00;delay(800); } P1=0xff; for(i=0;i<3;i++) { P2=0xff;delay(800); P2=0x00;delay(800); } P2=0xff; for(i=0;i<3;i++) { P3=0xff;delay(800); P3=0x00;delay(800); } P3=0xff; qs(500,3); ///////////////////////////////////////////// for(i=0;i<6;i++) { zgxh(50,1); nszgm(50,1); } djs(100,20); //對(duì)角閃 for(i=0;i<3;i++) { zg(100,1); //兩邊逐個(gè)亮 lbzgm(100,1); //兩邊逐個(gè)滅 } qs(200,10);djs(100,50); for(i=0;i<5;i++) { sztl(200,1); //順時(shí)逐個(gè)同步亮 nztm(200,1); nztl(200,1); sztm(200,1); //順時(shí)逐個(gè)同步滅 } djs(300,10); //對(duì)角閃 nzdgl(300,10); //逆時(shí)逐段一個(gè)點(diǎn)亮 jgs(300,10); //間隔閃 for(i=0;i<3;i++) { zgxh(100,1); nszgm(100,1); } nzdl(200,3); //逆時(shí)逐段亮 jgs(50,100); //間隔閃 nzdgl(50,40); //逆時(shí)逐段一個(gè)點(diǎn)亮 for(i=0;i<4;i++) { zg(100,1);qs(100,10); lbzgm(100,1); } // djs(50,100); //對(duì)角閃 for(i=0;i<3;i++) { zgxh(100,1); nszgm(100,1); } djs(1000,10); for(i=0;i<10;i++) { hwzjl(200,1); //橫往中間亮 hwzjm(200,1); //橫往中間滅 } djs(300,10); //對(duì)角閃 for(i=0;i<5;i++) { zgxh(100,1); nszgm(100,1); } djs(100,20); //對(duì)角閃 zg(300,1); lbzgm(300,1); for(i=0;i<5;i++) { sztl(200,1); //順時(shí)逐個(gè)同步亮 nztm(200,1); nztl(200,1); sztm(200,1); //順時(shí)逐個(gè)同步滅 } djs(500,20); //對(duì)角閃 djs(100,30); //對(duì)角閃 djs(50,50); //對(duì)角閃 // djs(10,100); //對(duì)角閃 delay(1000); } } void delay(uint t) { uint x,y; for (x=t;x>0;x--) { for (y=120;y>0;y--); } }