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