8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
來源:重慶LED顯示屏 發(fā)布時間:2018年04月30日
首先我們看一下8*8led顯示屏的原理
8*8led顯示屏?的原理
從圖中可以看出,8X8點(diǎn)陣共需要64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮;要實(shí)現(xiàn)顯示圖形或字體,只需考慮其顯示方式。通過編程控制各顯示點(diǎn)對應(yīng)LED陽極和陰極端的電平,就可以有效的控制各顯示點(diǎn)的亮滅。 例如:要實(shí)現(xiàn)一根柱形的亮法,如圖所示,對應(yīng)的一列為一根豎柱,或者對應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮的方法如下所述: 一根豎柱:對應(yīng)的列置1,而行則采用掃描的方法來實(shí)現(xiàn)。 一根橫柱:對應(yīng)的行置0,而列則采用掃描的方法來實(shí)現(xiàn)
下圖是4個8*8LED組成的顯示屏。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
這里我把點(diǎn)陣LED顯示屏制作的電路原理分成兩個部分來介紹即顯示屏電路和顯示屏驅(qū)動電路。
一、 顯示屏電路
本人用的是共陰極的8*8點(diǎn)陣屏,在市場上是比較容易買到,下圖是8*8點(diǎn)陣屏的實(shí)物圖。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
點(diǎn)陣屏有兩個類型,一類為共陰極(左),另一類則為共陽極(右),下圖給出了兩種類型的內(nèi)部電路原理及相應(yīng)的管腳圖。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
LED陣列的顯示方式是按顯示編碼的順序,一行一行地顯示。每一行的顯示時間大約為4ms,由于人類的視覺暫留現(xiàn)象,將感覺到8行LED是在同時顯示的。若顯示的時間太短,則亮度不夠,若顯示的時間太長,將會感覺到閃爍。本文采用低電平逐行掃描,高電平輸出顯示信號。即輪流給行信號輸出低電平,在任意時刻只有一行發(fā)光二極管是處于可以被點(diǎn)亮的狀態(tài) ,其它行都處于熄滅狀態(tài)。
為了方便調(diào)試本文把4塊8*8組成的16*16的點(diǎn)陣屏的行信號掃描輸出管腳和列信號顯示輸出管腳分別引到顯示屏的兩邊。
Protel原理圖如下:
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
如圖4 所示的原理圖中的Si(i=1,2,3,…,16) 代表行掃描信號輸出,Di(i=1,2,3,…,16)代表列顯示信號輸出。
實(shí)物電路圖的正反面如下:
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
二、 顯示屏驅(qū)動電路
顯示屏驅(qū)動電路的原理圖如下:
顯示屏驅(qū)動電路主要由主芯片控制電路、電源電路、控制信號放大電路等組成。
1、主芯片控制電路
該部分電路主要由AT89S52和74LS154組成。單片機(jī)的P0和P2號控制顯示信號的輸出,P1號的低4位控制74LS154的譯碼輸入,從而控制掃描信號的輸出。
2、電源電路
整個電路的供電由USB電源提供,利用我們的電腦主機(jī)USB接口可以輸出+5V電壓,方便我們在實(shí)驗(yàn)室調(diào)試
3、控制信號放大電路
為提供負(fù)載能力,在P0和P2口接16個常用9013的NPN三極管放大驅(qū)動信號。電路中列方向由p0口和p2口完成掃描,由于p0口沒有上拉電阻,因此接一個1k*8的排阻上拉。
行方向則由4—16譯碼器74LS154完成掃描,它由89C51的P1.0---P1.3控制。同樣,驅(qū)動部分則是16個9015的三極管完成的。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
三、 程序與軟件
在UCDOS中文宋體字庫中,每一個字由16行16列的點(diǎn)陣組成顯示,即國標(biāo)漢字庫中的每一個字均由256點(diǎn)陣來表示。我們可以把每一個點(diǎn)理解為一個像素,而把每一個字的字形理解為一幅圖像。事實(shí)上這個漢字屏不僅可以顯示漢字, 也可以顯示在256像素范圍內(nèi)的任何圖形。用8位的AT89S52單片機(jī)控制, 由于單片機(jī)的總線為8位,一個字需要拆分為2個部分如圖9所示。本電路把它拆分為左部和右部,左部由16(行)*8(列)點(diǎn)陣組成, 下部也由16(行)*8(列)點(diǎn)陣組成。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
為了讓大家更清楚的理解點(diǎn)陣的掃描過程,在這我們以顯示漢字“我”為例,來說明其掃描原理:
單片機(jī)首先由P2口輸出顯示數(shù)據(jù)信號給右部分的第一行如圖9所示,即第一行的P20---P27口。方向?yàn)镻20到P27 ,顯示漢字“我”時,P21點(diǎn)亮,由左到右排,為P20滅,P21亮, P22滅,P23滅, P24滅, P25滅, P26滅, P27滅。即二進(jìn)制00000010,轉(zhuǎn)換為16進(jìn)制為 0x02。
右部分的第一行完成后,繼續(xù)掃描左半部的第一行,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由左往右掃描,即從P00向P07方向掃描,從上圖可以看到,這一行只有P05、P06亮,其它滅, 即為00000110,16進(jìn)制則為0x60。然后單片機(jī)再次轉(zhuǎn)向右半部第二行,仍為P21、P23點(diǎn)亮,為01010000,即16進(jìn)制0x0A。這一行完成后繼續(xù)進(jìn)行左半部分的第二行掃描,P02、P03、P04點(diǎn)亮,為二進(jìn)制00111000,即16進(jìn)制0x1C。
依照這個方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個8位,可以得出漢字“我”的掃描代碼為:
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,
0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,
0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08
由這個原理可以看出, 無論顯示何種字體或圖像, 都可以用這個方法來分析出它的掃描代碼從而顯示在屏幕上。
不過現(xiàn)在有很多現(xiàn)成的漢字字模生成軟件, 我們就不必自己去畫表格算代碼了。
在網(wǎng)上漢字字模生成軟件有很多種,本例中的“我”字的取模方式為以橫向8個連續(xù)點(diǎn)構(gòu)成一個字節(jié),最左邊的點(diǎn)為字節(jié)的最低位,即BIT0,最右邊的點(diǎn)為BIT7。很少有字模軟件可以實(shí)現(xiàn)這一功能。
下面給出一個簡單的靜態(tài)顯示“我”字的程序清單:
#include<reg52.h>
#define CCED2 0x0000 /*我 */
unsigned char code word_zai[16][2] = {/*我 CCED2 */
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,
0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,
0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08};
void main()
{ char scan,i,j;
P0=0;P1=0;P2=0;
while(1)
{ scan=0;
for(i=0;i<16;i++)
{ P1=scan;
for(j=0;j<50;j++) //顯示五十次
{ P2=word_zai[i][0] ;
P0=word_zai[i][1] ;
}
P0=0;P2=0;
scan++;
}
}
}
四、 安裝與調(diào)試
把顯示屏電路和顯示屏驅(qū)動電路分別做在兩塊電路板上,顯示屏電路的行掃描信號輸出管腳和列顯示信號數(shù)據(jù)輸出管腳分別引用兩排16針的排針引出,排針長的那一頭接到電路板的底層,以方便插入驅(qū)動電路的插槽中。同樣在驅(qū)動電路用兩排16腳的插槽將行掃描信號輸出管腳和列顯示信號數(shù)據(jù)輸出管腳引出,在畫PCB時應(yīng)當(dāng)注意屏電路PCB中兩排排針之間的距離要與驅(qū)動電路PCB中兩排插槽之間的距離一樣,才能保證能正確地將顯示屏電路板排到驅(qū)動電路電路板上方。以下為該電路的實(shí)物圖與PCB。
在畫PCB時注意雙面電路板的做板規(guī)則,特別要注意以下
幾個方面:
①雙面電路板的過孔比較大,一般在80mil以上;
②定位孔的放置;
③要在頂層焊接時,應(yīng)注意在頂層插上元器件后是否會影響到焊接,如芯片等管腳比較短的元器件,當(dāng)插在電路板后要在頂層焊接其管腳是比較困難的;
安裝安電路后,可將以下的測試程序燒到AT89S52中,將AT89S52插入驅(qū)動電路, 若每一個發(fā)光二極管都能被點(diǎn)亮,則說明電路硬件做成功。 以下為測試程序清單:
#include<reg52.h>
void main()
{ char scan,i;
P0=0;P1=0;P2=0;
while(1)
{ scan=0;
for(i=0;i<16;i++)
{P1=scan;
P0=0xff;
P2=0xff;
scan++;
}
}
}
若發(fā)現(xiàn)二極管不是全被點(diǎn)亮則要用萬用表來仔細(xì)地檢測。一般會出現(xiàn)的問題是電路板上的線被短路,斷開等。根據(jù)不亮的二極管來找電路出現(xiàn)的問題應(yīng)該是比較容易的。所以本電路的調(diào)試過程是較簡單的。當(dāng)然調(diào)試前必須要確保所購買的每一塊顯示屏都是完好的。
五、 總結(jié)
1、為方便調(diào)試應(yīng)該給該電路加上一個下載電路部分,每次燒程序調(diào)試都要把芯片取出插入,容易損壞芯片的管腳。
2、為了合適大部分的取字模軟件,在畫原理圖應(yīng)當(dāng)考慮列顯示屏顯示信號輸入管腳由左到右的接法;大部分的取字模軟件都是從左到右的取模方式,所以應(yīng)當(dāng)把顯示屏的列信號顯示輸入管腳從左到右接地接到單片機(jī)P2,P0口時由高位接到低位。
8*8led顯示屏?的原理
從圖中可以看出,8X8點(diǎn)陣共需要64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮;要實(shí)現(xiàn)顯示圖形或字體,只需考慮其顯示方式。通過編程控制各顯示點(diǎn)對應(yīng)LED陽極和陰極端的電平,就可以有效的控制各顯示點(diǎn)的亮滅。 例如:要實(shí)現(xiàn)一根柱形的亮法,如圖所示,對應(yīng)的一列為一根豎柱,或者對應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮的方法如下所述: 一根豎柱:對應(yīng)的列置1,而行則采用掃描的方法來實(shí)現(xiàn)。 一根橫柱:對應(yīng)的行置0,而列則采用掃描的方法來實(shí)現(xiàn)
下圖是4個8*8LED組成的顯示屏。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
這里我把點(diǎn)陣LED顯示屏制作的電路原理分成兩個部分來介紹即顯示屏電路和顯示屏驅(qū)動電路。
一、 顯示屏電路
本人用的是共陰極的8*8點(diǎn)陣屏,在市場上是比較容易買到,下圖是8*8點(diǎn)陣屏的實(shí)物圖。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
點(diǎn)陣屏有兩個類型,一類為共陰極(左),另一類則為共陽極(右),下圖給出了兩種類型的內(nèi)部電路原理及相應(yīng)的管腳圖。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
LED陣列的顯示方式是按顯示編碼的順序,一行一行地顯示。每一行的顯示時間大約為4ms,由于人類的視覺暫留現(xiàn)象,將感覺到8行LED是在同時顯示的。若顯示的時間太短,則亮度不夠,若顯示的時間太長,將會感覺到閃爍。本文采用低電平逐行掃描,高電平輸出顯示信號。即輪流給行信號輸出低電平,在任意時刻只有一行發(fā)光二極管是處于可以被點(diǎn)亮的狀態(tài) ,其它行都處于熄滅狀態(tài)。
為了方便調(diào)試本文把4塊8*8組成的16*16的點(diǎn)陣屏的行信號掃描輸出管腳和列信號顯示輸出管腳分別引到顯示屏的兩邊。
Protel原理圖如下:
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
如圖4 所示的原理圖中的Si(i=1,2,3,…,16) 代表行掃描信號輸出,Di(i=1,2,3,…,16)代表列顯示信號輸出。
實(shí)物電路圖的正反面如下:
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
二、 顯示屏驅(qū)動電路
顯示屏驅(qū)動電路的原理圖如下:
顯示屏驅(qū)動電路主要由主芯片控制電路、電源電路、控制信號放大電路等組成。
1、主芯片控制電路
該部分電路主要由AT89S52和74LS154組成。單片機(jī)的P0和P2號控制顯示信號的輸出,P1號的低4位控制74LS154的譯碼輸入,從而控制掃描信號的輸出。
2、電源電路
整個電路的供電由USB電源提供,利用我們的電腦主機(jī)USB接口可以輸出+5V電壓,方便我們在實(shí)驗(yàn)室調(diào)試
3、控制信號放大電路
為提供負(fù)載能力,在P0和P2口接16個常用9013的NPN三極管放大驅(qū)動信號。電路中列方向由p0口和p2口完成掃描,由于p0口沒有上拉電阻,因此接一個1k*8的排阻上拉。
行方向則由4—16譯碼器74LS154完成掃描,它由89C51的P1.0---P1.3控制。同樣,驅(qū)動部分則是16個9015的三極管完成的。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
三、 程序與軟件
在UCDOS中文宋體字庫中,每一個字由16行16列的點(diǎn)陣組成顯示,即國標(biāo)漢字庫中的每一個字均由256點(diǎn)陣來表示。我們可以把每一個點(diǎn)理解為一個像素,而把每一個字的字形理解為一幅圖像。事實(shí)上這個漢字屏不僅可以顯示漢字, 也可以顯示在256像素范圍內(nèi)的任何圖形。用8位的AT89S52單片機(jī)控制, 由于單片機(jī)的總線為8位,一個字需要拆分為2個部分如圖9所示。本電路把它拆分為左部和右部,左部由16(行)*8(列)點(diǎn)陣組成, 下部也由16(行)*8(列)點(diǎn)陣組成。
8*8點(diǎn)陣LED顯示屏的原理詳解與漢字代碼
為了讓大家更清楚的理解點(diǎn)陣的掃描過程,在這我們以顯示漢字“我”為例,來說明其掃描原理:
單片機(jī)首先由P2口輸出顯示數(shù)據(jù)信號給右部分的第一行如圖9所示,即第一行的P20---P27口。方向?yàn)镻20到P27 ,顯示漢字“我”時,P21點(diǎn)亮,由左到右排,為P20滅,P21亮, P22滅,P23滅, P24滅, P25滅, P26滅, P27滅。即二進(jìn)制00000010,轉(zhuǎn)換為16進(jìn)制為 0x02。
右部分的第一行完成后,繼續(xù)掃描左半部的第一行,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由左往右掃描,即從P00向P07方向掃描,從上圖可以看到,這一行只有P05、P06亮,其它滅, 即為00000110,16進(jìn)制則為0x60。然后單片機(jī)再次轉(zhuǎn)向右半部第二行,仍為P21、P23點(diǎn)亮,為01010000,即16進(jìn)制0x0A。這一行完成后繼續(xù)進(jìn)行左半部分的第二行掃描,P02、P03、P04點(diǎn)亮,為二進(jìn)制00111000,即16進(jìn)制0x1C。
依照這個方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個8位,可以得出漢字“我”的掃描代碼為:
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,
0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,
0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08
由這個原理可以看出, 無論顯示何種字體或圖像, 都可以用這個方法來分析出它的掃描代碼從而顯示在屏幕上。
不過現(xiàn)在有很多現(xiàn)成的漢字字模生成軟件, 我們就不必自己去畫表格算代碼了。
在網(wǎng)上漢字字模生成軟件有很多種,本例中的“我”字的取模方式為以橫向8個連續(xù)點(diǎn)構(gòu)成一個字節(jié),最左邊的點(diǎn)為字節(jié)的最低位,即BIT0,最右邊的點(diǎn)為BIT7。很少有字模軟件可以實(shí)現(xiàn)這一功能。
下面給出一個簡單的靜態(tài)顯示“我”字的程序清單:
#include<reg52.h>
#define CCED2 0x0000 /*我 */
unsigned char code word_zai[16][2] = {/*我 CCED2 */
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,
0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,
0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08};
void main()
{ char scan,i,j;
P0=0;P1=0;P2=0;
while(1)
{ scan=0;
for(i=0;i<16;i++)
{ P1=scan;
for(j=0;j<50;j++) //顯示五十次
{ P2=word_zai[i][0] ;
P0=word_zai[i][1] ;
}
P0=0;P2=0;
scan++;
}
}
}
四、 安裝與調(diào)試
把顯示屏電路和顯示屏驅(qū)動電路分別做在兩塊電路板上,顯示屏電路的行掃描信號輸出管腳和列顯示信號數(shù)據(jù)輸出管腳分別引用兩排16針的排針引出,排針長的那一頭接到電路板的底層,以方便插入驅(qū)動電路的插槽中。同樣在驅(qū)動電路用兩排16腳的插槽將行掃描信號輸出管腳和列顯示信號數(shù)據(jù)輸出管腳引出,在畫PCB時應(yīng)當(dāng)注意屏電路PCB中兩排排針之間的距離要與驅(qū)動電路PCB中兩排插槽之間的距離一樣,才能保證能正確地將顯示屏電路板排到驅(qū)動電路電路板上方。以下為該電路的實(shí)物圖與PCB。
在畫PCB時注意雙面電路板的做板規(guī)則,特別要注意以下
幾個方面:
①雙面電路板的過孔比較大,一般在80mil以上;
②定位孔的放置;
③要在頂層焊接時,應(yīng)注意在頂層插上元器件后是否會影響到焊接,如芯片等管腳比較短的元器件,當(dāng)插在電路板后要在頂層焊接其管腳是比較困難的;
安裝安電路后,可將以下的測試程序燒到AT89S52中,將AT89S52插入驅(qū)動電路, 若每一個發(fā)光二極管都能被點(diǎn)亮,則說明電路硬件做成功。 以下為測試程序清單:
#include<reg52.h>
void main()
{ char scan,i;
P0=0;P1=0;P2=0;
while(1)
{ scan=0;
for(i=0;i<16;i++)
{P1=scan;
P0=0xff;
P2=0xff;
scan++;
}
}
}
若發(fā)現(xiàn)二極管不是全被點(diǎn)亮則要用萬用表來仔細(xì)地檢測。一般會出現(xiàn)的問題是電路板上的線被短路,斷開等。根據(jù)不亮的二極管來找電路出現(xiàn)的問題應(yīng)該是比較容易的。所以本電路的調(diào)試過程是較簡單的。當(dāng)然調(diào)試前必須要確保所購買的每一塊顯示屏都是完好的。
五、 總結(jié)
1、為方便調(diào)試應(yīng)該給該電路加上一個下載電路部分,每次燒程序調(diào)試都要把芯片取出插入,容易損壞芯片的管腳。
2、為了合適大部分的取字模軟件,在畫原理圖應(yīng)當(dāng)考慮列顯示屏顯示信號輸入管腳由左到右的接法;大部分的取字模軟件都是從左到右的取模方式,所以應(yīng)當(dāng)把顯示屏的列信號顯示輸入管腳從左到右接地接到單片機(jī)P2,P0口時由高位接到低位。
相關(guān)產(chǎn)品
相關(guān)文章
- 重慶LED顯示屏行業(yè)的4大壁壘與4大利好2018年04月03日
- 重慶LED顯示屏靜電防護(hù)措施2018年04月09日
- 重慶|戶外LED顯示屏安裝要知道的八大事項(xiàng)2018年04月10日
- 重慶室內(nèi)LED顯示屏安裝步驟2018年04月11日
- 重慶大屏幕led顯示屏的10大應(yīng)用領(lǐng)域2018年04月30日