基于GSM短信模塊的定位跟蹤系統設計方案
軟件設計采用了模塊化的設計方式,系統軟件由一個(gè)主程序和若干個(gè)子程序構成。主程序負責完成對各個(gè)功能模塊(子程序)的調用。系統軟件的其他部分還涉及到單片機與GSM 模塊之間的串行通信、單片機控制模塊中主機和從機間的SPI 模式通信、單片機對GPS 信息的解碼、對GSM-At 指令的編碼等。
主程序功能是:系統開(kāi)機后對GPS 模塊、GSM模塊初始化,控制主機部分接收來(lái)自GPS 接收模塊的GPS 信息,篩選出其中的特定部分存儲,將數據以SPI 通信方式傳給從機;控制從機部分對信息進(jìn)行編碼并傳送給GSM 模塊。主程序功能框圖如圖5所示。
圖5 軟件系統的流程框圖。
2.1 系統初始化子程序
系統初始化子程序完成設置系統串口波特率、啟動(dòng)串口、初始化數據存儲單元任務(wù),實(shí)現單片機控制模塊、外圍器件以及GSM 模塊的初始化工作。
單片機控制模塊從機部分和GSM 短信模塊進(jìn)行異步串行通信,需對串口進(jìn)行設置:
(1)工作方式。
GSM 通信模塊的數據接口配置為8 位數據位、1 位停止位、無(wú)校驗位,因此設置單片機的串行口工作方式為異步通信模式。
(2)波特率設定。
Atmega16L 單片機控制系統的晶振為3.6864M,波特率需為9600b/s,所以根據記數初值的計算公式:X=256-fose × (1/384) × 波特率,UBRRL=0x16 (USART 通信)。
2.2 軟件定時(shí)程序
系統通過(guò)設置16 位定時(shí)器1 的寄存器初始值實(shí)現定時(shí)功能。系統采用頻率為3.6864MHz 的晶振, 機器周期近似為0.3 us , 初始化時(shí)預置TCNT1H=0xD4,TCNT1L=0xFF,(FFFFH-D4FFH)×0.3us=3.3ms,因此每3.3ms 中斷一次。流程圖如圖6 所示。
圖6 定時(shí)器中斷子程序
2.3 SPI 同步串行通信
使用SPI 主從模式進(jìn)行通信關(guān)鍵是時(shí)鐘同步,一般為主機輸出同步時(shí)鐘,從機輸入同步時(shí)鐘。系統設定主機定時(shí)在第5 個(gè)時(shí)間段時(shí)開(kāi)始發(fā)送數據,從機每收到一個(gè)字節數據就產(chǎn)生一次SPI 中斷,在中斷程序中將數據取走放到相應的存儲單元。
2.4 單片機給GSM 模塊發(fā)送AT 指令程序設計
單片機通過(guò)GSM-AT 指令控制GSM 模塊發(fā)送短消息。指令執行過(guò)程需要單片機與GSM 模塊完成交互應答,每次發(fā)送或接收的字節數都有嚴格規定,二者必須依據規定實(shí)現數據交換。本段子程序主要實(shí)現的功能是系統上電、完成初始化后,將數據形成短信發(fā)送到GSM 網(wǎng)。程序的流程圖如圖8所示。
圖7 SPI 串行通信流程圖
評論