8×8 點矩陣實驗

21
8×8 點點點點點 點點點點 瞭瞭瞭瞭瞭 LED 瞭瞭瞭瞭 瞭瞭瞭瞭瞭瞭瞭瞭瞭瞭 LED 瞭瞭瞭瞭瞭 點點點點 瞭瞭瞭瞭 8×8 瞭瞭瞭瞭瞭瞭瞭瞭瞭 點點點點 DMA2440XP 瞭瞭瞭瞭 ADS 1.2 瞭瞭瞭瞭瞭瞭瞭瞭瞭瞭瞭瞭瞭 USB 瞭瞭瞭 瞭瞭瞭瞭瞭瞭 瞭瞭 、、

Upload: linda-pratt

Post on 03-Jan-2016

29 views

Category:

Documents


4 download

DESCRIPTION

8×8 點矩陣實驗. 實驗目的 瞭解點矩陣 LED 控制原理 掌握用行列掃描控制的 LED 點矩陣編譯 實驗內容 編寫程式,在 8×8 上顯示數位或者字母 實驗設備 DMA2440XP 教學平台 ADS 1.2 試用版內建開發環境和除錯軟體 USB 連接線、串列連接線、電源. 1 LED 相關知識. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 8×8 點矩陣實驗

8×8 點矩陣實驗 實驗目的 瞭解點矩陣 LED 控制原理 掌握用行列掃描控制的 LED 點矩陣編譯實驗內容 編寫程式,在 8×8 上顯示數位或者字母實驗設備 DMA2440XP 教學平台 ADS 1.2 試用版內建開發環境和除錯軟體 USB 連接線、串列連接線、電源

Page 2: 8×8 點矩陣實驗

1 LED 相關知識

LED 即發光二極體,是嵌入式系統中常用的輸出設備。單個 LED 通常用作報警之顯示,故障指示或提示信號等。 LED 是一個半導體設備,當電流通過它的時候,可以產生可見光。 LED 的發光強度與通過的電流強度成正比,由 64 個 LED 組成, 8 行 8 列。

由於 LED 的發光顏色和發光效率與製作 LED 的材料和工藝有關,目前廣泛使用的有紅、綠、藍三種。由於 LED工作電壓低(僅 1.5-3V ),能主動發光且 有一定亮度,亮度又能用電壓(或電流)調節,本身又耐衝擊、抗振動、壽命長( 10 萬小時),所以在大型的顯示設備中,目前尚無其他的顯示方式與 LED 顯示 方式匹敵。

Page 3: 8×8 點矩陣實驗

顯示範例

Page 4: 8×8 點矩陣實驗

8x8 LED 點矩陣的介面圖— 資料 0~15 通過 HC574 栓鎖器,再經過電晶體放大來驅動 8×8 LED

點矩陣,靜態方式顯示。電路介面圖如下:

Page 5: 8×8 點矩陣實驗
Page 6: 8×8 點矩陣實驗

8x8 LED 點矩陣的介面圖—

Page 7: 8×8 點矩陣實驗

8x8 矩陣硬體架構

Page 8: 8×8 點矩陣實驗

低位元組

高位元

組低位元

高位元組

Ex:000000010101010100000010101010100000010001010101

1000000010101010

Page 9: 8×8 點矩陣實驗

低位元組

高位元

組低位元

高位元組

Ex:000000010000000000000010011111100000010001000010

1000000000000000

Page 10: 8×8 點矩陣實驗

練習題 --- 假設三顆燈亮

低位元組(9

-15

高位元組( 0-8 )

表示第六排的 LED8x8_Address=?

Page 11: 8×8 點矩陣實驗

練習題 --- 假設三顆燈亮

低位元組(9

-15

高位元組( 0-8 )

表示第六排的 LED8x8_Address=? 00100000 11100110

Page 12: 8×8 點矩陣實驗

掃描顯示簡介 -1

原理特色以單位時間只顯示一列資訊,由左至右依序顯示

            現場示範字母“人形”範例講解

Page 13: 8×8 點矩陣實驗

掃描顯示簡介 -2

優點 不需改變電流 可增加顯示效果可調整亮度和顏色設計較為方便

Page 14: 8×8 點矩陣實驗

如何估算時間估算的一面顯示時間 =

( 每排的掃描時間 *8 + 每面掃描的間隔 ) * 掃描幾次畫面

Page 15: 8×8 點矩陣實驗

設計亮度訣竅 每列的掃描時間太多 整體看起來不像一面圖形 畫面跳動 太少 需要更多次刷新才能維持亮度

每面掃描的間隔 太長 畫面閃爍 太短 畫面較暗

每面掃描幾次 太多 時間太長 太少 時間太短

決定亮度的設計關鍵 每排掃描時間 & 每面掃描的間隔 比例調整

Page 16: 8×8 點矩陣實驗

3 實驗步驟 新建一個工程名為 LED8x8 ,並新建原始檔案、輸入程式,

設置好工程編譯產生映像檔。 硬體連接:用串列線將 PC 的 COM1 與實驗箱的 UART1 連

起來,再用 USB 連接。 線 (A->B) 將 PC 的 USB HOST 介面與實驗箱的 USB

Device 介面連起來,最後插上 12V 電源。 下載、除錯並執行 結合實驗內容和原理,觀察實驗現象,實驗結果應該是 8×8

點矩陣 LED迴圈顯示字母或數位形狀。 完成實驗練習題。

Page 17: 8×8 點矩陣實驗

4 8X8LED 點矩陣應用程式編譯實例 相關函數說明 8×8 LED 點矩陣的位址

#defineLED8X8_Address *(volatile U16 *)( 0x0x08001000 ) //nGCS1

8×8 LED 點矩陣顯示函數 void LED8X8_Display( U16 *LED8X8, U32 d )參數說明: LED8X8 : 特定的顯示陣列指標 D :顯示維持的次數功能說明: 顯示一個特定的陣列裏的資料主要程式如下:

Page 18: 8×8 點矩陣實驗

實驗程式Test_LED8×8(void) 功能說明:動態的 LED 顯示主要程式如下:

Page 19: 8×8 點矩陣實驗

主程序 Main主要程式如下:

上面是關於該實驗涉及到的部分函數,完整的程式請看光碟目錄的 exp檔案夾下相對應實驗的工程目錄。

Page 20: 8×8 點矩陣實驗

作業 各組發揮創意變更顯示圖案

設計程式碼,使其可以利用電腦鍵盤切換多組顯示圖案

設計程式碼,展示 LED 至少兩種顯示亮度

Page 21: 8×8 點矩陣實驗

備註 volatile 為一關鍵字 加在變數的前面被 volatile 宣告的變數 將不會使用最佳化編譯

有時一個變數的值改變了 compiler 並不會馬上將他寫入記憶體中而會先把結果放在 CPU暫存器中 等到處理結束之後 才寫入記憶體

若說這個變數是多執行緒的 flag 其他的執行緒要透過這個變數來反應,而這個值卻又沒有寫入記憶體 這時便會發生意想不到的結果

又或者是這變數為一個硬體的暫存器,會被硬體所改變然而 compiler 並沒有正確的將值從硬體暫存器取出來,而是將自己暫存的值拿來使用,這種情況 就是要用 volatile 來宣告變數 告訴 compiler 不要自己暫存變數來提升速度如此這個變數有任何的改變,便會馬上反應出來