紅外防盜報(bào)警系統(tǒng)正文_第1頁(yè)
紅外防盜報(bào)警系統(tǒng)正文_第2頁(yè)
紅外防盜報(bào)警系統(tǒng)正文_第3頁(yè)
紅外防盜報(bào)警系統(tǒng)正文_第4頁(yè)
紅外防盜報(bào)警系統(tǒng)正文_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 1 引言 隨著社會(huì)的不斷進(jìn)步和科學(xué)技術(shù)、經(jīng)濟(jì)的不斷發(fā)展隨著社會(huì)的發(fā)展,科學(xué)技術(shù)的進(jìn)步和安全防范意識(shí)的增強(qiáng),對(duì)私有財(cái)產(chǎn)的保護(hù)意識(shí)在不斷的增強(qiáng),因而對(duì)防盜措施提出了新的要求。本設(shè)計(jì)就是為了滿足現(xiàn)代住宅防盜的需要而設(shè)計(jì)的家庭式電子防盜系統(tǒng)。就目前市面上裝備主要有壓力觸發(fā)式防盜報(bào)警器、開(kāi)關(guān)電子防盜報(bào)警器和壓力遮光觸發(fā)式防盜報(bào)警器等各種報(bào)警器,但這幾種比較常見(jiàn)的報(bào)警器都存在一些缺點(diǎn)。而本設(shè)計(jì)中所使用的紅外線是不可見(jiàn)光,有很強(qiáng)的隱蔽性和保密性,本設(shè)計(jì)它集紅外報(bào)警、溫濕度測(cè)量顯示、實(shí)時(shí)時(shí)鐘為一體,簡(jiǎn)單實(shí)用,抗干擾能力強(qiáng)、靈敏度高、安全可靠,具有較高的應(yīng)用價(jià)值。1.1 設(shè)計(jì)任務(wù)與要求 紅外報(bào)警監(jiān)控系統(tǒng)由紅外

2、熱釋電傳感器、溫濕度傳感器、DS1302時(shí)鐘電路、EEPROM存儲(chǔ)電路、液晶屏和鍵盤(pán)組成。其主要功能有:(1)紅外熱釋電傳感器獲取人體入侵信息,當(dāng)監(jiān)控功能打開(kāi)并且有人入侵時(shí),驅(qū)動(dòng)蜂鳴器報(bào)警,LED報(bào)警燈亮。(2)報(bào)警時(shí)間自動(dòng)存儲(chǔ)至EEPROM存儲(chǔ)器,當(dāng)按查詢(xún)按鈕時(shí)顯示上次報(bào)警時(shí)間。(3)不間斷測(cè)量當(dāng)前溫度和濕度數(shù)據(jù),并在液晶屏上實(shí)時(shí)顯示。(4)具備不間斷時(shí)鐘電路,當(dāng)前時(shí)間在液晶屏顯示。時(shí)鐘電路具有后備電池,系統(tǒng)掉電后始終依然運(yùn)行,再次上電顯示當(dāng)前時(shí)間,無(wú)須重新調(diào)時(shí)。(5)四鍵鍵盤(pán)可以調(diào)校時(shí)鐘初始值,具體方法是連續(xù)按設(shè)置鍵直至“年”、“月”、“日”、“時(shí)”、“分”、“秒”相應(yīng)的位置閃爍,再通過(guò)U

3、p鍵和Down鍵調(diào)整數(shù)值,調(diào)整完畢繼續(xù)按設(shè)置鍵進(jìn)入正常狀態(tài)。(6)可以通過(guò)設(shè)置鍵打開(kāi)或關(guān)閉監(jiān)控報(bào)警功能。(7)可以查詢(xún)上次報(bào)警時(shí)間,再次按查詢(xún)鍵退出查詢(xún)狀態(tài)。2、基礎(chǔ)知識(shí)介紹2.1、熱釋電效應(yīng)原理熱釋電傳感器是一種將熱量變化轉(zhuǎn)換為電量變化的能量轉(zhuǎn)換器件。因紅外線具有很強(qiáng)的熱效應(yīng),當(dāng)交互變化的紅外線照射到晶體表面時(shí),晶體溫度迅速變化,這時(shí)會(huì)發(fā)生電荷的變化,從而形成一個(gè)明顯的外電場(chǎng),這種現(xiàn)象稱(chēng)為熱釋電效應(yīng)。熱釋電紅外傳感器內(nèi)部的熱釋電晶體的極化,隨著溫度的變化而變化。當(dāng)恒定的紅外輻射照射在探測(cè)器探頭上時(shí),熱釋電晶體溫度不變,晶體對(duì)外呈電中性,探測(cè)器沒(méi)有電信號(hào)輸出,因而恒定的紅外輻射不能被檢測(cè)到。另

4、外熱釋電晶體輸出的是電信號(hào),不能直接使用,需要用電阻將其轉(zhuǎn)換為電壓形式,該電阻阻抗高達(dá)104M歐,故引入N 溝道結(jié)型場(chǎng)效應(yīng)管接成共漏形式來(lái)完成阻抗變換。熱釋電紅外線元件是一種典型的熱量傳感器,常用紅外光發(fā)射能量作為整個(gè)防盜報(bào)警裝置中檢測(cè)入侵者及其活動(dòng)的手段。2.2、被動(dòng)式熱釋電傳感器防盜報(bào)警工作原理熱釋電人體紅外線傳感器是上世紀(jì)80年代末期出現(xiàn)的一種新型傳感器件, 現(xiàn)在電子防盜報(bào)警設(shè)備研制中已得到廣泛的應(yīng)用。通常我們采用的熱釋電傳感器防盜報(bào)警電路,是利用該電路檢測(cè)到有人進(jìn)入防范區(qū)時(shí)通過(guò)能量變化導(dǎo)致產(chǎn)生電信號(hào),最終電聲報(bào)警。其工作原理如下:一般人體體溫是37,所以會(huì)發(fā)出波長(zhǎng)10um左右的紅外線,

5、被動(dòng)式紅外傳感器探頭就是靠探測(cè)人體發(fā)射的10um 左右的紅外線進(jìn)行工作的。人體發(fā)射的10um 左右的紅外線通過(guò)菲涅耳濾光片增強(qiáng)后聚集到紅外感應(yīng)源上,紅外感應(yīng)源通常采用熱釋電元件,這種元件接收到人體紅外輻射溫度發(fā)生變化時(shí)就會(huì)失去電荷平衡,向外釋放電荷,經(jīng)后續(xù)電路檢測(cè)處理后就能產(chǎn)生報(bào)警信號(hào)了。在紅外探頭中有兩個(gè)關(guān)鍵性的器件,一個(gè)是熱釋電紅外傳感器,它能將波長(zhǎng)為8 12um 之間的紅外信號(hào)的變化轉(zhuǎn)變?yōu)殡娦盘?hào),并對(duì)自然界中的可見(jiàn)光信號(hào)具有抑制作用,因此在紅外探測(cè)器的有效警戒區(qū)內(nèi),當(dāng)無(wú)人體移動(dòng)時(shí),熱釋電紅外感應(yīng)器感應(yīng)到的只是背景溫度,沒(méi)有信號(hào)變化,所以不能產(chǎn)生電信號(hào),也不會(huì)報(bào)警;當(dāng)人體進(jìn)人警戒區(qū),通過(guò)菲

6、涅耳透鏡,熱釋電紅外感應(yīng)器感應(yīng)到的是人體溫度與背景溫度的差異信號(hào),此時(shí)產(chǎn)生電信號(hào),從而報(bào)警。另外一個(gè)器件就是菲涅耳透鏡,它具有聚焦-即將熱釋電的紅外信號(hào)反射在紅外傳感器上的作用, 還能將警戒區(qū)內(nèi)分為若干個(gè)明區(qū)和暗區(qū),使進(jìn)入警戒區(qū)的移動(dòng)物體能以溫度變化的形式在熱釋電紅外傳感器上產(chǎn)生變化熱釋紅外信號(hào),這樣熱釋電紅外傳感器產(chǎn)生變化的電信號(hào),后續(xù)電路經(jīng)檢測(cè)處理后產(chǎn)生報(bào)警信號(hào)。2.3、被動(dòng)式紅外報(bào)警器組成結(jié)構(gòu)被動(dòng)式紅外報(bào)警器主要由菲涅耳光學(xué)系統(tǒng)、熱釋電紅外傳感器、信號(hào)濾波和放大電路、信號(hào)處理和報(bào)警電路等幾部分組成( 如圖2-1 所示) 。圖2-1 被動(dòng)式紅外報(bào)警器組成框圖菲涅爾透鏡一般采用聚乙烯塑料片制

7、成,顏色為乳白色或黑色,呈半透明狀,但對(duì)波長(zhǎng)為10Lm左右的紅外線來(lái)說(shuō)卻是透明的。菲涅耳透鏡的焦點(diǎn)一般為5 厘米左右,除有聚焦作用還可形成可見(jiàn)區(qū)和盲區(qū),實(shí)際應(yīng)用時(shí)一般把菲涅耳透鏡固定在傳感器正前方1 5 厘米的地方。當(dāng)物體射出的紅外線通過(guò)菲涅耳透鏡后,傳到熱釋電紅外探測(cè)器,這時(shí)熱釋電紅外探測(cè)器將輸出脈沖信號(hào),脈沖信號(hào)經(jīng)放大和濾波后,由電壓比較器將其與基準(zhǔn)值進(jìn)行比較,當(dāng)輸出信號(hào)達(dá)到一定值時(shí),報(bào)警電路發(fā)出警報(bào)。被動(dòng)式熱釋電紅外探頭的優(yōu)點(diǎn)是本身不發(fā)生各種類(lèi)型的輻射,器件的功耗小、隱蔽性好、價(jià)格低。缺點(diǎn)是具有容易受各種熱源、光源及射頻輻射的干擾;被動(dòng)紅外穿透力差,人體的紅外輻射容易被遮擋,不易被探頭接

8、收;當(dāng)環(huán)境溫度和人體溫度接近時(shí),探測(cè)和靈敏度下降,有時(shí)還會(huì)短時(shí)失靈。目前市場(chǎng)上經(jīng)常采用P288型熱釋電紅外傳感器作為敏感元件,能以非接觸方式檢測(cè)出人體輻射出的紅外能量,并將其轉(zhuǎn)化為電信號(hào)輸出。該傳感器外接12V電源,內(nèi)部裝有菲涅耳透鏡,檢測(cè)區(qū)域?yàn)榍蛐危行Ь渚嚯x為12 15m,方向角為85度。當(dāng)紅外警戒區(qū)內(nèi)無(wú)移動(dòng)物體時(shí),傳感器無(wú)輸出信號(hào),報(bào)警電路不工作;當(dāng)有人闖入警戒區(qū)時(shí),只要人體移動(dòng),其輻射出的紅外線便會(huì)被熱釋電紅外傳感器所接收,并輸出微弱的電信號(hào)。該信號(hào)經(jīng)運(yùn)算放大器A1和A2放大后,會(huì)輸出一個(gè)較強(qiáng)的電信號(hào)。再輸送給由A3 和A4 組成的雙限電壓比較器。2.4、DYP-ME003人體感應(yīng)傳

9、感器圖2所示電路比較繁瑣,調(diào)試難度也較大。目前市場(chǎng)上有集成紅外人體感應(yīng)傳感器,將熱釋電傳感器、菲涅耳透鏡和調(diào)理電路集成在一個(gè)模塊上,可以實(shí)現(xiàn)5伏電壓供電,性能穩(wěn)定,使用方便。DYP-ME003人體感應(yīng)傳感器就是這樣一款基于紅外線技術(shù)的自動(dòng)控制產(chǎn)品,靈敏度高,可靠性強(qiáng),超低電壓工作模式,廣泛應(yīng)用于各類(lèi)自動(dòng)感應(yīng)電器設(shè)備,尤其是干電池供電的自動(dòng)控制產(chǎn)品中。其功能特點(diǎn):l 全自動(dòng)感應(yīng):人進(jìn)入其感應(yīng)范圍則輸出高電平,人離開(kāi)感應(yīng)范圍則自動(dòng)延時(shí)關(guān)閉高電平,輸出低電平。l 光敏控制(可選擇,出廠時(shí)未設(shè)):可設(shè)置光敏控制,白天或光線強(qiáng)時(shí)不感應(yīng)。l 溫度補(bǔ)償(可選擇,出廠時(shí)未設(shè)):在夏天當(dāng)環(huán)境溫度升高至3032,

10、探測(cè)距離稍變短,溫度補(bǔ)償可作一定的性能補(bǔ)償。l 兩種觸發(fā)方式:a.不可重復(fù)觸發(fā)方式:即感應(yīng)輸出高電平后,延時(shí)時(shí)間段一結(jié)束,輸出將自動(dòng)從高電平變?yōu)榈碗娖?;b.可重復(fù)觸發(fā)方式:即感應(yīng)輸出高電平后,在延時(shí)時(shí)間段內(nèi),如果有人體在其感應(yīng)范圍活動(dòng),其輸出將一直保持高電平,直到人離開(kāi)后才延時(shí)將高電平變?yōu)榈碗娖剑ǜ袘?yīng)模塊檢測(cè)到人體的每一次活動(dòng)后會(huì)自動(dòng)順延一個(gè)延時(shí)時(shí)間段,并且以最后一次活動(dòng)的時(shí)間為延時(shí)時(shí)間的起始點(diǎn))。l 具有感應(yīng)封鎖時(shí)間(默認(rèn)設(shè)置:2.5S封鎖時(shí)間):感應(yīng)模塊在每一次感應(yīng)輸出后(高電平變成低電平),可以緊跟著設(shè)置一個(gè)封鎖時(shí)間段,在此時(shí)間段內(nèi)感應(yīng)器不接受任何感應(yīng)信號(hào)。l 工作電壓范圍寬:默認(rèn)工作電

11、壓DC4.5V-20V。l 微功耗:靜態(tài)電流<50微安,特別適合干電池供電的自動(dòng)控制產(chǎn)品。l 輸出高電平信號(hào):可方便與各類(lèi)電路實(shí)現(xiàn)對(duì)接。DYP-ME003人體感應(yīng)傳感器的感應(yīng)范圍如圖2-2所示: 圖2-2 DYP-ME003人體感應(yīng)傳感器的感應(yīng)范圍DYP-ME003人體感應(yīng)傳感器的電氣參數(shù)如表1所示:表2-1 DYP-ME003人體感應(yīng)傳感器的電氣參數(shù)電氣參數(shù)DYP-ME003人體感應(yīng)模塊工作電壓范圍DC 4.5-20V靜態(tài)電流 <50uA 電平輸出高3.3 V /低0V 觸發(fā)方式L不可重復(fù)觸發(fā)/H重復(fù)觸發(fā) 延時(shí)時(shí)間5-200S(可調(diào))可制作范圍零點(diǎn)幾秒-幾十分鐘封鎖時(shí)間2.5S(

12、默認(rèn))可制作范圍零點(diǎn)幾秒-幾十秒電路板外形尺寸 32mm*24mm感應(yīng)角度 <100度錐角感應(yīng)距離7米以?xún)?nèi)工作溫度-15-+70度感應(yīng)透鏡尺寸直徑:23mm(默認(rèn))其外型如圖2-3所示: 圖2-3 DYP-ME003人體感應(yīng)傳感器外型圖3、硬件設(shè)計(jì)本研究設(shè)計(jì)的溫濕度控制器框圖如圖3-1所示。圖3-1 紅外報(bào)警監(jiān)控系統(tǒng)方框圖圖中STC89C52單片機(jī)隨時(shí)監(jiān)控DYP-ME003紅外人體傳感器送來(lái)的報(bào)警信號(hào)。當(dāng)報(bào)警功能打開(kāi)并且傳感器檢測(cè)到有人侵入時(shí),單片機(jī)通過(guò)聲(蜂鳴器)光(LED發(fā)光管)報(bào)警,同時(shí)將入侵時(shí)間記錄在外部存儲(chǔ)芯片AT24C04中。系統(tǒng)還可以即時(shí)顯示當(dāng)前環(huán)境溫濕度值。單片機(jī)每2秒鐘

13、從DHT11溫濕度傳感器中讀入溫度和濕度,在液晶屏上即時(shí)顯示。系統(tǒng)通過(guò)DS1302時(shí)鐘電路獲得并顯示當(dāng)前時(shí)間。該時(shí)間初始值可以通過(guò)設(shè)置鍵、上調(diào)鍵和下調(diào)鍵設(shè)定,由于具有后備電池,主控系統(tǒng)斷電后時(shí)鐘仍然繼續(xù)運(yùn)行。系統(tǒng)通過(guò)四鍵鍵盤(pán)切換開(kāi)、關(guān)報(bào)警狀態(tài),設(shè)定時(shí)鐘初始值,查詢(xún)報(bào)警時(shí)間等。系統(tǒng)各單元電路介紹如下。3.1、單片機(jī)電路 本設(shè)計(jì)選用宏晶公司高性能單片機(jī)STC89C52采用主控芯片,該芯片為52內(nèi)核8位單片機(jī),兼容Intel等52內(nèi)核單片機(jī),支持ISP下載,適用于常用檢測(cè)控制電路。由STC89C52組成的單片機(jī)系統(tǒng)原理圖如圖3-2所示。圖3-2 單片機(jī)系統(tǒng)電路圖中ALERT引腳輸入DYP-ME003

14、紅外人體傳感器信號(hào),該信號(hào)為高電平時(shí)有人入侵,為低電平時(shí)表示沒(méi)有檢測(cè)到人。DATA引腳為溫濕度傳感器單總線引腳。2402_SCL和2402_SDA為外存芯片AT24C04通信引腳,該芯片為IIC接口芯片,通過(guò)時(shí)鐘線和數(shù)據(jù)線二線接口通信。K1、K2、K3、K4為四只按鍵,分別為設(shè)置鍵、上調(diào)鍵、下調(diào)鍵和查詢(xún)鍵。L2為報(bào)警LED發(fā)光管。P0.0P0.7為L(zhǎng)CD數(shù)據(jù)線,P2.5P2.7為L(zhǎng)CD控制線。系統(tǒng)采用11.0572MHz外部晶振電路。3.2、紅外熱釋電報(bào)警傳感器電路圖3-3 DYP-ME003紅外人體傳感器電路傳感器使用DYP-ME003紅外人體傳感器,圖中ALERT引腳輸出信號(hào),該信號(hào)為高電

15、平時(shí)有人入侵,為低電平時(shí)表示無(wú)人入侵。R17電阻為下拉電阻,防止管腳誤報(bào)。3.3、溫濕度傳感器器及檢測(cè)電路圖3-4 DHT11溫濕度傳感器外型及管腳DHT11溫濕度傳感器外型及管腳如圖3-4所示。其中電源引腳的供電電壓為 3.5-5.5V。傳感器上電后,要等待 1s 以越過(guò)不穩(wěn)定狀態(tài)在此期間不要發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個(gè)100nF 的電容,用以去耦濾波。 DHT11典型應(yīng)用電路如圖3-5所示,其連接電路簡(jiǎn)單,只需要占用控制器一個(gè)I/O口即可完成上下位的連接。建議連接線長(zhǎng)度短于20時(shí)用5K上拉電阻,大于20米時(shí)根據(jù)實(shí)際情況使用合適的上拉電阻。圖3-5 DHT11典型應(yīng)

16、用電路DHT11數(shù)字濕溫度傳感器采用單總線數(shù)據(jù)格式,即單個(gè)數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5Byte(40Bit)組成。一次通訊時(shí)間最大3ms,數(shù)據(jù)分小數(shù)部分和整數(shù)部分。 一次完整的數(shù)據(jù)傳輸為40bit,高位先出。 數(shù)據(jù)格式如表3-1:表3-1 DHT11數(shù)據(jù)格式3.4、DS1302實(shí)時(shí)時(shí)鐘電路DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM,通過(guò)簡(jiǎn)單的串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、日、日期、月、年的信息。每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整。時(shí)鐘操作可通過(guò)AM/PM指示決定采用24或12小時(shí)格式。其芯片管

17、腳如圖3-6所示。 圖3-6 DS1302管腳圖DS1302 與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信,僅需用到三個(gè)口:線1-RES復(fù)位,2-I/O數(shù)據(jù)線和3-SCLK串行時(shí)鐘。時(shí)鐘/RAM 的讀/寫(xiě)數(shù)據(jù)以一個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的字符組方式通信,DS1302工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。DS1302是由DS1202改進(jìn)而來(lái),增加了以下的特性,雙電源管腳用于主電源和備份電源,供應(yīng)Vcc1為可編程涓流充電電源,附加七個(gè)字節(jié)存儲(chǔ)器。它廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等。l 實(shí)時(shí)時(shí)鐘具有能計(jì)算2100 年之前的秒分時(shí)日日期星期月年的能力還有閏年調(diào)整的

18、能力;l 31*8位暫存數(shù)據(jù)存儲(chǔ)RAM;l 串行I/O 口方式使得管腳數(shù)量最少;l 寬范圍工作電壓2.0-5.5V;l 工作電流:2.0V 時(shí),小于300nA;l 讀/寫(xiě)時(shí)鐘或RAM 數(shù)據(jù)時(shí)有兩種傳送方式:?jiǎn)巫止?jié)傳送和多字節(jié)傳送字符組方式;l 8 腳DIP封裝或可選的8腳SOIC封裝,根據(jù)表面裝配;l 簡(jiǎn)單3線接口;l 與TTL兼容,VCC=5V;l 可選工業(yè)級(jí)溫度范圍-40-+85;l 與DS1202 兼容;l 雙電源管用于主電源和備份電源供應(yīng),備份電源管腳可由電池或大容量電容輸入;l 附加的7字節(jié)暫存存儲(chǔ)器。DS1302與單片機(jī)系統(tǒng)連接電路如圖3-7所示。圖3-7DS1302電路連接圖如圖

19、3-7所示,DS1302的SCLK、I/O和RST三個(gè)引腳通過(guò)上拉電阻連接單片機(jī)的P1.4、P1.5和P1.6。3.5、LCD顯示電路顯示部分采用SMC 1602液晶屏進(jìn)行數(shù)據(jù)顯示,其主要技術(shù)參數(shù)為:表3-2 液晶屏技術(shù)指標(biāo)接口信號(hào)說(shuō)明如表3-3所示。表3-4 液晶屏接口信號(hào)說(shuō)明單片機(jī)接口電路如圖3-8所示。其中P0.0P0.7接LCD數(shù)據(jù)線,P2.5P2.7接LCD控制線。圖3-8 LCD與單片機(jī)接口電路3.6、EEPROM存儲(chǔ)器電路紅外報(bào)警監(jiān)控系統(tǒng)的報(bào)警時(shí)間存儲(chǔ)在EEPROM芯片AT24C04中,并可以通過(guò)查詢(xún)按鍵查看。AT24C04是IIC芯片,其管腳連接如圖3-6-1所示,與單片機(jī)連接

20、電路如圖3-6-2所示。 圖3-9 AT24C04管腳圖 圖3-10 與單片機(jī)連接圖3.7、鍵盤(pán)電路本設(shè)計(jì)采用四鍵鍵盤(pán),電路如圖3-11所示。圖3-11 四鍵鍵盤(pán)電路3.8、供電及程序下載電路本設(shè)計(jì)采用USB接口供電,電源電壓5V。同時(shí),USB接口通過(guò)內(nèi)含PL2303芯片的轉(zhuǎn)換電路對(duì)單片機(jī)進(jìn)行程序編寫(xiě)。其電路原理如圖3-12所示。圖3-12供電及程序下載電路4、 軟件編程4.1、軟件流程圖本設(shè)計(jì)軟件主程序流程圖如圖4-1所示。圖4-1 軟件流程圖4.2、主程序下面介紹main.c主程序編寫(xiě),其他程序略。(1) 頭文件和一些宏定義#include <reg52.h>#include

21、<math.h>#include "1602.h"#include "dht.h"#include "2402.h"#include "DS1302.h"(2) 管腳定義sbit Led_Alert=P36;/報(bào)警燈sbit In_Alert=P21; /報(bào)警信號(hào)輸入sbit Beep=P20; /蜂鳴器sbit Key_Up = P32;sbit Key_Down = P35;sbit Key_Set = P33;sbit Key_Review = P34;(3) 常量、變量定義和函數(shù)聲明/定義標(biāo)識(shí)v

22、olatile bit FlagStartRH = 0; /開(kāi)始溫濕度轉(zhuǎn)換標(biāo)志volatile bit FlagKeyPress = 0; /有鍵按下標(biāo)志volatile bit FlagAlert = 0; /報(bào)警狀態(tài)標(biāo)志volatile bit FlagReview = 0; /查詢(xún)標(biāo)志/定義溫濕度傳感器用外部變量extern U8 U8FLAG,k;extern U8 U8count,U8temp;extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;extern U8 U8T_data_H_temp,U8

23、T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;extern U8 U8comdata;extern U8 count, count_r;/溫濕度傳感器用變量U16 temp;S16 temperature, humidity;U16 RHCounter;/按鍵響應(yīng)用變量U8 keyvalue, keyUp, keyDown, keySet, keyReview;U8 FlagSet; /DS1302時(shí)鐘用變量SYSTEMTIME CurrentTime;uchar year, month, day, hour,

24、 minute, second;/報(bào)警及存儲(chǔ)用變量/char * pSave;/字符串顯示用變量uchar str16 = "000000"uchar AlertDate9="00-00-00", AlertTime9="00:00:00"uchar hide;/函數(shù)聲明void int2str(int x, char* str);void Delay1ms(unsigned int count);void Data_Init();void Timer0_Init();void Timer0_ISR () ;void SaveAler

25、t();void LoadAlert();void KeyProcess(uint num);(4) 各子程序/整型轉(zhuǎn)字符串的函數(shù),轉(zhuǎn)換范圍0-65536void int2str(int x, char* str) int i=1; int tmp=10; while(x/tmp!=0) i+; tmp*=10; tmp=x; stri='0' while(i>1) str-i='0'+(tmp%10); tmp/=10; str0=tmp+'0' void Delay1ms(unsigned int count)unsigned int

26、i,j;for(i=0;i<count;i+)for(j=0;j<120;j+);/數(shù)據(jù)初始化void Data_Init() RHCounter = 0; Led_Alert = 1; keyvalue = 0; keyUp = 1; keyDown = 1; keySet = 1; keyReview = 1; FlagSet = 0; hide = 0; AlertDate8='0' AlertTime8='0'/定時(shí)器0初始化void Timer0_Init()ET0 = 1; /允許定時(shí)器0中斷TMOD = 1; /定時(shí)器工作方式選擇TL0

27、 = 0x06; TH0 = 0xf8; /定時(shí)器賦予初值TR0 = 1; /啟動(dòng)定時(shí)器/定時(shí)器0中斷void Timer0_ISR (void) interrupt 1 using 0TL0 = 0x06;TH0 = 0xf8; /定時(shí)器賦予初值/每2秒鐘啟動(dòng)一次溫濕度轉(zhuǎn)換 RHCounter +; if (RHCounter >= 450) FlagStartRH = 1; RHCounter = 0; /設(shè)定閃爍標(biāo)志 if (hide = 1) hide = 0; else hide = 1; /存入報(bào)警日期時(shí)間void SaveAlert() wrteeprom(0, year)

28、; DELAY(1500); wrteeprom(1, month); DELAY(1500); wrteeprom(2, day); DELAY(1500); wrteeprom(3, hour); DELAY(1500); wrteeprom(4, minute); DELAY(1500); wrteeprom(5, second); DELAY(1500);/載入報(bào)警日期時(shí)間void LoadAlert() uchar value; value = rdeeprom(0); AlertDate0=value/10+48; AlertDate1=value%10+48; value = r

29、deeprom(1); AlertDate3=value/10+48; AlertDate4=value%10+48; value = rdeeprom(2); AlertDate6=value/10+48; AlertDate7=value%10+48; value = rdeeprom(3); AlertTime0=value/10+48; AlertTime1=value%10+48; value = rdeeprom(4); AlertTime3=value/10+48; AlertTime4=value%10+48; value = rdeeprom(5); AlertTime6=v

30、alue/10+48; AlertTime7=value%10+48;void KeyProcess(uint num) switch (num) case 1: /Up鍵被按下 switch (FlagSet) case 0:case 1: break;case 2: /年 if (year<99)year+; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_YEAR,year); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 3: /月 if (month<12) month+; Write13

31、02(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_MONTH,month); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 4: /日 if (day<31) day+; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_DAY,day); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 5: /時(shí) if (hour<23) hour+; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302

32、_HOUR,hour); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 6: /分 if (minute<60) minute+; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_MINUTE,minute); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 7: /秒 if (second<60) second+; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_SECOND,second); Write1302(0

33、x8e,0x80); /禁止寫(xiě)入 break; break; case 2:/Down鍵被按下 switch (FlagSet) case 0:case 1: break;case 2: /年 if (year>0)year-; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_YEAR,year); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 3: /月 if (month>0) month-; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_M

34、ONTH,month); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 4: /日 if (day>0) day-; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_DAY,day); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 5: /時(shí) if (hour>0) hour-; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_HOUR,hour); Write1302(0x8e,0x80); /禁止寫(xiě)入 break

35、;case 6: /分 if (minute>0) minute-; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_MINUTE,minute); Write1302(0x8e,0x80); /禁止寫(xiě)入 break;case 7: /秒 if (second>0) second-; Write1302(0x8e,0x00); /寫(xiě)入允許 DS1302_SetTime(DS1302_SECOND,second); Write1302(0x8e,0x80); /禁止寫(xiě)入 break; break; case 3: /Set鍵被按下。

36、FlagSet 0-報(bào)警;1-關(guān)報(bào)警;2-設(shè)置年;3-月;4-日;5-時(shí);6-分;7-秒 if (FlagReview=0) /只有不查詢(xún)時(shí)才能設(shè)定 FlagSet +;if (FlagSet=1) L1602_string(2,10,"A");else L1602_string(2,10," "); if (FlagSet>=8) FlagSet = 0; break; case 4: /Review鍵被按下 if (FlagReview = 0) FlagReview = 1; LoadAlert();L1602_string(1,1,&quo

37、t; ");L1602_string(2,1," "); L1602_string(1,1,AlertDate);L1602_string(1,9," Alert ");L1602_string(2,1,AlertTime);L1602_string(2,9," "); else FlagReview = 0; break; default: break; /* 名稱(chēng) : Main()* 功能 : 主函數(shù)*/void main() U16 i, j, testnum; EA = 0;Timer0_Init(); /定時(shí)器0初

38、始化 Data_Init();Initial_DS1302();EA = 1;L1602_init();L1602_string(1,1," Welcome to My ");L1602_string(2,1,"Infrared Monitor");/延時(shí)for (i=0;i<1000;i+) for (j=0;j<1000;j+) ; /清屏L1602_string(1,1," T C");L1602_string(2,1," H %"); while(1) /查詢(xún)報(bào)警信號(hào) /FlagSet=0為報(bào)警

39、狀態(tài), /FlagSet=1為關(guān)報(bào)警狀態(tài), /FlagSet=2,3,4,5,6,7依次為設(shè)置年,月,日,時(shí),分,秒狀態(tài) if (FlagSet=1)&&(In_Alert=0) /首次觸發(fā)報(bào)警則存入報(bào)警時(shí)間 SaveAlert(); FlagAlert=1; Beep=0;Led_Alert = 0; else /報(bào)警未打開(kāi)或者無(wú)警可報(bào) FlagAlert=0; Beep=1;Led_Alert = 1; if (FlagStartRH = 1) /溫濕度轉(zhuǎn)換標(biāo)志檢查 TR0 = 0; testnum = RH(); FlagStartRH = 0; TR0 = 1; /讀出

40、溫濕度,只取整數(shù)部分 humidity = U8RH_data_H; temperature = U8T_data_H; /讀出日期時(shí)間值 DS1302_GetTime(&CurrentTime); year = CurrentTime.Year; month = CurrentTime.Month; day = CurrentTime.Day; hour = CurrentTime.Hour; minute = CurrentTime.Minute; second = CurrentTime.Second; DateToStr(&CurrentTime); TimeToStr

41、(&CurrentTime); /如果不處于查詢(xún)狀態(tài)則顯示當(dāng)前日期時(shí)間溫度濕度 if (FlagReview=0) /清屏 L1602_string(1,1," T C");L1602_string(2,1," ");L1602_string(2,12,"H %");/顯示溫濕度 if (temperature<0) L1602_string(2,7,"-"); temperature = abs(temperature); int2str(temperature,str1); L1602_strin

42、g(1,14,str1); int2str(humidity,str1); L1602_string(2,14,str1); L1602_string(1,1,CurrentTime.DateString); L1602_string(2,1,CurrentTime.TimeString); /產(chǎn)生時(shí)間設(shè)定時(shí)的閃爍效果,只在未查詢(xún)且閃爍標(biāo)志置位時(shí)運(yùn)行 if (hide=1) switch (FlagSet) case 0: case 1: break; case 2: /年 L1602_string(1,1," "); break; case 3: /月 L1602_str

43、ing(1,4," "); break; case 4: /日 L1602_string(1,7," "); break; case 5: /時(shí) L1602_string(2,1," "); break; case 6: /分 L1602_string(2,4," "); break; case 7: /秒 L1602_string(2,7," "); break; default: break; /以下為鍵盤(pán)查詢(xún),當(dāng)有按鍵從按下到彈起時(shí),該按鍵被響應(yīng)。if (Key_Up)&&

44、(keyUp=0) FlagKeyPress = 1; keyvalue = 1; else if (Key_Down)&&(keyDown=0) FlagKeyPress = 1; keyvalue = 2; else if (Key_Set)&&(keySet=0) FlagKeyPress = 1; keyvalue = 3; else if (Key_Review)&&(keyReview=0) FlagKeyPress = 1; keyvalue = 4;if (FlagKeyPress = 1) KeyProcess(keyvalue

45、); FlagKeyPress = 0; if (!Key_Up) keyUp = 0;else keyUp = 1; if (!Key_Down) keyDown = 0;else keyDown = 1; if (!Key_Set) keySet = 0;else keySet = 1; if (!Key_Review) keyReview = 0;else keyReview = 1;5、下載與調(diào)試提供例程在uVision4環(huán)境下編譯,如果是其他版本uVision1,只需將所有.c和.h 文件拷貝至新建項(xiàng)目,重新編譯即可。當(dāng)編譯生成.hex文件后,就可以下載并進(jìn)行調(diào)試了。5.1

46、、USB轉(zhuǎn)串口驅(qū)動(dòng)安裝打開(kāi)USB驅(qū)動(dòng)文件夾下的PL2303_Prolific_DriverInstaller_v130.exe安裝文件,按提示安裝USB轉(zhuǎn)串口驅(qū)動(dòng)程序。安裝完成后,插入U(xiǎn)SB下載線后,在開(kāi)始-控制面板-打印機(jī)和其他硬件-設(shè)備管理器,在“端口”分支下有(Prolific USB-to-Serial Comm1 Port(COMX)。X表示串口號(hào),如果沒(méi)有說(shuō)明USB轉(zhuǎn)串口驅(qū)動(dòng)沒(méi)有安裝,須重新安裝。記住括號(hào)里的COM口號(hào)。圖5-1 成功安裝USB轉(zhuǎn)串口驅(qū)動(dòng)示意圖5.2、下載程序打開(kāi)STC單片機(jī)下載軟件文件夾,點(diǎn)擊運(yùn)行STC_ISP_V481.exe程序,出現(xiàn)如下界面。圖5-2 下載軟

47、件正確選擇MCU 類(lèi)型,COM口(與剛才安裝的COM號(hào)一致),最高波特率和最低波特率都選2400bps或者1200bps (下載線內(nèi)PL2303芯片所限,沒(méi)辦法!),并打開(kāi)正確的.hex數(shù)據(jù)文件。點(diǎn)擊“Download/下載”按紐,窗口出現(xiàn)提示:Chinese:正在嘗試與 MCU/單片機(jī) 握手連接 . Connection is failure. You can try: 1.Give your MCU Power On Reset. 2.Stop operation, then re-select COM Port. 3.Because PLCC-DIP/PQFP-DIP Socket tr

48、ace too long. 4.Update the STC ISP.exe version. 5.If still error, your MCU Firmware is error or null.Chinese:連接失敗,請(qǐng)嘗試以下操作: 1.在單片機(jī)停電狀態(tài)下,點(diǎn)下載按鈕,再給單片機(jī)上電 2.停止下載,重新選擇 RS-232 串口, 接好電纜 3.可能需要先將 P1.0/P1.1 短接到地 4.可能外部時(shí)鐘未接 5.因 PLCC、PQFP 轉(zhuǎn)換座引線過(guò)長(zhǎng)而引起時(shí)鐘不振蕩,請(qǐng) 調(diào)整參數(shù) 6.可能要升級(jí)電腦端的 STC ISP.exe 軟件 7.若仍然不成功,可能 MCU/單片機(jī)內(nèi)無(wú) ISP 系統(tǒng)引導(dǎo)碼, 或需退回升級(jí),或 MCU 已損壞 8.若使用 USB 轉(zhuǎn) RS-232 串口線下載,可能會(huì)遇到不兼容 的問(wèn)題,可以讓我們幫助購(gòu)買(mǎi)兼容的 USB 轉(zhuǎn) RS-232 串口線 仍在連接中, 請(qǐng)給 MCU 上電.按下電路板上的電源按

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論