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