單片機控制手機的硬軟件接口技術及其應用
現(xiàn)對幾個問題說明如下:
⑴所有AT指令的指令符號、常數(shù)、PDU數(shù)據(jù)包等都是以ASCII編碼形式傳送的,比如“A”的ASCII編碼為41H,“T”的ASCII編碼為54H,數(shù)字“0”的 ASCII編碼為30H等。
⑵單片機控制手機工作,必須把手機的短信息工作模式設置為PDU格式,即通過指令AT+CMGF=0完成。
⑶單片機向手機發(fā)送每一條指令后,必須以回車符作為該條指令的結束,回車的ASCII編碼為0DH,例如單片機向手機發(fā)送“AT+CMGF=0”這條指令,其ASCII編碼序列為“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后一個字節(jié)0DH就是回車符,表示該條指令結束,如果沒有這個回車符,手機將不識別這條指令。
⑷當手機接收到一條完整的AT指令后,手機并不立即執(zhí)行這條指令,而是①先把剛才接收到的AT指令的全部ASCII編碼序列全部反發(fā)送出來(含0DH);②其次發(fā)送一個回車符和換行符的ASCII編碼,即0DH和0AH;③執(zhí)行該條指令。
⑸手機向單片機傳送短信息內(nèi)容時,其PDU數(shù)據(jù)包的內(nèi)容是以16進制表示的數(shù)據(jù),但并不是直接向單片機傳遞16進制數(shù)據(jù),而仍然是把每一位16進制數(shù)以ASCII編碼來發(fā)送。這樣,二個字節(jié)的16進制數(shù)就變成4個字節(jié)的ASCII碼。但是,PDU數(shù)據(jù)包中的數(shù)據(jù)字節(jié)長度部分仍然是實際字節(jié)長度,而不是變成ASCII碼的字節(jié)長度,這在編程時應特別注意,否則,接收的數(shù)據(jù)就不完整。單片機接收到PDU數(shù)據(jù)包數(shù)據(jù)后,必須將其恢復成16進制數(shù)據(jù),其算法如下:
設: a為接收的ASCII碼,b為轉換后的16進制數(shù)。那么:如果a<39H,則b=a-30H;如果a>39H,則b=a-30H-07H。最后把前后兩個數(shù)合并為一個字節(jié)。
⑹手機向單片機應答PDU數(shù)據(jù)包的字節(jié)數(shù)不包括前9個字節(jié)數(shù)據(jù) (短信服務中心地址),但向單片機傳送PDU數(shù)據(jù)包時,包括這9 個字節(jié)的數(shù)據(jù),例如,如果手機應答的pdu數(shù)據(jù)長度為50,而實際向單片機傳送的16進制數(shù)據(jù)為59字節(jié),ASCII碼為2*59字節(jié),所以,單片機必須按2*59個字節(jié)接受pdu數(shù)據(jù)。
3、應用舉例
作者利用上述原理和接口技術開發(fā)了一個項目:高速公路顯示導引系統(tǒng)。安裝在高速公路上的LED顯示屏實時顯示前方路段車輛通行態(tài)勢,和天氣氣候情況,提醒并引導駕駛人員,正確駕駛。該系統(tǒng)的使用一定程度上消除了許多交通事故隱患,從而保障了道路的暢通和人民生命財產(chǎn)的安全。該系統(tǒng)由控制中心和若干個顯示屏組成。控制中心實時將最新信息發(fā)送到各顯示屏。構建控制中心與顯示終端的通信鏈路,傳統(tǒng)的方法要么鋪設光纜用有線方式實現(xiàn),要么構建專用無線網(wǎng)用無線方式實現(xiàn)。因為高速公路的特殊性,控制中心與顯示終端之間的距離通常很遠,兩種方案都必須投入大量資金和巨大的施工工作量。如果采用GSM公眾無線傳輸網(wǎng)絡,控制中心以短信息的形式把顯示信息發(fā)送到顯示終端的技術方案,則具有投資小,施工方便,工作可靠,運行費用低等諸多優(yōu)點。
在控制中心,微機編輯好短信息后通過手機這個載體發(fā)送出去,在顯示終端,單片機通過讀取手機的短信息把它顯示到LED顯示屏上。項目的核心技術是單片機與手機的接口和PDU數(shù)據(jù)包中的漢字信息編碼,因為短信息中的漢字僅僅是一個編碼,單片機應用系統(tǒng)將編碼變?yōu)闈h字點陣數(shù)據(jù),必須配置漢字字庫。按照GSM07.05協(xié)議規(guī)定,短信息中的漢字編碼為unicode編碼,如果,構建一個unicode編碼的漢字字庫,確實是一件繁瑣的工作,因此,在設計單片機應用系統(tǒng)時,采用了如下兩點技術措施。
1)單片機系統(tǒng)配置的字庫為GB-2312編碼的漢字庫,即區(qū)位碼漢字庫,該漢字庫在網(wǎng)上可免費下載,固化到Flash存儲芯片中即可。當然這樣做的前提是,PDU數(shù)據(jù)包中的漢字編碼必須為漢字內(nèi)碼而非Unicode編碼。
2)控制中心編輯PDU數(shù)據(jù)包數(shù)據(jù)時,采用自定義數(shù)據(jù)方式,其中,代表漢字的數(shù)據(jù),直接取用漢字的機內(nèi)碼即可,免去了把機內(nèi)碼再轉換為Unincode編碼之苦。實踐證明,這是可行的。
采用以上技術措施的優(yōu)點,一是省去了兩種編碼的相互轉換;二是保證了數(shù)據(jù)的保密性,非系統(tǒng)內(nèi)用戶無法接收,即使接收也無法顯示。
該項目研制成功投入使用后,因顯示終端只接收不發(fā)送,幾乎沒有運行成本。發(fā)送端(控制中心)可采用月租方式,也能把運行費用降低到最低限度。因此該項目受到用戶滿意的評價。
參考文獻
[1] 薛棟梁單片機原理與應用[M] 北京水利水電出版社 2001
[2]李鴻用單片機控制手機收發(fā)短信息電子技術應用2002
[3]馬潮嵌入式GSM短信息接口的軟硬件設計單片機及嵌入式應用 2002
[4] http://www.21IC.com
評論