一、設計目的
設計一個微控制器控制的LED點陣顯示系統,基本要求為:LED點陣能夠「心型」圖形。然後在此基礎上,可以自行增加功能,例如但不限於:交替顯示「心型」一個自訂圖形。(自訂圖形可選但不限於下列圖形:Δ、▲、△、◆、◇、★、☆、♀、♂等)。所謂交替顯示是指點陣中依次顯示A、B、C三種文字或圖形(每個圖形點亮若幹時間)並迴圈往復。
二、設計任務及要求
1.學習課程資料中附上的「普中51微控制器開發攻略--A5(V5.5).pdf」 其中的第16 章LED 點陣實驗。
2.學習完該內容後,設計一個微控制器控制的LED點陣顯示系統,基本要求為:LED點陣能夠「心型」圖形。然後在此基礎上,同學們可以自行增加功能,例如但不限於:交替顯示「心型」一個自訂圖形。(自訂圖形可選但不限於下列圖形:Δ、▲、△、◆、◇、★、☆、♀、♂等)。所謂交替顯示是指點陣中依次顯示A、B、C三種文字或圖形(每個圖形點亮若幹時間)並迴圈往復。
3.使用微控制器開發板可能需要用到的知識及軟體:
詳見「普中51微控制器開發攻略--A5(V5.5).pdf」 --2.2 開發板使用方法(18到25頁內容)
三、方案設計
首先將符號進行字模提取,並且編寫程式,將微控制器的2口和3口作為輸出口,分別接入LED點陣的上下兩排引腳。使用掃描的方式,使LED點陣可以正常的顯示。進一步設計,增加延時函式,使得在一個圖形顯示完後,能夠緊接著顯示另一個影像,並迴圈往復,最終完成設計。
(一)前期準備
心形點陣圖
圖片
圖片
圖片
(二)軟體設計
#include<reg52.h>
char code hang0[]={0x18,0x24,0x42,0x84,0x84,0x42,0x24,0x18};
char code hang1[]={0x18,0x24,0x42,0x81,0x81,0x42,0x24,0x18};
char code hang2[]={0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x3C,0x18};
char code lie1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
char code lie0[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
int i;
int num;
int m;
int n;
int c;
void delay(int a)
{
while(a--);
}
void main(){
int t;
t=6;
n=0;
while(1){
n++;
c=n%2;
for(i=0;i<1500;i++){
if(i<500)
{
for(num=0;num<8;num++){
if(c==0){
P1=lie0[num];
}else{
P3=lie0[num];
}
P2=hang0[num];
delay(t);
}
}
if(i>=500&&i<1000)
{
for(num=0;num<8;num++){
if(c==0){
P1=lie0[num];
}else{
P3=lie0[num];
}
P2=hang1[num];
delay(t);
}
}
if(i>=1000)
{
for(num=0;num<8;num++){
if(c==0){
P1=lie0[num];
}else{
P3=lie0[num];
}
P2=hang2[num];
delay(t);
}
}
}
}
}
四、偵錯及結果
實物圖1
實物圖2
五、設計總結
微控制器控制LED點陣的實驗設計總結如下:
1. 材料準備:準備LED點陣、微控制器開發板(如Arduino、Raspberry Pi等)、麵包板、導線等。
2. 連線電路:將LED點陣與微控制器開發板連線起來,確保正確的極性和接線。通常需要使用導線和電阻來連線。
3. 編程:編寫控制LED點陣的程式,包括控制LED燈的亮滅、行列掃描和顯示圖案等功能。具體的程式語言和程式碼邏輯根據使用的微控制器和開發板而有所不同。
4. 上傳程式:將編寫的程式上傳到微控制器開發板上。
5. 測試:開啟微控制器開發板,觀察LED點陣是否按照預期的方式顯示。可以測試不同的圖案、動畫或文字,並確保LED點陣能夠正確顯示。
6. 調整和改進:根據測試結果進行調整和改進,確保LED點陣能夠準確顯示設計好的圖案。
總的來說,微控制器控制LED點陣的實驗設計需要包括硬體連線和軟體編程,透過這個實驗可以更好地理解微控制器控制外圍裝置的原理,並且鍛煉了編程能力和電路連線能力。