LED 點(diǎn)陣介紹
LED 點(diǎn)陣是由發(fā)光二極管排列組成的顯示器件,在我們?nèi)粘I畹碾娖髦须S 處可見,被廣泛應(yīng)用于汽車報(bào)站器,廣告屏等。 通常應(yīng)用較多的是 8*8 點(diǎn)陣,然后使用多個(gè) 8*8 點(diǎn)陣可組成不同分辨率的 LED 點(diǎn)陣顯示屏,比如16*16 點(diǎn)陣可以使用 4 個(gè) 8*8 點(diǎn)陣構(gòu)成。因此理解了 8*8LED 點(diǎn)陣的工作原理,其他分辨率的 LED 點(diǎn)陣顯示屏都是一樣的。這里以 8*8LED 點(diǎn) 陣來(lái)做介紹。其內(nèi)部結(jié)構(gòu)圖如下所示:

8*8 點(diǎn)陣共由 64 個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線 的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一行置 1 電平,某一列置 0 電平,則相應(yīng)的二極管就亮; 如要將第一個(gè)點(diǎn)點(diǎn)亮,則 1 腳接高電平 a 腳接低電平,則第一個(gè)點(diǎn)就亮了;如果 要將第一行點(diǎn)亮,則第 1 腳要接高電平,而(a、b、c、d、e、f、g、h )這些 引腳接低電平,那么第一行就會(huì)點(diǎn)亮;如要將第一列點(diǎn)亮,則第 a 腳接低電平, 而(1、2、3、4、5、6、7、8)接高電平,那么第一列就會(huì)點(diǎn)亮。由此可見,LED 點(diǎn)陣的使用也是非常簡(jiǎn)單的。
點(diǎn)陣顯示
為了方便理解,這里使用Proteus仿真軟件繪制電路圖。
首先,我們來(lái)點(diǎn)亮左上角第一個(gè)燈。
原理圖如下:

在選擇led點(diǎn)陣的時(shí)候,一定要判斷那邊正那邊負(fù),像下圖這樣,一邊接地一邊接Vcc,來(lái)判斷點(diǎn)陣的正負(fù)級(jí),便于編寫程序。

上面為負(fù)極,控制列。下面為正極,控制行。
下面這張圖的左右兩個(gè)電路原理是一樣的,只要控制相應(yīng)的I/O口,就可以點(diǎn)亮我們想要的哪一個(gè)燈。

點(diǎn)亮第一個(gè)燈的程序代碼:
#include "reg52.h"
#define LED_col P2 //列
#define LED_row P3 //行
void main()
{
LED_col=0x7F;//第一列,根據(jù)實(shí)際電路連接判斷,每個(gè)人連接電路的I/O口都可能不一樣
while(1)
{
LED_row=0x80;//第一行,根據(jù)實(shí)際電路連接判斷,每個(gè)人連接電路的I/O口都可能不一樣
}
}
顯示數(shù)字等字符或圖像
字符或圖像就是由多個(gè)點(diǎn)組成,想要在LED點(diǎn)陣上顯示數(shù)字或簡(jiǎn)單的圖像,首先要獲取在 LED 點(diǎn)陣上顯示數(shù)字字符所需的數(shù)據(jù),即一個(gè)數(shù)字字符在 LED 點(diǎn)陣上顯示,對(duì)應(yīng)的每行每列都會(huì)有一些燈點(diǎn)亮或者熄滅,這樣就會(huì)構(gòu)成一組數(shù)據(jù),也就是數(shù)字字符的顯示數(shù)據(jù),我們只要將這些數(shù)據(jù)通過(guò)單片機(jī)發(fā)送到點(diǎn)陣對(duì)應(yīng)的行或列就能顯示數(shù)字字符。
要實(shí)現(xiàn)行列不同位置亮燈,需要使用動(dòng)態(tài)顯示的方法,也要結(jié)合掃描的方法。 在第一行亮燈一段時(shí)間以后滅掉,點(diǎn)亮第二行一段時(shí)間以后滅掉,點(diǎn)亮第三行一 段時(shí)間以后滅掉,如此點(diǎn)亮,直到八行全部點(diǎn)亮一次,在第一行點(diǎn)亮到最后一行 滅掉的總時(shí)間不能超過(guò)人肉眼可識(shí)別的時(shí)間,即 24 毫秒。在每一行點(diǎn)亮的時(shí)候, 給列一個(gè)新的數(shù)據(jù),此時(shí)對(duì)應(yīng)列的數(shù)據(jù)就可以體現(xiàn)在這行上要點(diǎn)亮的燈上。這樣 就和動(dòng)態(tài)數(shù)碼管的顯示一樣,只不過(guò)數(shù)碼管的 LED 燈是段值。這里使用 LED 點(diǎn) 陣顯示數(shù)字,也是多個(gè) LED 同時(shí)點(diǎn)亮。
數(shù)字字符數(shù)據(jù)如何獲取呢?這里給大家介紹一個(gè)非常好用的工具-取字模軟 件。
雙擊打開該軟件,首先選擇“基本操作->新建圖像”,設(shè)置圖像的寬度和高 度為8,點(diǎn)擊確定后將在顯示窗口出現(xiàn)一個(gè)8*8的白色格子,這個(gè)就類似于8*8LED 點(diǎn)陣,具體操作如下:


可以看到上圖 8*8 點(diǎn)陣區(qū)域非常小,我們可以將其放大,選擇“模擬動(dòng)畫”, 后點(diǎn)擊“放大格點(diǎn)”,如下所示:

然后設(shè)置取模數(shù)據(jù)的取模方式等內(nèi)容,選擇“參數(shù)設(shè)置”后點(diǎn)擊“其他 選項(xiàng)”,具體操作如下:

然后可以在這個(gè) 8*8 白色格子里面點(diǎn)擊,點(diǎn)擊后即會(huì)在對(duì)應(yīng)位置出現(xiàn)一 個(gè)黑點(diǎn),表示在 LED 點(diǎn)陣對(duì)應(yīng)位置的 LED 燈點(diǎn)亮,未點(diǎn)擊位置(白色)表示 LED 點(diǎn)陣對(duì)應(yīng)位置的 LED 燈熄滅。 比如在 8*8LED 點(diǎn)陣上顯示數(shù)字 0,那么可以在圖中 8*8 白色框內(nèi)通過(guò)點(diǎn) 擊對(duì)應(yīng)位置描出一個(gè)數(shù)字 0 ,如下所示:

到這里我們就將數(shù)字 0 的數(shù)據(jù)生成了,然后將生成的數(shù)據(jù)復(fù)制到我們程序定義的數(shù)組中,如:
u8 hang[8]={0x00,0x7E,0x81,0x81,0x81,0x81,0x7E,0x00};
這些數(shù)據(jù)其實(shí)就是上述描繪的數(shù)字 0 從左到右依次每列對(duì)應(yīng)的行數(shù)據(jù)。 至于其它數(shù)字或字符及簡(jiǎn)單圖形的顯示取模方法與上述類似。 既然是動(dòng)態(tài)掃描,就需要不斷的掃描每列,因此可以把 LED 點(diǎn)陣的列控制也 用數(shù)組存儲(chǔ)起來(lái),為后面循環(huán)調(diào)用提供方便。根據(jù)數(shù)字 0 取模的數(shù)據(jù)特點(diǎn)是從左 至右每列對(duì)應(yīng)的行數(shù)據(jù),因此掃描時(shí)也應(yīng)該從左至右的順序,如下:
u8 lie[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
顯示0的代碼:
#include "reg52.h"
typedef unsigned int u16; //對(duì)系統(tǒng)默認(rèn)數(shù)據(jù)類型進(jìn)行重定義
typedef unsigned char u8;
u8 lie[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 hang[8]={0x00,0x7e,0x81,0x81,0x81,0x81,0x7e,0x00};
#define LED_col P2 //列
#define LED_row P3 //行
void delay_10us(u16 ten_us)//延時(shí)函數(shù),ten_us=1 時(shí),大約延時(shí) 10us
{
while(ten_us--);
}
void main()
{
u8 i=0;
while(1)
{
for(i=0;i<8;i++)//循環(huán) 8 次掃描 8 行、列
{
LED_col=lie[i];//傳送列選數(shù)據(jù)
LED_row=hang[i];//傳送行選數(shù)據(jù)
delay_10us(100);
LED_row=0x00;//消影
}
}
}
仿真結(jié)果:

這里不知道為啥,需要把點(diǎn)陣轉(zhuǎn)過(guò)來(lái),如果不轉(zhuǎn)顯示的0就是橫這的,有知道的小伙伴可以評(píng)論區(qū)討論。我覺得還是靈活多變吧。
如果要顯示心型就把hang數(shù)組改為:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-786116.html
u8 hang={0x38,0x7C,0x7E,0x3F,0x3F,0x7E,0x7C,0x38};

仿真:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-786116.html

到了這里,關(guān)于51單片機(jī) 8*8LED點(diǎn)陣(入門教學(xué))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!