1、引言
以往的LED 異步控制器只能把一個(gè)屏幕作為一個(gè)完整的區(qū)域來(lái)進(jìn)行顯示, 或者簡(jiǎn)單的加上時(shí)間區(qū)域或游走字幕區(qū)域,這樣對(duì)于用戶來(lái)講往往缺乏足夠的靈活性, 尤其在屏幕較大的時(shí)候。針對(duì)以上情況, 本文提出了一款基于32 位高性能ARM處理器和uc/OS- II 的設(shè)計(jì)方案。它充分利用了uc/OS-II 高效的多任務(wù)管理功能和ARM處理器強(qiáng)大的運(yùn)算能力, 實(shí)現(xiàn)了單屏幕多窗口的任意位置顯示, 使得顯示內(nèi)容變得更加豐富, 顯示方式變得更加靈活。
2、LED控制系統(tǒng)的工作原理
典型的LED 異步控制系統(tǒng)主要由PC 應(yīng)用軟件、通信模塊、數(shù)據(jù)處理模塊、掃描控制模塊、驅(qū)動(dòng)模塊和LED 屏幾部分組成,如圖1 所示。
?
首先, PC 應(yīng)用軟件將文本或圖片轉(zhuǎn)化為具有特定格式的點(diǎn)陣信息。然后, 通過(guò)通信模塊將此點(diǎn)陣信息發(fā)送給數(shù)據(jù)處理模塊。數(shù)據(jù)處理模塊對(duì)這些點(diǎn)陣信息進(jìn)行各種特技處理, 最后通過(guò)掃描控制模塊和驅(qū)動(dòng)模塊將畫(huà)面在LED 屏上進(jìn)行正確顯示。
本文所指的LED 異步控制器包括通信模塊、數(shù)據(jù)處理模塊和掃描控制模塊三部分。
3、控制器軟件部分的設(shè)計(jì)
本控制器的硬件結(jié)構(gòu)如圖2 所示。數(shù)據(jù)處理模塊由MCU,一片SRAM和一片F(xiàn)LASH 存儲(chǔ)器組成。MCU 選用PHILIPS 的基于32 位ARM內(nèi)核的LPC2214 處理器, 它有著豐富的外圍接口資源和強(qiáng)大的運(yùn)算能力, 是整個(gè)控制器的核心。SRAM作為MCU 進(jìn)行特技處理時(shí)的緩存使用。FLASH 存儲(chǔ)器用于存儲(chǔ)點(diǎn)陣信息和一些必要的參數(shù)。

?
掃描控制模塊由CPLD 和顯存組成。顯存為一片SRAM, 它用于保存當(dāng)前顯示的一幀點(diǎn)陣信息。CPLD 通過(guò)地址總線和16位數(shù)據(jù)總線與MCU 相連, 它把從MCU 接收到的16 位數(shù)據(jù)按指定地址寫(xiě)入顯存, 然后再按一定的尋址方式從顯存中讀出點(diǎn)陣信息進(jìn)行掃描。MCU 只能通過(guò)CPLD 對(duì)顯存進(jìn)行以字(2byte)為單位的寫(xiě)操作。通信模塊包括以太網(wǎng)模塊和串口通信模塊, 用于實(shí)現(xiàn)PC 與控制器之間的RS232、RS485 以及工業(yè)以太網(wǎng)通信。
4、控制器軟件部分的設(shè)計(jì)
為了實(shí)現(xiàn)單屏幕、多窗口任意位置的顯示, 軟件部分我們基于uc/OS- II 進(jìn)行設(shè)計(jì), 這樣可以充分利用操作系統(tǒng)高效的任務(wù)調(diào)度算法, 將每個(gè)窗口的顯示都交由單個(gè)任務(wù)來(lái)完成, 從而極大地提高系統(tǒng)的運(yùn)行速度和可靠性, 并且使得程序的開(kāi)發(fā)和擴(kuò)展變得更加方便。
在進(jìn)行具體的程序設(shè)計(jì)之前, 首先要確定數(shù)據(jù)的組織方案。
因?yàn)楹玫臄?shù)據(jù)組織方案, 對(duì)于程序編寫(xiě)來(lái)說(shuō)往往可以達(dá)到事半功倍的效果。
4.1 顯存的數(shù)據(jù)組織方案:
對(duì)于雙色屏, 一個(gè)像素點(diǎn)需要紅、綠兩位數(shù)據(jù)來(lái)描述。為了便于處理, 我們將橫向連續(xù)的8 個(gè)像素點(diǎn)組成一個(gè)字(2byte)來(lái)進(jìn)行存儲(chǔ), 其中一個(gè)字節(jié)為紅數(shù)據(jù), 一個(gè)字節(jié)為綠數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)順序?yàn)閺淖蟮接遥?從上到下。如圖3 所示, 假如屏幕寬度為160 個(gè)像素點(diǎn), 顯存起始地址為0x83000000, 則屏幕第一行的前8 個(gè)像素點(diǎn)映射到顯存中地址為0x83000000 和0x83000001 的兩個(gè)字節(jié), 第二行的前8 個(gè)像素點(diǎn)映射到顯存中地址為0x83000028 和0x83000029 的兩個(gè)字節(jié), 依此類(lèi)推。

?