本系統(tǒng)的軟件主要由三大模塊組成,即上位機(jī)主控程序、發(fā)射機(jī)主控程序和接收機(jī)主控程序。
3.1 上位機(jī)主控程序
上位機(jī)主控程序?qū)嶋H上包括顯示信息生成程序、顯示點(diǎn)陣轉(zhuǎn)換程序和串口通信程序,是三大主控程序中結(jié)構(gòu)最復(fù)雜的一部分。
顯示信息生成程序完成顯示圖像和文字的錄入、編輯及動(dòng)畫效果設(shè)計(jì)。該程序首先采用DOS平臺(tái)下的主控程序與底層通信軟件結(jié)合,通過串行及并行通信口完成用戶對(duì)源文件、INTERNET接口及其他輸入設(shè)備的多參數(shù)錄入。
顯示點(diǎn)陣轉(zhuǎn)換程序就是將生成的顯示信息通過點(diǎn)陣抽取和移動(dòng)算法將顯示信息轉(zhuǎn)換為L(zhǎng)ED顯示屏對(duì)應(yīng)的點(diǎn)陣數(shù)據(jù)。對(duì)于彩色顯示屏,需要將圖像信息的RGB三基色數(shù)據(jù)分別抽樣,并分塊存儲(chǔ)、順序轉(zhuǎn)發(fā);對(duì)于連續(xù)的動(dòng)畫圖像,要按幀分別計(jì)算偏移量,關(guān)鍵是背景圖像與動(dòng)畫文字要同步。該部分的軟件是在TURBOC3.0的環(huán)境下編寫的。
串口通信程序則較為簡(jiǎn)單,附屬于點(diǎn)陣轉(zhuǎn)換程序中。
限于篇幅和技術(shù)原因,這里僅以PC機(jī)漢字抽取發(fā)送程序?yàn)槔瑪⑹銎湓砗徒Y(jié)構(gòu)。
設(shè)終端顯示屏所顯示的是16×16的漢字點(diǎn)陣。所以,要想在終端上顯示廣告信息,必須將該信息所包含的漢字的點(diǎn)陣數(shù)據(jù)傳到終端上。在TURBOC3.0中,將漢字賦值給一個(gè)變量時(shí),實(shí)際上是將該漢字的區(qū)位碼賦值給這個(gè)變量。每個(gè)漢字都是16×16的點(diǎn)陣,筆劃經(jīng)過的地方為"1",其余為"0".這樣,按從上到下,從左到右的順序,一個(gè)漢字由256個(gè)點(diǎn)組成,也就是32個(gè)字節(jié)。漢字按區(qū)位碼的順序排列在漢字字庫(kù)中,區(qū)碼為行,位碼為列,一區(qū)有94位。這樣,某漢字在漢字庫(kù)中的偏移地址為(區(qū)碼×94+位碼)×32.取出后的32字節(jié)漢字點(diǎn)陣,經(jīng)由PC機(jī)的串行口送入到發(fā)射機(jī)中。其流程如圖5所示。

?
圖5 PC機(jī)軟件流程圖
3.2 發(fā)射機(jī)主控程序
發(fā)射機(jī)主控軟件的功能是通過串行口接收上位PC機(jī)發(fā)送來的圖像點(diǎn)陣,讀取鍵盤命令,并向編碼器串行發(fā)送操作命令或顯示數(shù)據(jù)。
該部分的軟件是在KeilC51環(huán)境下編寫的,它可以將C語言直接翻譯成匯編語言,生成二進(jìn)制碼寫入單片機(jī),這樣編寫效率高一些。串行口觸發(fā),則表明PC機(jī)有圖像點(diǎn)陣數(shù)據(jù)傳來,單片機(jī)立即接收點(diǎn)陣數(shù)據(jù)存于RAM中;當(dāng)INT0觸發(fā),表明鍵盤有動(dòng)作,立即接收鍵值判斷命令的類別,并向接收機(jī)發(fā)送圖像點(diǎn)陣數(shù)據(jù)或者操作命令。其功能流程如圖6所示。

?
圖6 發(fā)射機(jī)主控程序流程
3.3 接收機(jī)主控程序
該部分軟件的功能是完成對(duì)接收數(shù)據(jù)的識(shí)別、存儲(chǔ)、變換和顯示驅(qū)動(dòng),并可實(shí)現(xiàn)本地本機(jī)的自檢,顯示固化圖像。當(dāng)接收裝置的譯碼芯片有輸出時(shí),單片機(jī)就中斷當(dāng)前的顯示,接收標(biāo)志字,然后判斷此標(biāo)志字的內(nèi)容,確定將接收的是圖像點(diǎn)陣,還是操作控制命令。若是點(diǎn)陣數(shù)據(jù),就將其連續(xù)接收存放到一個(gè)顯示緩沖數(shù)據(jù)庫(kù)中,按當(dāng)前的方式顯示。若是命令,則立刻改變顯示方式。
其中,關(guān)鍵的是圖像上、下、左、右移動(dòng)的實(shí)時(shí)實(shí)現(xiàn)。具體實(shí)現(xiàn)方法如下:
1)圖像的上下移動(dòng) ,直到一個(gè)圖像的移完為止;再移下一個(gè)圖像的點(diǎn)陣。上移的過程類似。
2)圖像的左右移動(dòng) 將一圖像的每一行數(shù)據(jù)向左移位(使用C語言的移位指令),將移位后的點(diǎn)陣存放于BUF之中,即可顯示。右移的過程類似。
接收機(jī)主控程序的功能流程如圖7所示。

?
圖7 接收機(jī)主控程序流程