基于MAX3100和OLED的GPS定位系統設計
2 單片機與GPS-OEM板之間的數據通信
單片機與GPS-OEM板之間的數據通信,是通過MAX3100通用異步收發器來實現的,其中單片機震蕩頻率選用11.0592MHz。首先用MAX232電平轉換芯片,來實現RS232電平與TTL電平的雙向轉換,因為GPS OEM板的串口電平是符合RS232標準的電平,而MAX3100采用的是TTL電平。
MAX3100的DIN引腳為串行數據輸入端,DOUT為串行數據輸出端,串行時鐘的上升沿鎖存DIN數據,DOUT數據由串行時鐘的下降沿同步輸出。 MAX3100的DIN和DOUT引腳的串行數據序列都是16位數據,其中DIN數據序列的前兩位表征串的數據類型。當前兩位是“1,1”時,表示寫命令,當前兩位是“0,0”時,表示讀數據,當前兩位是“1,0”時,表示寫數據。
對MAX3100進行初始化配置,是單片機通過寫命令序列來完成的。該命令序列包括奇偶校驗位、數據位、停止位、波特率設置、數據字長度、校驗FIFO、中斷使能等信息。MAX3100具有自己的波特率發生器,其振蕩器可以用頻率為1.843 2 MHZ或3.6864 MHZ的晶振。波特率由寫命令序列的后4位B0~B3位決定的。
當單片機接收GPS OEM板的串口數據時,是通過讀MAX3100數據序列來完成的,單片機從MAX3100讀出數據時,需要在DIN寫入一個16位的字(0000H),再從DOUT讀入16位的字,其中的高八位是:接收/發送緩沖區的狀態,數據錯/溢出狀態,接收/校驗位狀態和CTS的狀態,低八位才是接收到的GPS OEM板的串口數據。
當單片機發送最終的定位數據時,是通過向MAX3100寫入數據序列來完成的,單片機向MAX3100寫入數據時,在DIN寫入的是一個16位的字,其中高八位設置的內容是:寫入標志、允許TX輸出、RTS引腳設定以及傳送校驗位設定。低八位才是要傳送的數據。
3 OLED顯示屏顯示定位信息
顯示模塊顯示屏為128列、64行,有1片行驅動器和2片列驅動器,其中行驅動器有64行輸出,每片列驅動器有64路輸出。只要提供電源就能產生驅動信號和同步信號,模塊的外部信號僅與列驅動器有關。列驅動器內置64×64位顯示存儲器,顯示屏上各像素點顯示狀態與顯示存儲器各位數據一一對應,顯示存儲器的數據直接作為圖形顯示的驅動信號,為“1”的時候顯示,為“O”的時候不顯示。系統中OLED顯示屏顯示緯度、經度、高度、速度、日期、時間、航向、衛星狀況等定位信息。
4 軟件設計
4.1 看門狗中斷的應用
MAX706的6腳與7腳分別與AT89C52的P1.7與復位腳相連,在軟件程序中,每隔一段程序插入一個看門狗計數器復位指令,這樣,在程序運行過程中,如果進入死循環或非法代碼區,就會使系統復位,保證系統正常運行。
4.2 延時處理
將所要發送的數據送入發送緩沖器時,由于MAX3100要等T=1時,發送緩沖器為空,才可以接收另一個需發送的數據,所以此時加入合適的延時,是非常必要的,可以保證所發數據準確無誤。
4.3 建立字庫
在實現OLED顯示時,先將需要顯示的漢字組成一個漢字庫,英文字符或阿拉伯數字組成一個西文字庫。
如漢字“效”字,設置宋體12號,對應的點陣為寬×高=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號,對應的點陣為寬×高=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 軟件要點設計
軟件設計的時候,有兩部分關鍵設計,一是對串口接收到的GPS模塊數據進行處理;二是將所需的定位信息在OLED顯示屏上顯示出來。軟件流程圖如圖2所示。
評論