基于AVR單片機(jī)LED顯示屏的灰度設(shè)計(jì)與實(shí)現(xiàn)
4 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)包括上位機(jī)軟件的設(shè)計(jì)、主機(jī)板AT-mega32程序設(shè)計(jì)、顯示子模塊ATmega8程序設(shè)計(jì)3部分。
上位機(jī)軟件完成圖像和文字的編輯,通過計(jì)算機(jī)串行接口把顯示數(shù)據(jù)傳送到主機(jī)板上。主機(jī)板接收上位機(jī)的數(shù)據(jù)并通過內(nèi)部BootLoader區(qū)的程序進(jìn)行FLASHROM內(nèi)顯示數(shù)據(jù)的自更新。主機(jī)板把顯示數(shù)據(jù)進(jìn)行分割處理后發(fā)送給每個(gè)子模塊,并且完成顯示數(shù)據(jù)的上下、左右滾屏處理。子模塊通過軟件調(diào)制脈沖占空比的方法,實(shí)現(xiàn)16階灰度圖像顯示。
4.1 上位機(jī)軟件設(shè)計(jì)
上位機(jī)軟件使用VB開發(fā),主要完成圖像的取點(diǎn)、線性補(bǔ)償和點(diǎn)陣數(shù)據(jù)生成。首先將圖像文件轉(zhuǎn)換為96×64分辨率、256階色深的單色灰度圖像,由于使用占空比驅(qū)動的LED其占空比/亮度為對數(shù)特性,所以需加入指數(shù)特性調(diào)整為線性之后才能交付顯示系統(tǒng)進(jìn)行顯示。其計(jì)算公式為Dout=15×(Din/255)n。n為比例系數(shù),經(jīng)實(shí)際顯示校對后確定為1.35,同時(shí)通過該公式完成從256階灰度到16階灰度的轉(zhuǎn)換。通過MSComm控件實(shí)現(xiàn)PC機(jī)與主機(jī)板的通信。
4.2 主機(jī)板ATmega32程序設(shè)計(jì)
主機(jī)部分軟件主要分為按鍵響應(yīng)處理,顯示數(shù)據(jù)分割和分割后的數(shù)據(jù)發(fā)送3部分。其中顯示數(shù)據(jù)的分割占最主要的地位,同時(shí)顯示內(nèi)容的滾屏移動也包括在這部分中。按鍵響應(yīng)使用外中斷響應(yīng),配合定時(shí)器TO進(jìn)行去抖處理后置位按鍵有效標(biāo)志,在主程序中檢查該按鍵有效標(biāo)志并進(jìn)行響應(yīng)處理。
4.3 顯示子模塊程序設(shè)計(jì)
顯示子模塊的軟件分為數(shù)據(jù)接收和動態(tài)刷新顯示2部分。由于子模塊要實(shí)現(xiàn)16階灰度的表現(xiàn),而且還需要實(shí)現(xiàn)足夠高的刷新速率以避免產(chǎn)生閃爍現(xiàn)象,所以對刷新顯示部分的速度要求較高。本設(shè)計(jì)采用的方案為:全屏(每個(gè)子模塊為16行×16點(diǎn)/行)刷新分為16份時(shí)間片,每份時(shí)間片實(shí)現(xiàn)一行的掃描。而每行的時(shí)間片又分為15個(gè)子時(shí)間片,其中灰度為最暗的點(diǎn)點(diǎn)亮0個(gè)子時(shí)間片,灰度為最亮的點(diǎn)點(diǎn)亮15個(gè)時(shí)間片,由此實(shí)現(xiàn)占空比為0/15~15/15共16個(gè)級別的平均電流控制,從而實(shí)現(xiàn)16階的灰度顯示。通過:MEGA8片內(nèi)定時(shí)器T2,每個(gè)子時(shí)間片取得52μs的掃描時(shí)間,15個(gè)子時(shí)間片構(gòu)成一個(gè)單行掃描的時(shí)間片(52μs×15=780μs),16個(gè)單行掃描時(shí)間片又構(gòu)成一次全屏的掃描(780μs×16=12.48ms),則刷新頻率約為80Hz,在最高亮度下也可以保證不出現(xiàn)行閃的現(xiàn)象。
5 結(jié)語
本文提出的基于AVR單片機(jī)的LED顯示屏已應(yīng)用于現(xiàn)場,AVR單片機(jī)的看門狗功能使得系統(tǒng)穩(wěn)定可靠。由于本設(shè)計(jì)是主從式的解決方案,具有可擴(kuò)展性,并且采用ISP功能給電路板的調(diào)試和系統(tǒng)的維護(hù)帶來了很大的方便。實(shí)踐證明,本系統(tǒng)可以方便地顯示各種字體的文字信息及16階灰度的圖像,畫面清晰、性能穩(wěn)定、操作簡便,具有很好的應(yīng)用價(jià)值。
參考文獻(xiàn):
[1].ATMEGA8datasheethttp://www.dzsc.com/datasheet/ATMEGA8_144542.html.
[2].ATmega32datasheethttp://www.dzsc.com/datasheet/ATmega32_1.html.
[3].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[4].RS485datasheethttp://www.dzsc.com/datasheet/RS485_585289.html.
[5].MAX485datasheethttp://www.dzsc.com/datasheet/MAX485_859396.html.
[6].MAX232datasheethttp://www.dzsc.com/datasheet/MAX232_1074207.html.
[7].74HC165datasheethttp://www.dzsc.com/datasheet/74HC165_99228.html.
[8].74HC154datasheethttp://www.dzsc.com/datasheet/74HC154_99218.html.
[9].74LS373datasheethttp://www.dzsc.com/datasheet/74LS373_742872.html.
評論