物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡(luò)組網(wǎng)設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁
已閱讀1頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  本科畢業(yè)論文(設(shè)計(jì))</p><p>  題  目 物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡(luò)組網(wǎng)設(shè)計(jì) </p><p>  學(xué)生姓名  </p><p>  專業(yè)名稱  電氣工程及其自動(dòng)化

2、 </p><p>  指導(dǎo)教師  </p><p>  年 月 日</p><p>  物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡(luò)組網(wǎng)設(shè)計(jì)</p><p><b>  摘要</b></p><

3、;p>  本系統(tǒng)在正常工作時(shí),用戶通過手機(jī)發(fā)送指令,指令被GSM模塊接受并將指令傳送給單片機(jī),單片機(jī)處理信號(hào)發(fā)出控制指令通過繼電器等控制電路的通斷、電動(dòng)機(jī)的正轉(zhuǎn)反轉(zhuǎn)等達(dá)到控制家用電器設(shè)備的效果。</p><p>  本系統(tǒng)是基于全球移動(dòng)通信系統(tǒng)進(jìn)行設(shè)計(jì)的。系統(tǒng)采用GSM模塊進(jìn)行短信收發(fā),以 STC89C52RC單片機(jī)系統(tǒng)為控制核心,進(jìn)行信息的反饋和遠(yuǎn)程控制,從而實(shí)現(xiàn)遠(yuǎn)程報(bào)警、遠(yuǎn)程控制等功能。</p&g

4、t;<p>  關(guān)鍵詞:GSM模塊 單片機(jī)</p><p>  The networking design of home sensor based on the Internet of things</p><p>  Abstracts </p><p>  When this system works in good condition,

5、 the users could send messages through cell phone or telephone .the GSM module accept the instructions and send it to the microcontroller. The SCM processes signals, send the orders out and control the on-off switch or t

6、he forward/reversal of the electromotor to control household appliances.</p><p>  This system is designed on the basis of the global mobile communication system. The system, which with the core of STC89C52RC

7、 SMS,sends and receives messages by using GSM module. It can realize the functions of remote alarm, remote control through giving information feedback and controlling appliances remotely.</p><p>  Key words:

8、 GSM module singlechip</p><p><b>  目 錄</b></p><p><b>  1.前言V</b></p><p>  2.系統(tǒng)的總體設(shè)計(jì)方案與主要功能VI</p><p>  2.1系統(tǒng)的總體設(shè)計(jì)方案VI</p><p> 

9、 2.2系統(tǒng)主要功能VII</p><p>  3.1傳感器單元硬件設(shè)計(jì)方案VIII</p><p>  3.2控制系統(tǒng)單元硬件設(shè)計(jì)方案IX</p><p>  3.3 GSM 模塊方案IX</p><p>  3.4電源模塊方案X</p><p>  4硬件電路設(shè)計(jì)XI</p><p&

10、gt;  4.1 GSM與單片機(jī)硬件連接XI</p><p>  4.2執(zhí)行機(jī)構(gòu)電路XI</p><p>  5系統(tǒng)軟件設(shè)計(jì)XIII</p><p>  5.1系統(tǒng)流程圖XIII</p><p>  5.2 AT 指令XIV</p><p>  6.各模塊核心程序XV</p><p>

11、;  6.1GSM模塊收發(fā)程序XV</p><p>  6.2煙霧傳感器模塊核心代碼:XXII</p><p>  6.3 DS18B20核心代碼:XXIII</p><p>  6.4 ADC0809功能核心代碼XXVII</p><p><b>  結(jié)論XXX</b></p><p>

12、;<b>  參考文獻(xiàn)XXXI</b></p><p>  謝 辭XXXII</p><p><b>  1.前言</b></p><p>  隨著經(jīng)濟(jì)的快速增長(zhǎng),快節(jié)奏的生活狀態(tài)得人們?cè)絹碓阶⒅厣畹馁|(zhì)量和品位,人們對(duì)舒適,方便,高效的生活環(huán)境的渴望愈來愈強(qiáng)烈。如何建立一個(gè)高效率、低成本的智能家居系統(tǒng)已經(jīng)成為當(dāng)今世

13、界的一個(gè)熱點(diǎn)問題。目前國(guó)內(nèi)外各種類型的智能家居產(chǎn)品越來越多,但其中大部分是基于電話網(wǎng)的安防控制系統(tǒng),并且只是應(yīng)用于高檔住宅。一般的普通民眾都無法接受其高昂的價(jià)格。并且目前國(guó)內(nèi)固定電話的用戶正在急劇減少,手機(jī)用戶的數(shù)量在飛速增長(zhǎng)。所以一種價(jià)格低廉且功能齊全的基于GSM模塊的的家居智能控制系統(tǒng)就將應(yīng)運(yùn)而生。 </p><p>  本系統(tǒng)介紹的家居智能控制系統(tǒng)采用GSM模塊進(jìn)行短信收發(fā),以 STC89C2RC芯片

14、為控制核心,實(shí)現(xiàn)遠(yuǎn)程控制、信號(hào)采集、遠(yuǎn)程報(bào)警等功能。</p><p>  2.系統(tǒng)的總體設(shè)計(jì)方案與主要功能</p><p>  2.1系統(tǒng)的總體設(shè)計(jì)方案</p><p>  圖1 系統(tǒng)總體結(jié)構(gòu)框圖</p><p>  系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。當(dāng)用戶家里有盜賊出入或者門窗沒有關(guān)好,發(fā)生火災(zāi)或者煤氣泄漏,溫度低于或者高于預(yù)設(shè)溫度時(shí)相應(yīng)的傳

15、感器發(fā)出信號(hào),此時(shí)數(shù)據(jù)采集模塊將傳感器發(fā)出的信號(hào)轉(zhuǎn)換成數(shù)字量,然后送給單片機(jī)控制系統(tǒng)進(jìn)行計(jì)算和分析后,通過RS232串口將數(shù)據(jù)傳送給GSM模塊將家里即時(shí)信息發(fā)送到用戶手機(jī)上,同時(shí)單片機(jī)控制系統(tǒng)將控制啟動(dòng)相應(yīng)的執(zhí)行機(jī)構(gòu),如打開啟動(dòng)報(bào)警器,打開照明燈,打開電磁閥,打開空調(diào)等等。當(dāng)GSM模塊接受到用戶短信指令后,將其轉(zhuǎn)換成數(shù)字量,通過串口送給單片機(jī)系統(tǒng)分析指令的意思,然后開啟相應(yīng)的家電設(shè)備,比如提前打開燈,電視,熱水器,或者空調(diào),實(shí)現(xiàn)遠(yuǎn)程控制

16、功能。</p><p>  智能家居系統(tǒng)各單元的組成與功能簡(jiǎn)介:</p><p>  傳感器單元:傳感器單元主要包括有紅外傳感器、煙霧傳感器、溫度傳感器等,主要是對(duì)家中各指標(biāo)進(jìn)行檢測(cè),例如煙霧濃度,溫度高低等,并將這些離散量裝換成數(shù)字量送給控制系統(tǒng)單元。</p><p>  控制系統(tǒng)單元:控制系統(tǒng)單元主要有STC89C52芯片和外部必要的復(fù)位、電源電路等構(gòu)成。主要是

17、對(duì)傳感器單元和GSM模塊傳送過來的數(shù)據(jù)進(jìn)行分析和計(jì)算,從而發(fā)出正確的指令。</p><p>  GSM模塊單元:GSM全稱為全球移動(dòng)通訊系統(tǒng)。是用戶與系統(tǒng)通訊連接的最重要的單元。</p><p>  電源模塊:采用UPS供電,保證系統(tǒng)能在斷電的情況下能正常運(yùn)行。</p><p><b>  2.2系統(tǒng)主要功能</b></p>&l

18、t;p>  1. 遠(yuǎn)程控制功能:該系統(tǒng)能接收并識(shí)別用戶發(fā)送來的控制命令并由單片機(jī)處理,來實(shí)現(xiàn)不同家電工作及停止功能。</p><p>  2. 遠(yuǎn)程報(bào)警功能:在用戶住宅出現(xiàn)異常情況時(shí),比如火災(zāi)、盜賊入侵、門窗未關(guān)好等,系統(tǒng)會(huì)自動(dòng)發(fā)送報(bào)警短信給預(yù)先設(shè)定手機(jī)號(hào)碼的用戶,同時(shí)啟動(dòng)現(xiàn)在相關(guān)的執(zhí)行機(jī)構(gòu),如啟動(dòng)報(bào)警器等。</p><p>  3. 永不斷電功能:系統(tǒng)采用UPS電源供電,在斷

19、電時(shí)可繼續(xù)工作,可以在斷電情況下監(jiān)控家里安全信息,克服了停電時(shí)不能報(bào)警等缺點(diǎn)。</p><p>  3.硬件技術(shù)方案 硬件的技術(shù)方案包括傳感器單元硬件設(shè)計(jì)方案,控制系統(tǒng)單元硬件設(shè)計(jì)方案,GSM模塊單元硬件選擇方案,電源模塊硬件選擇方案。</p><p>  3.1傳感器單元硬件設(shè)計(jì)方案</p><p>  本系統(tǒng)傳感器單元包括紅外傳感器、煙霧傳感器、溫度傳感

20、器和A/D轉(zhuǎn)換模塊。</p><p>  紅外傳感器采用主動(dòng)紅外探測(cè)器,主動(dòng)紅外探測(cè)器由紅外發(fā)射機(jī),紅外接收機(jī)和報(bào)警控制器組成。紅外發(fā)送端和接收端之間有一道紅外光束,當(dāng)人體穿越此光束時(shí),必將部分或全部遮擋紅外光束,接收端輸出電信號(hào)的強(qiáng)度會(huì)發(fā)生變化從而啟動(dòng)報(bào)警控制器發(fā)出報(bào)警信號(hào),同時(shí)發(fā)報(bào)警短信信息給用戶。</p><p>  煙霧傳感器采用MQ-2,它是一種電阻控制型的氣敏器件,其阻值隨被測(cè)

21、氣體的濃度(成分)而變化。氣敏器件又是一種“氣—電”傳感器件,它將被測(cè)氣體的濃度(成分)信號(hào)轉(zhuǎn)換成相應(yīng)的電信號(hào)。其響應(yīng)時(shí)間≦5s,恢復(fù)時(shí)間≦30s。探測(cè)液化氣的濃度在300ppm-5000ppm。足以滿足本系統(tǒng)設(shè)計(jì)要求。</p><p>  4. A/D轉(zhuǎn)換模塊,主要采用ADC0809芯片,其主要是將各傳感器采集回來的數(shù)據(jù)轉(zhuǎn) 換成數(shù)字量送給STC89C52RC單片機(jī)進(jìn)行計(jì)算和分析。0809具有8路模擬輸入端口

22、,地址線(23-25腳)可決定對(duì)哪一路模擬輸入作A/D轉(zhuǎn)換,22腳為地址鎖存控制,當(dāng)輸入為高電平時(shí),對(duì)地址信號(hào)進(jìn)行鎖存。6腳為AD轉(zhuǎn)換啟動(dòng)控制,當(dāng)輸入電平由低到高再到低后A,就開始A/D轉(zhuǎn)換。7腳為A/D轉(zhuǎn)換結(jié)束標(biāo)志,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),7腳輸出高電平。9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制,當(dāng)OE腳為高電平時(shí),A/D轉(zhuǎn)換數(shù)據(jù)從端口輸出。</p><p>  3.2控制系統(tǒng)單元硬件設(shè)計(jì)方案</p><

23、;p>  控制系統(tǒng)單元主要由STC89C52RC芯片及其復(fù)位和電源電路組成。8位STC89C52RC單片機(jī)是STC公式開發(fā)的一款增強(qiáng)型的51單片機(jī)芯片。具有低功耗,運(yùn)行穩(wěn)定,存儲(chǔ)空間大等特點(diǎn)。用戶應(yīng)用程序空間為8KB。片上集成512字節(jié)RAM,具有ISP/IAP功能,無需專用編程其,可直接通過串口下載用戶程序,數(shù)秒即可完成。節(jié)約購買專用編程器的資金。具有3個(gè)16位定時(shí)/計(jì)數(shù)器。最主要的是該芯片與51芯片兼容,給使用者帶來極大的便利

24、。</p><p>  3.3 GSM 模塊方案</p><p>  本系統(tǒng)設(shè)計(jì)使用的GSM 模塊是Siemens公司的TC35I。TC35I是西門子公式最新推出的無線模塊。,該模塊集射頻電路和基帶于一體,向用戶提供標(biāo)準(zhǔn)的AT命令接口,為數(shù)據(jù)、語音、短消息和傳真提供快速、可靠、安全的傳輸,方便用戶的應(yīng)用開發(fā)與設(shè)計(jì),TC35I的組成如圖3所示。TC35I模塊主要由GSM基帶處理器、GSM射頻

25、模塊、供電模塊、閃存、ZIF連接器、天線接口6部分組成。作為TC35I的核心,基帶處理器主要處理GSM終端的語音、數(shù)據(jù)信號(hào),并涵蓋了蜂窩射頻設(shè)備的所有的模擬和數(shù)字功能。在不需要額外硬件電路的前提下,可支持FR、HR和EFR語音信道編碼。(鄭峰.51單片機(jī)應(yīng)用系統(tǒng)典型模塊開發(fā)大全P559)</p><p>  圖3 TC35I的組成框圖</p><p><b>  3.4電源模塊方

26、案</b></p><p>  本系統(tǒng)采用UPS進(jìn)行供電,以保證在掉電情況下防盜報(bào)警功能依然能正常運(yùn)行。不間斷電源(UPS)是當(dāng)交流輸入電源(俗稱市電)發(fā)生異?;驍嚯姇r(shí),還能繼續(xù)向負(fù)載供電,并能保證供電質(zhì)量,是負(fù)載供電不受影響的裝置。其基本結(jié)構(gòu)原理圖如圖4所示</p><p>  圖4 UPS基本結(jié)構(gòu)框圖</p><p>  當(dāng)市電正常時(shí)通過整流器將交流

27、電整流成直流點(diǎn)給蓄電池充電,同時(shí)通過逆變器又變換成交流電供給負(fù)載。當(dāng)市電斷電后,則蓄電池放出直流電通過逆變器逆變成交流電后,繼續(xù)給負(fù)載供電。這樣在有市電時(shí)供給負(fù)載的同時(shí)給蓄電池充電,當(dāng)市電斷電時(shí),蓄電池則充當(dāng)電源通過逆變給負(fù)載繼續(xù)供電,實(shí)現(xiàn)不間斷供電。</p><p><b>  4硬件電路設(shè)計(jì)</b></p><p>  本系統(tǒng)的硬件電路主要包括GSM模塊與STC8

28、9C52RC芯片的連接電路和執(zhí)行機(jī)構(gòu)電路。</p><p>  4.1 GSM與單片機(jī)硬件連接</p><p>  GSM與STC89C52RC的硬件連接圖如圖5所示。</p><p>  圖5 GSM與單片連接原理圖</p><p>  單片機(jī)與GSM 模塊的硬件連接TC35I的數(shù)據(jù)接口采用串行異步收發(fā), 數(shù)據(jù)接口配置為8 位數(shù)據(jù)位、1

29、位停止位、無校驗(yàn)位,可以在300-115×103 bps 的波特率下運(yùn)行。由于數(shù)據(jù)通信電路中TC35I數(shù)據(jù)接口工作在CMOS電平,而STC89C52RC芯片工作在TTL點(diǎn)電平,所以在STC89C52RC芯片和TC35I 之間加入TI公式的電平轉(zhuǎn)換芯片MAX232。實(shí)現(xiàn)串口通訊的功能。</p><p><b>  4.2執(zhí)行機(jī)構(gòu)電路</b></p><p> 

30、 執(zhí)行機(jī)構(gòu)部分電路如圖6所示。</p><p>  圖6 執(zhí)行機(jī)構(gòu)部分電路圖</p><p>  本系統(tǒng)共有八路通過繼電器通斷實(shí)現(xiàn)對(duì)電器控制的執(zhí)行機(jī)構(gòu)電路。單片機(jī)管腳通過10K限流電阻與三極管基極相連,當(dāng)相應(yīng)的管腳呈高電平時(shí),那么相對(duì)應(yīng)的三極管就會(huì)導(dǎo)通,信號(hào)繼電器線圈也就會(huì)通電吸合,從而實(shí)現(xiàn)家用電器的開關(guān)。當(dāng)單片機(jī)管腳輸出為低電平時(shí),三極管失去導(dǎo)通電壓關(guān)斷,由于繼電器線圈并聯(lián)了一個(gè)續(xù)流二極

31、管,此時(shí)繼電器線圈產(chǎn)生的巨大的感應(yīng)電流會(huì)通過續(xù)流二極管與線圈形成通路,最后電能將全部在線圈上消耗,從而感應(yīng)電流就不會(huì)沖向三極管,保證了電路的穩(wěn)定性和可靠性。</p><p><b>  5系統(tǒng)軟件設(shè)計(jì)</b></p><p><b>  5.1系統(tǒng)流程圖</b></p><p><b>  圖7 系統(tǒng)流程圖<

32、;/b></p><p>  本系統(tǒng)的軟件部分由C語言編寫,C語言有較好的可閱讀行和移植性,大大的方便了程序的編寫。系統(tǒng)流程圖如圖7所示。首先對(duì)系統(tǒng)進(jìn)行初始化,初始化包括串行通訊口的初始化,中斷初始化,TC35I的初始化。然后單片機(jī)對(duì)是否接受到短信指令和與傳感器連接的I/O進(jìn)行循環(huán)檢測(cè)。當(dāng)GSM接收到短信指令時(shí),通過單片機(jī)的分析計(jì)算啟動(dòng)相應(yīng)的電器,同時(shí)給用戶發(fā)送操作成功的短消息,然后繼續(xù)對(duì)傳感器進(jìn)行檢測(cè),如

33、果沒有傳感器沒有信號(hào),則又返回繼續(xù)對(duì)GSM是否接收到短信指令進(jìn)行檢測(cè),就這樣循環(huán)進(jìn)行檢測(cè)。當(dāng)家里發(fā)生險(xiǎn)情或溫度過高時(shí),軟件進(jìn)入中斷服務(wù)程序,對(duì)三個(gè)傳感器分別進(jìn)行判斷,然后進(jìn)行相應(yīng)的處理同時(shí)完成對(duì)報(bào)警信息的發(fā)送。</p><p><b>  5.2 AT 指令</b></p><p>  AT指令是以AT作首,字符結(jié)束的字符串,AT指令的響應(yīng)數(shù)據(jù)包在 中。每個(gè)指令執(zhí)行成

34、功與否都有相應(yīng)的返回。對(duì)TC35I 的操作均采用AT 指令,它包含了GSM 語音和短信息的控制。其指令格式為“AT+XXXX”,根據(jù)AT 指令的GSM07.05 標(biāo)準(zhǔn),發(fā)送和接收中文或中/英文混合的短信息必須采用PDU 模式,Text 模式只支持傳送英文及數(shù)字信息。根據(jù)本系統(tǒng)的要求采用Text模式。系統(tǒng)所用基本命令如下:</p><p>  設(shè)置短消息發(fā)送格式(0-PDU,1-文本)AT+CMGF=1;</

35、p><p>  發(fā)送短消息(短消息內(nèi)容為“OK”)AT+CMGS="15173236799"(用戶電話)>OK^z(^z 表示OK+z);</p><p>  本地中心號(hào)碼設(shè)置"AT+CSCA=+8613800732500(湘潭)";</p><p>  讀取短信息內(nèi)容AT+CMGR=1;</p><p&

36、gt;  GSM網(wǎng)絡(luò)狀態(tài)查詢“AT+CREG?”;</p><p>  刪除短息防止溢出AT+CMGD=1;</p><p><b>  6.各模塊核心程序</b></p><p>  6.1GSM模塊收發(fā)程序</p><p>  單片機(jī)實(shí)現(xiàn)短信自動(dòng)發(fā)送</p><p>  進(jìn)行短信發(fā)送的前提是短

37、信內(nèi)容的正確編碼。經(jīng)過以上對(duì)短信發(fā)送過程的分析,可以通過單片機(jī)對(duì)其進(jìn)行實(shí)現(xiàn)。下面是實(shí)現(xiàn)程序例程:</p><p>  /*------------------------------------------------------------------</p><p>  函數(shù)名:PDU_SMS()</p><p><b>  功能 :發(fā)送短信</

38、b></p><p>  參數(shù)說明:SMS_Center為短信中心號(hào)碼 11位</p><p>  SMS_Telenum為短信接收方的號(hào)碼 11位</p><p>  SMS_Context為短信的內(nèi)容</p><p>  --------------------------------------------------------

39、----------*/</p><p>  int PDU_SMS(char *SMS_Center, char *SMS_Telenum,</p><p>  char *SMS_Context,char is_GB)</p><p><b>  {</b></p><p><b>  int i,j;&l

40、t;/b></p><p>  unsigned char len,time;</p><p>  char lens[3];</p><p><b>  time=0;</b></p><p>  for(i=0;i<300;i++) PDU_Code[i]=PDU_t[i];</p><

41、;p>  /*----------設(shè)置短信中心號(hào)碼--------------*/</p><p>  for (i = 0, j = 0; i < strlen(SMS_Center) / 2; i++)</p><p><b>  {</b></p><p>  PDU_Code[6+(j++)] = SMS_Center[2

42、*i + 1];</p><p>  PDU_Code[6+(j++)] = SMS_Center[2 *i];</p><p><b>  }</b></p><p>  PDU_Code[6+j++] = 'F'; //在最后補(bǔ)上的F</p><p>  PDU_Code[6+j] = SMS_Cen

43、ter[strlen(SMS_Center) - 1];</p><p>  /*---------------------------------------------*/</p><p>  /*----------設(shè)置接收號(hào)碼--------------*/</p><p>  for (i = 0, j = 0; i < strlen(SMS_Tel

44、enum) / 2; i++)</p><p><b>  {</b></p><p>  PDU_Code[26+(j++)] = SMS_Telenum[2 *i + 1];</p><p>  PDU_Code[26+(j++)] = SMS_Telenum[2 *i];</p><p><b>  }&

45、lt;/b></p><p>  PDU_Code[26+j++] = 'F';</p><p>  PDU_Code[26+j] = SMS_Telenum[strlen(SMS_Telenum) - 1];</p><p>  /*---------------------------------------------*/</p&g

46、t;<p>  /*----------設(shè)置短信內(nèi)容長(zhǎng)度--------------*/</p><p>  if(is_GB==0)</p><p>  len = strlen(SMS_Context) *2;</p><p><b>  else</b></p><p>  len = strlen(

47、SMS_Context);</p><p>  PDU_Code[44] = (len >> 4) > 9 ? (len >> 4) + 55: (len >> 4) + 48;</p><p>  PDU_Code[45] = (len &0x0f) > 9 ? (len &0x0f) + 55: (len &0x

48、0f) + 48;</p><p>  /*---------------------------------------------*/</p><p>  /*----------編碼短信內(nèi)容--------------*/</p><p>  if(is_GB==0)//如果不是GB碼,短信內(nèi)容為ascii碼字符串</p><p>&

49、lt;b>  {</b></p><p>  for (i = 0,j=0; i<strlen(SMS_Context);i++)</p><p><b>  {</b></p><p>  szzh16(SMS_Context[j++],lens);</p><p>  PDU_Code[46+

50、i*4] = '0';</p><p>  PDU_Code[46+i*4+1] = '0';</p><p>  PDU_Code[46+i*4+2] = lens[0];</p><p>  PDU_Code[46+i*4+3] = lens[1];</p><p><b>  }</b&g

51、t;</p><p>  PDU_Code[46+i*4] = 0x1a;</p><p>  PDU_Code[46+i*4+1] = 0xff;</p><p><b>  }</b></p><p><b>  else</b></p><p>  //短信內(nèi)容為GB碼

52、,如果要使手機(jī)能夠顯示,改到UNICODE編碼</p><p><b>  {</b></p><p>  for (i = 0,j=0; i<strlen(SMS_Context);i++)</p><p><b>  {</b></p><p>  szzh16((int)SMS_Cont

53、ext[j++],lens);</p><p>  PDU_Code[46+i*2] = lens[0];</p><p>  PDU_Code[46+i*2+1] = lens[1];</p><p><b>  }</b></p><p>  PDU_Code[46+i*2] = 0x1a;</p>&

54、lt;p>  PDU_Code[46+i*2+1] = 0xff;</p><p><b>  }</b></p><p>  /*---------------------------------------------*/</p><p>  if(PDU_HandShake())</p><p><b&

55、gt;  {</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  PDU_EnablePDU();</p><p>  if(is_GB==0)</p><p>  PDU_SetLength(Strlen

56、(SMS_Context)*2);</p><p><b>  else</b></p><p>  PDU_SetLength(Strlen(SMS_Context));</p><p>  PDU_Send(PDU_Code);</p><p>  for(i=0;i<25;i++)</p>&l

57、t;p>  delay(20000);</p><p>  sbuf[counter]=0;</p><p>  counter=0;</p><p><b>  time++;</b></p><p><b>  }</b></p><p>  //判斷是否發(fā)送成功,

58、如果不成功繼續(xù)發(fā)送,最多4次,如仍不成功,返回0</p><p>  while(strpos(sbuf+strlen(sbuf)-20,'G')==-1&&time<4);</p><p>  if(strpos(sbuf+strlen(sbuf)-20,'G')==-1)</p><p><b>

59、  return 0;</b></p><p><b>  else</b></p><p>  return 1; //成功的話返回0</p><p><b>  }</b></p><p><b>  else</b></p><p>&

60、lt;b>  {</b></p><p>  sbuf[counter]=0;</p><p>  counter=0;</p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  }

61、</b></p><p>  以上程序成功實(shí)現(xiàn)短信的發(fā)送。</p><p>  單片機(jī)對(duì)短信的讀取與解碼</p><p>  單片機(jī)可以通過AT指令對(duì)短信貓中的短信進(jìn)行讀取,并對(duì)讀入的短信數(shù)據(jù)進(jìn)行分析與解碼。</p><p>  讀出的短信格式與發(fā)送時(shí)的短信編碼大致是相同的,下面給出相應(yīng)的程序例程。</p><

62、p>  讀取某一條短信,并將其進(jìn)行顯示:</p><p>  /*-------------------------------------------------------</p><p>  函數(shù)名:LAD_SMS()(short for "Load And Display the Short MessageS")</p><p> 

63、 功能:用戶函數(shù),讀取第n條短信,并在LCD的(x,y)位置顯示出來</p><p>  ----------------------------------------------------------*/</p><p>  unsigned char LAD_SMS(unsigned char n,unsigned char x,unsigned char y)</p>

64、<p><b>  {</b></p><p>  unsigned char i,len,t;</p><p>  char temp[5];</p><p>  char temp1[3];</p><p>  //IN_Draw_BlankorBlackRect(0,20,30,72,0);</

65、p><p>  szzh10(n,temp1);</p><p>  //將n轉(zhuǎn)為相應(yīng)的字符串,如n=21,則字符串為"21",用以與AT指令拼接。</p><p><b>  t=85;</b></p><p>  clear_sbuf();</p><p>  counter=

66、0;</p><p>  send_s("AT+CMGR=");//AT+CMGR為讀取短信的AT指令</p><p>  send_s(temp1);//上面所得的字符串</p><p>  send(0x0d);</p><p>  send(0x0a);</p><p>  for(i=0;i

67、<10;i++) delay(10000); //等待讀取完畢</p><p>  sbuf[counter]=0; //在收到的數(shù)據(jù)末尾附加'\0'</p><p>  temp[0]=sbuf[23];</p><p>  temp[1]=sbuf[24];</p><p>  temp[2]=sbuf[25];&l

68、t;/p><p>  temp[3]=0;</p><p>  if(sbuf[25]!=0x0d) t++;</p><p>  for(i=0;i<strlen(temp);i++) if(temp[i]==0x0d) temp[i]=0;</p><p>  len=atoi(temp); //獲取收到的短信內(nèi)容長(zhǎng)度</p>

69、;<p>  if(len==0)</p><p><b>  {</b></p><p>  //LCD_PutEng(5,96,"EMP");</p><p>  //LCD_PutChn(x,y,">短信空");</p><p>  delay(50000

70、);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  len-=20;</b></p><p>  if(len>90)</p><p><b>  {</

71、b></p><p>  //LCD_PutEng(5,96,"MTL");</p><p>  //LCD_PutChn(x,y,">短信太長(zhǎng)");</p><p>  delay(50000);</p><p><b>  return 0;</b></p&g

72、t;<p><b>  }</b></p><p>  for(i=0;i<len;i++)</p><p><b>  {</b></p><p>  temp[0]=sbuf[t+2*i];</p><p>  temp[1]=sbuf[t+2*i+1];</p>

73、;<p>  temp[2]=0;</p><p>  sbuf[i]=_hex_(temp);</p><p>  //收到的短信內(nèi)容是內(nèi)存方式的顯示表示,轉(zhuǎn)為十六進(jìn)制數(shù)</p><p><b>  }</b></p><p>  sbuf[i]=0;</p><p>  Ana

74、lysis_Pro();//解碼后的內(nèi)容在sbuf中,此函數(shù)對(duì)其進(jìn)行顯示輸出</p><p>  delay(50000);</p><p>  clear_sbuf();</p><p>  counter=0;</p><p><b>  return 1;</b></p><p><

75、b>  }</b></p><p><b>  檢測(cè)新短信:</b></p><p>  /*-------------------------------------------------------</p><p>  函數(shù)名:Check_New()</p><p>  功能:用戶函數(shù),檢測(cè)有無新

76、的短信,如果有返回1,否則返回0</p><p>  ----------------------------------------------------------*/</p><p>  unsigned char Check_New()</p><p><b>  {int i;</b></p><p>  s

77、end_s("AT+CMGL=0"); //AT+CMGL=0為讀取新短信的AT指令</p><p>  send(0x0d);</p><p>  send(0x0a); //發(fā)送回車</p><p>  delay(10000); //等待接收完畢</p><p>  if(sbuf[12]=='O')

78、 return 0xff;</p><p>  if(sbuf[12]=='+')</p><p><b>  {</b></p><p>  for(i=18;i<23;i++)</p><p>  if(sbuf[i]==',') sbuf[i]=0;</p>&l

79、t;p>  return atoi(sbuf+19); //返回新短信的位置</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  刪除某條短信:</b></p><p>  /*------------------

80、-------------------------------------</p><p>  函數(shù)名:Delete()</p><p>  功能:用戶函數(shù),刪除第n條短信</p><p>  ----------------------------------------------------------*/</p><p>  unsi

81、gned char Delete(unsigned char n)</p><p><b>  {</b></p><p>  char t[10];</p><p>  char t1[5];</p><p>  strcpy(t,"AT+CMGD="); //AT+CMGD為刪除短信的AT指令&l

82、t;/p><p>  szzh10(n,t1);</p><p>  strcpy(t+8,t1);</p><p>  while(Send_AT_CMD(t)!=1);</p><p>  delay(60000);</p><p><b>  return 1;</b></p>&

83、lt;p><b>  }</b></p><p>  6.2煙霧傳感器模塊核心代碼:</p><p>  uint AD_Conver(uchar port)</p><p><b>  {</b></p><p><b>  uchar i;</b></p>

84、<p>  uint AD= 0;</p><p>  CLOCK = 0;</p><p><b>  CS= 0;</b></p><p><b>  EOC=1;</b></p><p>  port <<= 4;</p><p>  for

85、(i = 0; i < 12; i++) //注意:在12個(gè)時(shí)鐘周期的下降沿產(chǎn)生了數(shù)據(jù)輸出</p><p>  { //在前4個(gè)時(shí)鐘周期內(nèi),TLC2543已經(jīng)知道下一次將</p><p>  if (DOUT)AD |= 0x01; //哪個(gè)通道做轉(zhuǎn)換,在后8個(gè)時(shí)鐘內(nèi)就一直對(duì)此通道</p&

86、gt;<p>  DIN = (bit)(port & 0x80); //進(jìn)行采樣,并保持到第12個(gè)時(shí)鐘周期結(jié)束,此后才</p><p>  CLOCK = 1; //開始進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換時(shí)間需要10us.</p><p><b>  _nop_(); </b></p><p>&

87、lt;b>  _nop_(); </b></p><p>  _nop_(); //在第4-8個(gè)時(shí)鐘周期內(nèi)輸入的是命令控制字</p><p><b>  CLOCK= 0;</b></p><p><b>  _nop_(); </b></p>

88、<p><b>  _nop_(); </b></p><p>  _nop_(); //可根據(jù)需要輸入</p><p>  port <<= 1;</p><p><b>  AD <<= 1;</b></p><p>

89、;<b>  }</b></p><p><b>  CS=1;</b></p><p><b>  AD >>=1;</b></p><p>  return AD;</p><p><b>  }</b></p><p&

90、gt;<b>  #endif</b></p><p>  6.3 DS18B20核心代碼:</p><p>  void delay(uint z) //延時(shí)函數(shù)</p><p>  { uint x,y;</p><p>  for(x=z;x>0;x--)</p><p>  fo

91、r(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void dsreset(void) //DS18B20復(fù)位,初始化函數(shù)</p><p><b>  { uint i;</b></p><p><b>  ds=0;</b&

92、gt;</p><p><b>  i=103;</b></p><p>  while(i>0)i--;</p><p><b>  ds=1;</b></p><p><b>  i=4;</b></p><p>  while(i>0)

93、i--;</p><p><b>  }</b></p><p>  bit tempreadbit(void) //讀一位數(shù)據(jù)函數(shù)</p><p><b>  {uint i;</b></p><p><b>  bit dat;</b></p>&

94、lt;p>  ds=0;i++; //i++起延時(shí)作用</p><p>  ds=1;i++;i++;</p><p><b>  dat=ds;</b></p><p>  i=8;while(i>0)i--;</p><p>  return (dat);</p><p><

95、b>  }</b></p><p>  uchar tempread(void) //讀一個(gè)字節(jié)數(shù)據(jù)函數(shù)</p><p>  { uchar i,j,dat;</p><p><b>  dat=0;</b></p><p>  for(i=1;i<=8;i++)</p&g

96、t;<p>  {j=tempreadbit();</p><p>  dat=(j<<7)|(dat>>1); //讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個(gè)字節(jié)在dat里</p><p><b>  }</b></p><p>  return (dat);</p><p>

97、<b>  }</b></p><p>  void tempwritebyte(uchar dat) //向DS18B20寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)</p><p><b>  {uint i;</b></p><p><b>  uchar j;</b></p><

98、p>  bit testb;</p><p>  for(j=1;j<=8;j++)</p><p>  { testb=dat&0x01;</p><p>  dat=dat>>1;</p><p>  if(testb) //寫1</p><p><b>  {ds=0;&

99、lt;/b></p><p><b>  i++;i++;</b></p><p><b>  ds=1;</b></p><p>  i=8;while(i>0)i--;</p><p><b>  }</b></p><p><b&

100、gt;  else</b></p><p>  {ds=0; //寫0</p><p>  i=8;while(i>0)i--;</p><p><b>  ds=1;</b></p><p><b>  i++;i++;</b></p><p><b

101、>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void tempchange(void) //DS18B20開始獲取溫度并轉(zhuǎn)換</p><p>  { dsreset();</p><p&g

102、t;<b>  delay(1);</b></p><p>  tempwritebyte(0xcc); //寫跳過讀ROM指令</p><p>  tempwritebyte(0x44); //寫溫度轉(zhuǎn)換指令</p><p><b>  }</b></p><p>  uint get_temp(

103、) //讀寄存器中存儲(chǔ)的溫度數(shù)據(jù)</p><p>  {uchar a,b;</p><p>  dsreset();</p><p><b>  delay(1);</b></p><p>  tempwritebyte(0xcc);</p><p>  tempwritebyte(0xbe);

104、</p><p>  a=tempread(); //讀低8位</p><p>  b=tempread(); //讀高8位</p><p><b>  temp=b;</b></p><p>  temp<<=8; //兩個(gè)字節(jié)組合為一個(gè)字</p><p>  temp=temp|a

105、;</p><p>  f_temp=temp*0.062 //溫度在寄存器中為12位,分辨率為0.0625</p><p>  temp=f_temp*10+0.5; //乘10表小數(shù)點(diǎn)后只取1位,加0.5是四舍五入</p><p>  f_temp=f_temp+0.05;</p><p>  return

106、 temp; //temp 是整型</p><p><b>  }</b></p><p>  void main() //主函數(shù)</p><p>  {uchar buff[4],i;</p><p><b>  dula=0;</b></p><p><b> 

107、 wela=0;</b></p><p>  init_com();</p><p><b>  while(1)</b></p><p>  {tempchange(); //溫度轉(zhuǎn)換函數(shù)</p><p>  for (i=10;i>0;i--)</p><p>  { di

108、s_temp(get_temp()); //獲取溫度并顯示</p><p><b>  }</b></p><p>  deal(temp); //進(jìn)行溫度處理</p><p>  sprintf(buff,"%f",f_temp); //將浮點(diǎn)型溫度格式化為字符型</p><p>

109、;  for (i=10;i>0;i--)</p><p>  { dis_temp(get_temp()); //溫度顯示</p><p><b>  }</b></p><p>  comm(buff); //串口發(fā)送數(shù)據(jù)</p><p>  for(i=10;i>0;i--)</p>&

110、lt;p>  {dis_temp(get_temp());} //溫度顯示</p><p><b>  }</b></p><p><b>  }</b></p><p>  6.4 ADC0809功能核心代碼</p><p>  void control(uchar num1,uchar n

111、um2)</p><p><b>  {</b></p><p><b>  uint i;</b></p><p>  uchar s,j;</p><p><b>  s=num1;</b></p><p>  for(i=6;i>0;i--)

112、</p><p><b>  { </b></p><p><b>  p17=0;</b></p><p><b>  p15=s%2;</b></p><p><b>  s=s/2;</b></p><p><b>

113、;  p17=1;</b></p><p><b>  }</b></p><p><b>  j=num2;</b></p><p>  for(i=8;i>0;i--)</p><p><b>  {</b></p><p><

114、;b>  p17=0;</b></p><p><b>  p15=j%2;</b></p><p><b>  j=j/2;</b></p><p><b>  p17=1;</b></p><p><b>  }</b></p&

115、gt;<p><b>  p16=1;</b></p><p><b>  p16=0;</b></p><p><b>  }</b></p><p>  void init()//產(chǎn)生500khz信號(hào)</p><p><b>  {</b&

116、gt;</p><p>  TMOD=0x01;</p><p>  TH0=(65536-1)/256;</p><p>  TL0=(65536-1)%256;//取余</p><p><b>  EA=1;</b></p><p><b>  TR0=1;</b><

117、;/p><p><b>  ET0=1;</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  //uchar temp;</p><p&g

118、t;  uchar a1,a2,a3,adval;</p><p><b>  init();</b></p><p><b>  start=0;</b></p><p><b>  oe=0;</b></p><p>  //P2=0xff;</p><

119、p><b>  while(1)</b></p><p>  {start=0;</p><p><b>  start=1;</b></p><p><b>  start=0;</b></p><p>  //while(eoc==0);</p>&l

120、t;p><b>  oe=1;</b></p><p>  adval=P0;//讀入轉(zhuǎn)換的數(shù)字量</p><p><b>  oe=0;</b></p><p>  //disp_buffer[0]=temp>>4;</p><p>  //disp_buffer[1]=temp

121、&0X0F;</p><p>  //delayms(1);</p><p>  disply(a1,a2,a3);</p><p>  //delayms(1);</p><p>  a1=adval/100;</p><p>  a2=adval%100/10;</p><p>  

122、a3=adval%10;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void timer() interrupt 1</p><p><b>  {</b></p><p>  TH0=(6553

123、6-1)/256;</p><p>  TL0=(65536-1)%256;</p><p><b>  clk=~clk;</b></p><p><b>  }</b></p><p><b>  結(jié)論</b></p><p>  隨著我國(guó)的經(jīng)濟(jì)迅猛

124、發(fā)展,人們的生活水平要求不斷的提高,相信在不久的將來只能家居系統(tǒng)將會(huì)被越來越多的人接受并使用。本文介紹的只能家居系統(tǒng)是基于GSM 網(wǎng)絡(luò)通信技術(shù)以單片機(jī)為控制核心,輔以各種傳感器實(shí)現(xiàn)了對(duì)家居的智能化安防監(jiān)控和遠(yuǎn)程控制。可以有效的保護(hù)人民的生命財(cái)產(chǎn)安全,為人們提供了一個(gè)更加舒適,安全,時(shí)尚,簡(jiǎn)潔的家居生活。</p><p><b>  參考文獻(xiàn)</b></p><p> 

125、 [1]王迎旭.單片機(jī)原理與應(yīng)用.北京:機(jī)械工業(yè)出版社,2004.7</p><p>  [2]鄭峰.51單片機(jī)應(yīng)用系統(tǒng)典型模塊開發(fā)大全.北京:中國(guó)鐵道出版社,2010.1</p><p>  [3]張小梅,陸俊,彭冰沁,等.嵌入式智能家居監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息.2007</p><p>  [4]孫釗.嵌入式操作系統(tǒng)在智能家居中的應(yīng)用與研究[D]

126、.哈爾濱工業(yè)大學(xué),2006.6[5]姜仲秋等主編.C語言程序設(shè)計(jì),南京大學(xué)出版社,1998.1</p><p>  [6]趙麗娟,邵欣,房世平. 基于單片機(jī)的溫度監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 《機(jī)械制造》2006年 第1期 </p><p>  [7]柳青 戴立坤.單片機(jī)實(shí)驗(yàn)系統(tǒng)中GSM、GPRS實(shí)驗(yàn)?zāi)K的設(shè)計(jì)與應(yīng)用 《廣州航海高等專科學(xué)校學(xué)報(bào)》2008年 第2期 </p>

127、;<p>  [8]劉君華.傳感器技術(shù)與應(yīng)用實(shí)例 .電子工業(yè)出版社 2008.5.23 </p><p><b>  謝 辭</b></p><p>  走的最快的總是時(shí)間,來不及感嘆,大學(xué)生活已近尾聲,四年多的努力與付出,隨著本次論文的完成,將要?jiǎng)澫峦昝赖木涮?hào)。</p><p>  本論文設(shè)計(jì)在**老師的悉心指導(dǎo)和嚴(yán)格要求下

128、業(yè)已完成,從課題選擇到具體的寫作過程,論文初稿與定稿無不凝聚著**老師的心血和汗水,在我的畢業(yè)設(shè)計(jì)期間,**老師為我提供了種種專業(yè)知識(shí)上的指導(dǎo)和一些富于創(chuàng)造性的建議,*老師一絲不茍的作風(fēng),嚴(yán)謹(jǐn)求實(shí)的態(tài)度使我深受感動(dòng),沒有這樣的幫助和關(guān)懷和熏陶,我不會(huì)這么順利的完成畢業(yè)設(shè)計(jì)。在此向**老師表示深深的感謝和崇高的敬意!</p><p>  在臨近畢業(yè)之際,我還要借此機(jī)會(huì)向在這四年中給予我諸多教誨和幫助的各位老師表示由

129、衷的謝意,感謝他們四年來的辛勤栽培。不積跬步何以至千里,各位任課老師認(rèn)真負(fù)責(zé),在他們的悉心幫助和支持下,我能夠很好的掌握和運(yùn)用專業(yè)知識(shí),并在設(shè)計(jì)中得以體現(xiàn),順利完成畢業(yè)論文。</p><p>  同時(shí),在論文寫作過程中,我還參考了有關(guān)的書籍和論文,在這里一并向有關(guān)的作者表示謝意。</p><p>  我還要感謝我的各位室友,在畢業(yè)設(shè)計(jì)的這段時(shí)間里,你們給了我很多的啟發(fā),提出了很多寶貴的意見

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論