1 引言
隨著通信技術(shù)的發(fā)展,,基于移動(dòng)通信網(wǎng)絡(luò)的服務(wù)功能正向工業(yè)控制和遙控領(lǐng)域擴(kuò)展,。為了適應(yīng)這種需要,,西門(mén)子公司推出新一代TC35i型無(wú)線通信GSM模塊,,基于該模塊的短消息功能,,可以快速,、安全,、可靠地實(shí)現(xiàn)用戶信息處理等功能,特別適用于控制中心與終端設(shè)備距離很遠(yuǎn)或不便采用有線通信介質(zhì)的場(chǎng)合,。該系統(tǒng)由控制中心和若干顯示屏組成,,控制中心實(shí)時(shí)將最新信息發(fā)送到各顯示屏,構(gòu)成控制中心與顯示屏端的通信鏈路,。
2 TC35i與單片機(jī)的硬件接口電路
TC35i可以快速安全可靠地實(shí)現(xiàn)系統(tǒng)方案中的數(shù)據(jù),、語(yǔ)音傳輸、短消息服務(wù)和傳真,。模塊的工作電壓為3.3 V~5.5 V,,可以工作在900 MHz~1800MHz。模塊有AT命令集接口,,支持文本和PDU模式的短消息,。此外,該模塊還具有電話薄,、多方通話,、漫游檢測(cè)等功能,常用工作模式有省電模式,、I-DLE和TALK等模式,。通過(guò)40引腳的ZIF連接器實(shí)現(xiàn)電源連接、指令,、數(shù)據(jù),、語(yǔ)音信號(hào)及控制信號(hào)的雙向傳輸。通過(guò)ZIF連接器及50 Ω的天線連接器可分別連接SIM卡支架和天線,。
在控制系統(tǒng)中,,采用AT89C51型單片機(jī)同時(shí)擴(kuò)展RAM6264用于存放與顯示屏對(duì)應(yīng)的要顯示的128 B數(shù)據(jù)以及從GSM模塊讀取的信息。為了增大存放數(shù)據(jù)的容量,,本設(shè)計(jì)采用了AM29F040型FlashMemory(512 KB),,它存儲(chǔ)容量大、集成度高,、成本低,,具有靈活的讀寫(xiě)性和較好的數(shù)據(jù)非易失性,。它有15條地址線,其中低8位地址由P0口經(jīng)74HC373鎖存后提供,,高11位地址由P2口與P1.4,、P1.5、P1.6共同提供,。8位數(shù)據(jù)由PO口直接提供,。
采用動(dòng)態(tài)掃描方式,用74HCl54及74HC595進(jìn)行16行的逐行掃描,,利用人眼的視覺(jué)暫留效果,,可以節(jié)省I/O資源,減少發(fā)熱量,。
3 工作原理
如圖l所示,,在接收終端,單片機(jī)通過(guò)讀取TC35i模塊以短消息形式承載的數(shù)據(jù),,經(jīng)處理后把它顯示到LED顯示屏上,。因?yàn)槎绦畔⒅械臐h字僅僅是1個(gè)編碼,單片機(jī)應(yīng)用系統(tǒng)將編碼變?yōu)闈h字點(diǎn)陣數(shù)據(jù),,必須配置漢字字庫(kù),。因此,設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)時(shí),,控制中心編輯PDU數(shù)據(jù)包數(shù)據(jù),,采用自定義數(shù)據(jù)方式。其中,,代表漢字的數(shù)據(jù)直接用漢字的機(jī)內(nèi)碼,,系統(tǒng)配置的字庫(kù)為GB-2312編碼的漢字庫(kù),即區(qū)位碼漢字庫(kù),。下面通過(guò)對(duì)存儲(chǔ)在手機(jī)中的待發(fā)信息的分析來(lái)介紹SMSPDU的數(shù)據(jù)格式,。首先,用手機(jī)寫(xiě)一條信息,,發(fā)送手機(jī)號(hào)碼為13605696031,,信息內(nèi)容為“HelloWorld!”。通過(guò)執(zhí)行AT+CMGL=2可以讀出此條信息,。
操作過(guò)程如下(斜體字符為響應(yīng)信息,,{}內(nèi)為注釋?zhuān)?/p>
單片機(jī)與手機(jī)的軟件接口其實(shí)就是單片機(jī)通過(guò)與GSM短信息有關(guān)的AT指令控制手機(jī)的技術(shù),如讀取手機(jī)的短信息內(nèi)容,、刪除短信息內(nèi)容,、列出手機(jī)中還未讀的短消息等。執(zhí)行l(wèi)條指令,,并非某些資料介紹的那么簡(jiǎn)單,,事實(shí)上,,指令的執(zhí)行過(guò)程需要單片機(jī)與手機(jī)交互應(yīng)答完成,,每一次發(fā)送或接收的字節(jié)數(shù)有嚴(yán)格的規(guī)定,,二者必須依據(jù)這些規(guī)定實(shí)現(xiàn)數(shù)據(jù)交換,否則,,通信就是失敗的,。表l列出AT指令執(zhí)行過(guò)程。
所有AT指令的指令符號(hào),、常數(shù),、PDU數(shù)據(jù)包等都以ASCⅡ編碼形式傳送,比如“A”的ASCⅡ編碼為41H,,“T”的ASCⅡ編碼為54H,,數(shù)字“0”的ASCⅡ編碼為30H等。
單片機(jī)控制手機(jī)工作,,必須把手機(jī)的短信息工作模式設(shè)置為PDU格式,,即通過(guò)指令A(yù)T+CMGF=0完成。
單片機(jī)向手機(jī)發(fā)送每l條指令后,,必須以回車(chē)符作為該條指令的結(jié)束,,回車(chē)的ASCⅡ編碼為ODH,例如單片機(jī)向手機(jī)發(fā)送“AT+CMGF=0"指令,,其ASCⅡ編碼列為“41H,、54H、2BH,、42H,、4DH、47H,、46H,、3DH、30H,、0DH”,,最后1個(gè)字節(jié)0DH就是回車(chē)符,表示該條指令結(jié)束,,如果沒(méi)有這個(gè)回車(chē)符,,手機(jī)將不識(shí)別這條指令。
當(dāng)手機(jī)接收到一條完整的AT指令后,,手機(jī)并不立即執(zhí)行這條指令,,而是首先把剛才接收到的AT指令的全部ASCⅡ編碼序列全部反發(fā)送出來(lái)(含ODH),其次發(fā)送1個(gè)回車(chē)符和換行符的ASCⅡ編碼即0DH和OAH,,最后執(zhí)行該條指令,。
手機(jī)向單片機(jī)發(fā)送短信息內(nèi)容時(shí),,其PDU數(shù)據(jù)包的內(nèi)容是16進(jìn)制表示的數(shù)據(jù),但并不是直接向單片機(jī)傳遞16進(jìn)制數(shù)據(jù),,而是仍然把每一位16進(jìn)制數(shù)以ASCⅡ編碼來(lái)發(fā)送,,這樣,2個(gè)字節(jié)的16進(jìn)制數(shù)就變成4個(gè)字節(jié)的ASCⅡ碼,。但是,,PDU數(shù)據(jù)包中的數(shù)據(jù)字節(jié)長(zhǎng)度部分仍然是實(shí)際字節(jié)長(zhǎng)度,而不是變成ASCⅡ碼的字節(jié)長(zhǎng)度,,這在編程時(shí)應(yīng)特別注意,,否則,接收的數(shù)據(jù)就不完整,。單片機(jī)接收到PDU數(shù)據(jù)包數(shù)據(jù)后,,必須將其恢復(fù)成16進(jìn)制數(shù)據(jù),其算法如下:
設(shè)a為接收的ASCⅡ碼.b為轉(zhuǎn)換后的16進(jìn)制數(shù),,那么,,如果a<39H,則b=a-30H,;如果a>39H,,則b=a-30H-07H。最后把前后2個(gè)數(shù)合并為1個(gè)字節(jié),。
手機(jī)向單片機(jī)應(yīng)答PDU數(shù)據(jù)包的字節(jié)數(shù)不包括前9個(gè)字節(jié)數(shù)據(jù)(短信服務(wù)中心地址),,但向單片機(jī)傳送PDU數(shù)據(jù)包時(shí)包括這9個(gè)字節(jié)的數(shù)據(jù),例如:如果手機(jī)應(yīng)答的PDU數(shù)據(jù)長(zhǎng)度為50,,而實(shí)際向單片機(jī)傳送的16進(jìn)制數(shù)據(jù)為59字節(jié),,ASCⅡ碼為2x59字節(jié),所以,,單片機(jī)必須按2x59個(gè)字節(jié)接收PDU數(shù)據(jù),。
為了使MCU操作,可用1個(gè)512 KB的存儲(chǔ)器(如本系統(tǒng)中的29F0410)存儲(chǔ)全部的國(guó)標(biāo)16x16點(diǎn)陣漢字,、8x16的ASCⅡ碼點(diǎn)陣數(shù)據(jù)及漢字語(yǔ)句編碼數(shù)據(jù),。從小到大依次存有國(guó)標(biāo)區(qū)位碼表中的所有漢字,每個(gè)漢字占用32個(gè)字節(jié),,每個(gè)區(qū)為94個(gè)漢字,。在文件ASCl6中按ASCⅡ碼從小到大依次存有8x16的ASCⅡ碼點(diǎn)陣,每個(gè)ASCⅡ碼占用16個(gè)字節(jié),。由于29F040的容量為512 KB,,而微控制器只能管理64KB的數(shù)據(jù)空間,所以可將29F040分成16頁(yè),每頁(yè)32 KB,,占單片機(jī)系統(tǒng)數(shù)據(jù)空間的8000H~OFFFFH,。首先提取16x16的國(guó)標(biāo)漢字點(diǎn)陣和8x16的ASCⅡ碼點(diǎn)陣(如UCDOS軟件中的HZKl6和ASCl6)并將其直接寫(xiě)入29F040。其中HZKl6(256 KB)占O-7頁(yè),。為了便于編程,,雖然ASCl6只有4KB,也單獨(dú)占用第8頁(yè),。
在PC的文本文件中,,漢字是以機(jī)內(nèi)碼的形式存放的,每個(gè)漢字占用2個(gè)字節(jié),;第一個(gè)字節(jié)為區(qū)碼,為了與ASCⅡ碼區(qū)別,,范圍從十六進(jìn)制的0AIH開(kāi)始(小于80 H的為ASCⅡ碼字符),,對(duì)應(yīng)區(qū)位碼中區(qū)碼的第一區(qū);第二個(gè)字節(jié)為位碼,,范圍也從0A1H開(kāi)始,,對(duì)應(yīng)某區(qū)中的第一位碼。這樣,,將漢字機(jī)內(nèi)碼減去0AOAH就是該漢字的區(qū)位碼,。如漢字“房”的機(jī)內(nèi)碼為十六進(jìn)制的“B7BF”,其中“B7”表示區(qū)碼,,“BF”,,表示位碼。所以“房”的區(qū)位碼為0B7BFH-0AOAOH=17lFH,。將區(qū)碼和位碼分別轉(zhuǎn)換為十進(jìn)制得漢字“房”的區(qū)位碼為“2331”,,即“房”的點(diǎn)陣位于第23區(qū)的第31個(gè)字的位置,相當(dāng)于在文件HZKl6中的位置第32x[(23-1)x94+(3l-1)]=67136 B以后的32個(gè)字節(jié)為“房”的顯示點(diǎn)陣,。
4 結(jié)束語(yǔ)
在信息化社會(huì)中,,遠(yuǎn)程信息傳遞扮演著重要的角色,GSM模塊以其準(zhǔn)確,、低廉,、實(shí)時(shí)的特點(diǎn)為人們獲得某種信息提供便利,同時(shí)LED顯示又是溝通的重要窗口,,二者結(jié)合顯示可應(yīng)用的領(lǐng)域十分廣泛,,如交通、天氣預(yù)報(bào),、廣告,、通知、工農(nóng)業(yè)生產(chǎn)、商業(yè)信息等,,本設(shè)計(jì)采用的模塊市場(chǎng)上容易獲得,,采用信息直接顯示不用返回,顯示環(huán)節(jié)運(yùn)用動(dòng)態(tài)掃描減少LED工作時(shí)間,,延長(zhǎng)壽命且節(jié)能,,擴(kuò)展的數(shù)據(jù)存儲(chǔ)器容量達(dá)8 KB,顯示時(shí)間較長(zhǎng),,較多信息可分時(shí)顯示,,結(jié)構(gòu)簡(jiǎn)單,體積較小,,實(shí)用性強(qiáng),。