李利功
(國營第七八五廠,山西太原030024)
在單片機應用系統(tǒng)中,串行數(shù)據通信通常采用芯片8251,但因8251的通信波特率不高,不能應用于晶振較高的系統(tǒng),這就使得要求高運行速度、高速收發(fā)數(shù)據的系統(tǒng)無法應用8251芯片收發(fā)數(shù)據,而且8251需要有8253提供外部時鐘信號。MAXIM公司推出的新型UART芯片MAX3100正好填補了這個空白。MAX3100支持高速通信,最高通信波特率可達230KBPS,低功耗,支持低電壓,設計后系統(tǒng)體積小,比采用外部時鐘8253設計的印制版尺寸的一半還小。而且能夠使軟件設計實現(xiàn)起來更可靠。
有機發(fā)光顯示OLED是比液晶顯示技術更為先進的新一代平板顯示技術,是被業(yè)界公認為最具發(fā)展前景的下一代顯示技術。有機發(fā)光顯示OLED(Organic Light Emitting Display)與液晶顯示技術相比,具有超輕薄、高亮度、廣視角、自發(fā)光、響應速度快、適應溫度范圍寬、抗震強、功耗低、可實現(xiàn)柔軟顯示等優(yōu)越性能,因此OLED屏正快速擴大其在便攜式電子產品市場上的應用份額,能夠應用于通訊、測繪、鐵路以及兵器等野外惡劣環(huán)境。
系統(tǒng)主要由AT89C52單片機、MAX3100通用異步收發(fā)器、GPS-OEM板、OLED顯示屏等組成。AT89C52單片機通過MAX3100接收GPS-OEM板發(fā)出的NEMA語句,經過軟件編程計算出定位信息(包括:緯度、經度、高度、速度、日期、時間、航向、衛(wèi)星狀況等)后,在OLED顯示屏上顯示出來。并且通過MAX3100將這些定位信息以RS232標準串口數(shù)據輸出。系統(tǒng)電路原理圖如圖1所示。
單片機與 GPS-OEM板之間的數(shù)據通信,是通過MAX3100通用異步收發(fā)器來實現(xiàn)的,其中單片機震蕩頻率選用11.059 2 MHz。首先用MAX232電平轉換芯片,來實現(xiàn)RS232電平與TTL電平的雙向轉換,因為GPS OEM板的串口電平是符合RS232標準的電平,而MAX3100采用的是TTL電平。
圖1 電路原理圖
MAX3100的DIN引腳為串行數(shù)據輸入端,DOUT為串行數(shù)據輸出端,串行時鐘的上升沿鎖存DIN數(shù)據,DOUT數(shù)據由串行時鐘的下降沿同步輸出。MAX3100的DIN和DOUT引腳的串行數(shù)據序列都是16位數(shù)據,其中DIN數(shù)據序列的前兩位表征串的數(shù)據類型。當前兩位是“1,1”時,表示寫命令,當前兩位是“0,0”時,表示讀數(shù)據,當前兩位是“1,0”時,表示寫數(shù)據。
對MAX3100進行初始化配置,是單片機通過寫命令序列來完成的。該命令序列包括奇偶校驗位、數(shù)據位、停止位、波特率設置、數(shù)據字長度、校驗FIFO、中斷使能等信息。MAX3100具有自己的波特率發(fā)生器,其振蕩器可以用頻率為1.843 2 MHZ或3.686 4 MHZ的晶振。波特率由寫命令序列的后4位B0~B3位決定的。
當單片機接收GPS OEM板的串口數(shù)據時,是通過讀MAX3100數(shù)據序列來完成的,單片機從MAX3100讀出數(shù)據時,需要在DIN寫入一個16位的字(0000H),再從DOUT讀入16位的字,其中的高八位是:接收/發(fā)送緩沖區(qū)的狀態(tài),數(shù)據錯/溢出狀態(tài),接收/校驗位狀態(tài)和CTS的狀態(tài),低八位才是接收到的GPS OEM板的串口數(shù)據。
當單片機發(fā)送最終的定位數(shù)據時,是通過向MAX3100寫入數(shù)據序列來完成的,單片機向MAX3100寫入數(shù)據時,在DIN寫入的是一個16位的字,其中高八位設置的內容是:寫入標志、允許TX輸出、RTS引腳設定以及傳送校驗位設定。低八位才是要傳送的數(shù)據。
顯示模塊顯示屏為128列、64行,有1片行驅動器和2片列驅動器,其中行驅動器有64行輸出,每片列驅動器有64路輸出。只要提供電源就能產生驅動信號和同步信號,模塊的外部信號僅與列驅動器有關。列驅動器內置64×64位顯示存儲器,顯示屏上各像素點顯示狀態(tài)與顯示存儲器各位數(shù)據一一對應,顯示存儲器的數(shù)據直接作為圖形顯示的驅動信號,為“1”的時候顯示,為“0”的時候不顯示。系統(tǒng)中OLED顯示屏顯示緯度、經度、高度、速度、日期、時間、航向、衛(wèi)星狀況等定位信息。
MAX706的6腳與7腳分別與AT89C52的P1.7與復位腳相連,在軟件程序中,每隔一段程序插入一個看門狗計數(shù)器復位指令,這樣,在程序運行過程中,如果進入死循環(huán)或非法代碼區(qū),就會使系統(tǒng)復位,保證系統(tǒng)正常運行。
將所要發(fā)送的數(shù)據送入發(fā)送緩沖器時,由于MAX3100要等T=1時,發(fā)送緩沖器為空,才可以接收另一個需發(fā)送的數(shù)據,所以此時加入合適的延時,是非常必要的,可以保證所發(fā)數(shù)據準確無誤。
在實現(xiàn)OLED顯示時,先將需要顯示的漢字組成一個漢字庫,英文字符或阿拉伯數(shù)字組成一個西文字庫。
如漢字“效”字,設置宋體12號,對應的點陣為寬×高=16×16,用取模軟件橫向取模對應的32字節(jié)為:{0×10,0 ×20,0 ×08,0 ×30,0 ×08,0 ×20,0 ×7F,0 ×20,0 ×14,0 ×7E,0 ×12,0 ×44,0 ×21,0 ×C4,0 ×22,0 ×44,0 ×62,0 ×28,0 ×14,0 ×28,0 ×08,0 ×10,0 ×0C,0 ×10,0 ×12,0 ×28,0 ×20,0 ×CE,0 ×C3,0 ×04,0 ×00,0 ×00}。
阿拉伯數(shù)字“1”,設置宋體12號,對應的點陣為寬×高=8×16,用取模軟件橫向取模對應的16字節(jié)為:{0×00,0 ×00,0 ×00,0 ×10,0 ×70,0 ×10,0 ×10,0 ×10,0 ×10,0 ×10,0 ×10,0 ×10,0 ×10,0 ×7C,0 ×00,0 ×00}。
軟件設計的時候,有兩部分關鍵設計,一是對串口接收到的GPS模塊數(shù)據進行處理;二是將所需的定位信息在OLED顯示屏上顯示出來。軟件流程圖如圖2所示。
在MAX3100中定義一個8位移位的子程序,C語言代碼如下:
圖2 軟件流程圖
這個子程序的任務就是通過對MAX3100的DIN和DOUT引腳進行8次移位操作,來完成兩個任務,首先是接收部分,通過初始化配置后,經過RX接收GPS模塊的NEMA語句,送入接收緩沖區(qū)。接下來是發(fā)送部分,接收SPI數(shù)據并進行發(fā)送緩沖,通過TX按異步串行發(fā)送出去。
接收NEMA語句時首先從行首標志“$”開始,在沒有進一步處理之前,NEMA語句是一長串字節(jié)流,這些信息在經過分類提取之前是無法加以利用的,因此,必須通過軟件程序將各個字段的信息從字節(jié)流中提取出來,將其轉化成緯度、經度、高度、速度、日期、時間、航向、衛(wèi)星狀況等定位信息。其中接收NEMA語句的C語言代碼如下:
在OLED顯示屏上某一位置顯示某一定位信息,是通過軟件設置來完成的,其中Row代表所要顯示位置的開始行,Column代表所要顯示位置的開始列,a代表在已經建立的漢字庫和西文字庫中的序列號,C語言代碼如下:
本系統(tǒng)結合MAX3100高效的異步收發(fā)通信優(yōu)點,吸取了其功耗低、體積小、傳輸快以及OLED顯示屏超輕薄、高亮度、廣視角、自發(fā)光、響應速度快、適應溫度范圍寬、抗震強、功耗低等優(yōu)點。設計開發(fā)出由電池供電的便攜式GPS定位系統(tǒng),已經成功應用到產品中,取得很好的效果。
[1]黃仁欣.GPS衛(wèi)星導航定位原理與方法[M].北京:清華大學出版社,2008.
[2]陳金鑫.OLED有機電致發(fā)光材料與器件[M].北京:清華大學出版社,2007.