標(biāo)題: 心形花樣LED流水燈(帶程序) [打印本頁]
作者: 薄浩楠 時(shí)間: 2018-2-20 19:20
標(biāo)題: 心形花樣LED流水燈(帶程序)
32位51單片機(jī)流水燈全部資料51hei下載地址:
心形花樣LED流水燈(帶程序).doc
(217.5 KB, 下載次數(shù): 22)
2018-2-20 19:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
使用89C52做的,原理圖如下:
總共有32個(gè)LED燈,4個(gè)I/O全部用上了。
我在這里不加有LED保護(hù)電阻,用200的也可以
晶振用12M的或11.0592M也行,C1,C2用30PF。
PCB圖如下:
程序是用C語言寫的;
如下:- #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}; // 逐個(gè)點(diǎn)亮0~7
- uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐個(gè)點(diǎn)亮7~0
- uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐個(gè)滅0~7
- uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐個(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); //對角閃
- 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=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) // 逆時(shí)針逐個(gè)點(diǎn)亮
- {
- 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) // 逆時(shí)針逐個(gè)滅
- {
- 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) // 順時(shí)針逐個(gè)點(diǎn)亮
- {
- 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) // 順時(shí)針逐個(gè)滅
- {
- 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)//兩邊逐個(gè)滅
- {
- 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)//順時(shí)逐個(gè)同步亮
- {
- 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)//逆時(shí)逐個(gè)同步亮
- {
- 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)//順時(shí)逐個(gè)同步滅
- {
- 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)//逆時(shí)逐個(gè)同步滅
- {
- 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) //逆時(shí)逐段亮
- {
- 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) //逆時(shí)逐段一個(gè)點(diǎn)亮
- {
- 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); //兩邊逐個(gè)亮
- lbzgm(100,1); //兩邊逐個(gè)滅
- 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); //兩邊逐個(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); //對角閃
- nzdgl(300,10); //逆時(shí)逐段一個(gè)點(diǎn)亮
- 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); //逆時(shí)逐段亮
- 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); //逆時(shí)逐段一個(gè)點(diǎn)亮
- 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); //順時(shí)逐個(gè)同步亮
- nztm(200,1);
- nztl(200,1);
- sztm(200,1); //順時(shí)逐個(gè)同步滅
- }
- 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--);
- }
- }
-
復(fù)制代碼
因?yàn)?9C52的容量有限,所以還有幾個(gè)方式注釋掉了。
作者: 祝云章 時(shí)間: 2018-3-7 22:09
很好,感謝分享
作者: Y4H10 時(shí)間: 2020-11-16 12:11
哈哈哈哈孤鴻寡鵠過過過過公共機(jī)構(gòu)九宮格科技館更好 盡快恢復(fù)恢復(fù)發(fā)放胡椒粉和經(jīng)濟(jì)分級分工結(jié)婚后
作者: tdl6 時(shí)間: 2020-11-16 13:25
不錯(cuò),很漂亮,請問P0口子,是不是要用上拉電阻才可以吧?謝謝
作者: 265646 時(shí)間: 2020-11-16 14:05
是的,P0口沒有自帶電阻
作者: ffmydream 時(shí)間: 2020-11-16 15:12
我記得單片機(jī)總電流是有限制的,你這么多二極管全是灌電流,還沒有限流電阻,一個(gè)20mA左右,這少說也有5、600mA了,芯片發(fā)熱都是問題,實(shí)際沒有這樣做產(chǎn)品的
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
成人精品
|
国产乱码精品一区二区三区忘忧草
|
久久久久久久电影
|
免费一区二区三区
|
亚洲精品乱码久久久久久久久久
|
欧美人妖网站
|
天天色综|
国产一在线|
久久精品国产一区二区三区
|
欧美日韩精品久久久免费观看
|
亚洲第1页|
国产精品69av
|
精品视频免费
|
亚洲精品在线视频
|
免费精品
|
欧美精品一区三区
|
亚洲欧美自拍偷拍视频
|
国产韩国精品一区二区三区
|
日韩欧美网
|
欧美一级二级在线观看
|
欧美激情精品久久久久久变态
|
中文字幕 视频一区
|
米奇7777狠狠狠狠视频
|
久久综合一区
|
午夜国产一级
|
涩涩视频网
|
精品不卡
|
91在线一区二区三区
|
激情亚洲|
蜜桃视频一区二区三区
|
色姑娘综合网
|
一区二区三区精品视频
|
www.精品国产|
中文字幕在线一
|
天色综合网
|
青青草这里只有精品
|
欧美日韩精品久久久免费观看
|
亚洲男人网
|
日韩欧美一区在线
|
一区二区三区电影在线观看
|
色婷婷亚洲国产女人的天堂
|