freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于tc35模塊的gsm遠(yuǎn)程智能家居控制系統(tǒng)的設(shè)計(jì)-資料下載頁(yè)

2024-12-01 19:10本頁(yè)面

【導(dǎo)讀】到一個(gè)十分重要的位置。務(wù)的各種應(yīng)用也蓬勃發(fā)展起來(lái)。系統(tǒng)以GSM網(wǎng)絡(luò)作為遠(yuǎn)程信號(hào)的傳輸平臺(tái)。消息業(yè)務(wù)的通信原理。數(shù)據(jù)的傳輸方式主要是短消息方式,系統(tǒng)中采用。PDU模式,對(duì)短消息的PDU編碼和解碼進(jìn)行詳細(xì)的講述。系統(tǒng)的軟件設(shè)計(jì)包括控制中心站軟件設(shè)計(jì)和遠(yuǎn)程控制分站軟件設(shè)。遠(yuǎn)程控制分站軟件設(shè)計(jì)中運(yùn)用IAR公司為MSP430系列單片機(jī)開(kāi)。論文的最后部分以GSM短消息的遠(yuǎn)程控制系統(tǒng)為基礎(chǔ),了此系統(tǒng)應(yīng)用領(lǐng)域的一些探討和研究。

  

【正文】 0_RX_BUF[nRX0_Len_temp] = RXBUF0。 nRX0_Len_temp += 1。 chrTemp= UART0_RX_BUF[nRX0_Len_temp 1]。 if((chrTemp == 13) || (chrTemp == 10)) { //接收到一幀信號(hào) nRX0_Len= nRX0_Len_temp。 nRev_UART0 = 1。 nRX0_Len_temp = 0。 } } //////////////////////////////////////// // 處理來(lái)自串口 0 的發(fā)送中斷 if __VER__ 200 interrupt [UART0TX_VECTOR] void UART0_TX_ISR(void) else pragma vector=UART0TX_VECTOR__interrupt void UART0_TX_ISR(void) endif { if(nTX0_Len != 0) { // 表示緩沖區(qū)里的數(shù)據(jù)沒(méi)有發(fā)送完 nTX0_Flag = 0。TXBUF0 = UART0_TX_BUF[nSend_TX0]。 nSend_TX0 += 1。 Delay_us(5)。 if(nSend_TX0 = nTX0_Len) 基于 SIM300 模塊的 GSM 遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì) 25 { //數(shù)據(jù)發(fā)送完畢 nSend_TX0 = 0。 nTX0_Len = 0。 nTX0_Flag = 1。 } } } 在上面的中斷服務(wù)程序中,為了與其他程序進(jìn)行數(shù)據(jù)交互,使用全局變量或者全局緩沖區(qū)來(lái)實(shí)現(xiàn),例如“ UART1_TX_BUF[]”和“ Ntx1_Flag”等。 存儲(chǔ)程序設(shè)計(jì) 在本系統(tǒng)中,利用串行存儲(chǔ)器存儲(chǔ)某些重要數(shù)據(jù)。單片機(jī)通過(guò) I2C與串行存儲(chǔ)器進(jìn)行接口。由于本系統(tǒng)使用的單片機(jī)是 MSP430F149,該單片機(jī)沒(méi)有 I2C 外圍接口,因此需要采用一般的 I/O 端口來(lái)模擬 I2C 總線的功能,從而實(shí)現(xiàn)串行存儲(chǔ)器的讀 /寫(xiě)操作。本系統(tǒng)使用的串行存儲(chǔ)器為 /寫(xiě)操作,下面分別進(jìn)行詳細(xì)介紹。 寫(xiě)操作 24LC02B 的寫(xiě)操作有兩種形式:?jiǎn)巫止?jié)寫(xiě)和按頁(yè)寫(xiě)。下面對(duì)單字節(jié)寫(xiě)和按頁(yè)寫(xiě)兩種方式分別進(jìn)行介紹。 單字節(jié)寫(xiě)就是在指定的地址中寫(xiě)入內(nèi)容。首先單片機(jī)發(fā)送控制字節(jié),然后發(fā)送地址字節(jié),最后輸入寫(xiě)的內(nèi)容,具體程序如下。 int WriteSingleByte(char nAddr,char nValue) { int nTemp = 0xA0。//寫(xiě)命令 // 啟動(dòng)數(shù)據(jù)總線 I2C_START()。 // 發(fā)送控制字節(jié) 基于 SIM300 模塊的 GSM 遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì) 26 I2C_TxByte(nTemp)。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 // 發(fā)送地址字節(jié) I2C_TxByte(nAddr)。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 // 發(fā)送數(shù)據(jù)字節(jié) I2C_TxByte(nValue)。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 // 停止總線 I2C_STOP()。 return (nTemp amp。 SDA)。 } 按頁(yè)寫(xiě)是一次寫(xiě)入 8 個(gè)字節(jié)。按頁(yè)寫(xiě)操作的第一個(gè)字節(jié)的操作和按字節(jié)寫(xiě)操作是一致的。當(dāng)寫(xiě)完第一個(gè)字節(jié)后,單片機(jī)繼續(xù)寫(xiě)下一個(gè)內(nèi)容,在寫(xiě)完最后一個(gè)字后,單片機(jī)在總線上產(chǎn)生停止信號(hào),需要注意的是:一次最多只能寫(xiě)入 8 個(gè)字節(jié),如果操作多于 8 個(gè)字節(jié) , 則 寫(xiě) 入 的 內(nèi) 容 會(huì) 被 黑 覆 蓋 。 下 面 為 具 體 的 程 序 。 int PageWrite(char nAddr,char pBuf[]) { int i。 int nTemp = 0xA0。//寫(xiě)命令 // 啟動(dòng)數(shù)據(jù)總線 I2C_START()。 // 發(fā)送控制字節(jié) I2C_TxByte(nTemp)。 // 等待 ACK nTemp = I2C_GetACK()。 基于 SIM300 模塊的 GSM 遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì) 27 if(nTemp amp。 BIT3) return 0。 // 發(fā)送地址字節(jié) I2C_TxByte(nAddr)。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 // 發(fā)送數(shù)據(jù)字節(jié) for(i = 0。 i 8。i++) { I2C_TxByte(pBuf[0])。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 } // 停止總線 I2C_STOP()。 return (nTemp amp。 SDA)。 } 讀操作 24LC02B 的讀操作有 3種形式:當(dāng)前地址、隨機(jī)讀和順序地讀。當(dāng)前地址讀需要知道上次讀操作后的地址,因此不具有操作獨(dú)立性,這里不做介紹。下面對(duì)隨機(jī)讀和順序讀你好嗎進(jìn)行介紹。 隨機(jī)讀可以讀任何地址的數(shù)據(jù)。首先由單片機(jī)發(fā)送一個(gè)控制字節(jié),然后發(fā)送地址數(shù)據(jù),最后讀出該地址的數(shù)據(jù)。下面給出具 體的程序。 int ReadRandom(char nAddr, char *nValue) { //寫(xiě)命令 int nTemp = 0xA0。 // 啟動(dòng)數(shù)據(jù)總線 I2C_START()。 // 發(fā)送控制字節(jié) 基于 SIM300 模塊的 GSM 遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì) 28 I2C_TxByte(nTemp)。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 // 發(fā)送地址字節(jié) I2C_TxByte(nAddr)。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 // 啟動(dòng)數(shù)據(jù)總線 I2C_START()。 // 發(fā)送控制字節(jié) nTemp = 0xA1。 I2C_TxByte(nTemp)。 // 等待 ACK nTemp = I2C_GetACK()。 if(nTemp amp。 BIT3) return 0。 //讀取數(shù)據(jù) *nValue = I2C_RxByte()。 // 停止總線 I2C_STOP()。 //成功返回 return 1。 } 順序讀是連續(xù)讀出多個(gè)字節(jié)。它的開(kāi)始操作和隨機(jī)讀是一樣的,在 讀完一個(gè)字節(jié)后,對(duì) 24LC02B 發(fā)送確認(rèn)( ACK)信號(hào),再繼續(xù)下一個(gè)字節(jié),當(dāng)讀到最后一個(gè)字節(jié)的時(shí)候,音片機(jī)需要在總線上產(chǎn)生停止信號(hào),具體程序如下。 int ReadSeq(char nAddr, char nValue[], int nLen) { int i。 int nTemp = 0xA0。 //寫(xiě)命令 基于 SIM300 模塊的 GSM 遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì) 29 I2C_START()。// 啟動(dòng)數(shù)據(jù)總線 I2C_TxByte(nTemp)。 // 發(fā)送控制字節(jié) nTemp = I2C_GetACK()。// 等待 ACK if(nTemp amp。 BIT3) return 0。 I2C_TxByte(nAddr)。 // 發(fā)送地址字節(jié) nTemp = I2C_GetACK()。// 等待 ACK if(nTemp amp。 BIT3) return 0。 I2C_START()。// 啟動(dòng)數(shù)據(jù)總線 nTemp = 0xA1。 I2C_TxByte(nTemp)。 // 發(fā)送控制字節(jié) nTemp = I2C_GetACK()。// 等待 ACK if(nTemp amp。 BIT3) return 0。 for(i = 0。 i nLen。 i++)//讀取數(shù)據(jù) { nValue[i] = I2C_RxByte()。//讀一個(gè)字節(jié)數(shù)據(jù) I2C_SetACK()。//發(fā)送 ACK } I2C_STOP()。// 停止總線 return 1。 //成功返回 } 短消息程序設(shè)計(jì) 在本系統(tǒng)中,單片機(jī)通過(guò)串口 0 向 GSM 模塊發(fā)送相應(yīng)的 AT 命令來(lái)實(shí)現(xiàn)短消息的發(fā)送和接收。在介紹具體程序之前,首先簡(jiǎn)單介紹消息相關(guān)的 AT命令。 AT 命令介紹 AT 命令是一套用于對(duì) GSM 模塊控制的命令,通常以“ AT”開(kāi)頭。單片機(jī)通過(guò)向 GSM 模塊的控制。不同的 AT 命令控制 GSM 模塊的不同動(dòng)作。 通常情況下, AT 命令以字母“ AT”開(kāi)頭,以 ASCII 碼為 13 的字符結(jié)尾。下面介紹幾種常用的 AT 指令,下面的命令如果不做特殊說(shuō)明,基于 SIM300 模塊的 GSM 遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì) 30 都是需要帶 ASCII 碼為 13 的字符結(jié)尾,如果不帶,則會(huì)對(duì)該條命令進(jìn)行說(shuō)明。 同一般的有線 MODEM 一樣, GSM 模塊的 AT 指令集支持標(biāo)準(zhǔn)的 指令集,也支持傳真指令集。作為 GSM 模塊,它支持滿足規(guī)范 和 的指令集。其中 主要是短消息的應(yīng)用,考慮到本章介紹的是短消息應(yīng)用系統(tǒng),這里只討論 指令集。 指令集提 供的 AT 命令主要實(shí)現(xiàn)短消息的發(fā)送、刪除、存儲(chǔ)等操作,下面對(duì)某些 AT 命令進(jìn)行具體的介紹。 tc35 模塊中與 SMS 有關(guān)的 GSM AT 指令介紹 GSM 引擎模塊提供的命令接口符合 和 規(guī)范。 中定義的 AT Command 接口, 提供了一種移動(dòng)平臺(tái)與數(shù)據(jù)終端設(shè)備之間的通用接口; 對(duì)短消息作了詳細(xì)的規(guī)定。在短消息模塊 收到網(wǎng)絡(luò)發(fā)來(lái)的短消息時(shí),能夠通過(guò)串口發(fā)送指示消息,數(shù)據(jù)終端設(shè)備可以向 GSM 模塊發(fā)送各種命令。與 SMS 有關(guān)的 GSM AT 指令如表( 1) 所列。 GSM AT 指令集,是由諾基亞、愛(ài)立信、摩托羅拉和 HP 等廠家共同為 GSM 系統(tǒng)研制的,其中包含了對(duì) SMS(Short Message Service)的控制。 表 1 相關(guān) AT指令 基于 SIM300 模塊的 GSM 遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì) 31 AT 指令功能詳解: ( 1)短消息發(fā)送命令: AT+CMGC 該命令主要用于短消息的發(fā)送,它提供 TEXT 形式的短消息的發(fā)送,也提供 PDU 格式的短消息的發(fā)送,另外它還提供測(cè)試指令。 具體的指令格式下。 AT+CMGS=? 響應(yīng)為 OK。該指令主要是用來(lái)進(jìn)行測(cè)試。 AT+CMGS=da[,toda]CR Text is entered ctrlz/esc 該命令是用來(lái)發(fā)送基于 TEXT 格式的短消息。如果發(fā)送成功,則響應(yīng)為: +CMGS:mr[,scts];如發(fā)送失敗,則響應(yīng)為: +CMS ERROR:err. 在該命令中, da為字符串形式的目的地址,指摘收短消息的手機(jī)號(hào)碼,它的類(lèi)型由 toda來(lái)確定。 toda為地址類(lèi)型識(shí)別號(hào),當(dāng) da的第一個(gè)是“ +”時(shí), toda的值為整數(shù)值“ 145”,否則 toda的整數(shù)值為“ 129” .該條令在輸入完前面的參數(shù)后,以 回車(chē)符號(hào)結(jié)束,接下來(lái)輸入短消息的內(nèi)容,并以字符“ CtrlZ”結(jié)束,該字符的 ASCII 碼值為“ 26”。如果取消發(fā)送,則以字符“ ESC”結(jié)束。如果發(fā)送成功,則返回服務(wù)中心的時(shí)間戳,具體可以參看響應(yīng)命令格式。如果發(fā)送不成功,則返回錯(cuò)誤信息。 AT+CMGS=lengthCR PDU is given ctrlZ/ESC 該命令是用來(lái)發(fā)送基于 PDU 格式的短消息。如果發(fā)送成功,則響應(yīng)為:+CMGS:mr[,ackpdu];如果發(fā)送失敗,則響應(yīng)為: +CMS ERROR:err。 在該命令中, 首先發(fā)送命令 AT+CMGC=length,并以回車(chē)符號(hào)結(jié)束,然后等待 GSM 模塊返回“ ”字符,當(dāng)返回“ ”字符后,再具體輸入PDU 的內(nèi)容,并以字符“ CtrlZ”結(jié)束,該字符的 ASCII 碼值為“ 26”。如果取消發(fā)送,則以字符“ ESC”結(jié)束。如果發(fā)送成功,則返回狀態(tài)信息,具體可參看響應(yīng)命令格式。如果發(fā)送不成功,則返回錯(cuò)誤信息。在基于 PDU 格式的短消息中,所有的參數(shù)均在 PDU 數(shù)據(jù)包里,具體的數(shù)據(jù)格式在后面進(jìn)行詳細(xì)說(shuō)明。 ( 2)刪除短消息命令: AT+CMGD (刪除 SIM 卡內(nèi)存的短消息 ) 該命令主要用于短消息 的刪除,因?yàn)橐话闶謾C(jī)的存儲(chǔ)量或者 SIM 卡基于 SIM300 模塊的 GSM 遠(yuǎn)程控制
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1