32路51单片机流水灯程序 给喜欢折腾DIY的朋友,来一点小玩意,原理图就不上了既然要玩单片机,我想原理图都有所了解,具备的材料,面包板,编程器。电脑是必须具备的哈,没有这些玩单片机就是一个童话,好了废话不说直接上货 #include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个点亮 0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮 7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭 0~7 uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个灭 7~0 /*/ void delay(uint t); //延时 void zg(uint t,uchar a);//两边逐个亮 void qs(uint t,uchar a);//全部闪烁 void zgxh(uint t,uchar a); // 逆时针逐个点亮 //void zgxh1(uint t,uchar a); // 顺时针逐个点亮 void djs(uint t,uchar a); //对角闪 void lbzgm(uint t,uchar a);//两边逐个灭 //void sszgm(uint t,uchar a); // 顺时针逐个灭 void nszgm(uint t,uchar a); // 逆时针逐个灭 void sztl(uint t,uchar a);//顺时逐个同步亮 void nztl(uint t,uchar a);//逆时逐个同步亮 void sztm(uint t,uchar a);//顺时逐个同步灭 void nztm(uint t,uchar a);//逆时逐个同步灭 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); //逆时逐段亮 void nzdgl(uint t,uchar a); //逆时逐段一个点亮 void jgs(uint t,uchar a); //间隔闪 // void zg(uint t,uchar a)//两边逐个亮 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0xff; P0=0x7f;delay(t); for(i=0;i<7;i++) { P0=table1[i+1]; P2=table1[i]; delay(t); } P2=0x00;P1=0xfe; delay(t); for(i=0;i<7;i++) { P1=table[i+1]; P3=table1[i]; delay(t); } P3=0x00;delay(t); } } void qs(uint t,uchar a) //全部闪烁 { uchar j; for(j=0;j<a;j++) { P0=P1=P2=P3=0xff; delay(t); P0=P1=P2=P3=0x00; delay(t); } } void zgxh(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=table1[i]; delay(t); } for(i=0;i<8;i++) { P1=table[i]; delay(t); } for(i=0;i<8;i++) { P3=table[i]; delay(t); } for(i=0;i<8;i++) { P2=table[i]; delay(t); } } } void nszgm(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=table3[i];delay(t); } for (i=0;i<8;i++) { P1=table2[i];delay(t); } for (i=0;i<8;i++) { P3=table2[i];delay(t); } for (i=0;i<8;i++) { P2=table2[i];delay(t); } } } /* void zgxh1(uint t,uchar a) // 顺时针逐个点亮 { uchar i,j; for (j=0;j<a;j++) { P0=P1=P2=P3=0xff; for (i=0;i<8;i++) { P2=table1[i]; delay(t); } for(i=0;i<8;i++) { P3=table1[i]; delay(t); } for(i=0;i<8;i++) { P1=table1[i]; delay(t); } for(i=0;i<8;i++) { P0=table[i]; delay(t); } } } */ /* void sszgm(uint t,uchar a) // 顺时针逐个灭 { uchar i,j; for(j=0;j<a;j++) { P0=P1=P2=P3=0x00; for (i=0;i<8;i++) { P2=table3[i];delay(t); } for (i=0;i<8;i++) { P3=table3[i];delay(t); } for (i=0;i<8;i++) { P1=table3[i];delay(t); } for (i=0;i<8;i++) { P0=table2[i];delay(t); } } } */ void djs(uint t,uchar a) //对角闪 { uchar j; for(j=0;j<a;j++) { P0=P1=P2=P3=0xff; P0=P3=0x00; delay(t); P0=P1=P2=P3=0xff; P1=P2=0x00; delay(t); } } void lbzgm(uint t,uchar a)//两边逐个灭 { uchar i,j; for (j=0;j<a;j++) { P0=P2=0x00; P3=0x01;delay(t); for(i=7;i>1;i–) { P1=table[i-1];P3=table1[i-2]; delay(t); } P1=0xfe;P3=0xff;delay(t); P1=0xff;P2=0x01;delay(t); for(i=7;i>1;i–) { P0=table1[i-1]; P2=table1[i-2]; delay(t); } P0=0x7f;P2=0xff;delay(t); P0=0xff;delay(t); } } void sztl(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=table[i]; P1=P2=P3=table1[i]; delay(t); } } } void nztl(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=table1[i]; P1=P2=P3=table[i]; delay(t); } } } void sztm(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=table2[i]; P1=P2=P3=table3[i]; delay(t); } } } void nztm(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=table3[i]; P1=P2=P3=table2[i]; delay(t); } } } void hwzjl(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=P1=table1[i]; P3=table[i];delay(t); } } } void hwzjm(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=P1=table3[i]; P3=table2[i];delay(t); } } } /* void swzjl(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=P1=table[i]; P3=table1[i];delay(t); } } } void swzjm(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=P1=table2[i]; P3=table3[i];delay(t); } } } */ void nzdl(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=table1[i]; delay(t); } P0=0xff; for(i=0;i<8;i++) { P1=table[i]; delay(t); } P1=0xff; for(i=0;i<8;i++) { P3=table[i]; delay(t); } P3=0xff; for(i=0;i<8;i++) { P2=table[i]; delay(t); } P2=0xff; } } void nzdgl(uint t,uchar a) //逆时逐段一个点亮 { uchar i,j,k,l; for (j=0;j<a;j++) { k=table1[0]; P0=k;l=table[0]; P1=P2=P3=l;delay(t); for(i=0;i<8;i++) { k=_crol_(k,-1); P0=k; l=_crol_(l,1); P1=P2=P3=l; delay(t); } } } void jgs(uint t,uchar a) //间隔闪 { uchar j; for (j=0;j<a;j++) { P0=0x55;P1=P2=P3=0xaa; delay(t); P0=0xaa;P1=P2=P3=0x55; delay(t); } } void main() { uchar i; while(1) { zg(100,1); //两边逐个亮 lbzgm(100,1); //两边逐个灭 jgs(300,10); djs(100,20); //对角闪 //////////////////////////////////////////// P1=P2=P3=0xff; for(i=0;i<3;i++) { P0=0x00;delay(800); P0=0xff;delay(800); } P0=0x00; for(i=0;i<3;i++) { P1=0x00;delay(800); P1=0xff;delay(800); } P1=0x00; for(i=0;i<3;i++) { P3=0x00;delay(800); P3=0xff;delay(800); } P3=0x00; for(i=0;i<3;i++) { P2=0x00;delay(800); P2=0xff;delay(800); } qs(500,3); ///////////////////////////////////////////// for(i=0;i<6;i++) { zgxh(50,1); nszgm(50,1); } djs(100,20); //对角闪 for(i=0;i<3;i++) { zg(100,1); //两边逐个亮 lbzgm(100,1); //两边逐个灭 } qs(200,10);djs(100,50); for(i=0;i<5;i++) { sztl(200,1); //顺时逐个同步亮 nztm(200,1); nztl(200,1); sztm(200,1); //顺时逐个同步灭 } djs(300,10); //对角闪 nzdgl(300,10); //逆时逐段一个点亮 jgs(300,10); //间隔闪 for(i=0;i<3;i++) { zgxh(100,1); nszgm(100,1); } /* for(i=0;i<5;i++) { zgxh1(100,1); sszgm(100,1); } */ nzdl(200,3); //逆时逐段亮 jgs(50,100); //间隔闪 /*///////////////////////////////////////////////////// P0=P1=P2=P3=0xff; for (i=0;i<8;i++) { P0=table1[i]; delay(200); } for (i=0;i<8;i++) { P1=table[i]; delay(200); } for(i=0;i<3;i++) { P0=P1=0x00;delay(200); P0=P1=0xff;delay(200); } for (i=0;i<8;i++) { P2=table1[i]; delay(200); } for (i=0;i<8;i++) { P3=table1[i]; delay(200); } for(i=0;i<3;i++) { P2=P3=0x00;delay(200); P2=P3=0xff;delay(200); } */////////////////////////////////////////////////// nzdgl(50,40); //逆时逐段一个点亮 for(i=0;i<4;i++) { zg(100,1);qs(100,10); lbzgm(100,1); } // djs(50,100); //对角闪 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); //对角闪 /* for(i=0;i<10;i++) { swzjl(200,1); //竖往中间亮 swzjm(200,1); //竖往中间灭 } */ for(i=0;i<5;i++) { zgxh(100,1); nszgm(100,1); } djs(100,20); //对角闪 zg(300,1); lbzgm(300,1); /* for(i=0;i<5;i++) { zgxh1(100,1); sszgm(100,1); } */ for(i=0;i<5;i++) { sztl(200,1); //顺时逐个同步亮 nztm(200,1); nztl(200,1); sztm(200,1); //顺时逐个同步灭 } djs(500,20); //对角闪 djs(100,30); //对角闪 djs(50,50); //对角闪 // djs(10,100); //对角闪 delay(1000); } } void delay(uint t) { uint x,y; for (x=t;x>0;x–) { for (y=120;y>0;y–); } }
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/37623.html