Arduino LED點陣之鱷魚爬-0x01
這是Arduino之LED點陣-鱷魚爬系列的第1篇,我在第上一篇專欄給大家簡單的演示了下驅動Hub08點陣的效果,詳見 震驚!全世界最小的鱷魚-0x00。
本篇專欄主要包括以下內容:
- LED點陣相關的基礎知識
- HUB08介面介紹
0x01 LED點陣基礎
1.分類
目前X寶上能夠買到的LED點陣單元板很多,如我手上這塊Hub08介面的64x16LED單元半板,但是基本都是業界統一的標準。
例如本篇介紹的,就是Hub08介面,當然這裡還有Hub12等等,數字越大,能夠控制的LED點就越多。
除了Hub系列的介面,還有一種常見的是集成了MAX7219晶元的點陣單元板,不過自己玩玩可以,商用的話還是推薦Hub08,比MAX7219穩定。
除了驅動方式的不同,點陣還有表貼與直插之分。
直插的特點就是價廉物美,性價比高,亮度高,適合戶外。
表貼的顧名思義,是在一個個的貼片LED,貼焊到PCB,相比於直插而言,做工更精細。隨著近幾年隨著LED技術的發展,表貼的LED點陣也更多的應用於戶外顯示。
這裡這介紹下X寶上的LED單元板型號是什麼意思,借用一張Google的圖片來說明,比如說F3.75:
如上圖所示F3.75裡面的3.75代表的是LED燈珠的直徑,一般這種表示方法用於戶內顯示屏。
還有一種表示,例如P4,P5,這裡的P代表的是LED點間距,單位是毫米,P越小,意味著越清晰。
如果只是自己折騰的話,推薦購買F3.0或者F3.75大小的點陣單元板即可。
2.掃描方式
市面上常見的LED點陣單元板的掃描方式有靜態、1/2、1/4、1/8、1/16等。
以我手裡面這塊Hub08來說明,這是一塊1/16掃描方式的點陣。
由於LED顯示屏是逐行刷新顯示的,也就是說在任一確定的時刻我們只能控制其任意一行的顯示,每次刷新顯示一行,16行為一個掃描周期,這就是1/16掃描方式。
那麼如何實現同時顯示很多行呢?小時候玩過翻頁動畫吧?
對的,就是這樣,聰明的你肯定知道到了!
只要一個掃描周期的時間低於人眼視覺停留的時間(約0.05秒到0.2秒),呈現在你眼前的就會是一副靜態的畫面。
再提煉一下,其實一次掃描其實就是一幀,就像翻頁動畫的每一頁,如果每頁的圖像不同,當然畫面就動起來了。
不過,一定要注意這裡的停留時間,設置不當,人眼就會觀察到LED顯示屏所呈現的畫面出現閃爍,會閃瞎的。
0x02 Hub08的驅動方式
只需要看左邊的圖,右邊是Hub12的。
從上到下,依次是:
GND(接地) LA(行選擇A)
GND(接地) LB(行選擇B)
GND(接地) LC(行選擇C)
EN (使能) LD(行選擇D)
R1 (紅色輸出1) G1(綠色輸出1)
R1 (紅色輸出2) G2(綠色輸出2)
GND(接地) STB(鎖存)
GND(接地) SCK(時鐘同步)
1.行選擇
如果我們要在Hub08上點亮一個(x,y)坐標的LED點,用偽代碼來說明的話應該這樣做:
- 先使能,讓OE管腳處於低電平,讓LED點陣能夠被點亮。
- 選擇需要點亮的LED點所在行。
- 選擇需要點亮的LED所在列。
- 將需要點亮的列信息,存儲到點陣屏。
- 重複2-4
所以說LA,LB,LC,LD的作用就是行選擇。
由於管腳只能輸出高低電壓,所以行選管腳,只能輸出0,1兩種狀態。
也就是說4個行選管腳,也就可以組合出 =16種狀態,正好可以代表16行。
例如:
當管腳LD、LC、LB、LA的輸出分別為0000時,LED顯示屏的第1行被選中;
當管腳LD、LC、LB、LA的輸出分別為0001時,LED顯示屏的第2行被選中;
當管腳LD、LC、LB、LA的輸出分別為0010時,LED顯示屏的第3行被選中;
這裡唯一需要注意的是LA代表最低位,LD代表最高位。
現在我們已經知道如何控制LED點陣的每一行了,但是要顯示圖像,漢字,動畫,這還遠遠不夠,還需要對列信號進行控制。
2.列選擇
Hub08 LED顯示屏的列驅動使用了74HC595晶元,該晶元具有8位串列輸入、8位串列/並行輸出,8位鎖存功能。
上述是對於Hub08列選的原理簡介,不過你只需要知道,Hub08上面級聯的74HC595可以保存我們的列選擇信息即可,一個74HC595能夠存儲8列的信息,所以64列需要8個74HC595才能存儲下來。
Hub08裡面的R1,R2,G1,G2就是用來輸出這些列選數據的。
而LBT管腳就是用來發送存儲指令,將列選數據存儲下來的。
對於雙色的64x32點陣屏來說,R1,G1,控制上半個屏幕的紅綠色,R2,G2控制下半個屏幕的紅綠色,當同時輸出R1,G1或者R2,G2的時候,就可以顯示黃色。
不過我手頭上的是只是紅色的64x16點陣屏幕,R2,G1,G2都是無效的管腳。
0x03 結語
掌握了以上驅動原理,我們就具備了編寫程序所需的基礎了。
貌似篇幅有點長了,Arduino與Hub08介面的連線、編寫代碼就留到下一篇吧。
最後,如果你覺得有意思或者get到了新技能,請點贊,並關注Code雜貨鋪。
謝謝!
推薦閱讀:
※做有機玻璃加led屏幕,大家給點建議。?
※60~65英寸4K非曲面屏電視三星LG索尼夏普松下的哪個好?
※可移動式的無線LED屏幕,造就了這場百人「手推車」式的開場秀
※OLED現狀如何?