1 / 21

8×8 點矩陣實驗

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

linda-pratt
Download Presentation

8×8 點矩陣實驗

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 1 LED相關知識 LED即發光二極體,是嵌入式系統中常用的輸出設備。單個LED通常用作報警之顯示,故障指示或提示信號等。LED是一個半導體設備,當電流通過它的時候,可以產生可見光。LED的發光強度與通過的電流強度成正比,由64個LED組成,8行8列。 由於LED的發光顏色和發光效率與製作LED的材料和工藝有關,目前廣泛使用的有紅、綠、藍三種。由於LED工作電壓低(僅1.5-3V),能主動發光且 有一定亮度,亮度又能用電壓(或電流)調節,本身又耐衝擊、抗振動、壽命長(10萬小時),所以在大型的顯示設備中,目前尚無其他的顯示方式與LED顯示 方式匹敵。

  3. 顯示範例

  4. 8x8 LED點矩陣的介面圖— 資料0~15通過HC574栓鎖器,再經過電晶體放大來驅動8×8 LED點矩陣,靜態方式顯示。電路介面圖如下:

  5. 8x8 LED點矩陣的介面圖—

  6. 8x8矩陣硬體架構

  7. 高位元組 低位元組 Ex: 0000000101010101 0000001010101010 0000010001010101 1000000010101010 低位元組 高位元組

  8. 高位元組 低位元組 Ex: 0000000100000000 0000001001111110 0000010001000010 1000000000000000 低位元組 高位元組

  9. 練習題---假設三顆燈亮 高位元組(0-8) 低位元組(9-15) 表示第六排的LED8x8_Address=?

  10. 練習題---假設三顆燈亮 高位元組(0-8) 低位元組(9-15) 00100000 11100110 表示第六排的LED8x8_Address=?

  11. 掃描顯示簡介-1 • 原理特色 以單位時間只顯示一列資訊,由左至右 依序顯示             現場示範字母“人形”範例講解

  12. 掃描顯示簡介-2 • 優點 不需改變電流 可增加顯示效果 可調整亮度和顏色 設計較為方便

  13. 如何估算時間 估算的一面顯示時間= (每排的掃描時間*8+ 每面掃描的間隔) * 掃描幾次畫面

  14. 設計亮度訣竅 每列的掃描時間太多 整體看起來不像一面圖形 畫面跳動 太少 需要更多次刷新才能維持亮度 每面掃描的間隔 太長 畫面閃爍 太短 畫面較暗 每面掃描幾次 太多 時間太長 太少 時間太短 決定亮度的設計關鍵 每排掃描時間&每面掃描的間隔 比例調整

  15. 3 實驗步驟 • 新建一個工程名為LED8x8,並新建原始檔案、輸入程式,設置好工程編譯產生映像檔。 • 硬體連接:用串列線將PC的COM1與實驗箱的UART1連起來,再用USB連接。 • 線(A->B)將PC的USB HOST介面與實驗箱的USB Device介面連起來,最後插上12V電源。 • 下載、除錯並執行 • 結合實驗內容和原理,觀察實驗現象,實驗結果應該是8×8點矩陣LED迴圈顯示字母或數位形狀。 • 完成實驗練習題。

  16. 4 8X8LED點矩陣應用程式編譯實例 • 相關函數說明 • 8×8 LED點矩陣的位址 #define LED8X8_Address *(volatile U16 *)( 0x0x08001000 ) //nGCS1 • 8×8 LED點矩陣顯示函數void LED8X8_Display( U16 *LED8X8, U32 d ) 參數說明: LED8X8 :特定的顯示陣列指標 D:顯示維持的次數 功能說明: 顯示一個特定的陣列裏的資料 主要程式如下:

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

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

  19. 作業 • 各組發揮創意變更顯示圖案 • 設計程式碼,使其可以利用電腦鍵盤切換多組顯示圖案 • 設計程式碼,展示LED至少兩種顯示亮度

  20. 備註 • volatile 為一關鍵字 加在變數的前面被 volatile 宣告的變數 將不會使用最佳化編譯 • 有時一個變數的值改變了 compiler 並不會馬上將他寫入記憶體中而會先把結果放在CPU暫存器中 等到處理結束之後 才寫入記憶體 • 若說這個變數是多執行緒的flag 其他的執行緒要透過這個變數來反應,而這個值卻又沒有寫入記憶體 這時便會發生意想不到的結果 • 又或者是這變數為一個硬體的暫存器,會被硬體所改變然而compiler 並沒有正確的將值從硬體暫存器取出來,而是將自己暫存的值拿來使用,這種情況 就是要用volatile 來宣告變數 告訴compiler不要自己暫存變數來提升速度如此這個變數有任何的改變,便會馬上反應出來

More Related