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

正文內(nèi)容

智能家居系統(tǒng)設(shè)計(jì)定稿畢業(yè)論文-資料下載頁(yè)

2025-06-28 04:46本頁(yè)面
  

【正文】 INEW SMS message indication(顯示新收到的短消息) AT+CPMSPreferred SMS message storage(選擇短信息內(nèi)存)AT+CSCASMS service center address(短消息中心地址)AT+CSCBSelect cell broadcast message messages(選擇蜂窩廣播消息)AT+CSMPSet SMS text mode parameters(設(shè)置短信息文本模式參數(shù))AT+CSMPSelect Message Service (選擇短信息服務(wù)) 短消息接收子程序設(shè)計(jì)系統(tǒng)短信接受程序其實(shí)就用單片機(jī)讀取TC35I的SIM卡內(nèi)新信息的過(guò)程。當(dāng)從短信卡內(nèi)讀取短信息時(shí),首先就是設(shè)定短信收發(fā)模式,本次設(shè)計(jì)使用TEXT模式,然后發(fā)送相應(yīng)的AT指令,這里使用AT+CMGL指令查詢(xún),在通過(guò)AT+CMGR指令讀取。從Text格式中獲取短信信息,在根據(jù)TEXT模式短信格式,提取里面的信息。比對(duì)是否是目標(biāo)手機(jī)發(fā)來(lái)的控制信息,若是則提取出控制命令,再通過(guò)nRF24L01模塊將控制信息發(fā)到輔助控模塊。根據(jù)短信內(nèi)容做出相應(yīng)的控制操作。具體C語(yǔ)言程序見(jiàn)附錄。這就是短信接受流程,具體的程序流程如圖38所示。C語(yǔ)言程序流程為:(1)發(fā)送AT配置指令使其以TEXT模式收發(fā)信息:USART1_Puts(AT+CMGF=1\r)。(2)發(fā)送AT指令查詢(xún)是否有未讀短消息: USART1_Puts(“AT+CMGL=REC UNREAD\r”)。(3)如果有短消息則根據(jù)返回信息發(fā)送讀取AT指令: USART1_Puts(“AT+CMGR=n\r”)。 n為返回的信息位號(hào)(4)根據(jù)接受到的來(lái)自串口的信息,在時(shí)間信息后就是短信內(nèi)容,只需要讀取即可,下面是程序流程圖如圖38所示。進(jìn)入短信接收程序發(fā)送AT+CMGF=1使 用TEXT模 式查詢(xún)有無(wú)新消息 AT+CMGLY利用AT+CMGR讀取短信 Text格式分析,并提取發(fā)送方號(hào)碼與控制信息 判斷號(hào)碼是否與設(shè)置一致 發(fā)送控制命令給輔助控制器并顯示命令Y 程序退出NN 提取短信內(nèi)容 查詢(xún)命令or控制命令 通過(guò)TC35I發(fā)送當(dāng)家居信息給用戶(hù)是查詢(xún)命令是控制命令圖38 接收短消息子程序流程圖 短消息發(fā)送子程序設(shè)計(jì)在本設(shè)計(jì)中有三種情況要控制器發(fā)送短消息:用戶(hù)發(fā)送了錯(cuò)誤的控制指令;用戶(hù)要查詢(xún)控制指令;緊急情況報(bào)警信息發(fā)送。短消息發(fā)送的內(nèi)容是固定的,是預(yù)先設(shè)計(jì)好的。當(dāng)發(fā)生上述三種情況時(shí),控制系統(tǒng)就會(huì)按照各自的格式把信息發(fā)送到用戶(hù)手機(jī)。因而在短消息發(fā)送的實(shí)現(xiàn)過(guò)程中,主要的工作是要設(shè)置好短信發(fā)送的模式,本次設(shè)計(jì)采用簡(jiǎn)單的TEXT模式,其次是把要發(fā)送的內(nèi)容加載到要發(fā)送的數(shù)組中,其次就是將發(fā)送所用的SMS服務(wù)中心號(hào)碼、目標(biāo)號(hào)碼的短信內(nèi)容按照TEXT的格式發(fā)送出去。C語(yǔ)言程序流程為:(1)發(fā)送AT配置指令使其以TEXT模式收發(fā)信息:USART1_Puts(AT+CMGF=1\r)。(2)若返回OK,則發(fā)送AT指令輸入中心號(hào)碼: USART1_Puts(AT+CSCA=+86XXXXXXXXXXX\r)。(3)若返回OK,則發(fā)送AT指令輸入目標(biāo)手機(jī)號(hào)碼: USART1_Puts(AT+CMGS=+86XXXXXXXXXXX\r)。// AT+CMGS=+86號(hào)碼(4)若返回””則可以發(fā)送短信內(nèi)容、以十六進(jìn)制數(shù)0X1A結(jié)束: USART1_Puts(message)。 USART1_Puts(\x1a\r)。若返回OK,則發(fā)送成功。下面是程序流程圖如圖39所示進(jìn)入短信發(fā)送程序發(fā)送AT+CMGF=1使 用TEXT模 式Y(jié)利用AT+CSCA 設(shè)置信息中心號(hào)碼 跟著發(fā)送短信的內(nèi)容最后發(fā)十六進(jìn)制數(shù):0x1A 程序退出N TC35I模塊返回OK TC35I模塊返回OKYNAT+CMGS設(shè)置接收手機(jī)號(hào)碼 TC35I模塊返回OKNY圖39 發(fā)送短消息流程圖 無(wú)線射頻模塊(nRF24L01)通信的實(shí)現(xiàn) nRF24L01的初始化配置nRF24L01在正常工作前必須先按需要對(duì)其進(jìn)行配置,它有一個(gè)120位(15字節(jié))的配置寄存器,通過(guò)配置該寄存器的相應(yīng)位即可使nRF24L01按要求正常運(yùn)行。程序一開(kāi)始就需將這120Bit寫(xiě)入,當(dāng)程序運(yùn)行中需要切換模式等,只需要相應(yīng)更改某些位即可。nRF24L01配置字的各個(gè)位的描述如下圖表32。表32 nRF24L01 配置字的各個(gè)位的描述 nRF24L01工作模式設(shè)置前面已經(jīng)說(shuō)過(guò)nRF24L01有四種工作模式:接收模式、發(fā)送模式及兩種節(jié)電模式、待機(jī)模式、掉電模式。nRF24L01的工作模式由微處理器控制nRF24L01的引腳CE的電平高低以及寄存器的配置來(lái)設(shè)置。設(shè)置nRF24L01工作模式的函數(shù)實(shí)現(xiàn)如下表33所示表33 NRF24L01 工作模式設(shè)定 nRF24L01與處理器的SPI通信實(shí)現(xiàn)nRF24L01所有的配置字都由配置寄存器來(lái)定義,這些配置寄存器可通過(guò)SPI口訪問(wèn)。SPI接口設(shè)置:SPI接口由SCK,MOSI,MISO及CSN組成。(1)在配置模式下單片機(jī)通過(guò)SPI接口配置nRF24L01的工作參數(shù);(2)在發(fā)射或接收模式下單片機(jī)SPI接口發(fā)送或接收數(shù)據(jù)。與SPI接口的指令共有8個(gè),使用每個(gè)指令時(shí)必須使CSN變低,用完后將其變高。單片機(jī)的控制指令從nRF24L01的MOSI引腳輸入,而nRF24L01的狀態(tài)信息和數(shù)據(jù)信息是從其MISO引腳輸出并送給單片機(jī)的。利用SPI傳數(shù)時(shí),他是先傳低位字節(jié),再傳高位字節(jié),并且在傳每個(gè)字節(jié)時(shí)是從高位字節(jié)傳起的。指令分別是;讀寄存器指令,格式是000A AAAA;寫(xiě)寄存器指令,格式是001AAAAA(A AAAA代表寄存器在內(nèi)存中的地址;讀Payload指令;寫(xiě)Payload指令;清發(fā)射堆棧指令;清接收堆棧指令;發(fā)射數(shù)據(jù)再利用;空操作具體時(shí)序如下圖310到312所示。圖310 nRF24L01的SPI寫(xiě)時(shí)序圖圖311 nRF24L01的SPI讀時(shí)序圖圖312 nRF24L01的空操作時(shí)序圖本系統(tǒng)中,主控制器有硬件的SPI的通信接口可以與nRF24L01的SPI接口直接連接。但是輔助控制器AT89S51沒(méi)有硬件的SPI接口,所以只有通過(guò)通用的I/O口來(lái)模擬,~,當(dāng)MCU欲與nRF24L01進(jìn)行通信時(shí),通過(guò)P0口模擬nRF24L01的SPI總線時(shí)序來(lái)完成。按照nRF24L01讀寫(xiě)時(shí)序,MCU通過(guò)SPI接口向nRF24L0寫(xiě)入一個(gè)字節(jié)的函數(shù)實(shí)現(xiàn)為:MCU從nRF24L01讀寫(xiě)一個(gè)字節(jié)數(shù)據(jù)的程序?qū)崿F(xiàn)為:uchar NRF24SPI_Send_Byte(uchar dat){ uchar i。 for (i = 0。 i 8。 i++) // output 8bit { //發(fā)送1位數(shù)據(jù) if (dat amp。 0x80) // output 39。uchar39。, MSB to MOSI MOSI = 1。 else MOSI = 0。 dat = 1。 // shift next bit into SCK = 1。 // Set SCK high.. if (MISO) //MSB讀取1位數(shù)據(jù)capture current MISO bit dat |= 1。 else dat amp。= 0xFE。 SCK = 0。 // ..then set SCK low again } return(dat)。 // return read uchar} nRF24L01數(shù)據(jù)發(fā)送程序設(shè)計(jì)nRF24L01的發(fā)送模式初始化配置寄存器流程如下表34所示。表34 數(shù)據(jù)發(fā)送配置流程初始化步驟24L01相關(guān)寄存器1)寫(xiě) Tx 節(jié)點(diǎn)的地址TX_ADDR2)寫(xiě) Rx 節(jié)點(diǎn)的地址(主要是為了使能 Auto Ack)RX_ADDR_P03)使能 AUTO ACKEN_AA4)使能 PIPE 0 EN_RXADDR 5)配置自動(dòng)重發(fā)次數(shù) SETUP_RETR 6)選擇通信頻率 RF_CH 7)配置發(fā)射參數(shù)(低噪放大器增益、發(fā)射功率、無(wú)線速率)RF_SETUP 8 ) 選擇通道0 有效數(shù)據(jù)寬度 Rx_Pw_P0 9)配置 24L01 的基本參數(shù)以及切換工作模式CONFIG增強(qiáng)型 ShockBurstTM發(fā)送模式的設(shè)置配置寄存器位PRIM_RX為低;當(dāng)MCU有數(shù)據(jù)要發(fā)送時(shí)接收節(jié)點(diǎn)地址TX_ADDR和有效數(shù)據(jù)(TX_PLD)通過(guò)SPI接口寫(xiě)入nRF24L01發(fā)送數(shù)據(jù)的長(zhǎng)度以字節(jié)計(jì)數(shù)從MCU寫(xiě)入TX_FIFO當(dāng)CSN為低時(shí)數(shù)據(jù)被不斷的寫(xiě)入發(fā)送端發(fā)送完數(shù)據(jù)后將通道0設(shè)置為接收模式來(lái)接收應(yīng)答信號(hào)其接收地址(RX_ADDR_P0)與接收端地址(TX_ADDR)相同; 設(shè)置CE為高啟動(dòng)發(fā)射CE高電平持續(xù)時(shí)間最小為10 us; nRF24L01 ShockBurstTM模式; 如果啟動(dòng)了自動(dòng)應(yīng)答模式自動(dòng)重發(fā)計(jì)數(shù)器不等于0 ENAA_P0=1無(wú)線芯片立即進(jìn)入接收模式如果在有效應(yīng)答時(shí)間范圍內(nèi)收到應(yīng)答信號(hào)則認(rèn)為數(shù)據(jù)成功發(fā)送到了接收端此時(shí)狀態(tài)寄存器的TX_DS位置高并把數(shù)據(jù)從TX_FIFO中清除掉如果在設(shè)定時(shí)間范圍內(nèi)沒(méi)有接收到應(yīng)答信號(hào)則重新發(fā)送數(shù)據(jù)如果自動(dòng)重發(fā)計(jì)數(shù)器 ARC_CNT溢出超過(guò)了編程設(shè)定的值則狀態(tài)寄存器的MAX_RT位置高不清除TX_FIFO 中的數(shù)據(jù)當(dāng)MAX_RT或TX_DS為高電平時(shí)IRQ引腳產(chǎn)生中斷IRQ中斷通過(guò)寫(xiě)狀態(tài)寄存器來(lái)復(fù)位;如果CE置低則系統(tǒng)進(jìn)入待機(jī)模式I如果不設(shè)置CE為低則系統(tǒng)會(huì)發(fā)送TX_FIFO 寄存器中下一包數(shù)據(jù)如果TX_FIFO寄存器為空,并且CE為高,則系統(tǒng)進(jìn)入待機(jī)模式 II;如果系統(tǒng)在待機(jī)模式II時(shí),當(dāng)CE置低后系統(tǒng)立即進(jìn)入待機(jī)模式 I。C語(yǔ)言流程圖如下。端口初始化;A、 STM32的SPI端口初始化函數(shù):SPI2_Init()。B、 51單片機(jī)用I/O模擬SPI見(jiàn)上一節(jié)。 寄存器配置,主要配置TX_ADDR、RX_ADDR_P0、EN_AA、EN_RXADDR、SETUP_RETR、RF_CH、RF_SETUP; void TX_Mode(void){ Clr_NRF24L01_CE。 NRF24L01_Write_Buf(SPI_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH)。//寫(xiě)TX發(fā)送節(jié)點(diǎn)的地址 NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH)。 NRF24L01_Write_Reg(SPI_WRITE_REG+EN_AA,0)。//0x01//關(guān)閉NRF24L01的自動(dòng)應(yīng)答機(jī)制 NRF24L01_Write_Reg(SPI_WRITE_REG+EN_RXADDR,0)。//0x01)。 NRF24L01_Write_Reg(SPI_WRITE_REG+SETUP_RETR,0)。//0x1a)。 NRF24L01_Write_Reg(SPI_WRITE_REG+RF_CH,40)。 NRF24L01_Write_Reg(SPI_WRITE_REG+RF_SETUP,0x0F)。 NRF24L01_Write_Reg(SPI_WRITE_REG+CONFIG,0x0E)。 Set_NRF24L01_CE。 //CE為高,10us后啟動(dòng)發(fā)送}發(fā)送數(shù)據(jù)通過(guò)SPI通信送入NRF24L01的數(shù)據(jù)寄存器。void NRF24L01_TxPacket(u8 *txbuf){ Clr_NRF24L01_CE。 NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH)。 NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH)。 RF24L01_Write_Reg(SPI_WRITE_REG+CONFIG,0x0E)。Set_NRF24L01_CE。} 程序流程圖見(jiàn)圖313所示:。發(fā)送程序開(kāi)始SPI通信接口初始化NRF24L01寄存器配置為發(fā)送狀態(tài)接收端地址、要發(fā)送的內(nèi)容一并寫(xiě)入啟動(dòng)NRF24L01發(fā)送 查看是否發(fā)送成功程序結(jié)束YN圖313 nRF24L01無(wú)線發(fā)送數(shù)據(jù)配置流程圖 nRF24L01數(shù)據(jù)接收程序設(shè)計(jì)nRF24L01的接收模式初始化過(guò)程即配置寄存器過(guò)程如表35所示。 表35 配置寄存器初始化步驟 24L01相關(guān)寄存器 1)寫(xiě) Rx 節(jié)點(diǎn)的地址 RX_ADDR_P0 2)使能 AUTO ACK EN_AA 3)使能 PIPE 0 EN_RXADDR 4)選擇通信頻率 RF_CH5) 選
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1