基于GSM模塊的LED顯示屏設計
1 引言
隨著(zhù)通信技術(shù)的發(fā)展,基于移動(dòng)通信網(wǎng)絡(luò )的服務(wù)功能正向工業(yè)控制和遙控領(lǐng)域擴展。為了適應這種需要,西門(mén)子公司推出新一代TC35i型無(wú)線(xiàn)通信GSM模塊,基于該模塊的短消息功能,可以快速、安全、可靠地實(shí)現用戶(hù)信息處理等功能,特別適用于控制中心與終端設備距離很遠或不便采用有線(xiàn)通信介質(zhì)的場(chǎng)合。該系統由控制中心和若干顯示屏組成,控制中心實(shí)時(shí)將最新信息發(fā)送到各顯示屏,構成控制中心與顯示屏端的通信鏈路。
2 TC35i與單片機的硬件接口電路
TC35i可以快速安全可靠地實(shí)現系統方案中的數據、語(yǔ)音傳輸、短消息服務(wù)和傳真。模塊的工作電壓為3.3 V~5.5 V,可以工作在900 MHz~1800MHz。模塊有AT命令集接口,支持文本和PDU模式的短消息。此外,該模塊還具有電話(huà)薄、多方通話(huà)、漫游檢測等功能,常用工作模式有省電模式、I-DLE和TALK等模式。通過(guò)40引腳的ZIF連接器實(shí)現電源連接、指令、數據、語(yǔ)音信號及控制信號的雙向傳輸。通過(guò)ZIF連接器及50 Ω的天線(xiàn)連接器可分別連接SIM卡支架和天線(xiàn)。
在控制系統中,采用AT89C51型單片機同時(shí)擴展RAM6264用于存放與顯示屏對應的要顯示的128 B數據以及從GSM模塊讀取的信息。為了增大存放數據的容量,本設計采用了AM29F040型FlashMemory(512 KB),它存儲容量大、集成度高、成本低,具有靈活的讀寫(xiě)性和較好的數據非易失性。它有15條地址線(xiàn),其中低8位地址由P0口經(jīng)74HC373鎖存后提供,高11位地址由P2口與P1.4、P1.5、P1.6共同提供。8位數據由PO口直接提供。
采用動(dòng)態(tài)掃描方式,用74HCl54及74HC595進(jìn)行16行的逐行掃描,利用人眼的視覺(jué)暫留效果,可以節省I/O資源,減少發(fā)熱量。
3 工作原理
如圖l所示,在接收終端,單片機通過(guò)讀取TC35i模塊以短消息形式承載的數據,經(jīng)處理后把它顯示到LED顯示屏上。因為短信息中的漢字僅僅是1個(gè)編碼,單片機應用系統將編碼變?yōu)闈h字點(diǎn)陣數據,必須配置漢字字庫。因此,設計單片機應用系統時(shí),控制中心編輯PDU數據包數據,采用自定義數據方式。其中,代表漢字的數據直接用漢字的機內碼,系統配置的字庫為GB-2312編碼的漢字庫,即區位碼漢字庫。下面通過(guò)對存儲在手機中的待發(fā)信息的分析來(lái)介紹SMSPDU的數據格式。首先,用手機寫(xiě)一條信息,發(fā)送手機號碼為13605696031,信息內容為“HelloWorld!”。通過(guò)執行AT+CMGL=2可以讀出此條信息。

操作過(guò)程如下(斜體字符為響應信息,{}內為注釋):


單片機與手機的軟件接口其實(shí)就是單片機通過(guò)與GSM短信息有關(guān)的AT指令控制手機的技術(shù),如讀取手機的短信息內容、刪除短信息內容、列出手機中還未讀的短消息等。執行l條指令,并非某些資料介紹的那么簡(jiǎn)單,事實(shí)上,指令的執行過(guò)程需要單片機與手機交互應答完成,每一次發(fā)送或接收的字節數有嚴格的規定,二者必須依據這些規定實(shí)現數據交換,否則,通信就是失敗的。表l列出AT指令執行過(guò)程。
{{分頁(yè)}}

所有AT指令的指令符號、常數、PDU數據包等都以ASCⅡ編碼形式傳送,比如“A”的ASCⅡ編碼為41H,“T”的ASCⅡ編碼為54H,數字“0”的ASCⅡ編碼為30H等。
單片機控制手機工作,必須把手機的短信息工作模式設置為PDU格式,即通過(guò)指令AT+CMGF=0完成。
單片機向手機發(fā)送每l條指令后,必須以回車(chē)符作為該條指令的結束,回車(chē)的ASCⅡ編碼為ODH,例如單片機向手機發(fā)送“AT+CMGF=0"指令,其ASCⅡ編碼列為“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后1個(gè)字節0DH就是回車(chē)符,表示該條指令結束,如果沒(méi)有這個(gè)回車(chē)符,手機將不識別這條指令。
當手機接收到一條完整的AT指令后,手機并不立即執行這條指令,而是首先把剛才接收到的AT指令的全部ASCⅡ編碼序列全部反發(fā)送出來(lái)(含ODH),其次發(fā)送1個(gè)回車(chē)符和換行符的ASCⅡ編碼即0DH和OAH,最后執行該條指令。
手機向單片機發(fā)送短信息內容時(shí),其PDU數據包的內容是16進(jìn)制表示的數據,但并不是直接向單片機傳遞16進(jìn)制數據,而是仍然把每一位16進(jìn)制數以ASCⅡ編碼來(lái)發(fā)送,這樣,2個(gè)字節的16進(jìn)制數就變成4個(gè)字節的ASCⅡ碼。但是,PDU數據包中的數據字節長(cháng)度部分仍然是實(shí)際字節長(cháng)度,而不是變成ASCⅡ碼的字節長(cháng)度,這在編程時(shí)應特別注意,否則,接收的數據就不完整。單片機接收到PDU數據包數據后,必須將其恢復成16進(jìn)制數據,其算法如下:
設a為接收的ASCⅡ碼.b為轉換后的16進(jìn)制數,那么,如果a<39H,則b=a-30H;如果a>39H,則b=a-30H-07H。最后把前后2個(gè)數合并為1個(gè)字節。
手機向單片機應答PDU數據包的字節數不包括前9個(gè)字節數據(短信服務(wù)中心地址),但向單片機傳送PDU數據包時(shí)包括這9個(gè)字節的數據,例如:如果手機應答的PDU數據長(cháng)度為50,而實(shí)際向單片機傳送的16進(jìn)制數據為59字節,ASCⅡ碼為2x59字節,所以,單片機必須按2x59個(gè)字節接收PDU數據。
為了使MCU操作,可用1個(gè)512 KB的存儲器(如本系統中的29F0410)存儲全部的國標16x16點(diǎn)陣漢字、8x16的ASCⅡ碼點(diǎn)陣數據及漢字語(yǔ)句編碼數據。從小到大依次存有國標區位碼表中的所有漢字,每個(gè)漢字占用32個(gè)字節,每個(gè)區為94個(gè)漢字。在文件ASCl6中按ASCⅡ碼從小到大依次存有8x16的ASCⅡ碼點(diǎn)陣,每個(gè)ASCⅡ碼占用16個(gè)字節。由于29F040的容量為512 KB,而微控制器只能管理64KB的數據空間,所以可將29F040分成16頁(yè),每頁(yè)32 KB,占單片機系統數據空間的8000H~OFFFFH。首先提取16x16的國標漢字點(diǎn)陣和8x16的ASCⅡ碼點(diǎn)陣(如UCDOS軟件中的HZKl6和ASCl6)并將其直接寫(xiě)入29F040。
其中HZKl6(256 KB)占O-7頁(yè)。為了便于編程,雖然ASCl6只有4KB,也單獨占用第8頁(yè)。
在PC的文本文件中,漢字是以機內碼的形式存放的,每個(gè)漢字占用2個(gè)字節;第一個(gè)字節為區碼,為了與ASCⅡ碼區別,范圍從十六進(jìn)制的0AIH開(kāi)始(小于80 H的為ASCⅡ碼字符),對應區位碼中區碼的第一區;第二個(gè)字節為位碼,范圍也從0A1H開(kāi)始,對應某區中的第一位碼。這樣,將漢字機內碼減去0AOAH就是該漢字的區位碼。如漢字“房”的機內碼為十六進(jìn)制的“B7BF”,其中“B7”表示區碼,“BF”,表示位碼。所以“房”的區位碼為0B7BFH-0AOAOH=17lFH。將區碼和位碼分別轉換為十進(jìn)制得漢字“房”的區位碼為“2331”,即“房”的點(diǎn)陣位于第23區的第31個(gè)字的位置,相當于在文件HZKl6中的位置第32x[(23-1)x94+(3l-1)]=67136 B以后的32個(gè)字節為“房”的顯示點(diǎn)陣。
4 結束語(yǔ)
在信息化社會(huì )中,遠程信息傳遞扮演著(zhù)重要的角色,GSM模塊以其準確、低廉、實(shí)時(shí)的特點(diǎn)為人們獲得某種信息提供便利,同時(shí)LED顯示又是溝通的重要窗口,二者結合顯示可應用的領(lǐng)域十分廣泛,如交通、天氣預報、廣告、通知、工農業(yè)生產(chǎn)、商業(yè)信息等,本設計采用的模塊市場(chǎng)上容易獲得,采用信息直接顯示不用返回,顯示環(huán)節運用動(dòng)態(tài)掃描減少LED工作時(shí)間,延長(cháng)壽命且節能,擴展的數據存儲器容量達8 KB,顯示時(shí)間較長(cháng),較多信息可分時(shí)顯示,結構簡(jiǎn)單,體積較小,實(shí)用性強。
評論