王 浩,雷 宇,魏 啟,王 釵,王 軍,艾 梅
(中國(guó)石油集團(tuán)東方地球物理勘探公司西安物探裝備分公司 陜西 西安 710061)
聲學(xué)二次定位系統(tǒng)[1,2]是利用船上的數(shù)據(jù)采集系統(tǒng)與投放到海底的應(yīng)答器[1,2]之間的聲納通信,獲取聲納信號(hào)走時(shí),確定兩者距離,并結(jié)合船載GPS的位置坐標(biāo),通過(guò)主機(jī)軟件系統(tǒng)計(jì)算獲取水下應(yīng)答器的空間坐標(biāo)。由于海洋勘探采集設(shè)備(采集站)內(nèi)置或外置應(yīng)答器,投放到水下時(shí)和水面GPS位置存在一定的偏差,利用聲學(xué)系統(tǒng)可進(jìn)行進(jìn)一步的精確定位,即聲學(xué)二次定位[3,4]。每一個(gè)應(yīng)答器單元,都有自己的組號(hào)、ID序列號(hào)和內(nèi)置電池的電壓。新開(kāi)發(fā)研制的聲學(xué)二次定位射頻識(shí)別器(RFID)能夠在應(yīng)答器下水前,識(shí)別每一個(gè)接近的應(yīng)答器單元,以真彩色、醒目大字體顯示其組號(hào)、ID序列號(hào)和內(nèi)置電池的電壓,并提供低壓報(bào)警,便于應(yīng)答器在海上施工作業(yè)下水過(guò)程中,船上施工人員監(jiān)視應(yīng)答器的狀態(tài),將異常應(yīng)答器檢出,確保狀態(tài)正常的應(yīng)答器才能下水?;贛SP430F169的串口液晶顯示驅(qū)動(dòng)是射頻識(shí)別器的顯示控制子系統(tǒng),根據(jù)射頻識(shí)別器的主處理器和液晶選型,確定通訊接口、通訊協(xié)議和驅(qū)動(dòng)控制。選用不同廠(chǎng)商制造的液晶屏,需要開(kāi)發(fā)對(duì)應(yīng)的液晶驅(qū)動(dòng)控制程序。
液晶的顯示驅(qū)動(dòng)控制是建立在射頻識(shí)別器的主處理器的類(lèi)型和液晶終端的選型基礎(chǔ)上的。
射頻識(shí)別器的主處理器MCU選用微處理器MSP430F169。MSP430F169是美國(guó)TI(Texas Instruments)公司生產(chǎn)的一種混合信號(hào)處理器,具有超低功耗和強(qiáng)大的處理能力[5]。體系架構(gòu)采用16位RISC,最高運(yùn)算速度為8 MIPS。其片內(nèi)整合多款低功耗外圍模塊,具有60 KB閃存、2048 B RAM、12位ADC、雙DAC,2個(gè)USART、I2C接口、HW乘法器接口、1個(gè)DMA通道。
選用微處理器MSP430F169的主要原因是:其供電電壓采用1.8~3.6 V伏,工作功耗250 μA/MIPS(MIPS:每秒百萬(wàn)條指令數(shù)),具有超低功耗。此外MSP430F169接口資源豐富,擁有USART接口,可通過(guò)簡(jiǎn)單的接口轉(zhuǎn)換芯片變成RS232 接口,實(shí)現(xiàn)與串口液晶的通訊控制。
液晶彩屏終端選擇了一款具有RS232串行接口的智能型液晶彩屏終端,該終端是一款高性能、低功耗的真彩顯示器。該液晶彩屏終端的主要性能[6]:
1)處理器: 32位ARM處理器+FPGA雙核控制架構(gòu);
2)存儲(chǔ)容量:內(nèi)置標(biāo)準(zhǔn)的1 GBit Flash;
3)接口特性:與上位機(jī)MCU通訊接口:RS232或3.3V CMOS/TTL UART;
4)PC下載圖形接口:USB2.0;
5)分辨率:800×480,16位真彩色RGB顯示;
6)內(nèi)置8×12、8×16、12×24、16×32、32×64 ASCII字庫(kù);12×12、16×16、24×24 GBK和32×32、64×64 GB2312字庫(kù),可自定義任意WINDOWS字庫(kù);
7)尺寸:7 in(1 in=25.44 mm,下同);
8)工作電壓:最小7.6 V、標(biāo)準(zhǔn)9.0 V、最大24 V;
9)工作電流:最小110 mA、標(biāo)準(zhǔn)340 mA、最大440 mA;
10)工作溫度:-20~70 ℃;
11)觸摸屏工作溫度:-10~60 ℃。
該液晶彩屏終端選型完全滿(mǎn)足海洋勘探船上作業(yè)需求:標(biāo)準(zhǔn)功耗3 W;彩屏大小7 in,屏幕分辨率800×480,擁有64點(diǎn)陣的超大漢字字庫(kù),以64點(diǎn)陣字體可以顯示12行文本,完全滿(mǎn)足射頻識(shí)別器顯示信息需要的行數(shù);具有64 K色的TFT真彩,顯示美觀(guān);具有RS232串行接口,只需3根連線(xiàn)就可實(shí)現(xiàn)與主處理器的通訊。
二次定位射頻識(shí)別器的原理圖如圖1所示。射頻識(shí)別器的主處理器MCU通過(guò)射頻接口獲取應(yīng)答器的組號(hào)、ID序列號(hào)和內(nèi)置電池的電壓的分檔編號(hào),經(jīng)解析、處理后通過(guò)RS232接口發(fā)送給液晶終端,顯示對(duì)應(yīng)字符信息。
圖1 RFID 器系統(tǒng)原理框圖
液晶顯示驅(qū)動(dòng)應(yīng)用接口軟件是基于微處理器MSP430F169開(kāi)發(fā)和設(shè)計(jì)的,通過(guò)RS232接口與智能液晶終端進(jìn)行數(shù)據(jù)通訊,實(shí)現(xiàn)字符信息的顯示。
液晶顯示驅(qū)動(dòng)應(yīng)用接口軟件的應(yīng)用需求如下:
1)顯示設(shè)備制造商名稱(chēng):64點(diǎn)陣中文顯示;
2)顯示應(yīng)答器的組號(hào):BCD碼,最小1,最大999,64點(diǎn)陣3位顯示;
3)顯示應(yīng)答器的ID:BCD碼,最小1,最大99, 64點(diǎn)陣3位顯示;
4)顯示應(yīng)答器內(nèi)置電池的電壓:共27檔(從5 V到13.50 V),浮點(diǎn)數(shù),64點(diǎn)陣3位顯示。
液晶顯示驅(qū)動(dòng)應(yīng)用接口軟件采用匯編語(yǔ)言開(kāi)發(fā),這樣編譯的代碼容量小,執(zhí)行速度快,效率高。整個(gè)驅(qū)動(dòng)程序由主程序、組號(hào)顯示子程序、ID號(hào)顯示子程序和電池電壓顯示子程序組成,如圖2所示。
圖2 液晶顯示驅(qū)動(dòng)程序的組成
上述應(yīng)用子程序建立在串口發(fā)送子程序[7]的基礎(chǔ)上,主程序完成顯示數(shù)據(jù)字段的定義、串口的初始化和子程序的初始化和調(diào)用等。整個(gè)程序設(shè)計(jì)的核心是基于串口通訊協(xié)議,用匯編語(yǔ)言實(shí)現(xiàn)應(yīng)用通訊接口模塊。下面從MSP430F169 與液晶彩屏終端的通訊協(xié)議、MSP430F169的存儲(chǔ)空間地址映射、驅(qū)動(dòng)程序數(shù)據(jù)區(qū)定義和核心關(guān)鍵子程序的設(shè)計(jì)4個(gè)方面完整地闡述其驅(qū)動(dòng)程序的設(shè)計(jì)思路。
MSP430F169與液晶彩屏終端的通信協(xié)議幀由4部分組成:幀頭+指令+參數(shù)+幀尾。其幀結(jié)構(gòu)詳細(xì)組成見(jiàn)表1。如果指令參數(shù)多于1個(gè)字節(jié),統(tǒng)一以MSB方式(高字節(jié)在前,低字節(jié)在后)進(jìn)行通信,每幀最大的數(shù)目是1024B(包含幀頭和幀尾),指令數(shù)據(jù)均以十六進(jìn)制表示。與字符顯示相關(guān)的幀指令格式見(jiàn)表2,給出了設(shè)置前景色0x41指令和文本顯示指令0x20指令的詳細(xì)指令幀結(jié)構(gòu)。
表1 幀的結(jié)構(gòu)組成
表2 字符顯示幀指令格式
液晶和上位機(jī)的通訊協(xié)議是整個(gè)液晶字符控制顯示的基礎(chǔ),通過(guò)向串口液晶彩屏終端按照數(shù)據(jù)幀格式發(fā)送數(shù)據(jù)幀,就能在液晶屏幕給定的位置坐標(biāo)、給定的背景色以字體前景顏色顯示給定點(diǎn)陣大小的字體,實(shí)現(xiàn)字符的顯示控制。
MSP430F169的存儲(chǔ)空間地址映射[8]定義了中斷向量表的入口地址0FFFEh、flash程序存儲(chǔ)區(qū)的地址空間的起始地址01100h、RAM 數(shù)據(jù)存儲(chǔ)區(qū)的地址空間,其詳細(xì)地址映射如圖3所示。液晶驅(qū)動(dòng)控制顯示是基于MSP430F169的存儲(chǔ)空間地址映射的,它是整個(gè)液晶顯示驅(qū)動(dòng)程序框架設(shè)計(jì)的基礎(chǔ)。
圖3 MSP430F169的存儲(chǔ)空間地址映射
液晶顯示驅(qū)動(dòng)數(shù)據(jù)區(qū)主要定義驅(qū)動(dòng)程序的數(shù)據(jù)區(qū),它包括:組號(hào)顯示控制碼的頭部和尾部,中間需要插入實(shí)際組號(hào)的BCD碼(百位+十位+個(gè)位);ID 號(hào)的顯示控制和組號(hào)相似,只是顯示的BCD 碼有兩位(十位+個(gè)位);電池電量顯示數(shù)據(jù)包含27個(gè)電池電量顯示表。其數(shù)據(jù)區(qū)定義詳見(jiàn)下面的代碼部分。
ORG 0FFFEh ;定義程序入口地址
DC16 init ;
ORG 01100h ;MCU 復(fù)位地址
Tab_GrpNo01:
DB 0EEh,20h,00h,32h,00h,8Ch,01h,09h,0D7h,0E9h,0BAh,0C5h,0A3h,0BAh;
;組號(hào)顯示控制碼第1部分:在屏幕坐標(biāo)(50,140)藍(lán)色背景顯示64點(diǎn)陣字體
"組號(hào):";在第1部分和尾部分插入BCD碼組號(hào)值(百位+十位+個(gè)位)
Tab_GrpNo02:
DB 0FFh,0FCh,0FFh,0FFh;組號(hào)顯示控制碼尾部分,幀結(jié)束標(biāo)志
Tab_ID01:
DB 0EEh,20h,00h,32h,00h,0F0h,01h,09h,49h,44h,0BAh,0C5h,0A3h,0BAh;
;ID號(hào)顯示控制碼第1部分:在屏幕坐標(biāo)(50,240)藍(lán)色背景顯示64點(diǎn)陣字體"ID號(hào):";在第1部分和尾部分插入BCD碼ID號(hào)值(十位+個(gè)位)
Tab_ID02:
DB 0FFh,0FCh,0FFh,0FFh;ID號(hào)顯示控制碼尾部分
;定義27個(gè)電量表顯示控制碼,不一一列出,只給出3個(gè)表以?huà)佫D(zhuǎn)引玉。
Tab_Bat00: ;顯示"電量: 5.00 v"(50,340)
DB 0EEh, 20h, 00h, 32h, 01h, 54h, 01h, 09h, 0B5h, 0E7h, 0C1h, 0BFh, 0A3h,
0BAh, 20h, 35h, 2Eh, 30h, 30h, 20h, 76h, 0FFh, 0FCh, 0FFh, 0FFh
Tab_Bat01: ;顯示"電量: 6.00 v"(50,340)
DB 0EEh, 20h, 00h, 32h, 01h, 54h, 01h, 09h, 0B5h, 0E7h, 0C1h, 0BFh, 0A3h,
0BAh, 20h, 36h, 2Eh, 30h, 30h, 20h, 76h, 0FFh, 0FCh, 0FFh, 0FFh
Tab_Bat1A: ;顯示"電量:13.75 v"(50,340)
DB 0EEh, 20h, 00h, 32h, 01h, 54h, 01h, 09h, 0B5h, 0E7h, 0C1h, 0BFh, 0A3h,
0BAh, 31h, 33h, 2Eh, 37h, 35h, 20h, 76h, 0FFh, 0FCh, 0FFh, 0FFh
液晶驅(qū)動(dòng)程序在射頻識(shí)別器的應(yīng)用工作流程如圖4所示:通過(guò)搜尋接近的應(yīng)答器,分別讀取其組號(hào)、ID號(hào)、電池電壓檔位編號(hào),通過(guò)依次調(diào)用組號(hào)、ID號(hào)、電池電壓子程序,在屏幕設(shè)定的行上以藍(lán)色背景和紅色字體顯示其組號(hào)、ID號(hào)、電池電壓。
圖4 液晶驅(qū)動(dòng)程序應(yīng)用工作流程
液晶顯示驅(qū)動(dòng)的核心程序包括:組號(hào)發(fā)送子程序、ID號(hào)發(fā)送子程序和電池電壓發(fā)送子程序。
組號(hào)發(fā)送子程序的幀結(jié)構(gòu)是:"組號(hào):"+組號(hào)的BCD碼數(shù)值(百位+十位+個(gè)位)+組號(hào)顯示控制碼尾部分(幀結(jié)束標(biāo)志),分別通過(guò)串口發(fā)送三部分的內(nèi)容就可以在屏幕指定的坐標(biāo)開(kāi)始以一行顯示組號(hào)的具體數(shù)值。前面的數(shù)據(jù)區(qū)的標(biāo)號(hào)Tab_GrpNo01定義了"組號(hào):",標(biāo)號(hào)Tab_GrpNo02定義了幀結(jié)束標(biāo)志,具體的組號(hào)值由于是3位BCD碼,存儲(chǔ)于兩個(gè)8位寄存器中,子程序需要分別讀取兩個(gè)寄存器的BCD碼值,并轉(zhuǎn)換成ASCII碼。
ID號(hào)發(fā)送子程序和組號(hào)發(fā)送子程序結(jié)構(gòu)完全相同,只是發(fā)送的內(nèi)容不同。"ID號(hào):"+ID號(hào)的BCD碼數(shù)值(十位+個(gè)位)+ID號(hào)顯示控制碼尾部分(幀結(jié)束標(biāo)志),分別通過(guò)串口發(fā)送三部分的內(nèi)容就可以在屏幕指定的坐標(biāo)開(kāi)始以一行顯示ID號(hào)的具體數(shù)值。前面的數(shù)據(jù)區(qū)的標(biāo)號(hào)Tab_ID01定義了" ID號(hào):",標(biāo)號(hào)Tab_ID02定義了幀結(jié)束標(biāo)志,具體的ID號(hào)值由于是2位BCD碼,存儲(chǔ)于一個(gè)8位寄存器中,子程序需要讀取該寄存器的BCD碼值,提取出ID號(hào)的十位和個(gè)位,并分別轉(zhuǎn)換成ASCII碼。
電池電壓發(fā)送子程序根據(jù)測(cè)量電壓的分檔編號(hào)值(測(cè)量電壓區(qū)間:5~13.75V,被分成27個(gè)檔位,5 V的編號(hào)為0,對(duì)應(yīng)顯示數(shù)據(jù)表中的Tab_Bat00;依次類(lèi)推,13.75 V編號(hào)為26,對(duì)應(yīng)顯示數(shù)據(jù)表中的Tab_Bat1A)建立和顯示數(shù)據(jù)表中的顯示控制碼的映射:每幀(每行)電壓顯示控制碼占用25個(gè)字節(jié),根據(jù)這個(gè)偏移量,結(jié)合測(cè)量電壓的分檔編號(hào)值查詢(xún)當(dāng)前編號(hào)值對(duì)應(yīng)的顯示控制碼,這樣在屏幕的指定行顯示編號(hào)對(duì)應(yīng)的電壓值。
液晶驅(qū)動(dòng)程序的顯示效果如圖5所示。
圖5 液晶驅(qū)動(dòng)程序顯示效果
液晶驅(qū)動(dòng)程序的設(shè)計(jì)要注意:液晶屏的驅(qū)動(dòng)接口、液晶屏的控制協(xié)議、液晶屏幕的顯示規(guī)劃、命令幀結(jié)構(gòu)的組合控制、程序的查表控制、BCD碼顯示控制需要轉(zhuǎn)ASCII碼。注意整體設(shè)計(jì)邏輯和控制細(xì)節(jié)才能高效開(kāi)發(fā)驅(qū)動(dòng)控制程序,并且可擴(kuò)展到其它應(yīng)用領(lǐng)域。
本文從微處理器MSP430F169 與液晶彩屏終端的通訊協(xié)議、MSP430F169的存儲(chǔ)空間地址映射、驅(qū)動(dòng)程序數(shù)據(jù)區(qū)定義和核心關(guān)鍵子程序的設(shè)計(jì)多個(gè)方面完整地闡述液晶驅(qū)動(dòng)程序的設(shè)計(jì)開(kāi)發(fā)思路,并采用匯編語(yǔ)言通過(guò)串口通訊實(shí)現(xiàn)了聲學(xué)二次定位射頻識(shí)別系統(tǒng)(RFID)中對(duì)應(yīng)答器單元組號(hào)、ID序列號(hào)和內(nèi)置電池電壓的真彩色、大字體中文顯示,并提供低壓報(bào)警功能。該驅(qū)動(dòng)程序已應(yīng)用于聲學(xué)二次定位射頻識(shí)別系統(tǒng)中,已有多套產(chǎn)品應(yīng)用于海洋勘探施工作業(yè)中,滿(mǎn)足了客戶(hù)海上作業(yè)的實(shí)際應(yīng)用需求。