|
樓主要的是32燈心形流水燈,這里的難點(diǎn)是流水燈,也就是燈是按一定順序一個(gè)一個(gè)亮,并一個(gè)一個(gè)滅,它不同于靜態(tài)顯示一個(gè)心形圖案,比靜態(tài)顯示難度大點(diǎn)。考慮到樓主是個(gè)初學(xué)者,做32燈的心形流水燈需要器件復(fù)雜,初學(xué)者很容易做不下來而放棄,所以建議樓主改用單片機(jī)+8X8的LED發(fā)光矩陣做一個(gè)20燈的心形流水燈,這樣比較容易實(shí)現(xiàn),技術(shù)上同樣可以得到很大煅練。
基于單片機(jī)+8X8LED發(fā)光矩陣,本人為樓主設(shè)計(jì)了一個(gè)心形流水燈方案。需要單片機(jī)1只,最小系統(tǒng)板1塊,8X8LED發(fā)光矩陣1個(gè),杜幫線16根。利用單片機(jī)控制發(fā)光矩陣發(fā)光,先靜態(tài)顯示一個(gè)心形圖案,然后先按順時(shí)針順顯示心形,完后再按逆時(shí)針順序顯示心形,完后重新開始。依此循環(huán)。
下面是設(shè)計(jì)圖:
ask5a.JPG (54.23 KB, 下載次數(shù): 48)
下載附件
2019-3-7 14:19 上傳
下面是相應(yīng)程序:
- #include<reg52.h>
- unsigned char hdata[]={0x38,0x44,0x42,0x21,0x21,0x42,0x44,0x38};
- unsigned char heart[][2]={{4,2},{5,1},{6,1},{7,2},{7,3},{7,4},{6,5},{5,6},{4,7},{3,7},{2,6},{1,5},{0,4},{0,3},{0,2},{1,1},{2,1},{3,2}};
- void delay(int ii){int i,j;for(i=0;i<ii;i++)for(j=0;j<110;j++);}
- void heart1()
- {int i;
- for(i=0;i<8;i++)
- {P2=1<<i;P3=~hdata[i];}
- }
- void heart2()
- {int i;
- for(i=0;i<18;i++)
- {P2=1<<heart[i][0];
- P3=~(1<<heart[i][1]);
- delay(5);
- }
- for(i=17;i>=0;i--)
- {P2=1<<heart[i][0];
- P3=~(1<<heart[i][1]);
- delay(5);
- }
- }
- main()
- {int i;
- while(1)
- {for(i=0;i<2500;i++)heart1();
- for(i=0;i<20;i++)heart2();
- }
- }
復(fù)制代碼
附件有完整的proteus設(shè)計(jì)和相配套的程序:
ask5a.zip
(24.7 KB, 下載次數(shù): 16)
2019-3-7 14:23 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|