基于AVR單片機的LED顯示屏應用設計
4 系統軟件設計本文引用地址:http://www.104case.com/article/171618.htm
系統軟件設計包括上位機軟件的設計、主機板AT-mega32程序設計、顯示子模塊ATmega8程序設計3部分。
上位機軟件完成圖像和文字的編輯,通過計算機串行接口把顯示數據傳送到主機板上。主機板接收上位機的數據并通過內部Boot Loader區的程序進行FLASH ROM內顯示數據的自更新。主機板把顯示數據進行分割處理后發送給每個子模塊,并且完成顯示數據的上下、左右滾屏處理。子模塊通過軟件調制脈沖占空比的方法,實現16階灰度圖像顯示。
4.1 上位機軟件設計
上位機軟件使用VB開發,主要完成圖像的取點、線性補償和點陣數據生成。首先將圖像文件轉換為96×64分辨率、256階色深的單色灰度圖像,由于使用占空比驅動的LED其占空比/亮度為對數特性,所以需加入指數特性調整為線性之后才能交付顯示系統進行顯示。其計算公式為Dout=15×(Din/255)n。n為比例系數,經實際顯示校對后確定為1.35,同時通過該公式完成從256階灰度到16階灰度的轉換。通過MSComm控件實現PC機與主機板的通信。
4.2 主機板ATmega32程序設計
主機部分軟件主要分為按鍵響應處理,顯示數據分割和分割后的數據發送3部分。其中顯示數據的分割占最主要的地位,同時顯示內容的滾屏移動也包括在這部分中。按鍵響應使用外中斷響應,配合定時器TO進行去抖處理后置位按鍵有效標志,在主程序中檢查該按鍵有效標志并進行響應處理。
4.3 顯示子模塊程序設計
顯示子模塊的軟件分為數據接收和動態刷新顯示2部分。由于子模塊要實現16階灰度的表現,而且還需要實現足夠高的刷新速率以避免產生閃爍現象,所以對刷新顯示部分的速度要求較高。本設計采用的方案為:全屏(每個子模塊為16行×16點/行)刷新分為16份時間片,每份時間片實現一行的掃描。而每行的時間片又分為15個子時間片,其中灰度為最暗的點點亮0個子時間片,灰度為最亮的點點亮15個時間片,由此實現占空比為0/15~15/15共16個級別的平均電流控制,從而實現16階的灰度顯示。通過:MEGA8片內定時器T2,每個子時間片取得52μs的掃描時間,15個子時間片構成一個單行掃描的時間片(52 μs×15=780μs),16個單行掃描時間片又構成一次全屏的掃描(780 μs×16=12.48 ms),則刷新頻率約為80 Hz,在最高亮度下也可以保證不出現行閃的現象。
5 結 語
本文提出的基于AVR單片機的LED顯示屏已應用于現場,AVR單片機的看門狗功能使得系統穩定可靠。由于本設計是主從式的解決方案,具有可擴展性,并且采用ISP功能給電路板的調試和系統的維護帶來了很大的方便。實踐證明,本系統可以方便地顯示各種字體的文字信息及16階灰度的圖像,畫面清晰、性能穩定、操作簡便,具有很好的應用價值。
評論