爱心流水灯原理及制作(共17页).doc
精选优质文档-倾情为你奉上电路原理图:原件清单:1、51单片机 x1、40Pin 座 x12、LED x32(建议用5mm 七彩的)3、电阻470 x334、晶振12MHz x15、10uf 电解电容 x1、谐振瓷片电容30pf x26·其他的可以看自己的爱好去加7、其实也可以不用那么多的电阻,用几个排阻就OK了。效果展示:作品程序: #include<reg52.h> #define uchar unsigned charuchar flag=200;/uchar code Tab1=0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF;/暗中左移 向下uchar code Tab2=0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF;/暗中右移 向上uchar code Tab3=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00;/亮中左移 向下uchar code Tab4=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00;/亮中右移 向上uchar code Tab11=0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff;/暗中左移 向下uchar code Tab22=0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff;/uchar code Tab33=0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF;uchar code Tab44=0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF;uchar code Tab55=0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff;uchar code Tab5=0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff;uchar code Tab6=0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xff;uchar code Tab7=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar code Tab8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/void shansuo();void xl();/void delay(void) unsigned char m,n; for(m=0;m<flag;m+) for(n=0;n<250;n+) ; / void hy1(void) /点亮状态逆时针旋转90度(一个一个灭) unsigned char i; for(i=0;i<8;i+) P0=Tab11i;P1=Tab22i; P2=Tab11i;P3=Tab22i; delay(); for(i=0;i<8;i+) P0=Tab44i;P1=Tab55i; P2=Tab44i;P3=Tab55i; delay(); / void hy2(void) /暗中逆时针转360。(一个一个点亮) unsigned char i; for(flag=250;flag>0;flag=flag-50) P0=0xff;P1=0xff;P2=0xff;P3=0xff;for(i=0;i<8;i+) P0=Tab11i;delay(); for(i=0;i<8;i+) P2=Tab11i;delay(); for(i=0;i<8;i+) P3=Tab22i;delay(); for(i=0;i<8;i+) P1=Tab22i;delay(); flag=250;/ void hy3(void) /点亮中逆时针转360°(一个一个灭) unsigned char i;flag=50;P0=0x00;P1=0x00;P2=0x00;P3=0x00; for(i=0;i<8;i+) P0=Tab44i;delay(); for(i=0;i<8;i+) P2=Tab44i;delay(); for(i=0;i<8;i+) P3=Tab33i;delay(); for(i=0;i<8;i+) P1=Tab33i;delay(); flag=150;/ void hy4(void) /点亮状态顺时针旋转90度(一个一个灭) unsigned char i; for(i=0;i<8;i+) P1=Tab11i;P0=Tab22i; P3=Tab11i;P2=Tab22i; delay(); for(i=0;i<9;i+) P1=Tab6i;P0=Tab5i; P3=Tab6i;P2=Tab5i; delay(); / void hy2_1(void) /暗中逆时针转90度。(一个一个点亮) unsigned char i;flag=200;P0=0xff;P1=0xff;P2=0xff;P3=0xff; for(i=0;i<9;i+) P0=Tab11i;delay(); flag=110; for(i=0;i<9;i+) P2=Tab11i;delay(); flag=80; for(i=0;i<9;i+) P3=Tab22i;delay(); flag=80; for(i=0;i<9;i+) P1=Tab22i;delay(); / void hy2_2(void) /暗中逆时针转180度。(一个一个点亮) unsigned char i;P0=0xff;P1=0xff;P2=0xff;P3=0xff; for(i=0;i<8;i+) P0=Tab11i;delay(); for(i=0;i<8;i+) P2=Tab11i;delay(); P0=0xff;P2=0xff; for(i=0;i<8;i+) P3=Tab22i;delay(); for(i=0;i<8;i+) P1=Tab22i;delay(); P1=0xff;P3=0xff;/ void hy2_3(void) /暗中向下180。(一个一个点亮) unsigned char i;P0=0xff;P1=0xff;P2=0xff;P3=0xff; for(i=0;i<8;i+) P0=Tab11i; P1=Tab11i;delay(); for(i=0;i<8;i+) P2=Tab11i;P3=Tab11i;delay(); / flag=100; for(i=0;i<8;i+) P2=Tab33i; P3=Tab33i;delay(); for(i=0;i<8;i+) P0=Tab33i;P1=Tab33i;delay(); flag=200; / void hy2_4(void) /暗中逆时针转360。(一个一个点亮) unsigned char i;P0=0xff;P1=0xff;P2=0xff;P3=0xff; for(i=0;i<8;i+) P0=Tab11i;P3=Tab22i;delay(); for(i=0;i<8;i+) P2=Tab11i;P1=Tab22i;delay(); / flag=100;for(i=0;i<8;i+) P0=Tab44i;P3=Tab5i;delay(); for(i=0;i<8;i+) P2=Tab44i;P1=Tab5i;delay(); flag=200;/ void hy5(void) /先向下伸展,然后向上伸展逐渐点亮 unsigned char i; for(i=0;i<8;i+) P0=Tab8i;P1=Tab8i;delay(); P0=0xff;P1=0xff; for(i=0;i<8;i+) P2=Tab8i;P3=Tab8i;delay(); P2=0xff;P3=0xff; for(i=0;i<8;i+) P2=Tab7i;P3=Tab7i;delay(); P2=0xff;P3=0xff; for(i=0;i<8;i+) P0=Tab7i;P1=Tab7i;delay(); P0=0xff;P1=0xff;/void jr(void)/聚拢 unsigned char i; for(i=0;i<9;i+) /8位控制码 P0=Tab1i;P1=Tab1i; P2=Tab2i;P3=Tab2i; delay(); for(i=0;i<9;i+) P0=Tab2i;P1=Tab2i; P2=Tab1i;P3=Tab1i;delay(); / for(i=0;i<9;i+) P0=Tab1i;P1=Tab1i; P2=Tab2i;P3=Tab2i; delay(); for(i=0;i<9;i+) P0=Tab2i;P1=Tab2i; P2=Tab1i;P3=Tab1i; delay(); xl(); /星星眨眼xl(); /星星眨眼/ for(i=0;i<9;i+) P0=Tab3i; P1=Tab3i; P2=Tab4i; P3=Tab4i;delay(); for(i=0;i<9;i+) P0=Tab4i;P1=Tab4i; P2=Tab3i;P3=Tab4i;delay(); / for(i=0;i<9;i+) P0=Tab1i;P1=Tab1i; P2=Tab2i; P3=Tab2i; delay(); for(i=0;i<9;i+) P0=Tab4i;P1=Tab4i; P2=Tab3i;P3=Tab3i;delay(); / for(i=0;i<9;i+) P0=Tab3i; P1=Tab3i; P2=Tab4i;P3=Tab4i; delay(); for(i=0;i<9;i+) P0=Tab2i;P1=Tab2i; P2=Tab1i;P3=Tab1i; delay(); /void azzy(void) /暗中向下 unsigned char i;flag=200; for(i=0;i<8;i+) P2=0xff;P3=0xff; P1=Tab1i;P0=Tab1i;delay(); for(i=0;i<9;i+) P1=0xff;P0=0xff; P2=Tab1i;P3=Tab1i; delay(); /void azyy(void) /暗中you移 unsigned char i; for(i=0;i<8;i+) P0=0xff;P1=0xff; P2=Tab2i;P3=Tab2i; delay(); for(i=0;i<9;i+) P0=Tab2i;P1=Tab2i; delay(); / void led_flow1(void) unsigned char i; for(i=0;i<9;i+) P2=0;P3=0; P1=Tab3i;P0=Tab3i;delay(); for(i=0;i<9;i+) P2=Tab3i;P3=Tab3i; delay(); / void lzyy(void) /亮中右移 unsigned char i; for(i=0;i<9;i+) P0=0x00;P1=0x00; P2=Tab4i;P3=Tab4i;delay(); for(i=0;i<9;i+) P0=Tab4i;P1=Tab4i; delay(); /void shansuo(void)/全部灯闪烁uchar i;for(i=0;i<3;i+)P0=0xff;P1=0xff;P2=0xff;P3=0xff;delay();delay();P0=0x00;P1=0x00;P2=0x00;P3=0x00;delay();delay();void xl(void)/相邻俩个变换uchar i;for(i=0;i<3;i+)P0=0xAA;P1=0xAA;P2=0xAA;P3=0xAA;delay();delay();P0=0x55;P1=0x55;P2=0x55;P3=0x55;delay();delay();/void sxb(void)/上下半 unsigned char i;P0=0xff;P1=0xff;P2=0x00;P3=0x00;delay();delay();delay();delay(); for(i=0;i<8;i+) P0=Tab11i; P1=Tab11i;delay(); for(i=0;i<8;i+) P0=Tab11i; P1=Tab11i;delay(); for(i=0;i<8;i+) P0=Tab11i; P1=Tab11i;delay(); for(i=0;i<3;i+) P0=0x00;P1=0x00;delay();delay();P0=0xff;P1=0xff;delay();delay();/void jc(void)/uchar i; for(i=0;i<3;i+) P0=0x00;P3=0x00;P1=0xff;P2=0xff;delay();delay();delay();delay();P1=0x00;P2=0x00;P0=0xff;P3=0xff;delay();delay();delay();delay();/void azzy_1(void) /暗中向下 unsigned char i,i1; for(flag=80;flag>0;flag=flag-10) for(i=0;i<8;i+) P2=0xff;P3=0xff; P1=Tab1i;P0=Tab1i;delay(); for(i=0;i<9;i+) P1=0xff;P0=0xff; P2=Tab1i;P3=Tab1i; delay(); flag=10; for(i1=0;i1<30;i1+) for(i=0;i<8;i+) P2=0xff;P3=0xff; P1=Tab1i;P0=Tab1i;delay(); for(i=0;i<9;i+) P1=0xff;P0=0xff; P2=Tab1i;P3=Tab1i; delay(); flag=200; /void js(void)/结束uchar i;hy2_3();for(i=0;i<3;i+) P0=0xff;P2=0xff;delay();delay();P0=0x00;P2=0x00;delay();delay();/for(i=0;i<3;i+) P1=0xff;P3=0xff;delay();delay();P1=0x00;P3=0x00;delay();delay();/for(i=0;i<3;i+) P1=0x00;P3=0x00;P0=0x00;P2=0x00;delay();delay();P1=0xff;P3=0xff;P0=0xff;P2=0xff;delay();delay();/ void main(void) while (1)azzy_1();/hy2(); /暗中逆时针转360°(一个一个点亮)hy3(); /点亮中逆时针转360°(一个一个灭)hy2_1();/暗中逆时针转90度。(一个一个点亮)hy2_2();/暗中逆时针转180度。(一个一个点亮)hy2_3();/暗中向下180。(一个一个点亮)hy3(); hy2_4();/hy1(); /暗中状态逆时针旋转90度(一个一个亮)jc();/交叉四叶草hy1();hy4(); /点亮状态顺时针旋转90度(一个一个灭?jc();hy4();/hy5();/先向下伸展,然后向上伸展逐渐点亮jr();/azzy();/暗中向下边伸展azyy();/暗中向上伸展 /xl(); /相邻变换(星星眨眼)shansuo();/全部灯闪烁(一亮一灭)/led_flow1();/亮中向下lzyy(); /亮中向上led_flow1();/亮中向下azyy(); /暗中向上shansuo();/sxb();/上下半azzy();/暗中向下lzyy();/亮中向上azzy();/暗中向下lzyy();/亮中向上/shansuo();/闪烁azyy();/暗中向上lzyy();/亮中向上azyy();/暗中向上lzyy();/亮中向上shansuo();js();/结束 专心-专注-专业