物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡組網(wǎng)設計畢業(yè)論文_第1頁
物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡組網(wǎng)設計畢業(yè)論文_第2頁
物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡組網(wǎng)設計畢業(yè)論文_第3頁
物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡組網(wǎng)設計畢業(yè)論文_第4頁
物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡組網(wǎng)設計畢業(yè)論文_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本科畢業(yè)論文(設計) 題 目 物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡組網(wǎng)設計 學生姓名 專業(yè)名稱 電氣工程及其自動化 指導教師 年 月 日 教學單位 學生學號 200995014013 編 號 II 物聯(lián)網(wǎng)的家庭傳感器網(wǎng)絡組網(wǎng)設計 摘要 本系統(tǒng)在正常工作時,用戶通過手機發(fā)送指令,指令被 GSM 模塊接受并將指令傳送給單片機,單片機處理信號發(fā)出控制指令通過繼電器等控制電路的通斷、電動機的正轉(zhuǎn)反轉(zhuǎn)等達到控制家用電器設備的效果。 本系統(tǒng)是基于全球移動通信系統(tǒng)進行設計的。系統(tǒng)采用 GSM模塊進行短信收發(fā),以 STC89C52RC 單片機系統(tǒng)為控制核心,進行信息的反饋和遠程控制,從而實現(xiàn)遠程報警、遠程控制等功能。 關(guān)鍵詞 :GSM模塊 單片機 III The networking design of home sensor based on the Internet of things Abstracts When this system works in good condition, 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 the forward/reversal of the electromotor to control household appliances. This system is designed on the basis of the global mobile communication system. The system, which with the core of STC89C52RC 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. Key words: GSM module singlechip IV 目 錄 1.前言 . V 2.系統(tǒng)的總體設計方案與主要功能 . VI 2.1系統(tǒng)的總體設計方案 . VI 2.2系統(tǒng)主要功能 . VII 3.1傳感器單元硬件設計方案 . VIII 3.2控制系統(tǒng)單元硬件設計方案 . IX 3.3 GSM 模塊 方案 . IX 3.4電源模塊方案 . X 4 硬件電路設計 . XI 4.1 GSM與單片機硬件連接 . XI 4.2執(zhí)行機構(gòu)電路 . XI 5 系統(tǒng)軟件設計 . XIII 5.1系統(tǒng)流程圖 . XIII 5.2 AT 指令 . XIV 6.各模塊核心程序 . XV 6.1GSM 模塊收發(fā)程序 . XV 6.2 煙霧傳感器模塊核心代碼: . XXII 6.3 DS18B20 核心代碼: . XXIII 6.4 ADC0809 功能核心代碼 . XXVII 結(jié)論 . XXX 參考文獻 . XXXI 謝 辭 . XXXII V 1.前言 隨著經(jīng)濟的快速增長 ,快節(jié)奏的生活狀態(tài)得人們越來越注重生活的質(zhì)量和品位,人們對舒適,方便,高效的生活環(huán)境的渴望愈來愈強烈。如何建立一個高效率、低成本的智能家居系統(tǒng)已經(jīng)成為當今世界的一個熱點問題。目前國內(nèi)外各種類型的智能家居產(chǎn)品越來越多,但其中大部分是基于電話網(wǎng)的安防控制系統(tǒng),并且只是應用于高檔住宅。一般的普通民眾都無法接受其高昂的價格。并且目前國內(nèi)固定電話的用戶正在急劇減少,手機用戶的數(shù)量在飛速增長。所以一種價格低廉且功能齊全的基于 GSM 模塊的的家居智能控制系統(tǒng)就將應運而生。 本系統(tǒng)介紹的家居智能控制系統(tǒng)采用 GSM 模塊進行短 信收發(fā),以 STC89C2RC芯片為控制核心,實現(xiàn)遠程控制、信號采集、遠程報警等功能。 VI 2.系統(tǒng)的總體設計方案與主要功能 2.1 系統(tǒng)的總體設計方案 G S M 模 塊短 信 收 發(fā)紅 外 傳 感器外 部 驅(qū) 動電 路各 類 家 用電 器單 片 機 控 制系 統(tǒng)煙 霧 傳 感器溫 度 傳 感器R S 2 3 2 串 口 圖 1 系統(tǒng)總體結(jié)構(gòu)框圖 系統(tǒng)的總體結(jié)構(gòu)框圖如圖 1所示。當用戶家里有盜賊出入或者門窗沒有關(guān)好,發(fā)生火災或者煤氣泄漏,溫度低于或者高于預設溫度時相應的傳感器發(fā)出信號,此時數(shù)據(jù)采集模塊將傳感器發(fā)出的信號轉(zhuǎn)換成數(shù)字量,然后送給單片機控制系統(tǒng)進行計算和分析后,通過 RS232串口將數(shù)據(jù)傳 送給 GSM 模塊將家里即時信息發(fā)送到用戶手機上,同時單片機控制系統(tǒng)將控制啟動相應的執(zhí)行機構(gòu),如打開啟動報警器,打開照明燈,打開電磁閥,打開空調(diào)等等。當 GSM 模塊接受到用戶短信指令后,將其轉(zhuǎn)換成數(shù)字量,通過串口送給單片機系統(tǒng)分析指令的意思,然后開啟相應的家電設備,比如提前打開燈,電視,熱水器,或者空調(diào),實現(xiàn)遠程控制功能。 智能家居系統(tǒng)各單元的組成與功能簡介: 1. 傳感器單元:傳感器單元主要包括有紅外傳感器、煙霧傳感器、溫度傳感器等,主要是對家中各指標進行檢測,例如煙霧濃度,溫度高低等,并將這些離散量裝換成數(shù)字量送給 控制系統(tǒng)單元。 2. 控制系統(tǒng)單元:控制系統(tǒng)單元主要有 STC89C52芯片和外部必要的復位、電源電路等構(gòu)成。主要是對傳感器單元和 GSM 模塊傳送過來的數(shù)據(jù)進行分析和 VII 計算,從而發(fā)出正確的指令。 3. GSM模塊單元: GSM全稱為全球移動通訊系統(tǒng)。是用戶與系統(tǒng)通訊連接的最重要的單元。 4. 電源模塊:采用 UPS供電,保證系統(tǒng)能在斷電的情況下能正常運行。 2.2 系統(tǒng)主要功能 1. 遠程 控制功能: 該系統(tǒng)能 接收 并識別 用戶發(fā)送來的控制命令并由單片機 處理,來實現(xiàn)不同家電工作及停止功能。 2. 遠程報警功能:在用戶住宅出現(xiàn)異常情況時,比如 火災 、盜賊入侵、門窗未關(guān)好等,系統(tǒng) 會自動發(fā)送報警短信給預先設定手機號碼的用戶 ,同時啟動現(xiàn)在相關(guān)的執(zhí)行機構(gòu),如啟動報警器等 。 3. 永不斷電功能:系統(tǒng)采用 UPS電源供電, 在斷電時可繼續(xù)工作 , 可以 在斷電情況下監(jiān)控家里安全信息, 克服了停電時不能報警等缺點。 VIII 3.硬件技術(shù)方案 硬件的技術(shù)方案包括傳感器單元硬件設計方案,控制系統(tǒng)單元硬件設計方案, GSM 模塊單元硬件選擇方案,電源模塊硬件選擇方案。 3.1 傳感器單元硬件設計方案 本系統(tǒng)傳感器單元包括紅外傳感器、煙霧傳感器、溫度 傳感器和 A/D 轉(zhuǎn)換模塊。 1. 紅外傳感器采用主動紅外探測器,主動紅外探測器由紅外發(fā)射機,紅外接收機和報警控制器組成。紅外發(fā)送端和接收端之間有一道紅外光束,當人體穿越此光束時,必將部分或全部遮擋紅外光束,接收端輸出電信號的強度會發(fā)生變化從而啟動報警控制器發(fā)出報警信號,同時發(fā)報警短信信息給用戶。 2. 煙霧傳感器采用 MQ-2,它是一種電阻控制型的氣敏器件,其阻值隨被測氣體的濃度(成分)而變化。氣敏器件又是一種“氣 電”傳感器件,它將被測氣體的濃度(成分)信號轉(zhuǎn)換成相應的電信號。其響應時間 5s,恢復時間 30s。探測液化 氣的濃度在 300ppm-5000ppm。足以滿足本系統(tǒng)設計要求。 DS18b201 2 3GNDDQVDD 4. A/D轉(zhuǎn)換模塊,主要采用 ADC0809芯片,其主要是將各傳感器采集回來的數(shù)據(jù)轉(zhuǎn) 換成數(shù)字量送給 STC89C52RC單片機進行計算和分析。 0809具有 8路模擬輸入端口,地址線( 23-25腳)可決定對哪一路模擬輸入作 A/D 轉(zhuǎn)換, 22腳為地址鎖存控制,當輸入為高電平時,對地址信號進行鎖存。 6腳為 AD 轉(zhuǎn)換啟動控制,當輸入電平由低到高再到低后 A,就開始 A/D 轉(zhuǎn)換。 7腳為 A/D 轉(zhuǎn)換 結(jié)束標志,3. 溫度傳感器采用 DS18B20,它是一種可編程的溫度傳感器,其內(nèi)置 EPROM,限溫報警功能,最高分辨率 12位,檢測溫度為 -55 +125,在 -10 +85時精度為 0.5。其外觀圖 2所示。 1號引腳接地, 2號數(shù)據(jù)輸入 /輸出引腳, 3號引腳當工作在寄生電源時,改引腳接地。由于 DS18B20可以由數(shù)據(jù)線本身提供電源,因此與單片機連接是需要一根數(shù)據(jù)線和一根地址線。( 鄭峰 .51單片機應用系統(tǒng)典型模塊開發(fā)大全 P369) 圖 2 3 引腳T0-92DS18B20 IX 當 A/D 轉(zhuǎn)換結(jié)束時, 7腳輸出高電平。 9腳為 A/D 轉(zhuǎn)換數(shù)據(jù)輸出允許控制,當OE 腳為高電平時, A/D 轉(zhuǎn)換數(shù)據(jù)從端口輸出。 3.2 控制系統(tǒng)單元硬件設計方案 控制系統(tǒng)單元主要由 STC89C52RC 芯片及其復位和電源電路組成。 8位STC89C52RC單片機是 STC公式開發(fā)的一款增強型的 51單片機芯片。具有低功耗,運行穩(wěn)定,存儲空間大等特點。用戶應用程序空間為 8KB。片上集成 512字節(jié) RAM,具有 ISP/IAP 功能,無需專用編程其,可直接通過串口下載用戶程序,數(shù)秒即可完成。節(jié)約購買專用編程器的資金。具有 3個 16位定時 /計數(shù)器。最主要的是該芯片與 51芯片兼容,給使用者帶來極大的便利。 3.3 GSM 模塊 方案 本系統(tǒng)設計使用的 GSM 模塊是 Siemens 公司的 TC35I。 TC35I 是西門子公式最新推出的無線模塊。,該模塊集射頻電路和基帶于一體,向用戶提供標準的 AT 命令接口,為數(shù)據(jù)、語音、短消息和傳真提供快速、可靠、安全的傳輸,方便用戶的應用開發(fā)與設計, TC35I 的組成如圖 3所示。 TC35I 模塊主要由 GSM基帶處理器、 GSM 射頻模塊、供電模塊、閃存、 ZIF 連接器、天線接口 6部分組成。作為 TC35I 的核心,基 帶處理器主要處理 GSM 終端的語音、數(shù)據(jù)信號,并涵蓋了蜂窩射頻設備的所有的模擬和數(shù)字功能。在不需要額外硬件電路的前提下,可支持 FR、 HR 和 EFR 語音信道編碼。( 鄭峰 .51單片機應用系統(tǒng)典型模塊開發(fā)大全 P559) R F 模 塊G S M 基 帶處 理 器F L A S H 存 儲 器天 線 連 接 器電 源 模 塊芯片連接器ZIFZ 40 圖 3 TC35I 的組成框圖 X 3.4 電源模塊方案 本系統(tǒng)采用 UPS 進行供電,以保證在掉電情況下防盜報警功能依然能正常運行。不間斷電源( UPS)是當交流輸入電源(俗稱市電)發(fā)生異?;驍嚯姇r,還能繼續(xù)向負載供電,并能保證供電質(zhì)量,是負載供電不受影 響的裝置。其基本結(jié)構(gòu)原理圖如圖 4所示 整 流器逆 變 器蓄電池市 電負 載 圖 4 UPS 基本結(jié)構(gòu)框圖 當市電正常時通過整流器將交流電整流成直流點給蓄電池充電,同時通過逆變器又變換成交流電供給負載。當市電斷電后,則蓄電池放出直流電通過逆變器逆變成交流電后,繼續(xù)給負載供電。這樣在有市電時供給負載的同時給蓄電池充電,當市電斷電時,蓄電池則充當電源通過逆變給負載繼續(xù)供電,實現(xiàn)不間斷供電。 XI 4 硬件電路設計 本系統(tǒng)的硬件電路主要包括 GSM模塊與 STC89C52RC芯片的連接 電路和執(zhí)行機構(gòu)電路。 4.1 GSM 與單片機硬件連接 GSM與 STC89C52RC 的硬件連接圖如圖 5所示。 T C 8 9 C 5 2R C 芯 片T X DR X D R X DT X DM A X 2 3 2芯 片G S M 模 塊 圖 5 GSM 與單片連接原理圖 單片機與 GSM 模塊的硬件連接 TC35I的數(shù)據(jù)接口采用串行異步收發(fā), 數(shù)據(jù)接口配置為 8 位數(shù)據(jù)位、 1 位停止位、無校驗位,可以在 300-115103 bps 的波特率下運行。 由于數(shù)據(jù)通信電路中 TC35I 數(shù)據(jù)接口工作在 CMOS 電平,而STC89C52RC芯片工作在 TTL點電平,所以 在 STC89C52RC芯片 和 TC35I 之間加入 TI公式的 電平轉(zhuǎn)換 芯片 MAX232。實現(xiàn)串口通訊的功能。 4.2 執(zhí)行機構(gòu)電路 執(zhí)行機構(gòu)部分電路如圖 6所示。 XII 圖 6 執(zhí)行機構(gòu)部分電路圖 本系統(tǒng)共有八路通過繼電器通斷實現(xiàn)對電器控制的執(zhí)行機構(gòu)電路。單片機管腳通過 10K限流電 阻與三極管基極相連,當相應的管腳呈高電平時,那么相對應的三極管就會導通,信號繼電器線圈也就會通電吸合,從而實現(xiàn)家用電器的開關(guān)。當單片機管腳輸出為低電平時,三極管失去導通電壓關(guān)斷,由于繼電器線圈并聯(lián)了一個續(xù)流二極管,此時繼電器線圈產(chǎn)生的巨大的感應電流會通過續(xù)流二極管與線圈形成通路,最后電能將全部在線圈上消耗,從而感應電流就不會沖向三極管,保證了電路的穩(wěn)定性和可靠性。 XIII 5 系統(tǒng)軟件設計 5.1 系統(tǒng)流程圖 開 始初 始 化是 否 接 受到 短 信 指 令啟 動 相 應 電器Y E SNO檢 測 傳 感器 開 關(guān)G S M 發(fā) 送 操作 成 功 信 息進 入 中 斷服 務 程 序N OYES關(guān) 中 斷紅 外 報 警煙 霧 報 警溫 度 報 警啟 動 報 警 器G S M 發(fā) 送 防盜 報 警啟 動 報 警 器并 禁 止 空 調(diào)開 啟G S M 發(fā) 送 火災 報 警啟 動 空 調(diào)G S M 發(fā) 送 高溫 報 警中 斷 返回Y E SY E SNONOYES中 斷 服 務子 程 序結(jié) 束圖 7 系統(tǒng)流程圖 本系統(tǒng)的軟件部分由 C語言編寫, C語 言有較好的可閱讀行和移植性,大大的方便了程序的編寫。系統(tǒng)流程圖如圖 7 所示。首先對系統(tǒng)進行初始化,初始化包括串行通訊口的初始化,中斷初始化, TC35I的初始化。然后單片機對是否接受到短信指令和與傳感器連接的 I/O 進行循環(huán)檢測。當 GSM 接收到短信指令時,通過單片機的分析計算啟動相應的電器,同時給用戶發(fā)送操作成功的短消息,然后繼續(xù)對傳感器進行檢測,如果沒有傳感器沒有信號,則又返回繼續(xù)對 GSM是否接收到短信指令進行檢測,就這樣循環(huán)進行檢測。當家里發(fā)生險情或溫度過高時,軟件進入中斷服務程序,對三個傳感器分別進行判斷, 然后進行相應的處理同時完成對報警信息的發(fā)送。 XIV 5.2 AT 指令 AT指令是以 AT 作首 , 字符結(jié)束的字符串, AT指令的響應數(shù)據(jù)包在 中。每個指令執(zhí)行成功與否都有相應的返回。 對 TC35I 的操作均采用 AT 指令,它包含了 GSM 語音和短信息的控制。 其指令格式為“ AT+XXXX”, 根據(jù) AT 指令的GSM07.05 標準,發(fā)送和接收中文或中 /英文混合的短信息必須采用 PDU 模式,Text 模式只支持傳送英文及數(shù)字信息。 根據(jù)本系統(tǒng)的要求采用 Text 模式。系統(tǒng)所用基本命令如下: a) 設置短消息發(fā)送格式( 0-PDU, 1-文本 ) AT+CMGF=1; b) 發(fā)送短消息 (短消息內(nèi)容為 “ OK”)AT+CMGS=1 5173236799(用戶電話 )OKz( z 表示 OK+z); c) 本地中心號碼設置 AT+CSCA=+8613800732500(湘潭) ; d) 讀取短信息內(nèi)容 AT+CMGR=1; e) GSM網(wǎng)絡狀態(tài)查詢“ AT+CREG?”; f) 刪除短息防止溢出 AT+CMGD=1; XV 6.各模塊核心程序 6.1GSM 模塊收發(fā)程序 單片機實現(xiàn)短信自動發(fā)送 進行短信發(fā)送的前提是短信內(nèi)容的正確編碼。經(jīng)過以上對短信發(fā)送過程的分析,可以 通過單片機對其進行實現(xiàn)。下面是實現(xiàn)程序例程: /*- 函數(shù)名: PDU_SMS() 功能 :發(fā)送短信 參數(shù)說明: SMS_Center 為短信中心號碼 11位 SMS_Telenum為短信接收方的號碼 11位 SMS_Context為短信的內(nèi)容 -*/ int PDU_SMS(char *SMS_Center, char *SMS_Telenum, char *SMS_Context,char is_GB) int i,j; unsigned char len,time; char lens3; time=0; for(i=0;i300;i+) PDU_Codei=PDU_ti; /*-設置短信中心號碼 -*/ for (i = 0, j = 0; i strlen(SMS_Center) / 2; i+) PDU_Code6+(j+) = SMS_Center2 *i + 1; PDU_Code6+(j+) = SMS_Center2 *i; XVI PDU_Code6+j+ = F; /在最后補上的 F PDU_Code6+j = SMS_Centerstrlen(SMS_Center) - 1; /*-*/ /*-設置接收號碼 -*/ for (i = 0, j = 0; i 4) 9 ? (len 4) + 55: (len 4) + 48; PDU_Code45 = (len &0x0f) 9 ? (len &0x0f) + 55: (len &0x0f) + 48; /*-*/ /*-編碼短信內(nèi)容 -*/ if(is_GB=0)/如果不是 GB 碼,短信內(nèi)容為 ascii 碼字符串 for (i = 0,j=0; istrlen(SMS_Context);i+) szzh16(SMS_Contextj+,lens); PDU_Code46+i*4 = 0; PDU_Code46+i*4+1 = 0; XVII PDU_Code46+i*4+2 = lens0; PDU_Code46+i*4+3 = lens1; PDU_Code46+i*4 = 0x1a; PDU_Code46+i*4+1 = 0xff; else /短信內(nèi)容為 GB 碼,如果要使手機能夠顯示,改到 UNICODE 編碼 for (i = 0,j=0; istrlen(SMS_Context);i+) szzh16(int)SMS_Contextj+,lens); PDU_Code46+i*2 = lens0; PDU_Code46+i*2+1 = lens1; PDU_Code46+i*2 = 0x1a; PDU_Code46+i*2+1 = 0xff; /*-*/ if(PDU_HandShake() do PDU_EnablePDU(); if(is_GB=0) PDU_SetLength(Strlen(SMS_Context)*2); else PDU_SetLength(Strlen(SMS_Context); PDU_Send(PDU_Code); for(i=0;i25;i+) XVIII delay(20000); sbufcounter=0; counter=0; time+; /判斷是否發(fā)送成功,如果不成功繼續(xù)發(fā)送,最多 4次,如仍不成功,返回 0 while(strpos(sbuf+strlen(sbuf)-20,G)=-1&time4); if(strpos(sbuf+strlen(sbuf)-20,G)=-1) return 0; else return 1; /成功的話返回 0 else sbufcounter=0; counter=0; return 0; 以上程序成功實現(xiàn)短信的發(fā)送。 單片機對短信的讀取與解碼 單片機可以通過 AT 指令對短信貓中的短信進行讀取,并對讀入的短信數(shù)據(jù)進行分析與解碼。 讀出的短信格式與發(fā)送時的短信編碼大致是相同的 , 下面給出相應的程序例程 。 讀取某一條短信,并將其進行顯示 : /*- 函數(shù)名: LAD_SMS()(short for Load And Display the Short MessageS) 功能 :用戶函數(shù),讀取第 n 條短信,并在 LCD 的 (x,y)位置顯示出來 -*/ XIX unsigned char LAD_SMS(unsigned char n,unsigned char x,unsigned char y) unsigned char i,len,t; char temp5; char temp13; /IN_Draw_BlankorBlackRect(0,20,30,72,0); szzh10(n,temp1); /將 n 轉(zhuǎn)為相應的字符串,如 n=21,則字符串為 21,用以與 AT 指令拼接。 t=85; clear_sbuf(); counter=0; send_s(AT+CMGR=);/AT+CMGR 為讀取短信的 AT 指令 send_s(temp1);/上面所得的字符串 send(0x0d); send(0x0a); for(i=0;i10;i+) delay(10000); /等待讀取完畢 sbufcounter=0; /在收到的數(shù)據(jù)末尾附加 0 temp0=sbuf23; temp1=sbuf24; temp2=sbuf25; temp3=0; if(sbuf25!=0x0d) t+; for(i=0;i短信空 ); delay(50000); return 0; XX len-=20; if(len90) /LCD_PutEng(5,96,MTL); /LCD_PutChn(x,y,短信太長 ); delay(50000); return 0; for(i=0;ilen;i+) temp0=sbuft+2*i; temp1=sbuft+2*i+1; temp2=0; sbufi=_hex_(temp); /收到的短信內(nèi)容是內(nèi)存方式的顯示表示,轉(zhuǎn)為十六進制數(shù) sbufi=0; Analysis_Pro();/解碼后的內(nèi)容在 sbuf 中,此函數(shù)對其進行顯示輸出 delay(50000); clear_sbuf(); counter=0; return 1; 檢測新短信 : /*- XXI 函數(shù)名: Check_New() 功能 :用戶函數(shù),檢測有無 新的短信,如果有返回 1,否則返回 0 -*/ unsigned char Check_New() int i; send_s(AT+CMGL=0); /AT+CMGL=0為讀取新短信的 AT 指令 send(0x0d); send(0x0a); /發(fā)送回車 delay(10000); /等待接收完畢 if(sbuf12=O) return 0xff; if(sbuf12=+) for(i=18;i23;i+) if(sbufi=,) sbufi=0; return atoi(sbuf+19); /返回新短信的位置 刪除某條短信 : /*- 函數(shù)名: Delete() 功能 :用戶函數(shù),刪除第 n 條短信 -*/ unsigned char Delete(unsigned char n) char t10; char t15; strcpy(t,AT+CMGD=); /AT+CMGD 為刪除短信的 AT 指令 szzh10(n,t1); strcpy(t+8,t1); XXII while(Send_AT_CMD(t)!=1); delay(60000); return 1; 6.2 煙霧傳感器模塊核心代碼: uint AD_Conver(uchar port) uchar i; uint AD= 0; CLOCK = 0; CS= 0; EOC=1; port = 4; for (i = 0; i 12; i+) /注意 :在 12 個時鐘周期的下降沿產(chǎn)生了數(shù)據(jù)輸出 /在前 4 個時鐘周期內(nèi) ,TLC2543 已經(jīng)知道下一次將 if (DOUT)AD |= 0x01; /哪個通道做轉(zhuǎn)換 ,在后 8 個時鐘內(nèi)就一直對此通道 DIN = (bit)(port & 0x80); /進行采樣 ,并保持到第 12個時鐘周 期結(jié)束 ,此后才 CLOCK = 1; /開始進行 A/D轉(zhuǎn)換 ,轉(zhuǎn)換時間需要10us. _nop_(); _nop_(); _nop_(); /在第 4-8 個時鐘周期內(nèi)輸入的是 XXIII 命令控制字 CLOCK= 0; _nop_(); _nop_(); _nop_(); /可根據(jù)需要輸入 port = 1; AD =1; return AD; #endif 6.3 DS18B20 核心代碼: void delay(uint z) /延時函數(shù) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void dsreset(void) /DS18B20 復位,初始化函數(shù) uint i; ds=0; i=103; while(i0)i-; ds=1; i=4; XXIV while(i0)i-; bit tempreadbit(void) /讀一位數(shù)據(jù)函數(shù) uint i; bit dat; ds=0;i+; /i+起延時作用 ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return (dat); uchar tempread(void) /讀一個字節(jié)數(shù)據(jù)函數(shù) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在dat 里 return (dat); void tempwritebyte(uchar dat) /向 DS18B20 寫一個字節(jié)數(shù)據(jù)函數(shù) uint i; uchar j; bit testb; for(j=1;j1; if(testb) /寫 1 ds=0; XXV i+;i+; ds=1; i=8;while(i0)i-; else ds=0; /寫 0 i=8;while(i0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 開始獲取溫度并轉(zhuǎn)換 dsreset(); delay(1); tempwritebyte(0xcc); /寫跳過讀 ROM 指令 tempwritebyte(0x44); /寫溫度轉(zhuǎn)換指令 uint get_temp() /讀寄存器中存儲的溫度數(shù)據(jù) uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /讀低 8 位 b=tempread(); /讀高 8 位 temp=b; temp0;i-) dis_temp(get_temp(); /獲取溫度并顯示 deal(temp); /進行溫度處理 sprintf(buff,%f,f_temp); /將浮點型溫度格式化為字符型 for (i=10;i0;i-) dis_temp(get_temp(); /溫度顯示 comm(buff); /串口發(fā)送數(shù)據(jù) for(i=10;i0;i-) dis_temp(get_temp(); /溫度顯示 XXVII 6.4 ADC0809 功能核心代碼 void control(uchar num1,uchar num2) uint i; uchar s,j; s=num1; for(i=6;i0;i-) p17=0; p15=s%2; s=s/2; p17=1; j=num2; for(i=8;i0;i-) p17=0; p15=j%2; j=j/2; p17=1; p16=1; p16=0; void init() /產(chǎn)生 500khz 信號 TMOD=0x01; TH0=(65536-1)/256; XXVIII TL0=(65536-1)%256;/取余 EA=1; TR0=1; ET0=1; void main() /uchar temp; uchar a1,a2,a3,adval; init(); start=0; oe=0; /P2=0xff; while(1) start=0; start=1; start=0; /w

溫馨提示

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

評論

0/150

提交評論