本系統(tǒng)的軟件主要由三大模塊組成,即上位機(jī)主控程序、發(fā)射機(jī)主控程序和接收機(jī)主控程序。
3.1 上位機(jī)主控程序
上位機(jī)主控程序?qū)嶋H上包括顯示信息生成程序、顯示點陣轉(zhuǎn)換程序和串口通信程序,是三大主控程序中結(jié)構(gòu)最復(fù)雜的一部分。
顯示信息生成程序完成顯示圖像和文字的錄入、編輯及動畫效果設(shè)計。該程序首先采用DOS平臺下的主控程序與底層通信軟件結(jié)合,通過串行及并行通信口完成用戶對源文件、INTERNET接口及其他輸入設(shè)備的多參數(shù)錄入。
顯示點陣轉(zhuǎn)換程序就是將生成的顯示信息通過點陣抽取和移動算法將顯示信息轉(zhuǎn)換為LED顯示屏對應(yīng)的點陣數(shù)據(jù)。對于彩色顯示屏,需要將圖像信息的RGB三基色數(shù)據(jù)分別抽樣,并分塊存儲、順序轉(zhuǎn)發(fā);對于連續(xù)的動畫圖像,要按幀分別計算偏移量,關(guān)鍵是背景圖像與動畫文字要同步。該部分的軟件是在TURBOC3.0的環(huán)境下編寫的。
串口通信程序則較為簡單,附屬于點陣轉(zhuǎn)換程序中。
限于篇幅和技術(shù)原因,這里僅以PC機(jī)漢字抽取發(fā)送程序為例,敘述其原理和結(jié)構(gòu)。
設(shè)終端顯示屏所顯示的是16×16的漢字點陣。所以,要想在終端上顯示廣告信息,必須將該信息所包含的漢字的點陣數(shù)據(jù)傳到終端上。在TURBOC3.0中,將漢字賦值給一個變量時,實際上是將該漢字的區(qū)位碼賦值給這個變量。每個漢字都是16×16的點陣,筆劃經(jīng)過的地方為"1",其余為"0".這樣,按從上到下,從左到右的順序,一個漢字由256個點組成,也就是32個字節(jié)。漢字按區(qū)位碼的順序排列在漢字字庫中,區(qū)碼為行,位碼為列,一區(qū)有94位。這樣,某漢字在漢字庫中的偏移地址為(區(qū)碼×94+位碼)×32.取出后的32字節(jié)漢字點陣,經(jīng)由PC機(jī)的串行口送入到發(fā)射機(jī)中。其流程如圖5所示。
?
圖5 PC機(jī)軟件流程圖
3.2 發(fā)射機(jī)主控程序
發(fā)射機(jī)主控軟件的功能是通過串行口接收上位PC機(jī)發(fā)送來的圖像點陣,讀取鍵盤命令,并向編碼器串行發(fā)送操作命令或顯示數(shù)據(jù)。
該部分的軟件是在KeilC51環(huán)境下編寫的,它可以將C語言直接翻譯成匯編語言,生成二進(jìn)制碼寫入單片機(jī),這樣編寫效率高一些。串行口觸發(fā),則表明PC機(jī)有圖像點陣數(shù)據(jù)傳來,單片機(jī)立即接收點陣數(shù)據(jù)存于RAM中;當(dāng)INT0觸發(fā),表明鍵盤有動作,立即接收鍵值判斷命令的類別,并向接收機(jī)發(fā)送圖像點陣數(shù)據(jù)或者操作命令。其功能流程如圖6所示。
?
圖6 發(fā)射機(jī)主控程序流程
3.3 接收機(jī)主控程序
該部分軟件的功能是完成對接收數(shù)據(jù)的識別、存儲、變換和顯示驅(qū)動,并可實現(xiàn)本地本機(jī)的自檢,顯示固化圖像。當(dāng)接收裝置的譯碼芯片有輸出時,單片機(jī)就中斷當(dāng)前的顯示,接收標(biāo)志字,然后判斷此標(biāo)志字的內(nèi)容,確定將接收的是圖像點陣,還是操作控制命令。若是點陣數(shù)據(jù),就將其連續(xù)接收存放到一個顯示緩沖數(shù)據(jù)庫中,按當(dāng)前的方式顯示。若是命令,則立刻改變顯示方式。
其中,關(guān)鍵的是圖像上、下、左、右移動的實時實現(xiàn)。具體實現(xiàn)方法如下:
1)圖像的上下移動 ,直到一個圖像的移完為止;再移下一個圖像的點陣。上移的過程類似。
2)圖像的左右移動 將一圖像的每一行數(shù)據(jù)向左移位(使用C語言的移位指令),將移位后的點陣存放于BUF之中,即可顯示。右移的過程類似。
接收機(jī)主控程序的功能流程如圖7所示。
?
圖7 接收機(jī)主控程序流程