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