課程目標(biāo)
- 學(xué)習(xí)點(diǎn)陣屏的原理及應(yīng)用
- 掌握如何編程控制點(diǎn)陣屏
相關(guān)知識(shí)
點(diǎn)陣屏: LED點(diǎn)陣屏由多個(gè)LED發(fā)光二極管組成,通過控制LED亮滅來顯示文字、圖片、動(dòng)畫、視頻等,被廣泛應(yīng)用于公共場(chǎng)合做信息展示,如廣告屏、公告牌等。
點(diǎn)陣屏組成及原理: LED點(diǎn)陣屏按照LED發(fā)光顏色可分為單色、雙色、三色燈等,可顯示紅、黃、綠甚至是真彩色。根據(jù)LED的數(shù)量又分為4x4、8x8、16x16等不同類型。這里我們通過單色8x8點(diǎn)陣屏來了解其原理,8x8點(diǎn)陣屏由8行8列共64個(gè)LED燈組成,其內(nèi)部結(jié)構(gòu)如下圖:
**外部管腳定義:**8x8點(diǎn)陣屏有16個(gè)管腳,將有絲印的一邊朝下,逆時(shí)針進(jìn)行編號(hào)。
*內(nèi)部管腳定義:
控制方式: 每個(gè)LED放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一行高電平,某一列低電平,則對(duì)應(yīng)交叉點(diǎn)的LED就會(huì)點(diǎn)亮。比如我們要點(diǎn)亮第一行第一列LED燈,則給對(duì)應(yīng)將點(diǎn)陣屏的第9腳高電平,第13腳低電平,其他LED控制以此類推即可。
電路搭建
所需材料
ArduinoUNO * 1
8*8 LED點(diǎn)陣屏 * 1
杜邦線若干
電路連接
程序編寫
練習(xí)一:繪制第一個(gè)圖形
根據(jù)上圖接線方式,編程實(shí)現(xiàn)讓LED點(diǎn)陣屏顯示兩個(gè)點(diǎn),并開始閃爍起來。
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:閃爍的兩個(gè)點(diǎn)
* 項(xiàng)目時(shí)間:2022.03.03
* 項(xiàng)目作者:MRX
*/
int leds[8] = {1, 2, 5, 7, 8, 9, 12, 14}; //點(diǎn)陣屏正極引腳
int gnds[8] = {3, 4, 6, 10, 11, 13, 15, 16}; //點(diǎn)陣屏負(fù)極引腳
void setup() {
for (int i = 0; i < 8; i++)
{
pinMode(leds[i], OUTPUT);
pinMode(gnds[i], OUTPUT);
digitalWrite(gnds[i], HIGH); //負(fù)極引腳拉高,熄滅所有LED
}
}
void loop() {
digitalWrite(leds[6],HIGH);
digitalWrite(gnds[0],LOW);
digitalWrite(leds[6],HIGH);
digitalWrite(gnds[2],LOW);
delay(100);
digitalWrite(leds[6],LOW);
digitalWrite(gnds[0],HIGH);
digitalWrite(leds[6],LOW);
digitalWrite(gnds[2],HIGH);
delay(100);
}
使用代碼編程的時(shí)候,要注意開始要將所有的LED的負(fù)極引腳給高電平,讓所有的LED熄滅。
練習(xí)二:方向指示牌
繪制一個(gè)如下圖所示的圖案,在點(diǎn)陣屏上顯示出來。
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:右箭頭
* 項(xiàng)目時(shí)間:2022.03.03
* 項(xiàng)目作者:MRX
*/
int leds[8] = {9, 14, 8, 12, 1, 7, 2, 5}; //點(diǎn)陣屏正極引腳
int gnds[8] = {13, 3, 4, 10, 6, 11, 15, 16}; //點(diǎn)陣屏負(fù)極引腳
int led[8][8] = {//箭頭方陣,1處是亮燈的led
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0}
};
//清屏
void ledclean()
{
for (int i = 0; i < 8; i++)//將點(diǎn)陣屏正極ladies,負(fù)極拉高,關(guān)斷顯示
{
digitalWrite(leds[i], LOW);
digitalWrite(gnds[i], HIGH);
}
}
//右箭頭
void rightArrow()
{
for (int i = 0 ; i < 8; i++)
{
digitalWrite(leds[i], LOW);
for (int j = 0; j < 8; j++)
{
digitalWrite(gnds[j], 1-led[i][j]);
}
digitalWrite(leds[i], HIGH);
ledclean();
}
}
void setup() {
for (int i = 0; i < 8; i++)
{
pinMode(leds[i], OUTPUT);
pinMode(gnds[i], OUTPUT);
digitalWrite(gnds[i], HIGH); //負(fù)極引腳拉高,熄滅所有LED
}
}
void loop() {
rightArrow();
}
程序分析:
LED點(diǎn)陣屏是多個(gè)LED組合在一起來驅(qū)動(dòng),基本的驅(qū)動(dòng)方式是逐行掃描或者逐列掃描。通過兩個(gè)for循環(huán)嵌套來進(jìn)行操作,外部循環(huán)控制列,內(nèi)部循環(huán)遍歷行,或者外部循環(huán)控制行,內(nèi)部循環(huán)遍歷列。當(dāng)逐行或者逐列掃描足夠快的時(shí)候,人眼就會(huì)因?yàn)橐曈X暫存而看到同時(shí)點(diǎn)亮的效果。
當(dāng)對(duì)多塊點(diǎn)陣屏進(jìn)行操作時(shí),使用IO引腳直接驅(qū)動(dòng)的方式就顯得不切實(shí)際了,一方面這需要占用很多的IO口,另一方面IO驅(qū)動(dòng)能力畢竟有限,所以點(diǎn)陣屏還有專門的驅(qū)動(dòng)電路和IC芯片來滿足更高的應(yīng)用要求。后續(xù)我們將會(huì)使用到點(diǎn)陣屏模塊來進(jìn)行新的項(xiàng)目開發(fā)。
-
驅(qū)動(dòng)電路
+關(guān)注
關(guān)注
155文章
1584瀏覽量
109914 -
IC芯片
+關(guān)注
關(guān)注
8文章
255瀏覽量
27103 -
Arduino
+關(guān)注
關(guān)注
190文章
6497瀏覽量
192025 -
LED發(fā)光二極管
+關(guān)注
關(guān)注
0文章
14瀏覽量
6260 -
LED點(diǎn)陣屏
+關(guān)注
關(guān)注
2文章
31瀏覽量
12674
發(fā)布評(píng)論請(qǐng)先 登錄

點(diǎn)陣屏做的貪吃蛇#Arduino開發(fā)
轉(zhuǎn)載:基于Arduino的LED點(diǎn)陣廣告屏
Arduino開發(fā)實(shí)戰(zhàn)指南 AVR篇
LED點(diǎn)陣漢字顯示屏設(shè)計(jì)
點(diǎn)陣液晶屏和段碼液晶屏的區(qū)別
如何使用Arduino實(shí)現(xiàn)8乘8點(diǎn)陣心形設(shè)計(jì)的論文免費(fèi)下載

Arduino的實(shí)驗(yàn)例程之點(diǎn)陣實(shí)驗(yàn)的詳細(xì)資料說明
LCD點(diǎn)陣屏與段碼液晶屏之間有什么不同
在Arduino下如何直接以LED組建點(diǎn)陣屏

51單片機(jī)——LED點(diǎn)陣屏

將8x8 LED點(diǎn)陣與Arduino連接

點(diǎn)陣屏是什么?

Arduino篇—點(diǎn)陣屏動(dòng)態(tài)顯示

評(píng)論