新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于虛擬串口的GPS/GSM遠程定位技術

        基于虛擬串口的GPS/GSM遠程定位技術

        作者: 時間:2009-11-06 來源:網絡 收藏

        1.3 主控單元
        主控單元采用AT89S52單片機作為控制器,單片機通過串口與模塊以及模塊進行通信。在此需要兩個串口,而AT89S52單片機本身只有一個串口,常規的解決方法是采用具有雙串口的單片機或者ARM等控制器,或者通過硬件來擴展串口。前者會使系統的硬件成本大大提高,而后者不僅會增加系統的成本,還會增大系統硬件的體積。本文采取的解決辦法是,AT89S52單片機本身的串口用于跟模塊進行通信,而利用I/O口P1.4和P3.2編程實現一個與TC35i模塊進行通信。由于單片機內部定時/計數器只能實現較小時間的定時,所以巧妙利用了單片機的T2定時/計數器(P1.0)對Jupiter 21OEM板的1PPS秒脈沖輸出進行計數方便地實現5 min定時,用于收發短信所需的定時。該部分還擴展了報警電路和控制開關通斷等功能電路,這是由監控中心通過撥打遠程目標端的電話來控制的。同時,還保留了單片機的剩余I/O口用于系統的進一步擴充。


        2 系統軟件設計
        2.1 單片機部分軟件設計
        單片機部分的程序流程圖如圖2所示。該部分程序采用C語言編程實現,主要包括定位信息的提取、通信以及短消息的發送三個部分。

        2.1.1 定位信息的提取
        單片機采用4 800 b/s波特率與模塊進行異步串行通訊,從GPS模塊輸出的是NMEA-0183語句格式的數據。該語句格式的數據以“$”開頭,包括$GPRMC,$GPGGA,$GPGSV,$GPVTG,$G-PGSA,$GPGLL等語句。系統設計中只從中提取出$GPRMC語句,再進一步提取出里面包含的經緯度、速度、時間等信息,已經可以滿足系統的需求。該部分的軟件流程圖如圖3所示。
        2.1.2
        單片機與模塊之間通過虛擬串口進行通信,以解決AT89S52單片機固有串口不足的問題,通信波特率取為9 600 b/s。虛擬串口就是利用單片機I/O編程實現一個串口的功能,這樣就以較少的資源實現了系統的功能,克服了傳統的采用具有雙串口的控制器或者利用硬件進行串口擴展的方法其成本高、體積大的缺點。程序中采用定時器工作于方式2進行一個數據位傳輸時間的定時,用于嚴格控制一個數據位的傳輸時間。單片機采用11.059 2 MHz晶振,這樣定時器的初值為256-(1 000 000/9 600)/(12/11.059 2)=160,即十六進制的0xA0。實驗結果證明,采用該方法進行串口通訊,數據傳輸穩定、可靠。采用虛擬串口發送、接收一個字符的程序流程圖分別如圖4,圖5所示。

        2.1.3 發送短消息
        主要是由單片機根據發送短消息的特定步驟,采用AT命令控制模塊發送短消息,是系統設計中最重要的內容之一。該部分程序設計中,由于會涉及到單片機與GSM模塊的多次交互過程,而GSM模塊響應較單片機來的慢,特別是涉及到FLASH或SIM卡的操作及網絡的交互時,必須要考慮到GSM模塊的響應時間問題。系統中采用TEXT模式發送短消息,步驟如下:

        1.設置短信中心號碼:AT+CSCA=+8613500591500CR>//代表福州移動,CR>代表回車,下同
        2.設置短信發送模式:AT+CMGF=1CR>//設置短信發送模式為TEXT模式
        3.設置TEXT模式參數:AT+CSMP=17,167,0,0CR>//最后一個參數是數據編碼類型,0表示默認字符集(GSM);(167代表有效期24 h)
        4.設置使用的字符集:AT+CSCS=GSMCR>//設置為GSM字符集
        5.輸入目標號碼:AT+CMGS=13599071***CR>//1359907l***為目標號碼
        6.輸入短信內容再輸人Ctrl+Z>,即ASCII碼0x1A。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阿合奇县| 瑞安市| 竹北市| 南投县| 修武县| 榆林市| 乐清市| 兴国县| 沽源县| 亳州市| 东宁县| 汤阴县| 瑞安市| 花莲市| 龙门县| 天长市| 巴里| 略阳县| 广东省| 泰宁县| 正定县| 临高县| 黔西| 兴化市| 东乡县| 奉节县| 南和县| 丰镇市| 义乌市| 临泉县| 利川市| 广汉市| 越西县| 海丰县| 潮安县| 定陶县| 铁岭县| 喀什市| 英德市| 上饶市| 津南区|