




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 通信系統(tǒng)綜合設計 第 32頁中國礦業(yè)大學通信系統(tǒng)綜合設計姓 名: 學 號: 專 業(yè): 題 目: 基于單片機的遠程控制器 專 題: 單片機及GSM模塊設計 指導教師: 設計地點:電工電子實驗室 時 間: 2012.11.30 2012 年 11 月 通信系統(tǒng)綜合設計訓練任務書學生姓名 專業(yè)年級 學號 設計日期: 2012年 11月 12日 至 2012年 11月28 日設計題目:基于單片機的遠程控制器設計專題題目:單片機及GSM模塊設計設計主要內容和要求:1. 主要內容: 使用單片機和GSM模塊實現(xiàn)學習板與手機之間的短信溝通 2. 單片機實現(xiàn)的功能 發(fā)送以及接受AT指令,并依據(jù)AT指令的內容完
2、成相應控制。3. GSM實現(xiàn)的功能 接受單片機的AT指令并產(chǎn)生相應動作,或者根據(jù)GSM網(wǎng)絡的動作向單片機發(fā)送指令 4. 功能擴展要求 可以通過手機短信遠程控制單片機實現(xiàn)不同的控制功能。在此基礎上載加上語音識別模塊。指導教師簽字:摘要:GSM(Global System for Mobile communication)系統(tǒng)是目前基于時分多址技術的移動通信體制中,比較成熟完善,且應用最廣泛的一種系統(tǒng)。目前已建成的覆蓋全國的GSM數(shù)字蜂窩移動通信網(wǎng),是我國公眾移動通信網(wǎng)的主要方式。基于GSM的短信信息服務,是一種在移動網(wǎng)絡上傳送簡短信息的無線應用,是一種信息在移動網(wǎng)絡上存儲和轉寄的過程。由于公眾G
3、SM網(wǎng)絡在全球范圍內實現(xiàn)了聯(lián)網(wǎng)和漫游,建議上述系統(tǒng)不需再組建專用通信網(wǎng)絡,所以具有實時傳輸數(shù)據(jù)功能的短信應用將得到迅速普及。筆者開發(fā)設計的基于GSM網(wǎng)絡的溫度數(shù)據(jù)采集與無線傳輸系統(tǒng)正是借助該網(wǎng)絡平臺,利用短信息業(yè)務實現(xiàn)數(shù)據(jù)的自動雙向傳遞。AT89S51是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,AT89S51
4、在眾多嵌入式控制應用系統(tǒng)中得到廣泛應用。GSM系統(tǒng)是目前基于時分多址技術的移動通訊體制中比較成熟、完善、應用最廣泛的系統(tǒng)之一。目前已建成蓋全國的GSM數(shù)字蜂窩移動通信網(wǎng),是我國公眾移動通信網(wǎng)的主要方式,其主要提供話音、短信息、數(shù)據(jù)等多種業(yè)務J?;贕SM短消息功能可以做成傳輸各種檢測、監(jiān)控數(shù)據(jù)信號和控制命令的數(shù)據(jù)通信系統(tǒng),能廣泛用于遠程監(jiān)控、定位導航、個人通信終端等,同時隨著科技的飛速發(fā)展和人民生活水平的不斷提高,手機的普及率越來越高,價格也越來越便宜,而且手機工作的無線網(wǎng)絡覆蓋范圍廣,在信息傳遞方面性能穩(wěn)定、可靠,所以把手機作為信息傳遞的載體,與單片機控制的GSM模塊結合起來構成應用系統(tǒng)有著
5、強大的生命力和廣闊的應用空間J。通過設計基于GSM模塊的用手機控制的自動水閘,對用單片機控制GSM模塊和手機通信、收發(fā)短信息進行探討。關鍵字:單片機;短信息;PDU;GSM目 錄 1 AT89S51單片機簡介6 1.1 AT89S51主要功能6 1.2 AT89S51引腳功能62 SIM300介紹142.1 SIM300特性142.2 SIM300引腳功能142.3.1 借助串口調試助手V2.2 軟件152.3.2 指令AT+CPIN? AT+CSQ AT+COPS?153 短信的發(fā)送/讀取的實現(xiàn)173.1 英文的發(fā)送/讀取173.2 中文的讀取/發(fā)送173.2.1 中文短信的發(fā)送 173.2
6、.2 中文短信的讀取174 程序代碼185小結236 參考文獻241 AT89S51單片機簡介AT89S51是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,AT89S51在眾多嵌入式控制應用系統(tǒng)中得到廣泛應用。1.1 AT89S51主要功能1、 為一般控制應用的 8 位單芯片2、 晶片內部具時鐘振蕩器(傳統(tǒng)最高工
7、作頻率可至 12MHz)3、 內部程式存儲器(ROM)為 4KB4、 內部數(shù)據(jù)存儲器(RAM)為 128B5、 外部程序存儲器可擴充至 64KB6、 外部數(shù)據(jù)存儲器可擴充至 64KB7、 32 條雙向輸入輸出線,且每條均可以單獨做 I/O 的控制8、 5 個中斷向量源,6個中斷源9、 2 組獨立的 16 位定時器10、1 個全多工串行通信端口11、8751 及 8752 單芯片具有數(shù)據(jù)保密的功能,與MCS-51兼容12、單芯片提供位邏輯運算指令13、5個中斷優(yōu)先級、2層中斷嵌套中斷; 14、全雙工串行通信口; 15、看門狗(WDT)電路; 16、全靜態(tài)工作:0Hz-33MHz; 17、三級程序
8、存儲器保密鎖定; 18、可編程串行通道; 19、低功耗的閑置和掉電模式。 1.2 AT89S51引腳功能VCC:AT89S51 電源正端輸入,接+5V。VSS:電源地端。XTAL1:單芯片系統(tǒng)時鐘的反相放大器輸入端。XTAL2:系統(tǒng)時鐘的反相放大器輸出端,一般在設計上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機。RESET:AT89S51的重置引腳,高電平動作,當要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間,AT89S51便能完成系統(tǒng)重置的各項動作
9、,使得內部特殊功能寄存器之內容均被設成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。EA/Vpp:"EA"為英文"External Access"的縮寫,表示存取外部程序代碼之意,低電平動作,也就是說當此引腳接低電平后,系統(tǒng)會取用外部的程序代碼(存于外部EPROM中)來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因為其內部無程序存儲器空間。如果是使用 8751 內部程序空間時,此引腳要接成高電平。此外,在將程序代碼燒錄至8751內部EPROM時,可以利用此引腳來輸入21V的燒錄高壓(Vpp)。ALE/PROG:ALE是英文&
10、quot;Address Latch Enable"的縮寫,表示地址鎖存器啟用信號。AT89S51可以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373),將端口0的地址總線(A0A7)鎖進鎖存器中,因為AT89S51是以多工的方式送出地址及數(shù)據(jù)。平時在程序執(zhí)行時ALE引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅動其他周邊晶片的時基輸入。此外在燒錄8751程序代碼時,此引腳會被當成程序規(guī)劃的特殊功能來使用。PSEN:此為"Program Store Enable"的縮寫,其意為程序儲存啟用,當8051被設成為讀取外部程序代碼工作模式時(EA=0),會送
11、出此信號以便取得程序代碼,通常這支腳是接到EPROM的OE腳。AT89S51可以利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM,使得數(shù)據(jù)存儲器與程序存儲器可以合并在一起而共用64K的定址范圍。PORT0(P0.0P0.7):端口0是一個8位寬的開路汲極(Open Drain)雙向輸出入端口,共有8個位,P0.0表示位0,P0.1表示位1,依此類推。其他三個I/O端口(P1、P2、P3)則不具有此電路組態(tài),而是內部有一提升電路,P0在當做I/O用時可以推動8個LS的TTL負載。如果當EA引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器),P0就以多工方式提供地址總線(A0A7)及數(shù)據(jù)總
12、線(D0D7)。設計者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0A7,再配合端口2所送出的A8A15合成一完整的16位地址總線,而定址到64K的外部存儲器空間。PORT2(P2.0P2.7):端口2是具有內部提升電路的雙向I/O端口,每一個引腳可以推動4個LS的TTL負載,若將端口2的輸出設為高電平時,此端口便能當成輸入端口來使用。P2除了當做一般I/O端口使用外,若是在AT89S51擴充外接程序存儲器或數(shù)據(jù)存儲器時,也提供地址總線的高字節(jié)A8A15,這個時候P2便不能當做I/O來使用了。PORT1(P1.0P1.7):端口1也是具有內部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個
13、LS TTL負載,同樣地若將端口1的輸出設為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,P1.0又當做定時器2的外部脈沖輸入腳,而P1.1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。PORT3(P3.0P3.7):端口3也具有內部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個TTL負載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數(shù)控制及外部數(shù)據(jù)存儲器內容的讀取或寫入控制等功能。其引腳分配如下:P3.0:RXD,串行通信輸入。P3.1:TXD,串行通信輸出。P3.2:INT0,外部中斷0輸入。P3.3:INT1,外部中斷1輸入。P3.4
14、:T0,計時計數(shù)器0輸入。P3.5:T1,計時計數(shù)器1輸入。P3.6:WR:外部數(shù)據(jù)存儲器的寫入信號。P3.7:RD,外部數(shù)據(jù)存儲器的讀取信號。RST:復位輸入端,高電平有效。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 2 SIM300介紹SIM300是一款三頻段GSM/GPRS模塊,可在全球范圍內的EGSM 900MHz、DCS 1800MHz、PCS 1900MHz三種頻率下工作,能夠提供GPRS多信道類型多達10個,并且支持CS-1、CS-2、CS-3和CS-4四種GPRS編碼方案。SIM300結構小巧,外形尺寸僅40mm*33mm*2.85mm,幾乎可滿足所有對產(chǎn)品尺
15、寸有要求的工業(yè)應用,比如智能電話,掌上電腦和其他移動設備。模塊與移動應用設備通過一個60引腳的板板連接器相連,它提供了模塊與開發(fā)板的所有硬件接口,除了RF天線接口。SIM300內部功能模塊有:1.鍵盤和SPI 類型的LCD接口,方便用戶開發(fā)自己的應用設備。2.具有調試和數(shù)據(jù)輸出兩個串口,幫助開發(fā)人員更容易開發(fā)產(chǎn)品。3.雙音頻通道,包含兩個麥克風輸入和兩個話筒輸出,由AT指令配置其工作模式。SIM300有兩種RF天線接口:一種是天線連接器、一種是天線焊點。天線連接器型號為MURATA MM9329-2700,或者用戶也可以通過天線焊點自己焊接天線。SIM300具有低功耗設計,睡眠模式下的電流消耗
16、僅為2.5mA。SIM300內部集成了TCP/IP協(xié)議棧,并且擴展了TCP/IP AT指令,使用戶利用該模塊開發(fā)數(shù)據(jù)傳輸設備變得非常簡單方便。2.1 SIM300特性特性說明工作電壓單電壓供電,3.44.5V低功耗模式休眠模式下,工作電流典型值為2.5mA工作頻段SIM300具有三個頻段:EGSM900、DCS1800、PCS1900。頻段頻率可由AT指令設置,默認頻段是EGSM900和DCS1800。與GSM Phase 2/2+兼容。GSM類型小型移動基站(MS)發(fā)射功耗在頻率EGSM900 CLASS 4下為2W在頻率DCS1800和PCS1900 CLASS 1下為1WGPRS連接GP
17、RS多時隙10級GPRS移動電臺B級工作溫度正常工作溫度:-22+55極限工作溫度:-25-20,+55+70存儲溫度:-40+80GPRS數(shù)據(jù)傳輸GPRS下行數(shù)據(jù)傳輸最大85.6kbpsGPRS上行數(shù)據(jù)傳輸最大42.8kbps編碼方案:CS-1,CS-2,CS-3,CS-4SIM300支持PAP(密碼驗證)協(xié)議,此協(xié)議通常用于PPP連接SIM300集成了TCP/IP協(xié)議電路交換數(shù)據(jù)(CSD)支持分組廣播控制信道(PBCCH)電路交換數(shù)據(jù)傳輸速率:2.4,4.8,9.6,14.4kbps,非透明傳輸支持非結構化補充數(shù)據(jù)業(yè)務(USSD)短消息支持點到點短消息移動發(fā)送和接受、文本、PDU模式短消息
18、存儲于SIM卡中支持CSD和GPRS模式的短消息發(fā)送,用戶可以根據(jù)自己的需要來選擇傳輸模式傳真Group 3 Class 1SIM接口支持1.8V和3V兩種類型的SIM卡外接天線通過50的天線連接器或天線連接板連接音頻特性語音編碼模式半速率(ETS 06.02)全速率(ETS 06.10)增強型全速率(ETS06.50/06.60/06.80)回波抑制雙串行通信接口串口1的借口具有7根數(shù)據(jù)、狀態(tài)線串口1可以被用作CSD傳真、GPRS服務和發(fā)送控制模塊AT命令串口1可以使用多路復用功能,但是此時不能和串口2同時使用可支持的自動波特率為:1200bps115200bps串口2的接口只有/TXD和/
19、RXD兩根數(shù)據(jù)線,沒有狀態(tài)和控制線串口2只能用來傳輸AT命令電話簿管理支持的電話簿類型:SM、FD、LD、RC、ON、MCSIM應用工具箱支持SAT class 3、GSM 11.14 Release 98實時時鐘內部具有實時時鐘,并有后備電池接口定時功能可以通過AT命令編程物理特征尺寸:40±0.15×33±0.15×3.3±0.3mm(包括連接器) 40±0.15×33±0.15×2.85±0.3mm(不包括連接器)重量:8g固件升級內部固件通過串口升級2.2 SIM300引腳功能電源引腳名
20、稱I/O說明直流特性VBAT板板連接器有八個電池引腳以連接供電電壓。SIM300的工作電壓VBAT=3.4V4.5V,單電壓供電。供電電壓必須能在典型值上升到2A的傳輸脈沖中提供足夠的電流。此八個引腳一般為電壓引腳。Vmax=4.5VVmin=3.4VVnorm=4.0VVRTCI/O當電源不給系統(tǒng)供電時給實時時鐘的電流輸入。當主電源供電且備用電源為低電平狀態(tài)時給備用電源的電流輸出。Vmax=2.0VVmin=1.2VVnorm=1.8VInorm=20uAVDD_EXTO給外部電路供電3.0V。用戶通過測試此引腳,可以判斷系統(tǒng)的運行和關閉,為低電平時,系統(tǒng)關閉,相反,系統(tǒng)運行。Vmax=3.
21、15VVmin=2.85VVnorm=3.0VInorm=60mAGND數(shù)字接地電源開關引腳名稱I/O說明直流特性PWRKEYI系統(tǒng)啟動按鍵的電壓輸入。用戶啟動和關閉系統(tǒng)時PWRKEY為低電平。由于系統(tǒng)響應軟件需要一定的反應時間,用戶啟動或關閉系統(tǒng)時需要按住按鍵幾秒。VILmax=0.3*VBATVIHmin=0.7*VBATVImax=VBAT音頻接口引腳名稱I/O說明直流特性MIC1PMIC1NI正負音頻輸入音頻直流特性見章節(jié)3.9.4MIC2PMIC2NI附加正負音頻輸入SPK1PSPK1NO正負音頻輸出SPK2PSPK2NO附加正負音頻輸出BuzzerO蜂鳴器輸出AGND模擬接地一般用
22、途輸入輸出引腳名稱I/O說明直流特性KBC0KBC4O一般用途輸出引腳(GPO)可由AT指令配置其輸出電壓的高低。所有GPO未由AT指令配置時初始化默認低電平。VILmin=0VVILmax=0.3*VDD_EXTVIHmin=0.7*VDD_EXTVIHmax=VDD_EXT+0.3VOLmin=GNDVOLmax=0.2VVOHmin=VDD_EXT-0.2VOHmax=VDD_EXTKBR0KBR4ISPI_DATAI/OSPI_CLKOSPI_CSOSPI_D/COSPI_RSTONetwork LEDOGPIO8I/O一般輸入輸出端口串口1接口引腳名稱I/O說明直流特性DTRIDat
23、a Terminal Ready數(shù)據(jù)終端就緒VILmin=0VVILmax=0.3*VDD_EXTVIHmin=0.7*VDD_EXTVIHmax=VDD_EXT+0.3VOLmin=GNDVOLmax=0.2VVOHmin=VDD_EXT-0.2VOHmax=VDD_EXTRXDIReceive Data 接收數(shù)據(jù)TXDOTransmit Data 發(fā)送數(shù)據(jù)RTSIRequest to Send 請求發(fā)送CTSOClear to Send 清除發(fā)送RIORing Indicator 響鈴偵測DCDOData Carrier detection 數(shù)據(jù)載體檢測串口2接口DBGTXO用于調試和通信
24、的串口DBGRXISIM卡接口引腳名稱I/O說明直流特性SIM_VDDOSIM卡的電源引腳1.8V / 2.8V 可由軟件選擇SIM_I/OI/OSIM卡數(shù)據(jù)輸出VILmin=0VVILmax=0.3*SIM_VDDVILmin=0.7*SIM_VDDVIHmax=SIM_VDD+0.3VOLmin=GNDVOLmax=0.2VVOHmin=SIM_VDD-0.2VOHmax=SIM_VDDSIM_CLKOSIM卡時鐘SIM_PRESENCEISIM卡檢測SIM_RSTOSIM卡復位音頻模數(shù)轉換引腳名稱I/O說明直流特性ADC0I一般用途模數(shù)轉換輸入電壓值范圍:02.4V2.3 G
25、SM模塊串口測試 2.3.1 借助串口調試助手V2.2 軟件 1、 正常方式發(fā)送(ASCII碼方式)在發(fā)送框中輸入ATI后,再按ENTER 鍵,最后點擊手動發(fā)送選項框。測試結果如下圖2-1 所示。 圖2-12 、16 進制方式 ATI的16進制是4154490D,選擇十六進制發(fā)送復選框,輸完后點手動發(fā)送)。測試結果如圖22所示。 圖2-2如果測試返回成功了,就可以繼續(xù)下面的指令測試。 2.3.2 指令AT+CPIN? AT+CSQ AT+COPS? 1、 AT+CPIN? 用于查詢 SIM 卡的狀態(tài),主要是 PIN 碼。輸入指令:AT+CPIN? 返回: +CPIN:R
26、EADY 表明狀態(tài)正常,返回的是其它值可能是沒放 SIM 卡 現(xiàn)在選擇用 16 進制顯示(選擇十六進制顯示后,再手動發(fā)送一次),結果如下:41 54 2B 43 50 49 4E 3F 0D 0D 0A 2B 43 50 49 4E 3A 20 52 45 41 44 A T + C P I N ? + C P I N : R E A D Y 59 0D 0A 0D 0A 4F 4B 0D 0A ; O K (在數(shù)值下面是對應的英文字符,0D 0A 是回車換行,每次模塊都返回) 2、 AT+CSQ 用于查詢信號,如果沒有信號,要查看天線是否連接。輸入指令:AT+CSQ 返回: +CSQ:26,
27、0 / 表明信號強度是 10 選擇用 16 進制顯示,結果如下:41 54 2B 43 53 51 0D 0D 0A 2B 43 53 51 A T + C S Q + C S Q 3A 20 32 36 2C 30 0D 0A 0D 0A 4F 4B 0D 0A : 2 6 , 0 O K (在數(shù)值下面是對應的英文字符,0D 0A 是回車換行,每次模塊都返回) 3、 AT+COPS? 用于查詢 SIM 卡移動提供商,只有連上網(wǎng)絡后才有,其它狀態(tài)時都為空。輸入指令:AT+COPS? 返回: +COPS: 0,0,"CHINA MOBILE" / 提供使用商為:中國移動 選擇
28、用 16 進制顯示,結果如下:41 54 2B 43 4F 50 53 3F 0D 0D 0A 2B 43 A T + C O P S ? + C 4F 50 53 3A 20 30 2C 30 2C 22 43 48 49 4E 41 20 4D 4F 42 49 4C 45 O P S : 0 , 0 , " C H I N A M O B I L E 22 0D 0A 0D 0A 4F 4B 0D 0A " (在數(shù)值下面是對應的英文字符,0D 0A 是回車換行,每次模塊都返回) 以上狀態(tài)正常就可以進行短信、語音測試了。3 短信的發(fā)送/讀取的實現(xiàn)3.1 英文的發(fā)送/讀取
29、讀一條英文短信一定要保證開發(fā)板測試成功,即保證模塊正常讀取SIM 卡后,連接上網(wǎng)絡。 1、設置短信提示功能輸入指令:AT+CNMI=2,1再按ENTER鍵后點“手動發(fā)送”:指令功能:短信提示,狀態(tài)有OK 回復。再輸入:AT+CMGF=1,按ENTER鍵,“手動發(fā)送”;功能是:英文方式發(fā)送,狀態(tài)有 OK回復。然后向 SIM卡發(fā)送一條英文短信,收到+CMTI: ”SM”,1,表示有短信到達,存在 SIM卡的第一個位置。( 本文中由于測試時已經(jīng)向SIM發(fā)過四條短信,所以顯示+CMTI: "SM",5) 2、讀取短信輸入 AT
30、+CMGR=5 再按 ENTER 鍵,選擇“手動發(fā)送”,其功能是:讀取指定“5”里的內容,回復短信報文。 其 中 “REC UNREAD ”短信沒有讀過,+8613632389015 為 發(fā) 信方號碼,10/06/07,15:02:08+32 為日期,內容是:abc 如果再讀一次就會稍微不同于上面顯示,REC READ 表示已讀。 2、 英文短信的發(fā)送 1、向發(fā)送英文短信:abc 先輸入 AT+CMGF=1 再按 ENTER 后選擇“手動發(fā)送”,功能:英文方式發(fā)送,回復 OK。再輸入 AT+CMGS= 按
31、ENTER 鍵后點“手動發(fā)送”,功能:向輸入的號碼發(fā)送短信,回復>,收到>后才可輸入內容 abc,再點“手動發(fā)送”。 最后的關鍵步驟是短信內容的結束:點“十六進制發(fā)送”,然后在指令區(qū)輸入 1A(1 是數(shù)字,不是字母 l),點擊手動發(fā)送之后等待返回,收到:+CMGS:11 表示發(fā)送成功。3.2 中文的讀取/發(fā)送3.2.1 中文短信的發(fā)送 下面的內容是:向手發(fā)送中文短信:“ 星??萍肌?變換號碼 中文短信要比英文復雜點,先把號碼進行16 進制編碼, 編碼的方法如下: 首先, 對方手機號碼8613632389015 ,進行轉換(兩位一反):313632
32、9810F5 ,號碼的最后一位為單數(shù)則高位加補F。 短信內容編碼 短信內容“星??萍肌?,通過Chinese_Unicode.exe 進行16 進制編碼后:“ 661F 6D77 79D1 6280” 。 如果你要發(fā)送的也有中文英文,那么也要將他們全部放入進行轉換 PDU格式編碼 PDU 格式編碼:手機號碼(11 位)+ 國際接入碼86(2 位)=13 位,16 進制表示0D,接入碼中國地區(qū)用91 表示,短信在服務器存放時間,A0。 那么總的一起要發(fā)送的 PDU 內容說明如下(下面的文字對應 pdu 的解析): 001100 0D 91 68 3136329810
33、F5 0008 A0 661F 6D77 79D1 6280 前序 目的號碼長度國際目的手機號碼( 兩位一反) | 8bit 方式允許時間短信長度短信內容 (Unicode) 發(fā)送中文短信步驟: 001100 :前序是一定要的,一般不更改 0D9168 :13位號碼0D,91國際接入碼,68中國的電話區(qū)號86。 3136329810F5:剛才進過變換的號碼 0008:發(fā)送方式8bit A0:發(fā)送保存時間 661F 6D77 79D1 6280:要發(fā)送的內容 發(fā)送 1.先輸入 AT+CMGF=0 再按ENTER 鍵后,點“ 手動發(fā)送” ,狀態(tài)恢復: OK 2. 計算PDU 總長度,總長
34、度 = 你要發(fā)送的中文字數(shù)*4/2 + 15。 比如我們這次發(fā)送4個字,那么總長度=4*4/2+15=23. 要發(fā)送的中文字數(shù)*4(中文對應的ascii碼個數(shù)) 3. 再輸入 AT+CMGS=23 再按ENTER鍵后,點“ 手動發(fā)送” ;收到> 后才可輸入 內容 0011000D91683136329810F50008A008661F6D7779D16280再點“手動發(fā)送”。 此次輸入是不需要加回車的,請注意,因為一會要加入0x1a結束符號了4. 結束短信內容:點“十六進制發(fā)送”,在指令區(qū)輸入1A 后,點“手動發(fā)送”, 等待發(fā)送成功,收到如圖所示:+CMGS:19 表示發(fā)送成功。
35、60; 注:1. at+cscs="GSM" 采用GSM 方式 2. at+cmgf=0 設置PDU 模式,發(fā)送中文短信需要這個 3. at+cmgs=< 長度> 發(fā)送PDU 短信 3.2.2 中文短信的讀取首先要保證開發(fā)板測試成功,即保證模塊正常讀取SIM 卡后,連接上網(wǎng)絡。 1 設置短信提示功能輸入指令:AT+CNMI=2,1 再按 ENTER 鍵后點“手動發(fā)送”;指令功能:短信提示,狀態(tài)有 OK 回復。再輸入:AT+CMGF=0, 按 ENTER 鍵,“手動發(fā)送”;狀態(tài)有 OK 回復。然后向SIM 卡發(fā)送一條中文短信,收到+CMTI: ”SM”,11 ,表
36、示有短信到達,存在 SIM 卡的第 11 個位置。 2. 讀取短信輸入 AT+CMGR=11 再按 ENTER 鍵,選擇“手動發(fā)送”,其功能是:讀取指定“11” 里的內容。+CMGR:0,28 其中 0 表示短信沒有被讀過,如果是 1 表示已讀;28 是長度; 91683108200005F0 為短信中心號碼:+8613800200500 0D 為短信號碼長度91683136329810F5 對方號碼 +8613632389015 01607221122323 日期 10/06/27, 12:21:32+32 08 為短 信內容長度 661F6D7779D16280 中文短信內容如果再讀一次就
37、會有區(qū)別。 此時讀到的是中文信息 Unicode 碼,要進過轉換才可以看出他的內容 。4 程序代碼#include <REGX52.H>#define uchar unsigned char#define uint unsigned intuchar num,temp,i,j,js,js1;uchar volatile GsmRcvAt50 = 0;uchar volatile GsmRcv50 = 0;uchar volatile GsmRcvCnt = 0;uchar volatile GsmAtFlag = 0;uchar volatile duanxinFlag = 0;s
38、bit LED5=P10;sbit LED6=P11;sbit LED7=P12;sbit LED8=P13;sbit LED9=P14; code char S_Tab8= 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, ; code uchar zxm16= 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, ; code uchar zwm8= 0xfe, 0xfd, 0xfb, 0xf7, 0xef,
39、 0xdf, 0xbf, 0x7f, ;void SerialInit()TMOD=0x20;TH1=0xF4;TL1=0xF4;TR1=1;SM0=0;SM1=1;REN=1;EA = 1; ES = 1;void SerialSendChars(char *str)while(*str!='0')SBUF=*str;while(!TI);TI=0;str+; void delay_ms(uint n) uchar a,b; uint c; for(c=n;c>0;c-) for(b=142;b>0;b-) for(a=2;a>0;a-); uchar ke
40、y_scan(void) num=20; P3=0xfb; temp=P3; temp &=0xfb; while(0xfb!=temp) delay_ms(5); temp=P3;while(0xfb!=temp) temp=P3; switch(temp) case 0xeb:num=11;break; case 0xdb:num=10;break; case 0xbb:num=9;break; case 0x7b:num=8;break; P3=0xf7; temp=P3; temp &=0xf7; while(0xf7!=temp) delay_ms(5);temp=P
41、3;while(0xf7!=temp) temp=P3; switch(temp) case 0xe7:num=15;break; case 0xd7:num=14;break; case 0xb7:num=13;break; case 0x77:num=12;break; return num;void delay_50ms(int t)int j; for(;t>0;t-) for(j=6245;j>0;j-) ; void main()char flag;SerialInit(); SerialSendChars("atir");delay_50ms(20
42、);SerialSendChars("atir");delay_50ms(20);SerialSendChars("atir");delay_50ms(20);GsmAtFlag = 0;LED5=0;LED6=0;LED7=0;LED8=0;while(1)SerialSendChars("AT+CMGD=1r");delay_50ms(20);while(GsmAtFlag = 0);if(GsmRcvAt0 = 'O' && GsmRcvAt1 = 'K' )break;Seria
43、lSendChars("AT+CNMI=2,1r");delay_50ms(20);SerialSendChars("AT+CMGF=1r");LED5=1;LED6=1;LED7=1;LED8=1;while(1) js=key_scan(); if(js!=20) js1=js; P0=zxmjs1%16; P2=zwm0; switch(js1) case 0x08: SerialSendChars("ATr");break; case 0x09: SerialSendChars("ATHr&
44、quot;);break; if(GsmAtFlag = 1)GsmAtFlag = 0;duanxinFlag=1;if(GsmRcvAt0 = 'R' && GsmRcvAt1 = 'I' && GsmRcvAt2 = 'N' && GsmRcvAt3 = 'G') flag=0x10; else if(GsmRcvAt0 = 'N' && GsmRcvAt1 = 'O' && GsmRcvAt2 = ' &
45、#39; && GsmRcvAt3 = 'C' && GsmRcvAt4 = 'A') flag=0x20; else if(GsmRcvAt0 = '+' && GsmRcvAt1 = 'C' && GsmRcvAt2 = 'M' && GsmRcvAt3 = 'T' && GsmRcvAt4 = 'I')LED6=0;SerialSendChars("AT+CMGR=1r&q
46、uot;);else if(GsmRcvAt0 = 'O' && GsmRcvAt1 = 'K')LED6=1;else if(GsmRcvAt0 = '+' && GsmRcvAt1 = 'C' && GsmRcvAt2 = 'M' && GsmRcvAt3 = 'G' && GsmRcvAt4 = 'R')LED7=0;GsmAtFlag = 0;while(GsmAtFlag = 0);if(Gsm
47、RcvAt0 = '1') flag=0x01;else if(GsmRcvAt0 = '2')flag=0x02; else if(GsmRcvAt0 = '3') flag=0x04;else if(GsmRcvAt0 = '4') LED9=0;flag=0x08;SerialSendChars("AT+CMGD=1r");LED7=1;/Uart1Send(GsmRcvAt0);i = 0;while(GsmRcvAti != 0) GsmRcvAti = 0;i+; if(duanxinFlag = 1) if(flag=0x01) P1=0xff; for(i=0;i<16;i+) for(j=0;j<8;j+) P0=zxmi; P2=zwmj; delay_50ms(1); if(flag=0x02) P2=0xff; for(i=0;i<8;i+) P1=S_Tabi; delay_50
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 解除合同第三方補償協(xié)議
- 購地皮協(xié)議書范本
- 訂購疆叉車合同協(xié)議
- 設計工作室租賃合同協(xié)議
- 試崗協(xié)議書范本
- 購買鋼材材料合同協(xié)議
- 購買傳輸機合同協(xié)議
- 2025屆山東省泰安市肥城市高三上學期開學考-歷史試題(含答案)
- 高明實驗中學高一下學期周練語文試題
- 2025年大學化學調整策略試題及答案
- 2025屆鄂東南省級示范高中聯(lián)盟高考英語二模試卷含答案
- 2025購銷合同范本下載
- 2024年家政服務職業(yè)技能大賽家庭照護賽項決賽試理論題庫1000題
- 2025勞動合同范本下載打印
- 微生物檢驗的基礎知識試題及答案
- 2025年北京市三類人員安全員c3證考試題庫及答案
- (四調)武漢市2025屆高中畢業(yè)生四月調研考試 地理試卷(含答案)
- 大概念視角下的初中數(shù)學函數(shù)單元整體教學設計研究與實踐
- 海南省??谑?2024年-2025年小學五年級語文)統(tǒng)編版期中考試((上下)學期)試卷及答案
- 2024年探放水工技能大賽理論考試題庫500題(供參考)
- GB/T 13025.7-2012制鹽工業(yè)通用試驗方法碘的測定
評論
0/150
提交評論