基于紅外線(xiàn)報(bào)警系統(tǒng)的研發(fā)_第1頁(yè)
基于紅外線(xiàn)報(bào)警系統(tǒng)的研發(fā)_第2頁(yè)
基于紅外線(xiàn)報(bào)警系統(tǒng)的研發(fā)_第3頁(yè)
基于紅外線(xiàn)報(bào)警系統(tǒng)的研發(fā)_第4頁(yè)
基于紅外線(xiàn)報(bào)警系統(tǒng)的研發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、PAGE 基于紅外線(xiàn)報(bào)警及自動(dòng)撥號(hào)家居防盜系統(tǒng)教師評(píng)分2011年06月23日目錄 TOC o 1-3 h z u HYPERLINK l _Toc296606523 1 緒論 PAGEREF _Toc296606523 h 1 HYPERLINK l _Toc296606524 1.1 本課題的國(guó)內(nèi)外的研究現(xiàn)狀及研究意義 PAGEREF _Toc296606524 h 1 HYPERLINK l _Toc296606525 1.2 紅外報(bào)警技術(shù)簡(jiǎn)介 PAGEREF _Toc296606525 h 1 HYPERLINK l _Toc296606526 1.2.1主動(dòng)式報(bào)警技術(shù) PAGEREF

2、_Toc296606526 h 2 HYPERLINK l _Toc296606527 1.2.2被動(dòng)式報(bào)帶技術(shù) PAGEREF _Toc296606527 h 2 HYPERLINK l _Toc296606528 2 主要元器件的選擇與簡(jiǎn)介 PAGEREF _Toc296606528 h 5 HYPERLINK l _Toc296606529 2.1 系統(tǒng)中微處理器的選擇 PAGEREF _Toc296606529 h 5 HYPERLINK l _Toc296606530 2.2 AT89C52芯片簡(jiǎn)介 PAGEREF _Toc296606530 h 6 HYPERLINK l _Toc

3、296606531 2.3 LP8072C熱釋電紅外控制電路 PAGEREF _Toc296606531 h 9 HYPERLINK l _Toc296606532 3 硬件系統(tǒng)設(shè)計(jì) PAGEREF _Toc296606532 h 13 HYPERLINK l _Toc296606533 3.1 紅外防盜報(bào)警系統(tǒng)的硬件設(shè)計(jì) PAGEREF _Toc296606533 h 13 HYPERLINK l _Toc296606534 3.2 聲光報(bào)警電路的設(shè)計(jì) PAGEREF _Toc296606534 h 14 HYPERLINK l _Toc296606535 3.3電話(huà)自動(dòng)撥號(hào)報(bào)警電路的設(shè)計(jì)

4、PAGEREF _Toc296606535 h 14 HYPERLINK l _Toc296606536 3.4 系統(tǒng)工作原理 PAGEREF _Toc296606536 h 15 HYPERLINK l _Toc296606537 3.5 系統(tǒng)總的電路圖 PAGEREF _Toc296606537 h 15 HYPERLINK l _Toc296606538 4 軟件系統(tǒng)設(shè)計(jì) PAGEREF _Toc296606538 h 16 HYPERLINK l _Toc296606539 4.1主控模塊程序設(shè)計(jì) PAGEREF _Toc296606539 h 16 HYPERLINK l _Toc2

5、96606540 4.2 系統(tǒng)開(kāi)發(fā)所采用的編程與調(diào)試平臺(tái) PAGEREF _Toc296606540 h 17 HYPERLINK l _Toc296606541 4.3主要程序編程 PAGEREF _Toc296606541 h 18 HYPERLINK l _Toc296606542 5系統(tǒng)調(diào)試與試驗(yàn) PAGEREF _Toc296606542 h 20 HYPERLINK l _Toc296606543 5.1 軟件調(diào)試 PAGEREF _Toc296606543 h 20 HYPERLINK l _Toc296606544 5.2 系統(tǒng)調(diào)試 PAGEREF _Toc296606544

6、h 21 HYPERLINK l _Toc296606545 6 結(jié)束語(yǔ)與心得體會(huì) PAGEREF _Toc296606545 h 21 HYPERLINK l _Toc296606546 7參考文獻(xiàn) PAGEREF _Toc296606546 h 21PAGE 37摘 要:隨著科學(xué)技術(shù)的不斷發(fā)展和人們生活水平的不斷改善,人們對(duì)私有財(cái)產(chǎn)的保護(hù)手段在不斷的增強(qiáng),對(duì)防盜設(shè)施提出了新的要求。本文介紹了基于A(yíng)T89C52單片機(jī),與人體熱釋電紅外傳感器及電話(huà)接口結(jié)合,通過(guò)軟件編程,實(shí)現(xiàn)電路功能。要求利用紅外線(xiàn)傳感器的感應(yīng)作用,實(shí)現(xiàn)一旦有人闖入監(jiān)控區(qū)域,蜂鳴器報(bào)警,電話(huà)機(jī)自動(dòng)撥號(hào).文中給出硬件與軟件設(shè)計(jì)的

7、具體實(shí)現(xiàn)方法。 關(guān)鍵詞:人體熱釋電紅外傳感器;AT89C52單片機(jī);自動(dòng)撥號(hào)1 緒論1.1 本課題的國(guó)內(nèi)外的研究現(xiàn)狀及研究意義隨著社會(huì)的不斷進(jìn)步和科學(xué)技術(shù)不斷發(fā)展,人們生活水平得到很大的提高,對(duì)私有財(cái)產(chǎn)的保護(hù)手段在不斷的增強(qiáng),對(duì)防盜設(shè)施的智能化提出了新的要求。本設(shè)計(jì)就是為了滿(mǎn)足現(xiàn)代住宅防盜的需要而設(shè)計(jì)的家庭式電子防盜系統(tǒng)。它在以前的防盜器基礎(chǔ)上進(jìn)行了很大的改進(jìn),由于使用了單片機(jī)做信號(hào)處理器,不但可以用于單一的住宅區(qū),也可以用于較大規(guī)模住宅區(qū)的防盜系統(tǒng)。它的工作性能好,不易出現(xiàn)不報(bào)和誤報(bào)現(xiàn)象,安全可靠。在我國(guó),目前市面上報(bào)警器主要有壓力觸發(fā)式防盜報(bào)警器開(kāi)關(guān)電子防盜報(bào)警器和壓力遮光觸發(fā)式防盜報(bào)警器

8、等各種報(bào)警器,但這幾種比較常見(jiàn)的報(bào)警器都存在一些缺點(diǎn)。本系統(tǒng)采用了人體熱釋電紅外傳感器,在人體探測(cè)器領(lǐng)域中,被動(dòng)式熱釋電紅外探測(cè)器因其價(jià)格低廉、制作簡(jiǎn)單、成本低,安裝比較方便,防盜性能比較穩(wěn)定,靈敏度高、安全可靠等特點(diǎn),備受廣大家庭用戶(hù)的歡迎。而且防盜器安裝隱蔽,不易被盜賊發(fā)現(xiàn)。1.2 紅外報(bào)警技術(shù)簡(jiǎn)介紅外傳感技術(shù)可分為主動(dòng)式傳感技術(shù)和被動(dòng)式傳感技術(shù)。因此紅外報(bào)警器又分為主動(dòng)式紅外報(bào)警器和被動(dòng)式紅外報(bào)警器。1.2.1主動(dòng)式報(bào)警技術(shù)主動(dòng)式紅外報(bào)警器是由發(fā)射和接收裝置兩部分組成,如圖1.1所示。紅外發(fā)射機(jī)驅(qū)動(dòng)紅外發(fā)光二極管發(fā)出一束調(diào)制的紅外光束。在距發(fā)射機(jī)一定距離處,與之對(duì)準(zhǔn)放置一紅外接收機(jī)。它通

9、過(guò)光敏晶體管接收發(fā)射端發(fā)出的紅外輻射能量,并經(jīng)過(guò)光電轉(zhuǎn)換將其轉(zhuǎn)換為電信號(hào)。此電信號(hào)經(jīng)過(guò)適當(dāng)?shù)奶幚碓偎屯鶊?bào)警控制器電路。分別在收、發(fā)端放置一光學(xué)透鏡,將紅外光聚集成較細(xì)的平行光束,以使紅外光的能量能集中傳送。采用調(diào)制的紅外光源具有以下幾個(gè)優(yōu)點(diǎn):(1)降低電源的功耗。(2)使紅外探測(cè)器具有較強(qiáng)的抗干擾能力,提高了工作的穩(wěn)定性。紅外光束構(gòu)成了一道人眼看不見(jiàn)的封鎖線(xiàn),當(dāng)有人穿越或阻擋這條紅外光束時(shí),接收機(jī)輸出的電信號(hào)強(qiáng)度就會(huì)發(fā)生變化,從而啟動(dòng)報(bào)警控制器發(fā)出報(bào)警信號(hào)。1.2.2被動(dòng)式報(bào)帶技術(shù) 被動(dòng)式紅外探測(cè)器不需要附加紅外輻射光源,本身不向外界發(fā)射任何能量,而是由探測(cè)器直接探測(cè)來(lái)自移動(dòng)目標(biāo)的紅外輻射,因

10、此才有被動(dòng)式之稱(chēng)。被動(dòng)式紅外探測(cè)器是利用熱釋電效應(yīng)進(jìn)行探測(cè)的。自然界物體的紅外輻射特性 自然界的任何物體,只要溫度高于絕對(duì)零度(273),總是不斷地向外發(fā)出紅外輻射,并以光的速度傳播能量。物體向外輻射紅外輻射的能量與物體的溫度和紅外輻射的波長(zhǎng)有關(guān)。假定物體發(fā)射紅外輻射的峰值波長(zhǎng)為幾,它的溫度為T(mén),則輻射能量等于紅外輻射的峰值波長(zhǎng)戈與物體溫度T的乘積。這一乘積為一常數(shù),即:物體的溫度越高,它所發(fā)射的紅外輻射的峰值波長(zhǎng)越小,發(fā)出紅外輻射的能量也越大。熱釋電效應(yīng)被動(dòng)式紅外探測(cè)器又稱(chēng)為熱釋電紅外探測(cè)器,其主要工作原理便是熱釋電效應(yīng)。熱釋電效應(yīng)是指如果使某些強(qiáng)介電質(zhì)材料(如欽酸鋇、欽錯(cuò)酸鉛P(zT)等)

11、的表面溫度發(fā)生變化,則隨著溫度的上升或下降,材料表面發(fā)生極化,即表面上就會(huì)產(chǎn)生電荷的變化,從而使物質(zhì)表面電荷失去平衡,最終電荷變化將以電壓或電流形式輸出。在熱釋電紅外探測(cè)器中有兩個(gè)關(guān)鍵性的元件,一個(gè)是熱釋電紅外傳感器P(TR), PTR能將紅外信號(hào)變化轉(zhuǎn)變?yōu)殡娦盘?hào),并能對(duì)自然界中的白光信號(hào)具有抑制作用。另一個(gè)是菲涅爾透鏡,菲涅爾透鏡是一種由塑料制成的特殊設(shè)計(jì)的光學(xué)透鏡,它用來(lái)配合熱釋電紅外線(xiàn)傳感器,以提高接收靈敏度。用菲涅爾透鏡配合放大電路將信號(hào)放大60一70db,就可以檢測(cè)10一20m處人的活動(dòng)。熱釋電傳感器具有自極化效應(yīng),晶體處于低于Curie溫度的恒溫環(huán)境時(shí),其自極化強(qiáng)度保持不變,即極化

12、電荷面密度保持不變。這些極化電荷被空氣中的帶電粒子中和,當(dāng)紅外輻射入射晶體,被晶體吸收后,晶體溫度升高,自極化強(qiáng)度變小,即電荷面密度變小。這樣,晶體表面存在多余的中和電荷,這些電荷以電壓或電流的形式輸出,該輸出信號(hào)可用來(lái)探測(cè)輻射。相反,當(dāng)截?cái)嘣撦椛鋾r(shí),晶體溫度降低,自極化強(qiáng)度增大,由相反方向的電流或電壓輸出。熱釋電紅外傳感器的基本結(jié)構(gòu)熱釋電紅外傳感器由傳感探測(cè)元、干涉濾光片和場(chǎng)效應(yīng)管匹配器三部分組成。按照探測(cè)元的數(shù)目來(lái)分,熱釋電紅外傳感器有單元、雙元和四元等幾種,用于人體探測(cè)的紅外傳感器采用雙元或四元式結(jié)構(gòu)。按照熱釋電紅外傳感器的用途來(lái)分,有以下幾種:用于測(cè)量溫度的傳感器,它的工作波長(zhǎng)為(12

13、0)納米;用于火焰探測(cè)的傳感器,它的工作波長(zhǎng)為0.435+/-0.15納米;用于人體探測(cè)的傳感器,它的工作波長(zhǎng)為715腳。圖1.2是一個(gè)雙探測(cè)元的熱釋電紅外傳感器的結(jié)構(gòu)示意圖。該傳感器將兩個(gè)極性相反、特性一致的探測(cè)元串接在一起,目的在于消除因環(huán)境溫度和自身變化引起的干擾。它利用兩個(gè)極性相反、大小相等的干擾信號(hào)在內(nèi)部相互抵消的原理,使傳感器起到補(bǔ)償作用。當(dāng)人體處于靜止?fàn)顟B(tài)時(shí),兩元件極化程度相同,相互抵消;當(dāng)人體移動(dòng)時(shí),兩元件極化程度不同,凈輸出電壓不為0,從而達(dá)到探測(cè)移動(dòng)人體的目的。使用時(shí)一般在管殼頂端裝有濾光鏡片及窗口,用以選擇接收不同的波長(zhǎng)。在窗口上裝濾光鏡的目的是使不需要的紅外線(xiàn)不能進(jìn)入傳

14、感器。一般熱釋電紅外傳感器在光譜范圍內(nèi)的靈敏度是相當(dāng)平坦的(并且不受可見(jiàn)光的影響)。一般常用硅質(zhì)聚乙烯材料的濾光鏡,它能以非接觸形式檢測(cè)出物體放射出來(lái)的紅外線(xiàn)能量變化,并將其轉(zhuǎn)換成電信號(hào)輸出。傳感器探頭前部裝有菲涅爾透鏡。菲涅爾透鏡是用透明塑料制成的一種具有特殊光學(xué)系數(shù)的透鏡,它由一組平行的棱柱型透鏡所組成,它的每一單元透鏡都只有一個(gè)不大的視場(chǎng)角,而相鄰的兩個(gè)單元透鏡的視場(chǎng)既不連續(xù),也不重疊,都相隔著一個(gè)盲區(qū),這樣就在傳感器前方產(chǎn)生一個(gè)交替變化的“盲區(qū)”和“高靈敏區(qū)”。視場(chǎng)的側(cè)視圖和俯視圖如圖1.3所示。當(dāng)有人從透鏡前走過(guò)時(shí),人體發(fā)出的紅外線(xiàn)就不斷在“盲區(qū)”和“高靈敏區(qū)”內(nèi)切換,這樣就使接收到

15、的信號(hào)以忽強(qiáng)忽弱的脈沖形式輸入,增強(qiáng)了能量變化幅度,從而提高了探測(cè)靈敏度。熱釋電紅外探測(cè)器的基本原理熱釋電紅外傳感器通過(guò)接收移動(dòng)人體輻射出的特定波長(zhǎng)的紅外線(xiàn),可以將其轉(zhuǎn)化為與人體運(yùn)動(dòng)速度,距離,方向有關(guān)的低頻電信號(hào)。當(dāng)熱釋電紅外傳感器受到紅外輻射源的照射時(shí),其內(nèi)部敏感材料的溫度將升高,極化強(qiáng)度減弱,表面電荷減少,通常將釋放掉的這部分電荷稱(chēng)為熱釋電電荷。由于熱釋電電荷的多少可以反映出材料溫度的變化,所以由熱釋電電荷經(jīng)電路轉(zhuǎn)變成的輸出電壓也同樣可以反映出材料溫度的變化,從而探測(cè)出紅外輻射能量的變化。紅外探測(cè)器的光學(xué)系統(tǒng)可以將來(lái)自多個(gè)方向的紅外輻射能量聚焦在探測(cè)器上,這樣紅外探測(cè)器就可以探測(cè)到某一個(gè)

16、立體探測(cè)空間內(nèi)熱輻射的變化。當(dāng)防范區(qū)域內(nèi)沒(méi)有移動(dòng)的人體時(shí),由于所有的背景物體(如墻壁、家具等)在室溫下紅外輻射的能量比較小,而且基本上是穩(wěn)定的,所以不能觸發(fā)報(bào)警器。當(dāng)有人體突然進(jìn)入探測(cè)區(qū)域時(shí),會(huì)造成紅外輻射能量的突然變化,紅外探測(cè)器將接收到的活動(dòng)人體與背景物體之間的紅外熱輻射能量的變化轉(zhuǎn)化為相應(yīng)的電信號(hào),電信號(hào)的大小,決定于敏感元件溫度變化的快慢,經(jīng)過(guò)后級(jí)比較器與狀態(tài)控制器產(chǎn)生相應(yīng)的輸出信號(hào)U。,送往報(bào)警器,發(fā)出報(bào)警信號(hào)。紅外探測(cè)器的探測(cè)波長(zhǎng)為814微米,人體的紅外輻射波長(zhǎng)正好處于這個(gè)范圍之內(nèi),因此能較好的探測(cè)到活動(dòng)的人體。被動(dòng)式紅外探測(cè)器屬于空間控制型探測(cè)器,其警戒范圍在不同方向呈多個(gè)單波束

17、狀態(tài),組成錐體感熱區(qū)域,構(gòu)成立體警戒。由于被動(dòng)式紅外技術(shù)具有監(jiān)測(cè)距離較遠(yuǎn),靈敏度較高,節(jié)能價(jià)廉等優(yōu)點(diǎn),本課題采動(dòng)式紅外探測(cè)器作為報(bào)警探測(cè)器,并在設(shè)計(jì)中增加了電話(huà)自動(dòng)撥號(hào)報(bào)警的功能,使報(bào)警系統(tǒng)更加趨于完善。2 主要元器件的選擇與簡(jiǎn)介2.1 系統(tǒng)中微處理器的選擇當(dāng)今單片機(jī)廠(chǎng)商琳瑯滿(mǎn)目,產(chǎn)品性能各異。常用的單片機(jī)有很多種:Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、臺(tái)灣Winbond(華邦)W78系列、荷蘭Pilips的PCF80C51系列、Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韓國(guó)三星公司的KS57C系列4位

18、單片機(jī)、臺(tái)灣義隆的EM-78系列等。我們最終選用了ATMEL公司的AT89C52單片機(jī)。2.2 AT89C52芯片簡(jiǎn)介AT89C52特點(diǎn): 與MCS-51產(chǎn)品指令和引腳完全兼容 8K字節(jié)可重擦寫(xiě)FLASH閃存 1000次擦寫(xiě)周期 全靜態(tài)操作:0Hz-24MHz 三級(jí)加密程序存儲(chǔ)器 256X8字節(jié)內(nèi)部RAM 32個(gè)可編程I/O口線(xiàn) 3個(gè)16位定時(shí)/計(jì)數(shù)器 5個(gè)中斷源 可編程串行UART通道 低功耗空閑和掉電模式功能特性概述:AT89C52提供以下標(biāo)準(zhǔn)功能:8K字節(jié)FLASH閃存,256字節(jié)內(nèi)部RAM,32個(gè)I/O口線(xiàn),3個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩

19、器及時(shí)鐘電路。同時(shí),AT89C52可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其他所有部件工作直到下一個(gè)硬件復(fù)位。AT89C52的芯片管腳圖如圖2-1。圖2-1引腳功能說(shuō)明:VCC電源電壓GND地P0口P0口是一組8位漏極開(kāi)路型雙向I/O口,也即地址/數(shù)據(jù)總線(xiàn)復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路,對(duì)端口P0寫(xiě)“1”時(shí),可作為高阻抗輸入端用。在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線(xiàn)分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線(xiàn)

20、復(fù)用,在訪(fǎng)問(wèn)期間激活內(nèi)部上拉電阻。在FLASH編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。P1口P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口寫(xiě)“1” ,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸出口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。與AT89C51不同之處是,P1.0和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),參見(jiàn)下表。FLASH編程和程序校驗(yàn)期間,P1接收低8位地址。P1.0和P1

21、.1的第二功能,如表2-1所示。表2-1引腳號(hào)功能特性P1.0T2(定時(shí)/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入),時(shí)鐘輸出P1.1T2EX(定時(shí)/計(jì)數(shù)2捕獲/重裝載觸發(fā)和方向控制) P2口P2是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口P2寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。在訪(fǎng)問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVXDPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪(fǎng)問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVXRI指令)時(shí)

22、,P2口輸出P2鎖存器的內(nèi)容。FLASH編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。P3口P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)P3口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻輸出電流。 P3口除作為一般的I/O口線(xiàn)外,更重要是它的第二功能,如表2-2所示:表2-2端口引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INTO(外中斷0)P3.3INT1(外中斷1)P3.4TO(定時(shí)/計(jì)數(shù)器0)P3.5T1(定時(shí)/計(jì)數(shù)器1)P3.6WR(外部數(shù)

23、據(jù)存儲(chǔ)器寫(xiě)選通)P3.7RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。RST復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。ALE/PROG當(dāng)訪(fǎng)問(wèn)外部程存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位

24、,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無(wú)效。PSEN程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。EA/VPP外部訪(fǎng)問(wèn)允許,欲使CPU僅訪(fǎng)問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行

25、內(nèi)部程序存儲(chǔ)器的指令。FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp2.3 LP8072C熱釋電紅外控制電路LP8072C(兼容:CS9803,WT8072)是一款熱釋電紅外控制電路。它配以熱釋電紅外傳感器和少量外接元器件構(gòu)成被動(dòng)式的熱釋電紅外開(kāi)關(guān)。大量應(yīng)用于:人體感應(yīng)照明控制、人體感應(yīng)開(kāi)關(guān),人體感應(yīng)控制器,馬達(dá)和電磁控制、防盜報(bào)警等領(lǐng)域LP8072C 功能:工作電壓為 4.0V5.5V(DC),工作電流小于 700uA;外接振蕩電阻、電容;外接有硫化鎘(CDS)傳感器,白天抑制輸出;輸出可驅(qū)動(dòng)繼電器或可控硅; 內(nèi)置兩級(jí)運(yùn)放,增益可

26、調(diào);控制時(shí)間可調(diào); 內(nèi)置穩(wěn)壓輸出 3.1V 直接驅(qū)動(dòng) PIR; 集成過(guò)零檢測(cè),交流電源同步觸發(fā),降低電源污染; 與 WELTREND 公司 WT8072 兼容; DIP16 封裝; LP8072C 應(yīng)用:廣泛應(yīng)用于照明控制、馬達(dá)和電磁控制、防盜報(bào)警等領(lǐng)域。LP8072C 引腳:圖2-2LP8072C 功能框圖:圖2-3LP8072C 功能說(shuō)明:(1)PIR 感應(yīng)信號(hào)經(jīng)內(nèi)部放大,如果判斷有觸發(fā),運(yùn)放輸出高電平。這時(shí)候計(jì)時(shí)檢測(cè)電路開(kāi)始計(jì)時(shí),計(jì) 滿(mǎn)一定內(nèi)部時(shí)鐘周期,跳變?yōu)楦撸杀苊庹`觸發(fā));(2)CDS 接內(nèi)部施密特觸發(fā)器,白天 CDS 阻值低,施密特反相器輸出為低,抑制輸出;天暗則相反,施 密特反

27、相器輸出為高;(3)過(guò)零檢測(cè)在交流電源過(guò)零時(shí)產(chǎn)生過(guò)零脈沖。在(1)、(2)、(3)同時(shí)為高時(shí),輸出控制器輸出一正脈沖,控制外電路;(4)PIR 與 IC 引線(xiàn)越短越好,以免引入噪聲干擾;(5)采用阻容降壓,應(yīng)選用正品電路,注意安全,可適當(dāng)增加保護(hù)元器件或電路;(6)在(1)所述情況下的計(jì)時(shí)期間,CDS 觸發(fā)信號(hào)不起作用;(7)PIN6 所接 R、C 決定 IC 內(nèi)部時(shí)鐘,F(xiàn)=(120%)/1.1RC,TRIAC 觸發(fā)時(shí)間寬度為 2/F;(8)PIN8 所接 R、C 決定 IC 內(nèi)部定時(shí)器的周期,頻率同樣滿(mǎn)足要求(7)所示的計(jì)算公式。調(diào)節(jié) R、C 可以 輸出控制的時(shí)間長(zhǎng)短,根據(jù)應(yīng)用實(shí)際要求而定。

28、LP8072C 電氣參數(shù):參數(shù)符號(hào)條件最小值典型值最大值單位電源電壓Vcc-455.5V調(diào)節(jié)電壓VrefVDD=5V33.13.4VCDS最高工作電壓V(CDS)VDD=5V1.622.5V工作電流IccVDD=5VNo LoadOSC ON650700850uA靜態(tài)電路IssVDD=5VNo LoadOSC ON350400450uA基準(zhǔn)源電流Iref-1mA-uACDS原電流Icds-uA繼電器驅(qū)動(dòng)電流Icc(relay)5mATRIAC準(zhǔn)電流Icc(triac)15mATB工作頻率FtbR=470KC=100pF16.61919.820.8KHzTC工作頻率FtcR=220KC=1000

29、pF4.75.76KHzLP8072C 用于繼電器控制:LP8072C 用于可控硅控制:3 硬件系統(tǒng)設(shè)計(jì)3.1 紅外防盜報(bào)警系統(tǒng)的硬件設(shè)計(jì)由于本設(shè)計(jì)側(cè)重于家庭防盜,實(shí)時(shí)監(jiān)控的范圍比較狹窄,因此本設(shè)計(jì)只需使用一個(gè)被動(dòng)式紅外探測(cè)器就足夠。為此,紅外智能防盜報(bào)警系統(tǒng)的具體設(shè)計(jì)要求為:完成對(duì)高靈敏度紅外傳感器的設(shè)計(jì),使其能對(duì)所發(fā)生的警情進(jìn)行實(shí)時(shí)、準(zhǔn)確的探測(cè)??蛇M(jìn)行自動(dòng)報(bào)警(自動(dòng)撥號(hào)報(bào)警和聲光報(bào)警)。我們?cè)O(shè)計(jì)此系統(tǒng)必須具有以下功能模塊:被動(dòng)式紅外探測(cè)器;聲光報(bào)警;電話(huà)自動(dòng)撥號(hào)功能;持續(xù)不間斷供電;根據(jù)系統(tǒng)所要完成的功能,我們采用單片機(jī)作為系統(tǒng)的核心單元,將電子探測(cè)、智能控制和電話(huà)通訊技術(shù)相結(jié)合,形成一個(gè)

30、兩級(jí)聯(lián)網(wǎng)通訊的防盜報(bào)警系統(tǒng)。系統(tǒng)總體架構(gòu)簡(jiǎn)圖如圖3.1所示。3.2 聲光報(bào)警電路的設(shè)計(jì)聲光報(bào)警電路相對(duì)比較簡(jiǎn)單,本設(shè)計(jì)采用如圖3.2所示的電路來(lái)完成探測(cè)器的聲光報(bào)警功能。圖3.2在左圖中,Bell為長(zhǎng)鳴蜂鳴器,兩個(gè)引腳分別為正負(fù)極,當(dāng)正負(fù)極兩端加上5v電壓后,蜂鳴器發(fā)出響聲。注意,該蜂鳴器正負(fù)極不能接反,否則會(huì)燒毀蜂鳴器。右圖中,LED-G表示正常狀態(tài)下綠燈常亮,LED-R表示有人闖入監(jiān)控區(qū)域內(nèi)時(shí),紅燈快速閃爍,此時(shí),綠燈應(yīng)該熄滅。 3.3電話(huà)自動(dòng)撥號(hào)報(bào)警電路的設(shè)計(jì)為了簡(jiǎn)化整個(gè)系統(tǒng)的設(shè)計(jì)流程,我們不采用MT880芯片撥號(hào)。具體實(shí)現(xiàn)過(guò)程如下: 先在電話(huà)機(jī)的存儲(chǔ)里面存上家庭主人的手機(jī)號(hào)碼或報(bào)警電話(huà)

31、110.從單片機(jī)的引腳p2.0和p2.1引出兩條接線(xiàn)接繼電器,一條接電話(huà)機(jī)鍵盤(pán)的免提鍵,另外一條接電話(huà)機(jī)鍵盤(pán)的自動(dòng)重?fù)苕I,由于電話(huà)鍵盤(pán)掃描是類(lèi)似單片機(jī)鍵盤(pán)掃描,所以可以讓單片機(jī)先給p2.0一個(gè)信號(hào),讓電話(huà)免提,然后再給p2.1一個(gè)信號(hào),讓繼電器接通,給自動(dòng)重?fù)苕I一個(gè)電位,讓電話(huà)機(jī)自動(dòng)撥號(hào),這樣就能完成系統(tǒng)報(bào)警功能。3.4 系統(tǒng)工作原理整個(gè)系統(tǒng)的硬件部分主要包括六個(gè)部分:MCU模塊;紅外探測(cè)器;聲光報(bào)警電路;電話(huà)自動(dòng)撥號(hào)報(bào)警電路;電源電路;工作狀態(tài)指示電路。其系統(tǒng)工作原理為:傳感器將探測(cè)到的信號(hào)送到前置信號(hào)處理器處理,單片機(jī)判斷到P1.0口有脈沖下降沿跳變信號(hào)時(shí)立刻轉(zhuǎn)到聲光報(bào)警程序,這時(shí)蜂鳴器報(bào)

32、警,紅燈快速閃爍,過(guò)程持續(xù)30s。在這30s內(nèi)如果有人按下消除報(bào)警的開(kāi)關(guān),則解除報(bào)警。如果這段時(shí)間沒(méi)有人解除報(bào)警,則證明家里沒(méi)有人,系統(tǒng)會(huì)在30s后自動(dòng)觸發(fā)電話(huà)機(jī)報(bào)警,完成整個(gè)系統(tǒng)的工作工程。之后,單片機(jī)會(huì)繼續(xù)循環(huán)回到判斷P1.0口,等待下一次報(bào)警。3.5 系統(tǒng)總的電路圖 在用proteus模擬系統(tǒng)時(shí),系統(tǒng)電路由晶振電路,聲光報(bào)警電路組成。其中,我們用接P1.0的開(kāi)光模擬紅外線(xiàn)傳感器,要求當(dāng)開(kāi)關(guān)按下時(shí),電平由高跳到低,這相當(dāng)于,傳感器檢測(cè)到人的狀態(tài),電話(huà)線(xiàn)用P2.0和P2.1引出,在這里不模擬電話(huà)線(xiàn)路圖。圖3.54 軟件系統(tǒng)設(shè)計(jì)4.1主控模塊程序設(shè)計(jì) 單片機(jī)在初始加電時(shí),電壓處于不穩(wěn)定狀態(tài),導(dǎo)

33、致此時(shí)的單片機(jī)不穩(wěn)定,一般在上電后都要對(duì)系統(tǒng)加一段延時(shí)。延時(shí)后單片機(jī)檢測(cè)P1口狀態(tài),檢測(cè)電平信號(hào)是否突變,如果是則調(diào)用報(bào)警處理程序,包括自動(dòng)撥號(hào)程序和聲光報(bào)警程序,如果電平?jīng)]有出項(xiàng)變化,則繼續(xù)檢測(cè)P1口狀態(tài)。主程序流程圖參見(jiàn)圖4.1。圖4.1主程序流程圖4.2 系統(tǒng)開(kāi)發(fā)所采用的編程與調(diào)試平臺(tái)本系統(tǒng)語(yǔ)言采用匯編語(yǔ)言編寫(xiě),因此選用wave6000,他具有單片機(jī)程序的編輯、編譯與調(diào)試等功能,并生成十六進(jìn)制的.hex機(jī)器文件,通過(guò)TOPWIN刻錄軟件可寫(xiě)入單片機(jī)程序存儲(chǔ)器中。仿真軟件選用Proteus,他是來(lái)自英國(guó)Labcenter electronics公司的EDA工具軟件。其電路仿真是互動(dòng)的,針對(duì)

34、微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)軟件源碼級(jí)的實(shí)時(shí)調(diào)試,如有顯示及輸出,還能看到運(yùn)行后輸入輸出的效果。4.3主要程序編程; RED EQU P3.3 GREEN EQU P3.7 CLOSE EQU P2.7 CHECK EQU P1.0 SOUND EQU P1.7 MT EQU P2.0 PH EQU P2.1 TIMES DATA 30H ORG 0000H AJMP MAIN ORG 000BH ;定時(shí)器T0中斷程序入口 LJMP T0 ;跳至TO執(zhí)行;主 程 序MAIN: MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV

35、 P3,#0FFH MOV TMOD,#02H ;T0定時(shí)器工作方式2,T1定時(shí)器工作方式1 MOV TL0,#06H ;設(shè)置T0定時(shí)1S MOV TH0,#06H ; MOV R2,#0 MOV R3,#0 MOV TIMES,#0 SETB EA ;允許中斷 SETB ET0 ;T0中斷允許 CLR TR0 ;關(guān)閉T0 LCALL DELAY;正常狀態(tài)下只顯示綠燈START: SETB GREEN ;初始狀態(tài)亮綠燈 CLR RED ;紅燈暗 JNB CHECK,COUNT ;檢測(cè)p1.0口狀態(tài) AJMP START;異常狀況開(kāi)始計(jì)時(shí)30秒 COUNT: CLR GREEN SETB TR0

36、 ;啟動(dòng)T0計(jì)時(shí) JNB CLOSE,STOP ;解除警報(bào)開(kāi)關(guān) MOV A,TIMES CJNE A,#150,COUNT AJMP ALART ;按下開(kāi)關(guān)恢復(fù)正常狀態(tài) STOP: CLR TR0 CLR RED CLR SOUND MOV TIMES,#0 AJMP START;30秒時(shí)間后進(jìn)行自動(dòng)撥號(hào)ALART: CLR TR0 CLR RED CLR SOUND MOV TIMES,#0 SETB MT ;使電話(huà)機(jī)撥號(hào) LCALL DELAY SETB PH AJMP START ;T0中斷服務(wù)程序T0:INC R2 CJNE R2,#40,T0_1T0_1:JC GORET MOV R

37、2,#0 INC R3 CJNE R3,#20,T0_2T0_2: JC GORET MOV R3,#0 CPL RED CPL SOUND INC TIMESGORET::RETIDELAY:MOV R5,#50H ;上電延時(shí)500msD1: MOV R6,#50D2: MOV R7,#100 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RETEND 5系統(tǒng)調(diào)試與試驗(yàn)5.1 軟件調(diào)試 采用模塊化程序設(shè)計(jì)思想,首先調(diào)試子程序,然后逐級(jí)疊加調(diào)試,通過(guò)Proteus仿真軟件調(diào)試,證明程序能實(shí)現(xiàn)其功能。5.2 系統(tǒng)調(diào)試通過(guò)電路的焊接,各個(gè)模塊功能的調(diào)試。我把硬件所出現(xiàn)的錯(cuò)誤都調(diào)整

38、過(guò)來(lái)了,另外,在紅外線(xiàn)那一塊,由于是用人體熱釋電開(kāi)關(guān)改裝的,所以在必須用膠布把光敏電阻包起來(lái),已到達(dá)白天和黑夜都能報(bào)警的功能。最總系統(tǒng)調(diào)試通過(guò),誤差符合要求。6 結(jié)束語(yǔ)與心得體會(huì) 本系統(tǒng)采用了熱釋電紅外傳感器,它的制作簡(jiǎn)單成本低,安裝比較方便,而且防盜性能比較穩(wěn)定,抗干擾能力強(qiáng),靈敏度高,安全可靠。此外,系統(tǒng)還有很大的擴(kuò)展功能,例如,在倉(cāng)庫(kù)、小區(qū)或者監(jiān)控范圍比較廣的地方,可以加多幾路紅外線(xiàn)探頭,利用接口通信技術(shù)與計(jì)算機(jī)進(jìn)行連接,有利于統(tǒng)一管理。在做單一家庭防盜系統(tǒng)時(shí),我們還可以加多LCD模塊,顯示報(bào)警時(shí)間,加多鍵盤(pán)鎖,讓家人或朋友在知道密碼的情況下解除報(bào)警,以防誤報(bào)的情況發(fā)生。我認(rèn)為,在這次課

39、程設(shè)計(jì)中,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在課程設(shè)計(jì)上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來(lái)也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂(lè),找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國(guó)提倡的艱苦奮斗一樣,我們都可以在設(shè)計(jì)結(jié)束之后變的更加成熟,會(huì)面對(duì)需要面對(duì)的事情。 此次設(shè)計(jì)也讓我明白了思路即出路,有什么不懂不明白的地方要及時(shí)請(qǐng)教老師或者和同學(xué)多討論,同時(shí)也上網(wǎng)查詢(xún)有關(guān)的內(nèi)容,只要認(rèn)真鉆研,動(dòng)腦思考,動(dòng)手實(shí)踐,就沒(méi)有弄不懂的知識(shí),而通過(guò)這次設(shè)計(jì)讓

40、我們收獲頗豐。7參考文獻(xiàn)1張洪潤(rùn)等.單片機(jī)應(yīng)用設(shè)計(jì)200例(上)M. 北京航空航天大學(xué)出版社,2006年7月.2周潤(rùn)景.Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例M.電子工業(yè)出版社,2006年1月.3張志良.單片機(jī)原理與控制技術(shù)(第二版)M.機(jī)械工業(yè)出版社,2007年1月.4張大明編著.單片機(jī)控制實(shí)訓(xùn)指導(dǎo)及綜合應(yīng)用實(shí)例M.北京:機(jī)械工業(yè)出版社,2007年3月.5蔡方凱.單片機(jī)原理及基于單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)M.中國(guó)水利水電出版社,2007年4月.附錄資料:不需要的可以自行刪除C語(yǔ)言中如何獲取時(shí)間?精度如何?1 使用time_t time( time_t * timer ) 精確到秒

41、2 使用clock_t clock() 得到的是CPU時(shí)間精確到1/CLOCKS_PER_SEC秒3 計(jì)算時(shí)間差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount() 精確到毫秒5 如果使用MFC的CTime類(lèi),可以用CTime:GetCurrentTime() 精確到秒6 要獲取高精度時(shí)間,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)獲取系統(tǒng)的計(jì)數(shù)器的頻率BOOL QueryPerformanceCounter(LARGE

42、_INTEGER *lpPerformanceCount)獲取計(jì)數(shù)器的值然后用兩次計(jì)數(shù)器的差除以Frequency就得到時(shí)間。7 Multimedia Timer FunctionsThe following functions are used with multimedia timers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime/*/用標(biāo)準(zhǔn)C實(shí)現(xiàn)獲取當(dāng)前系統(tǒng)時(shí)間的函數(shù)一.time()函數(shù)time(&rawtime)函數(shù)獲取當(dāng)前時(shí)間距1970年1月1日的秒數(shù),以秒計(jì)數(shù)單位,存于rawtime 中。#inclu

43、de time.hvoid main ()time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( 007The current date/time is: %s, asctime (timeinfo) );exit(0);=#include - 必須的時(shí)間函數(shù)頭文件time_t - 時(shí)間類(lèi)型(time.h 定義是typedef long time_t; 追根溯源,time_t是long)struct tm - 時(shí)間結(jié)構(gòu),time.h 定義如下:int tm_

44、sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;time ( &rawtime ); - 獲取時(shí)間,以秒計(jì),從1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); - 轉(zhuǎn)為當(dāng)?shù)貢r(shí)間,tm 時(shí)間結(jié)構(gòu)asctime ()- 轉(zhuǎn)為標(biāo)準(zhǔn)ASCII時(shí)間格式:星期 月 日 時(shí):分:秒 年二.clock()函數(shù),用clock()函數(shù),得到系統(tǒng)啟動(dòng)以后的毫秒級(jí)時(shí)間,然后除以CLOCKS_PER_SEC,就可以換成“秒”,標(biāo)準(zhǔn)c

45、函數(shù)。clock_t clock ( void );#includeclock_t t = clock();long sec = t / CLOCKS_PER_SEC;他是記錄時(shí)鐘周期的,實(shí)現(xiàn)看來(lái)不會(huì)很精確,需要試驗(yàn)驗(yàn)證;三.gettime(&t); 據(jù)說(shuō)tc2.0的time結(jié)構(gòu)含有毫秒信息#include#includeint main(void)struct time t;gettime(&t);printf(The current time is: -:d:d.dn,t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);return 0;time 是一個(gè)結(jié)構(gòu)

46、體, 其中成員函數(shù) ti_hund 是毫秒。四.GetTickCount(),這個(gè)是windows里面常用來(lái)計(jì)算程序運(yùn)行時(shí)間的函數(shù);DWORD dwStart = GetTickCount();/這里運(yùn)行你的程序代碼DWORD dwEnd = GetTickCount();則(dwEnd-dwStart)就是你的程序運(yùn)行時(shí)間, 以毫秒為單位這個(gè)函數(shù)只精確到55ms,1個(gè)tick就是55ms。五.timeGetTime()t,imeGetTime()基本等于GetTickCount(),但是精度更高DWORD dwStart = timeGetTime();/這里運(yùn)行你的程序代碼DWORD dw

47、End = timeGetTime();則(dwEnd-dwStart)就是你的程序運(yùn)行時(shí)間, 以毫秒為單位雖然返回的值單位應(yīng)該是ms,但傳說(shuō)精度只有10ms。=/*Unix#unix時(shí)間相關(guān),也是標(biāo)準(zhǔn)庫(kù)的/*1.timegm函數(shù)只是將struct tm結(jié)構(gòu)轉(zhuǎn)成time_t結(jié)構(gòu),不使用時(shí)區(qū)信息;time_t timegm(struct tm *tm);2.mktime使用時(shí)區(qū)信息time_t mktime(struct tm *tm);timelocal 函數(shù)是GNU擴(kuò)展的與posix函數(shù)mktime相當(dāng)time_t timelocal (struct tm *tm);3.gmtime函數(shù)只是

48、將time_t結(jié)構(gòu)轉(zhuǎn)成struct tm結(jié)構(gòu),不使用時(shí)區(qū)信息;struct tm * gmtime(const time_t *clock);4.localtime使用時(shí)區(qū)信息struct tm * localtime(const time_t *clock);1.time獲取時(shí)間,stime設(shè)置時(shí)間time_t t;t = time(&t);2.stime其參數(shù)應(yīng)該是GMT時(shí)間,根據(jù)本地時(shí)區(qū)設(shè)置為本地時(shí)間;int stime(time_t *tp)3.UTC=true 表示采用夏時(shí)制;4.文件的修改時(shí)間等信息全部采用GMT時(shí)間存放,不同的系統(tǒng)在得到修改時(shí)間后通過(guò)localtime轉(zhuǎn)換成本地時(shí)

49、間;5.設(shè)置時(shí)區(qū)推薦使用setup來(lái)設(shè)置;6.設(shè)置時(shí)區(qū)也可以先更變/etc/sysconfig/clock中的設(shè)置再將ln -fs /usr/share/zoneinfo/xxxx/xxx /etc/localtime 才能重效time_t只能表示68年的范圍,即mktime只能返回1970-2038這一段范圍的time_t看看你的系統(tǒng)是否有time_t64,它能表示更大的時(shí)間范圍/*windows#Window里面的一些不一樣的/*一.CTime () 類(lèi)VC編程一般使用CTime類(lèi) 獲得當(dāng)前日期和時(shí)間CTime t = GetCurrentTime();SYSTEMTIME 結(jié)構(gòu)包含毫秒信

50、息typedef struct _SYSTEMTIME WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WORD wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds; SYSTEMTIME, *PSYSTEMTIME;SYSTEMTIME t1;GetSystemTime(&t1)CTime curTime(t1);WORD ms = t1.wMilliseconds;SYSTEMTIME sysTm;:GetLocalTime(&sysTm);在time.h中的_strtime() /只能在w

51、indows中用char t11;_strtime(t);puts(t);/*獲得當(dāng)前日期和時(shí)間CTime tm=CTime:GetCurrentTime();CString str=tm.Format(%Y-%m-%d);在VC中,我們可以借助CTime時(shí)間類(lèi),獲取系統(tǒng)當(dāng)前日期,具體使用方法如下:CTime t = CTime:GetCurrentTime(); /獲取系統(tǒng)日期,存儲(chǔ)在t里面int d=t.GetDay(); /獲得當(dāng)前日期int y=t.GetYear(); /獲取當(dāng)前年份int m=t.GetMonth(); /獲取當(dāng)前月份int h=t.GetHour(); /獲取當(dāng)前

52、為幾時(shí)int mm=t.GetMinute(); /獲取當(dāng)前分鐘int s=t.GetSecond(); /獲取當(dāng)前秒int w=t.GetDayOfWeek(); /獲取星期幾,注意1為星期天,7為星期六二.CTimeSpan類(lèi)如果想計(jì)算兩段時(shí)間的差值,可以使用CTimeSpan類(lèi),具體使用方法如下:CTime t1( 1999, 3, 19, 22, 15, 0 );CTime t = CTime:GetCurrentTime();CTimeSpan span=t-t1; /計(jì)算當(dāng)前系統(tǒng)時(shí)間與時(shí)間t1的間隔int iDay=span.GetDays(); /獲取這段時(shí)間間隔共有多少天int

53、 iHour=span.GetTotalHours(); /獲取總共有多少小時(shí)int iMin=span.GetTotalMinutes();/獲取總共有多少分鐘int iSec=span.GetTotalSeconds();/獲取總共有多少秒三._timeb()函數(shù)_timeb定義在SYSTIMEB.H,有四個(gè)fieldsdstflagmillitmtimetimezonevoid _ftime( struct _timeb *timeptr );struct _timeb timebuffer;_ftime( &timebuffer );取當(dāng)前時(shí)間:文檔講可以到ms,有人測(cè)試,好象只能到1

54、6ms!四.設(shè)置計(jì)時(shí)器定義TIMER ID#define TIMERID_JISUANFANGSHI 2在適當(dāng)?shù)牡胤皆O(shè)置時(shí)鐘,需要開(kāi)始其作用的地方;SetTimer(TIMERID_JISUANFANGSHI,200,NULL);在不需要定時(shí)器的時(shí)候的時(shí)候銷(xiāo)毀掉時(shí)鐘KillTimer(TIMERID_JISUANFANGSHI);對(duì)應(yīng)VC程序的消息映射void CJisuan:OnTimer(UINT nIDEvent)switch(nIDEvent)#如何設(shè)定當(dāng)前系統(tǒng)時(shí)間windowsSYSTEMTIME m_myLocalTime,*lpSystemTime;m_myLocalTime.w

55、Year=2003;m_myLocalTime.wM;m_myLocalTime.wDay=1;m_myLocalTime.wHour=0;m_myLocalTime.wMinute=0;m_myLocalTime.wSec;m_myLocalTime.wMillisec;lpSystemTime=&m_myLocalTime;if( SetLocalTime(lpSystemTime) ) /此處換成 SetSystemTime( )也不行MessageBox(OK !);elseMessageBox(Error !);SYSTEMTIME m_myLocalTime,*lpSystemTi

56、me;m_myLocalTime.wYear=2003;m_myLocalTime.wM;m_myLocalTime.wDay=1;lpSystemTime=&m_myLocalTime;if( SetDate(lpSystemTime) ) /此處換成 SetSystemTime( )也不行MessageBox(OK !);elseMessageBox(Error !);本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:HYPERLINK /khuang2008/archive/2008/12/09/3483274.aspx/khuang2008/archive/2008/12/09/3483274.a

57、spx一種制作微秒級(jí)精度定時(shí)器的方法當(dāng)使用定時(shí)器時(shí),在很多情況下只用到毫秒級(jí)的時(shí)間間隔,所以只需用到下面的兩種常用方式就滿(mǎn)足要求了。一是用SetTimer函數(shù)建立一個(gè)定時(shí)器后,在程序中通過(guò)處理由定時(shí)器發(fā)送到線(xiàn)程消息隊(duì)列中的WM_TIMER消息,而得到定時(shí)的效果(退出程序時(shí)別忘了調(diào)用和SetTimer配對(duì)使用的KillTimer函數(shù))。二是利用GetTickCount函數(shù)可以返回自計(jì)算機(jī)啟動(dòng)后的時(shí)間,通過(guò)兩次調(diào)用GetTickCount函數(shù),然后控制它們的差值來(lái)取得定時(shí)效果,此方式跟第一種方式一樣,精度也是毫秒級(jí)的。用這兩種方式取得的定時(shí)效果雖然在許多場(chǎng)合已經(jīng)滿(mǎn)足實(shí)際的要求,但由于它們的精度只有

58、毫秒級(jí)的,而且在要求定時(shí)時(shí)間間隔小時(shí),實(shí)際定時(shí)誤差大。下面介紹一種能取得高精度定時(shí)的方法。在一些計(jì)算機(jī)硬件系統(tǒng)中,包含有高精度運(yùn)行計(jì)數(shù)器(high-resolution performance counter),利用它可以獲得高精度定時(shí)間隔,其精度與CPU的時(shí)鐘頻率有關(guān)。采用這種方法的步驟如下:1、首先調(diào)用QueryPerformanceFrequency函數(shù)取得高精度運(yùn)行計(jì)數(shù)器的頻率f。單位是每秒多少次(n/s),此數(shù)一般很大。2、在需要定時(shí)的代碼的兩端分別調(diào)用QueryPerformanceCounter以取得高精度運(yùn)行計(jì)數(shù)器的數(shù)值n1,n2。兩次數(shù)值的差值通過(guò)f換算成時(shí)間間隔,t=(n2

59、-n1)/f。下面舉一個(gè)例子來(lái)演示這種方法的使用及它的精確度。在VC 6.0 下用MFC建立一個(gè)對(duì)話(huà)框工程,取名為HightTimer.在對(duì)話(huà)框面板中控件的布局如下圖:其中包含兩個(gè)靜態(tài)文本框,兩個(gè)編輯框和兩個(gè)按紐。上面和下面位置的編輯框的ID分別為IDC_E_TEST和IDC_E_ACTUAL,通過(guò)MFC ClassWizard添加的成員變量也分別對(duì)應(yīng)為DWORD m_dwTest和DWORD m_dwAct. “退出”按紐的ID為IDOK,“開(kāi)始測(cè)試”按紐ID為IDC_B_TEST,用MFC ClassWizard添加此按紐的單擊消息處理函數(shù)如下:void CHightTimerDlg:On

60、BTest()/ TODO: Add your control notification handler code hereUpdateData(TRUE); /取輸入的測(cè)試時(shí)間值到與編輯框相關(guān)聯(lián)的成員變量m_dwTest中LARGE_INTEGER frequence;if(!QueryPerformanceFrequency( &frequence) /取高精度運(yùn)行計(jì)數(shù)器的頻率,若硬件不支持則返回FALSEMessageBox(Your computer hardware doesnt support the high-resolution performance counter,Not

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論