2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

4、t;<p>  關(guān)鍵詞:GSM模塊 單片機</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è)計方案與主要功能VI</p><p>  2.1系統(tǒng)的總體設(shè)計方案VI</p><p> 

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

10、gt;  4.1 GSM與單片機硬件連接XI</p><p>  4.2執(zhí)行機構(gòu)電路XI</p><p>  5系統(tǒng)軟件設(shè)計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>  參考文獻XXXI</b></p><p>  謝 辭XXXII</p><p><b>  1.前言</b></p><p>  隨著經(jīng)濟的快速增長,快節(jié)奏的生活狀態(tài)得人們越來越注重生活的質(zhì)量和品位,人們對舒適,方便,高效的生活環(huán)境的渴望愈來愈強烈。如何建立一個高效率、低成本的智能家居系統(tǒng)已經(jīng)成為當(dāng)今世

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

14、為控制核心,實現(xiàn)遠程控制、信號采集、遠程報警等功能。</p><p>  2.系統(tǒng)的總體設(shè)計方案與主要功能</p><p>  2.1系統(tǒng)的總體設(shè)計方案</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è)溫度時相應(yīng)的傳

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31、管,此時繼電器線圈產(chǎn)生的巨大的感應(yīng)電流會通過續(xù)流二極管與線圈形成通路,最后電能將全部在線圈上消耗,從而感應(yīng)電流就不會沖向三極管,保證了電路的穩(wěn)定性和可靠性。</p><p><b>  5系統(tǒng)軟件設(shè)計</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所示。首先對系統(tǒng)進行初始化,初始化包括串行通訊口的初始化,中斷初始化,TC35I的初始化。然后單片機對是否接受到短信指令和與傳感器連接的I/O進行循環(huán)檢測。當(dāng)GSM接收到短信指令時,通過單片機的分析計算啟動相應(yīng)的電器,同時給用戶發(fā)送操作成功的短消息,然后繼續(xù)對傳感器進行檢測,如

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

34、功與否都有相應(yīng)的返回。對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>  本地中心號碼設(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>  單片機實現(xiàn)短信自動發(fā)送</p><p>  進行短信發(fā)送的前提是短

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

38、b></p><p>  參數(shù)說明:SMS_Center為短信中心號碼 11位</p><p>  SMS_Telenum為短信接收方的號碼 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è)置短信中心號碼--------------*/</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'; //在最后補上的F</p><p>  PDU_Code[6+j] = SMS_Cen

43、ter[strlen(SMS_Center) - 1];</p><p>  /*---------------------------------------------*/</p><p>  /*----------設(shè)置接收號碼--------------*/</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)容長度--------------*/</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、,如果要使手機能夠顯示,改到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>  以上程序成功實現(xiàn)短信的發(fā)送。</p><p>  單片機對短信的讀取與解碼</p><p>  單片機可以通過AT指令對短信貓中的短信進行讀取,并對讀入的短信數(shù)據(jù)進行分析與解碼。</p><p>  讀出的短信格式與發(fā)送時的短信編碼大致是相同的,下面給出相應(yīng)的程序例程。</p><

62、p>  讀取某一條短信,并將其進行顯示:</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)容長度</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,">短信太長");</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)為十六進制數(shù)</p><p><b>  }</b></p><p>  sbuf[i]=0;</p><p>  Ana

74、lysis_Pro();//解碼后的內(nèi)容在sbuf中,此函數(shù)對其進行顯示輸出</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>  檢測新短信:</b></p><p>  /*-------------------------------------------------------</p><p>  函數(shù)名:Check_New()</p><p>  功能:用戶函數(shù),檢測有無新

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

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

87、lt;b>  _nop_(); </b></p><p>  _nop_(); //在第4-8個時鐘周期內(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ù)</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++起延時作用</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) //讀一個字節(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ù)最低位在最前面,這樣剛好一個字節(jié)在dat里</p><p><b>  }</b></p><p>  return (dat);</p><p>

97、<b>  }</b></p><p>  void tempwritebyte(uchar dat) //向DS18B20寫一個字節(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、) //讀寄存器中存儲的溫度數(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; //兩個字節(jié)組合為一個字</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ù)點后只取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); //進行溫度處理</p><p>  sprintf(buff,"%f",f_temp); //將浮點型溫度格式化為字符型</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信號</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>  隨著我國的經(jīng)濟迅猛

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論