智能安防報(bào)警控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)軟件部分學(xué)士正文_第1頁(yè)
智能安防報(bào)警控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)軟件部分學(xué)士正文_第2頁(yè)
智能安防報(bào)警控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)軟件部分學(xué)士正文_第3頁(yè)
智能安防報(bào)警控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)軟件部分學(xué)士正文_第4頁(yè)
智能安防報(bào)警控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)軟件部分學(xué)士正文_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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.1課題背景隨著信息技術(shù)的發(fā)展和實(shí)際平安的需求,人們?cè)谛^(qū)樓道等公共地方都安裝智能安防系統(tǒng)進(jìn)行了平安布防。其主要目的是一旦有擔(dān)憂全的事務(wù)發(fā)生,就可以進(jìn)行自動(dòng)報(bào)警。目前,智能的安防系統(tǒng)主要是計(jì)算機(jī)和外圍設(shè)備以及軟硬結(jié)合的集成系統(tǒng)。計(jì)算機(jī)通過(guò)串并口的方式限制外圍相關(guān)設(shè)備,實(shí)現(xiàn)布防、檢測(cè)和報(bào)警。本文從實(shí)際應(yīng)用動(dòng)身,依據(jù)低成本、高性能、易維護(hù)和易升級(jí)的客戶要求,設(shè)計(jì)和實(shí)現(xiàn)一個(gè)基于WebService的智能安防報(bào)警系統(tǒng)。該系統(tǒng)以計(jì)算機(jī)為限制中心,通過(guò)并串口連接方式限制相關(guān)設(shè)備,實(shí)現(xiàn)了現(xiàn)場(chǎng)監(jiān)控、實(shí)時(shí)錄像和自動(dòng)報(bào)警。同時(shí),系統(tǒng)的開(kāi)放式的對(duì)外接口便于客戶端的多樣化和和其他應(yīng)用系統(tǒng)進(jìn)行集成。實(shí)踐證明,本文的思路和設(shè)計(jì)是可行的和有效的。1.2國(guó)內(nèi)外探討現(xiàn)狀計(jì)算機(jī)的普及和信息技術(shù)的迅猛發(fā)展,人們己不滿足于傳統(tǒng)的居住環(huán)境,對(duì)家庭及住宅小區(qū)提出了更高的要求,智能化被引入家庭,并快速在世界各地發(fā)展起來(lái)。人們對(duì)居住環(huán)境要求的日見(jiàn)增高,體現(xiàn)在希望住宅不僅更便利、舒適而且更平安。家庭及住宅小區(qū)智能化的定義,在國(guó)際上至今尚無(wú)一樣的般認(rèn)為,在現(xiàn)代化的城鄉(xiāng)住宅小區(qū)內(nèi)綜合接受微型計(jì)算機(jī)、自動(dòng)限制、通信和網(wǎng)絡(luò)及智能卡等技術(shù),建立一個(gè)由住宅小區(qū)綜合物業(yè)管理中心和安防系統(tǒng)、信息通信服務(wù)和管理系統(tǒng)和家庭智能化系統(tǒng)組成的“三合一”住宅小區(qū)服務(wù)和管理集成系統(tǒng),最終目的是使每一住戶得到滿足其要求的最佳方案。1.3課題探討方向?yàn)闈M足住宅小區(qū)用戶的平安和科學(xué)系統(tǒng)化管理的須要,以及為了對(duì)隨時(shí)發(fā)生的狀況進(jìn)行全面、剛好的了解和駕馭,對(duì)意外狀況能快速做出正確推斷,并給出正確、快速的指揮和處理。整個(gè)限制系統(tǒng)運(yùn)用了單片機(jī)限制技術(shù)實(shí)現(xiàn)了對(duì)室內(nèi)完善的、全方位、立體的人體探測(cè)、煙霧探測(cè)、門窗防撬、玻璃裂開(kāi)探測(cè)、緊急呼救報(bào)警、室溫檢測(cè)剛好間顯示等功能。設(shè)計(jì)的報(bào)警限制系統(tǒng)技術(shù)先進(jìn)、性能牢靠、運(yùn)用特殊便利,充分體現(xiàn)了人性化設(shè)計(jì)的特點(diǎn),適合于小區(qū)和樓內(nèi)等場(chǎng)合集中的地方。2總體設(shè)計(jì)2.1設(shè)計(jì)要求本課題設(shè)計(jì)的單片機(jī)智能報(bào)警系統(tǒng)具有以下功能:實(shí)現(xiàn)對(duì)煙霧測(cè)量的實(shí)時(shí)監(jiān)測(cè)且具有光報(bào)警功能;實(shí)現(xiàn)對(duì)室溫檢測(cè)剛好間顯示的功能;本課題要完成微機(jī)監(jiān)控管理、單片機(jī)實(shí)時(shí)檢測(cè)處理等設(shè)計(jì);系統(tǒng)要有確定的可擴(kuò)展性和穩(wěn)定性;完成外文資料翻譯。3硬件總體設(shè)計(jì)LCD顯示模塊AT98C52LCD顯示模塊AT98C52煙霧檢測(cè)模塊煙霧檢測(cè)模塊報(bào)警指示燈模塊報(bào)警指示燈模塊溫度檢測(cè)模塊按鍵模塊時(shí)間顯示模塊溫度檢測(cè)模塊按鍵模塊時(shí)間顯示模塊圖3.1硬件總體設(shè)計(jì)框圖3.1系統(tǒng)硬件設(shè)計(jì)限制器模塊系統(tǒng)中的CPU接受AT89C52單片機(jī).它接受CHMOS工藝及高密度、非易失存儲(chǔ)技術(shù)制造,和805l引腳和指令系統(tǒng)完全兼容,其內(nèi)部包含:1個(gè)8位CPU;1個(gè)片內(nèi)振蕩器剛好鐘電路;8KBPEROM;3個(gè)16位定時(shí)肼數(shù)器;32個(gè)I/O口。1個(gè)全雙工串行口;8個(gè)中斷源。3.1.2按鍵和顯示模塊本系統(tǒng)從實(shí)際須要考慮,接受獨(dú)立式按鍵。共設(shè)4個(gè)按鍵,用于調(diào)整時(shí)間和設(shè)定鬧鈴,分別是:設(shè)置鍵、鬧鈴鍵、小時(shí)鍵、分鐘鍵。3.1.3煙霧檢測(cè)模塊火災(zāi)中氣體煙霧主要是CO,和CO2。TGS202氣體傳感器能探測(cè)C02,CO,甲烷等多種氣體,它靈敏度高,穩(wěn)定性好,適合于火災(zāi)中氣體的探測(cè)。當(dāng)TGS202探測(cè)到CO:或CO時(shí),傳感器的內(nèi)阻變小,輸出端電壓快速上升。選擇適當(dāng)?shù)碾娮枳柚?,使得?dāng)氣體濃度達(dá)到確定程度(如CO濃度達(dá)到0.06%)時(shí),輸出端獲得適當(dāng)?shù)碾妷?設(shè)為3v)。3.1.4溫度檢測(cè)模塊由于機(jī)艙空間比較大,本模塊設(shè)置了8個(gè)檢測(cè)點(diǎn)。通過(guò)多路選擇開(kāi)關(guān)CIM051對(duì)8個(gè)點(diǎn)的檢測(cè)信號(hào)進(jìn)行選通輸入。溫度傳感器接受美國(guó)Dallas半導(dǎo)體公司的DSl8820。它接受l—Wire總線技術(shù),將地址線、數(shù)據(jù)線、限制線合為一根信號(hào)線,允許在這根信號(hào)線上掛接多個(gè)1-Wire總線器件;接受特有的溫度測(cè)量技術(shù):可供應(yīng)9-12位(二進(jìn)制)數(shù)據(jù)來(lái)指示傳感器溫度;在整個(gè)溫度測(cè)量范圍內(nèi)具有±2叱的精度;很簡(jiǎn)潔干脆讀取被測(cè)溫度值,并且電路比較簡(jiǎn)潔,軟件設(shè)計(jì)也比較簡(jiǎn)潔。AT89C52AT89C52為8位通用微處理器,接受工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上和通用的8xc52相同,其主要用于會(huì)聚調(diào)整時(shí)的功能限制。功能包括對(duì)會(huì)聚主IC內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會(huì)聚調(diào)整限制,會(huì)聚測(cè)試圖限制,紅外遙控信號(hào)IR的接收解碼及和主板CPU通信等。主要管腳有:XTAL1(19腳)和XTAL2(18腳)為振蕩器輸入輸出端口,外接12MHz晶振。RST/Vpd(9腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40腳)和VSS(20腳)為供電端口,分別接+5V電源的正負(fù)端。P0~P3為可編程通用I/O腳,其功能用途由軟件定義,在本設(shè)計(jì)中,P0端口(32~39腳)被定義為N1功能限制端口,分別和N1的相應(yīng)功能管腳相連接,13腳定義為IR輸入端,10腳和11腳定義為I2C總線限制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12腳、27腳及28腳定義為握手信號(hào)功能端口,連接主板CPU的相應(yīng)功能端,用于當(dāng)前制式的檢測(cè)及會(huì)聚調(diào)整狀態(tài)進(jìn)入的限制功能。(1)P0口P0口是一組8位漏極開(kāi)路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸取電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口P0寫“1”時(shí),可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。(2)P1口P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸取或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口運(yùn)用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。和AT89C51不同之處是,P1.0和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),F(xiàn)lash編程和程序校驗(yàn)期間,P1接收低8位地址。表.P1.0和P1.1的其次功能引腳號(hào)功能特性P1.0T2,時(shí)鐘輸出P1.1T2EX(定時(shí)/計(jì)數(shù)器2)(3)P2口P2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸取或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口P2寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口運(yùn)用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX@DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX@RI指令)時(shí),P2口輸出P2鎖存器的內(nèi)容。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和一些限制信號(hào)。(4)P3口P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸取或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的其次功能P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的限制信號(hào)。(5)數(shù)據(jù)儲(chǔ)存器AT89C52有256個(gè)字節(jié)的內(nèi)部RAM,80H-FFH高128個(gè)字節(jié)和特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM和特殊功能寄存器的地址是相同的,但物理上它們是分開(kāi)的。當(dāng)一條指令訪問(wèn)7FH以上的內(nèi)部地址單元時(shí),指令中運(yùn)用的尋址方式是不同的,也即尋址方式確定是訪問(wèn)高128字節(jié)RAM還是訪問(wèn)特殊功能寄存器。假如指令是干脆尋址方式則為訪問(wèn)特殊功能寄存器。例如,下面的干脆尋址指令訪問(wèn)特殊功能寄存器0A0H(即P2口)地址單元。MOV0A0H,#data間接尋址指令訪問(wèn)高128字節(jié)RAM,例如,下面的間接尋址指令中,R0的內(nèi)容為0A0H,則訪問(wèn)數(shù)據(jù)字節(jié)地址為0A0H,而不是P2口(0A0H)。MOV@R0,#data堆棧操作也是間接尋址方式,所以,高128位數(shù)據(jù)RAM亦可作為堆棧區(qū)運(yùn)用。·定時(shí)器0和定時(shí)器1:AT89C52的定時(shí)器0和定時(shí)器1的工作方式和AT89C51相同。(6)定時(shí)器2定時(shí)器2是一個(gè)16位定時(shí)/計(jì)數(shù)器。它既可當(dāng)定時(shí)器運(yùn)用,也可作為外部事務(wù)計(jì)數(shù)器運(yùn)用,其工作方式由特殊功能寄存器T2CON(如表)的C/T2位選擇。定時(shí)器2有三種工作方式:捕獲方式,自動(dòng)重裝載(向上或向下計(jì)數(shù))方式和波特率發(fā)生器方式,工作方式由T2CON的限制位來(lái)選擇。定時(shí)器2由兩個(gè)8位寄存器TH2和TL2組成,在定時(shí)器工作方式中,每個(gè)機(jī)器周期TL2寄存器的值加1,由于一個(gè)機(jī)器周期由12個(gè)振蕩時(shí)鐘構(gòu)成,因此,計(jì)數(shù)速率為振蕩頻率的1/12。在計(jì)數(shù)工作方式時(shí),當(dāng)T2引腳上外部輸入信號(hào)產(chǎn)生由1至0的下降沿時(shí),寄存器的值加1,在這種工作方式下,每個(gè)機(jī)器周期的5SP2期間,對(duì)外部輸入進(jìn)行采樣。若在第一個(gè)機(jī)器周期中采到的值為1,而在下一個(gè)機(jī)器周期中采到的值為0,則在緊跟著的下一個(gè)周期的S3P1期間寄存器加1。由于識(shí)別1至0的跳變須要2個(gè)機(jī)器周期(24個(gè)振蕩周期),因此,最高計(jì)數(shù)速率為振蕩頻率的1/24。為確保采樣的正確性,要求輸入的電平在變更前至少保持一個(gè)完整周期的時(shí)間,以保證輸入信號(hào)至少被采樣一次。在捕獲方式下,通過(guò)T2CON限制位EXEN2來(lái)選擇兩種方式。假如EXEN2=0,定時(shí)器2是一個(gè)16位定時(shí)器或計(jì)數(shù)器,計(jì)數(shù)溢出時(shí),對(duì)T2CON的溢出標(biāo)記TF2置位,同時(shí)激活中斷。假如EXEN2=1,定時(shí)器2完成相同的操作,而當(dāng)T2EX引腳外部輸入信號(hào)發(fā)生1至0負(fù)跳變時(shí),也出現(xiàn)TH2和TL2中的值分別被捕獲到RCAP2H和RCAP2L中。另外,T2EX引腳信號(hào)的跳變使得T2CON中的EXF2置位,和TF2相仿,EXF2也會(huì)激活中斷。當(dāng)定時(shí)器2工作于16位自動(dòng)重裝載方式時(shí),能對(duì)其編程為向上或向下計(jì)數(shù)方式,這個(gè)功能可通過(guò)特殊功能寄存器T2CON(見(jiàn)表5)的DCEN位(允許向下計(jì)數(shù))來(lái)選擇的。復(fù)位時(shí),DCEN位置“0”,定時(shí)器2默認(rèn)設(shè)置為向上計(jì)數(shù)。當(dāng)DCEN置位時(shí),定時(shí)器2既可向上計(jì)數(shù)也可向下計(jì)數(shù),這取決于T2EX引腳的值,參見(jiàn)圖5,當(dāng)DCEN=0時(shí),定時(shí)器2自動(dòng)設(shè)置為向上計(jì)數(shù),在這種方式下,T2CON中的EXEN2限制位有兩種選擇,若EXEN2=0,定時(shí)器2為向上計(jì)數(shù)至0FFFFH溢出,置位TF2激活中斷,同時(shí)把16位計(jì)數(shù)寄存器RCAP2H和RCAP2L重裝載,RCAP2H和RCAP2L的值可由軟件預(yù)置。若EXEN2=1,定時(shí)器2的16位重裝載由溢出或外部輸入端T2EX從1至0的下降沿觸發(fā)。這個(gè)脈沖使EXF2置位,假如中斷允許,同樣產(chǎn)生中斷。定時(shí)器2的中斷入口地址是:002BH——0032H。當(dāng)DCEN=1時(shí),允許定時(shí)器2向上或向下計(jì)數(shù),如圖6所示。這種方式下,T2EX引腳限制計(jì)數(shù)器方向。T2EX引腳為邏輯“1”時(shí),定時(shí)器向上計(jì)數(shù),當(dāng)計(jì)數(shù)0FFFFH向上溢出時(shí),置位TF2,同時(shí)把16位計(jì)數(shù)寄存器RCAP2H和RCAP2L重裝載到TH2和TL2中。T2EX引腳為邏輯“0”時(shí),定時(shí)器2向下計(jì)數(shù),當(dāng)TH2和TL2中的數(shù)值等于RCAP2H和RCAP2L中的值時(shí),計(jì)數(shù)溢出,置位TF2,同時(shí)將0FFFFH數(shù)值重新裝入定時(shí)寄存器中。當(dāng)定時(shí)/計(jì)數(shù)器2向上溢出或向下溢出時(shí),置位EXF2位。當(dāng)T2CON(表3)中的TCLK和RCLK置位時(shí),定時(shí)/計(jì)數(shù)器2作為波特率發(fā)生器運(yùn)用。假如定時(shí)/計(jì)數(shù)器2作為發(fā)送器或接收器,其發(fā)送和接收的波特率可以是不同的,定時(shí)器1用于其它功能,如圖7所示。若RCLK和TCLK置位,則定時(shí)器2工作于波特率發(fā)生器方式。波特率發(fā)生器的方式和自動(dòng)重裝載方式相仿,在此方式下,TH2翻轉(zhuǎn)使定時(shí)器2的寄存器用RCAP2H和RCAP2L中的16位數(shù)值重新裝載,該數(shù)值由軟件設(shè)置。在方式1和方式3中,波特率由定時(shí)器2的溢出速率依據(jù)下式確定:方式1和3的波特率=定時(shí)器的溢出率/16定時(shí)器既能工作于定時(shí)方式也能工作于計(jì)數(shù)方式,在大多數(shù)的應(yīng)用中,是工作在定時(shí)方式(C/T2=0)。定時(shí)器2作為波特率發(fā)生器時(shí),和作為定時(shí)器的操作是不同的,通常作為定時(shí)器時(shí),在每個(gè)機(jī)器周期(1/12振蕩頻率)寄存器的值加1,而作為波特率發(fā)生器運(yùn)用時(shí),在每個(gè)狀態(tài)時(shí)間(1/2振蕩頻率)寄存器的值加1。波特率的計(jì)算公式如下:方式1和3的波特率=振蕩頻率/{32*[65536-(RCP2H,RCP2L)]}式中(RCAP2H,RCAP2L)是RCAP2H和RCAP2L中的16位無(wú)符號(hào)數(shù)。定時(shí)器2作為波特率發(fā)生器運(yùn)用的電路如圖7所示。T2CON中的RCLK或TCLK=1時(shí),波特率工作方式才有效。在波特率發(fā)生器工作方式中,TH2翻轉(zhuǎn)不能使TF2置位,故而不產(chǎn)生中斷。但若EXEN2置位,且T2EX端產(chǎn)生由1至0的負(fù)跳變,則會(huì)使EXF2置位,此時(shí)并不能將(RCAP2H,RCAP2L)的內(nèi)容重新裝入TH2和TL2中。所以,當(dāng)定時(shí)器2作為波特率發(fā)生器運(yùn)用時(shí),T2EX可作為附加的外部中斷源來(lái)運(yùn)用。須要留意的是,當(dāng)定時(shí)器2工作于波特率器時(shí),作為定時(shí)器運(yùn)行(TR2=1)時(shí),并不能訪問(wèn)TH2和TL2。因?yàn)榇藭r(shí)每個(gè)狀態(tài)時(shí)間定時(shí)器都會(huì)加1,對(duì)其讀寫將得到一個(gè)不確定的數(shù)值。然而,對(duì)RCAP2則可讀而不行寫,因?yàn)閷懭氩僮鲗⑹侵匦卵b載,寫入操作可能令寫和/或重裝載出錯(cuò)。在訪問(wèn)定時(shí)器2或RCAP2寄存器之前,應(yīng)將定時(shí)器關(guān)閉(清除TR2)。(7)時(shí)鐘振蕩器AT89C52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器和作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器,振蕩電路參見(jiàn)圖10。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1、C2雖然沒(méi)有特殊嚴(yán)格的要求,但電容容量的大小會(huì)略微影響振蕩頻率的凹凸、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,假如運(yùn)用石英晶體,我們舉薦電容運(yùn)用30pF±10pF,而如運(yùn)用陶瓷諧振器建議選擇40pF±10pF。用戶也可以接受外部時(shí)鐘。接受外部時(shí)鐘的電路如圖10右圖所示。這種狀況下,外部時(shí)鐘脈沖接到XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則懸空。由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以對(duì)外部時(shí)鐘信號(hào)的占空比沒(méi)有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。(8)中斷AT89C52共有6個(gè)中斷向量:兩個(gè)外中斷(INT0和INT1),3個(gè)定時(shí)器中斷(定時(shí)器0、1、2)和串行口中斷。全部這些中斷源如圖9所示。這些中斷源可通過(guò)分別設(shè)置專用寄存器IE的置位或清0來(lái)限制每一個(gè)中斷的允許或禁止。IE也有一個(gè)總禁止位EA,它能限制全部中斷的允許或禁止。留意表5中的IE.6為保留位,在AT89C51中IE.5也是保留位。程序員不應(yīng)將“1”寫入這些位,它們是將來(lái)AT89系列產(chǎn)品作為擴(kuò)展用的。定時(shí)器2的中斷是由T2CON中的TF2和EXF2邏輯或產(chǎn)生的,當(dāng)轉(zhuǎn)向中斷服務(wù)程序時(shí),這些標(biāo)記位不能被硬件清除,事實(shí)上,服務(wù)程序需確定是TF2或EXF2產(chǎn)生中斷,而由軟件清除中斷標(biāo)記位。定時(shí)器0和定時(shí)器1的標(biāo)記位TF0和TF1在定時(shí)器溢出那個(gè)機(jī)器周期的S5P2狀態(tài)置位,而會(huì)在下一個(gè)機(jī)器周期才查詢到該中斷標(biāo)記。然而,定時(shí)器2的標(biāo)記位TF2在定時(shí)器溢出的那個(gè)機(jī)器周期的S2P2狀態(tài)置位,并在同一個(gè)機(jī)器周期內(nèi)查詢到該標(biāo)記。(9)數(shù)據(jù)查詢AT89C52單片機(jī)用DataPalling表示一個(gè)寫周期結(jié)束為特征,在一個(gè)寫周期中,如需讀取最終寫入的一個(gè)字節(jié),則讀出的數(shù)據(jù)的最高位(P0.7)是原來(lái)寫入字節(jié)最高位的反碼。寫周期完成后,所輸出的數(shù)據(jù)是有效的數(shù)據(jù),即可進(jìn)入下一個(gè)字節(jié)的寫周期,寫周期起先后,DataPalling可能隨時(shí)有效。Ready/Busy:字節(jié)編程的進(jìn)度可通過(guò)“RDY/BSY輸出信號(hào)監(jiān)測(cè),編程期間,ALE變?yōu)楦唠娖健癏”后,P3.4(RDY/BSY)端電平被拉低,表示正在編程狀態(tài)(忙狀態(tài))。編程完成后,P3.4變?yōu)楦唠娖奖硎緶?zhǔn)備就緒狀態(tài)。程序校驗(yàn):假如加密位LB1、LB2沒(méi)有進(jìn)行編程,則代碼數(shù)據(jù)可通過(guò)地址和數(shù)據(jù)線讀回原編寫的數(shù)據(jù),接受如圖12的電路。加密位不行干脆校驗(yàn),加密位的校驗(yàn)可通過(guò)對(duì)存儲(chǔ)器的校驗(yàn)和寫入狀態(tài)來(lái)驗(yàn)證。芯片擦除:利用限制信號(hào)的正確組合(表6)并保持ALE/PROG引腳10mS的低電平脈沖寬度即可將PEROM陣列(4k字節(jié))和三個(gè)加密位整片擦除,代碼陣列在片擦除操作中將任何非空單元寫入“1”,這步驟需再編程之前進(jìn)行。讀片內(nèi)簽名字節(jié):AT89C52單片機(jī)內(nèi)有3個(gè)簽名字節(jié),地址為030H、031H和032H。用于聲明該器件的廠商、型號(hào)和編程電壓。讀AT89C52簽名字節(jié)需將P3.6和P3.7置邏輯低電平,讀簽名字節(jié)的過(guò)程和單元030H、031H及032H的正常校驗(yàn)相仿,只返回值意義如下:(030H)=1EH聲明產(chǎn)品由ATMEL公司制造。(031H)=52H聲明為AT89C52單片機(jī)。(032H)=FFH聲明為12V編程電壓。(032H)=05H聲明為5V編程電壓。3.1.6DS18B20(1)DS18B20的主要特性1.1、適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電1.2、獨(dú)特的單線接口方式,DS18B20在和微處理器連接時(shí)僅須要一條口線即可實(shí)現(xiàn)微處理器和DS18B20的雙向通訊1.3、DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫1.4、DS18B20在運(yùn)用中不須要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)1.5、溫范圍-55℃~+125℃,在-10~+85℃時(shí)精度為±0.5℃1.6、可編程的辨別率為9~12位,對(duì)應(yīng)的可辨別溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測(cè)溫1.7、在9位辨別率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位辨別率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快1.8、負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。(2)DS18B20的外形和內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。4軟件設(shè)計(jì)軟件的設(shè)計(jì)是此次畢業(yè)設(shè)計(jì)的重中之重。它的好壞干脆關(guān)系畢業(yè)設(shè)計(jì)的成功和否。軟件編程用C語(yǔ)言完成的,須要能嫻熟的駕馭C語(yǔ)言,還要熟悉AT89C52單片機(jī)。從程序流程圖、通信協(xié)議、編寫程序、編譯、到最終的調(diào)試,過(guò)程很困難的。下面作詳細(xì)介紹:系統(tǒng)軟件程序包括主程序和中斷服務(wù)子程序。主程序的功能是完成系統(tǒng)的初始化、信號(hào)采集及處理、信息顯示、煙霧超限報(bào)警、溫度測(cè)量顯示剛好間的顯示。依據(jù)系統(tǒng)工作特點(diǎn),程序接受結(jié)構(gòu)化的軟件設(shè)計(jì)方法。4.1總體框圖依據(jù)方案的設(shè)計(jì)思想,我們從中就可以得到了煙霧報(bào)警系統(tǒng)的總體框圖如圖4-1所示下:ADC0804轉(zhuǎn)換器煙霧傳感器煙霧ADC0804轉(zhuǎn)換器煙霧傳感器煙霧聲光報(bào)警AT89C52溫度傳感器溫度聲光報(bào)警AT89C52溫度傳感器溫度時(shí)間及鬧鈴AND_4時(shí)間及鬧鈴AND_4圖4-1煙霧報(bào)警系統(tǒng)的總體框圖運(yùn)用AT89C52單片機(jī),選用煙霧傳感器作為敏感元件,利用ADC0804轉(zhuǎn)換器和聲光報(bào)警電路,開(kāi)發(fā)了可用于家庭或小型單位火災(zāi)報(bào)警的煙霧報(bào)警器。整個(gè)設(shè)計(jì)由4大部分構(gòu)成:煙霧傳感器、A/D轉(zhuǎn)換電路、AT89C52單片機(jī)、聲光報(bào)警電路。其中,煙霧傳感器是將現(xiàn)場(chǎng)溫度、煙霧等非電信號(hào)轉(zhuǎn)化為電信號(hào);轉(zhuǎn)換電路是將完成將煙霧傳感器輸出的模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換。聲光報(bào)警模塊由單片機(jī)和報(bào)警電路組成,由單片機(jī)限制實(shí)現(xiàn)不同的聲光報(bào)警功能。綜合考慮各因素,本文選擇NIS-09煙霧傳感器用作采集系統(tǒng)的敏感元件?;馂?zāi)中氣體煙霧主要是CO2和CO。NIS-09煙霧傳感器能探測(cè)CO2,CO,甲烷、煤氣等多種氣體,它靈敏度高,穩(wěn)定性好,適合于火災(zāi)中氣體的探測(cè)。A/D轉(zhuǎn)換器選用ADC0804轉(zhuǎn)換器。4.2主程序的設(shè)計(jì)主程序的主要功能是負(fù)責(zé)煙霧超限的實(shí)時(shí)顯示及報(bào)警、溫度測(cè)量顯示剛好間的顯示,對(duì)超過(guò)預(yù)設(shè)警戒線的濃度進(jìn)行報(bào)警。其流程圖如圖4.2所示:起先起先系統(tǒng)初始化調(diào)用煙霧采集子程序集數(shù)據(jù)處理是否超過(guò)3.5v報(bào)警限制子程序調(diào)用顯示子程序調(diào)用溫度數(shù)據(jù)采集剛好間數(shù)據(jù)采集溫度、時(shí)間顯示聲提示返回時(shí)間及鬧鈴設(shè)定調(diào)用鬧鐘修改時(shí)間是否是否是否圖4.2主程序流程圖LCD程序如下:/*************************主函數(shù)************************/#include<reg52.h>#include"public.h"#include"lcd1602.h"#defineucharunsignedchar#defineuintunsignedintvoidwrite_com(ucharcom) //寫指令(command)函數(shù){ LCDRS=0; //RS=0表示寫指令 P1=com; //把指令通過(guò)P1口賦給LCD1602 delay(500); LCDEN=1; //為使EN產(chǎn)生一個(gè)上升沿。 delay(500); LCDEN=0; //EN產(chǎn)生一個(gè)上升沿!}voidwrite_data(uchardat) //寫數(shù)據(jù)(data)函數(shù){ LCDRS=1; //RS=1表示寫數(shù)據(jù) P1=dat; //把數(shù)據(jù)通過(guò)P1口賦給LCD1602 delay(500); LCDEN=1; //為使EN產(chǎn)生一個(gè)上升沿。 delay(500); LCDEN=0; //EN產(chǎn)生一個(gè)上升沿!}voidinit(void) //初始化函數(shù){ LCDEN=0; //將使能信號(hào)拉低 write_com(0x38);//寫指令0x38:顯示模式設(shè)置 write_com(0x0c);//寫指令0x0e:開(kāi)顯示,不顯示光標(biāo),光標(biāo)不閃爍 write_com(0x06);//寫指令0x06:當(dāng)寫一個(gè)字節(jié)后地址指針加1,屏幕不移動(dòng) write_com(0x80);//寫指令0x80:數(shù)據(jù)地址指針設(shè)置 }voidlcd_str(uchar*str){ while(*str) { write_data(*str); str++; }}5仿真程序調(diào)試5.1編程KEIL環(huán)境介紹Keil

C51是美國(guó)Keil

Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),和匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再運(yùn)用C來(lái)開(kāi)發(fā),體會(huì)更加深刻。Keil

C51軟件供應(yīng)豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil

C51生成的目標(biāo)代碼效率特殊之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,簡(jiǎn)潔理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。KEILC51標(biāo)準(zhǔn)C編譯器為80C51微限制器的軟件開(kāi)發(fā)供應(yīng)了C語(yǔ)言環(huán)境,同時(shí)保留了匯編代碼高效,快速的特點(diǎn)。C51編譯器的功能不斷增加,更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision2的集成開(kāi)發(fā)環(huán)境中,這個(gè)集成開(kāi)發(fā)環(huán)境包含:編譯器,匯編

器,實(shí)時(shí)操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。uVision2

IDE可為它們供應(yīng)單一而靈敏的開(kāi)發(fā)環(huán)境。5.2程序流程在整個(gè)程序流程中,經(jīng)常要限制一部分指令重復(fù)執(zhí)行若干次,以便簡(jiǎn)短的程序完成大量的處理任務(wù)。這種按某種限制規(guī)律重復(fù)執(zhí)行的程序稱為循環(huán)程序。循環(huán)程序有先執(zhí)行后推斷何先推斷后執(zhí)行兩種基本結(jié)構(gòu)。而我們要選用的是先推斷后執(zhí)行。因?yàn)闊熿F傳感器的輸出電壓量為5.6~6.0v之間。依據(jù)單極性輸入的轉(zhuǎn)換關(guān)系D=4096VIN/VFS,計(jì)算出它的數(shù)字量最小值:D1=4096×5.6/10=2294;最大值D2=4096×6/10=2458.由于AD574A輸出12位數(shù)據(jù),所以當(dāng)單片機(jī)讀取轉(zhuǎn)換結(jié)果時(shí),應(yīng)分兩次進(jìn)行:當(dāng)A0=0時(shí),讀取高8位;當(dāng)A0=1時(shí),讀取低4位。AD574A的STS和80C51的P1.0線相連,故接受查詢方式讀取轉(zhuǎn)換結(jié)果。我們將A/D轉(zhuǎn)換器讀取結(jié)果存入17H、18H、19H、20H單元中。其中17H存入的是較小數(shù)D1的高八位10011111,18H存入的是較小數(shù)D1的低四位0110;19H存入的是較大數(shù)的高八位10011001,20H存入的是較大值的低四位1010。起先初始化調(diào)用A/D轉(zhuǎn)換子程序是否超過(guò)3.5v起先初始化調(diào)用A/D轉(zhuǎn)換子程序是否超過(guò)3.5v聲報(bào)警結(jié)束否是圖5.1程序流程圖5.3Keil編程步棸打開(kāi)Keil軟件新建工程工程——新建工程——?jiǎng)?chuàng)建文件夾、命名——為目標(biāo)選擇設(shè)備——Atmel89c52新建文件新建文件——保存到創(chuàng)建文件夾、命名:“.asm”“.c”——錄入程序——保存5.3.4添加文件到組右擊目標(biāo)文件1下的源程序組1——添加文件到組1——選擇已生成的*.asm(或*.c)文件、單擊添加——關(guān)閉5.3.5生成.hex文件在目標(biāo)文件夾1右擊——為目標(biāo)文件夾選擇屬性——輸出——生成hex文件畫勾——確定5.4protues仿真聲光報(bào)警模塊由單片機(jī)的P2口的P2.5限制1個(gè)發(fā)光二極管,予以光指示,如下圖4.5所示。當(dāng)這些輸出端輸出電壓大于4v時(shí),對(duì)應(yīng)的信號(hào)燈便會(huì)發(fā)光報(bào)警。圖5.1發(fā)光報(bào)警器聲光報(bào)警信號(hào)由PNP三極管放大、蜂鳴器、電阻等組成。聲光報(bào)警電路在單片機(jī)P3.7口的限制下,可以實(shí)現(xiàn)當(dāng)時(shí)間值達(dá)到鬧鈴值時(shí)報(bào)警。詳細(xì)接線圖見(jiàn)下圖所示:圖5.2鬧鈴報(bào)警器下圖為時(shí)間設(shè)置鍵及鬧鈴設(shè)置鍵的接線圖:圖5.3時(shí)間及鬧鈴設(shè)置5.4.2LCD顯示模塊本次設(shè)計(jì)要顯示煙霧電壓值、溫度值、時(shí)間值、鬧鈴值,本設(shè)計(jì)就接受了動(dòng)態(tài)顯示,在動(dòng)態(tài)顯示方式時(shí),本次設(shè)計(jì)接受AT89C52單片機(jī)的P1口作為數(shù)據(jù)輸入口。圖5.4LCD顯示模塊5.4.3A/D轉(zhuǎn)換電路A/D轉(zhuǎn)換電路接受了常用的8位8通道數(shù)模轉(zhuǎn)換專用芯片ADC0804,是因?yàn)槠渌俣容^高、功耗低,在低分辯率(<12位)時(shí)價(jià)格便宜,但高精度(>12位)時(shí)價(jià)格很高。通過(guò)和其他型號(hào)的轉(zhuǎn)換電路比較合本次設(shè)計(jì)參數(shù)的要求:測(cè)量范圍(0-1000ppm),測(cè)量精度(10ppm),選用精度要求不高的、價(jià)格低廉的逐次比較型ADC0804,其電路原理圖如圖5.5所示。氣體傳感器的輸出接到ADC0804的IN0。ADC0804的通道選擇地址A,B,C分別接地。當(dāng)P2.7=0時(shí),和寫信號(hào)WR共同選通ADC0804。圖中ALE信號(hào)和SC信號(hào)連在一起,在WR信號(hào)的前沿寫入地址信號(hào),在其后沿啟動(dòng)轉(zhuǎn)換。由圖知,輸出地址7FFFH可選通通道IN0,實(shí)現(xiàn)對(duì)氣體傳感器輸出的模擬量進(jìn)行轉(zhuǎn)換。圖中ADC0804的轉(zhuǎn)換結(jié)束狀態(tài)信號(hào)EOC接到89C52的INT0引腳,當(dāng)A/D轉(zhuǎn)換完成后,EOC變?yōu)楦唠娖?,表示轉(zhuǎn)換結(jié)束,產(chǎn)生中斷。在中斷服務(wù)程序中,將轉(zhuǎn)換好的數(shù)據(jù)送到指定的存儲(chǔ)單元。P0P0ALEAT89C52/INT0/WRP2.7/RDD0-D7ACLOCKBADC0804CEOCSCV(+)ALEV(-)OEIN0氣體傳感器GND+5V圖5.5ADC0804和單片機(jī)接口原理圖圖5.6A/D轉(zhuǎn)換電路5.5軟件調(diào)試單片機(jī)的程序設(shè)計(jì)調(diào)試分為兩種,一種是運(yùn)用軟件模擬調(diào)試,意思就是用開(kāi)發(fā)單片機(jī)程序的計(jì)算機(jī)去模擬單片機(jī)的指令執(zhí)行,并虛擬單片機(jī)片內(nèi)資源,從而實(shí)現(xiàn)調(diào)試的目的,但是軟件調(diào)試存在一些問(wèn)題,如計(jì)算機(jī)本身是多任務(wù)系統(tǒng),劃分執(zhí)行時(shí)間片是由操作系統(tǒng)本身完成的,無(wú)法得到限制,這樣就無(wú)法實(shí)時(shí)的模擬單片機(jī)的執(zhí)行時(shí)序,也就是說(shuō),不行能像真正的單片機(jī)運(yùn)行環(huán)境那樣執(zhí)行的指令在同樣一個(gè)時(shí)間能完成(往往要完成的比單片機(jī)慢)。為了解決軟件調(diào)試的問(wèn)題,其次種是硬件調(diào)試,硬件調(diào)試其實(shí)也須要計(jì)算機(jī)軟件的協(xié)作,大致過(guò)程是這樣的:計(jì)算機(jī)軟件把編譯好的程序通過(guò)串行口、并行口或者USB口傳輸?shù)接布{(diào)試設(shè)備中(這個(gè)設(shè)備叫仿真器),仿真器仿真全部的單片機(jī)資源(全部的單片機(jī)接口,并且有真實(shí)的引腳輸出),仿真器可以接入實(shí)際的電路中,然后和單片機(jī)一樣執(zhí)行。同時(shí),仿真器也會(huì)返回單片機(jī)內(nèi)部?jī)?nèi)存和時(shí)序等狀況給計(jì)算機(jī)的幫助軟件,這樣,就可以在軟件里看到真實(shí)的執(zhí)行狀況。不僅如此,還可以通過(guò)計(jì)算機(jī)軟件實(shí)現(xiàn)斷點(diǎn)、單步、全速、運(yùn)行到光標(biāo)的常規(guī)調(diào)試手段。Proteus和其它單片機(jī)仿真軟件不同的是,它不僅能仿真單片機(jī)CPU的工作狀況,也能仿真單片機(jī)外圍電路或沒(méi)有單片機(jī)參和的其它電路的工作狀況。因此在仿真和程序調(diào)試時(shí),關(guān)切的不再是某些語(yǔ)句執(zhí)行時(shí)單片機(jī)寄存器和存儲(chǔ)器內(nèi)容的變更,而是從工程的角度干脆看程序運(yùn)行和電路工作的過(guò)程和結(jié)果。對(duì)于這樣的仿真試驗(yàn),從某種意義上講,是彌補(bǔ)了試驗(yàn)和工程應(yīng)用間脫節(jié)的沖突和現(xiàn)象??梢哉f(shuō)這個(gè)軟件特地應(yīng)付那些好學(xué)想偷賴的同學(xué)而設(shè)計(jì)的,假如沒(méi)有設(shè)備,沒(méi)有電子元件,對(duì)制作面包板等怕麻煩,就可以考慮這個(gè)軟件來(lái)實(shí)現(xiàn)直觀的仿真效果,當(dāng)然這個(gè)軟件的關(guān)鍵用途是給電子技術(shù)人員剛好解決理論和實(shí)際的問(wèn)題,可以快速測(cè)試某些常規(guī)理論電路并得出初步的結(jié)論。先依據(jù)設(shè)計(jì)的硬件電路畫出仿真電路,雙擊電路中的單片機(jī)AT89C52,彈出如圖如圖5.7的窗口,設(shè)置晶振頻率,加入HEX文件,點(diǎn)擊OK。然后點(diǎn)擊運(yùn)行,即可看到設(shè)計(jì)的電路的運(yùn)行結(jié)果。圖5.7設(shè)置晶振頻率和加入HEX文件圖5.8仿真運(yùn)行結(jié)論本文通過(guò)AT89C52單片機(jī)實(shí)現(xiàn)對(duì)室內(nèi)煙霧探測(cè)、溫度測(cè)量、時(shí)間顯示及鬧鈴設(shè)置的設(shè)計(jì)。利用煙霧傳感器、溫度傳感器對(duì)室內(nèi)煙霧、室內(nèi)溫度進(jìn)行采集,對(duì)采樣的數(shù)據(jù)進(jìn)行數(shù)字濾波由y=(1000/255)*x得出,adc采樣值除以255,得出實(shí)際的氣體濃度值。當(dāng)達(dá)到報(bào)警值時(shí),進(jìn)行相應(yīng)的報(bào)警,達(dá)到愛(ài)惜平安的目的。本系統(tǒng)由傳感器模塊,A/D轉(zhuǎn)換模塊,通行模塊,顯示模塊,報(bào)警模塊等幾部分組成。成功的對(duì)所編寫的程序?qū)崿F(xiàn)調(diào)試,基本達(dá)到既定的目標(biāo),本次設(shè)計(jì)探討取得確定的成果,但仍有不足,比如沒(méi)能夠很好的解決對(duì)報(bào)警后的后續(xù)愛(ài)惜工作,還有沒(méi)能通過(guò)實(shí)物實(shí)現(xiàn)軟硬聯(lián)調(diào),有些缺憾。此次設(shè)計(jì)考慮的狀況較簡(jiǎn),未對(duì)困難多變的現(xiàn)實(shí)狀況進(jìn)行全面分析,這些不足激勵(lì)著我應(yīng)接著努力學(xué)習(xí)和實(shí)踐。致謝經(jīng)過(guò)三個(gè)多月的設(shè)計(jì)和開(kāi)發(fā),本畢業(yè)設(shè)計(jì)已經(jīng)基本完成。通過(guò)本次畢業(yè)設(shè)計(jì),使我對(duì)單片機(jī)的了解進(jìn)一步加深,無(wú)論在硬件還是在軟件方面使我對(duì)電子產(chǎn)業(yè)都有了更深的了解,使我擁有了獨(dú)立開(kāi)發(fā)單片機(jī)軟硬件的閱歷,也使我擁有了查閱資料和解決設(shè)計(jì)過(guò)程中遇到的實(shí)際問(wèn)題的實(shí)力,這些都將成為我以后工作道路上不行或缺的寶貴財(cái)寶。首先,感謝李建忠、鐘睿、張毅剛、賴麒文等同志的專著文獻(xiàn)。其次,感謝系里的領(lǐng)導(dǎo)和老師們,感謝他們?cè)诋厴I(yè)設(shè)計(jì)論文階段對(duì)自己的嚴(yán)格要求和關(guān)切支持。還要感謝全部幫助過(guò)自己的同學(xué)們,和他們的探討和溝通給了自己很多有益的啟迪,對(duì)自己駕馭學(xué)科學(xué)問(wèn)、完成設(shè)計(jì)任務(wù)和論文寫作賜予了很大幫助。最終感謝本次設(shè)計(jì)論文指導(dǎo)老師:李華老師。本設(shè)計(jì)論文是在他悉心指導(dǎo)下完成的,李老師特殊留意工作方法、工作方向的指導(dǎo),使自己的工作實(shí)力得到了很大的提高。導(dǎo)師嚴(yán)謹(jǐn)?shù)闹螌W(xué)看法、對(duì)科研工作的執(zhí)著追求、謙遜親善的風(fēng)范對(duì)自己產(chǎn)生的深遠(yuǎn)影響,使自己受益終生。他嚴(yán)謹(jǐn)?shù)闹螌W(xué)看法和寬厚、坦誠(chéng)的人生原則,為自己所深深敬佩。誠(chéng)意地感謝李參考文獻(xiàn)1吳秀清,周菏琴.微型計(jì)算機(jī)原理和接口技術(shù).北京:中國(guó)科學(xué)技術(shù)高校出版社,2000.32戴佳,苗龍,陳斌.51單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)典型實(shí)例.北京:中國(guó)電力出版社,2005.53.李建忠.單片機(jī)原理及應(yīng)用.西安:西安電子科技高校出版社,2002.74劉文濤.單片機(jī)應(yīng)用開(kāi)發(fā)實(shí)例.北京:人民郵電出版社,2005.95張靖武,周靈彬.單片機(jī)原理.應(yīng)用和PROTEUS仿真.北京:電子工業(yè)出版社,2008.86魏小龍,單片機(jī)接口技術(shù)部及系統(tǒng)設(shè)計(jì)實(shí)例.北京:北京航空航天高校,2002.127田輝,甘勇.微型計(jì)算機(jī)技術(shù)—系統(tǒng)接口和通信.北京:北京航空航天出版社,2001.58毛六平,王小劃,盧小勇.微型計(jì)算機(jī)原理和接口技術(shù).北京:清華高校出版社,2002.49.鐘睿,張松,余波,伊春紅.MCS51單片機(jī)原理及應(yīng)用開(kāi)發(fā)技術(shù).北京:中國(guó)鐵道出版社,2006.210張毅剛.彭喜緣.潭小軍.曲春波.MCS51單片機(jī)應(yīng)用設(shè)計(jì).哈爾濱:哈爾濱工業(yè)高校出版社,1997.411賴麒文.C語(yǔ)言開(kāi)發(fā)環(huán)境實(shí)物和設(shè)計(jì).北京:科學(xué)出版社.2002.1112金偉正.單線數(shù)字溫度傳感器的原理和應(yīng)用.北京:人民郵電出版社.1996.613李光飛,胡佳文,樓然苗,謝象佐.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo).北京:北京航空航天高校出版社,2004.314梅麗鳳,王艷秋,張軍.單片機(jī)原理及接口技術(shù).北京:清華高校出版社,2006.815趙微存,黃進(jìn)良.電子測(cè)量技術(shù)基礎(chǔ).重慶:重慶高校出版社,2004.516王宜懷,劉曉升.嵌入式應(yīng)用技術(shù)基礎(chǔ)教程[M].北京:清華高校出版社,2005:53—63.17肖奇軍,李勝勇,林益平,等.智能電子稱重系統(tǒng)[J].肇慶學(xué)院學(xué)報(bào),2005,6(2):51—53.18龐嚴(yán)英,劉培基,趙繼軍,等.ICL7135高精度A/D轉(zhuǎn)換器和單片微機(jī)接口新技術(shù)[J].山東紡織工學(xué)院學(xué)報(bào),1995,10(2):37—42.附錄A(系統(tǒng)硬件總原理圖)附錄B程序/**********************************************************函數(shù)功能:A/D轉(zhuǎn)換器 ***********************************************************/#include<reg52.h>#include"public.h"#include"ad.h"#include"lcd1602.h"#defineucharunsignedchar#defineuintunsignedintucharcodenum[]="0123456789"; //編碼0,1,2,3,4,5,6,7,8,9ucharge,dp1,dp2; //定義變量,這個(gè)應(yīng)當(dāng)是全局變量!??!ucharADC0804(void) //ADC0804轉(zhuǎn)換函數(shù)+數(shù)據(jù)處理{ucharbyte;CSad=0; //始終選通ADC0804 (這個(gè)管腳可以一干脆地?。。。¦Rad=0; //啟動(dòng)ADCWRad=1; //將寫信號(hào)置高,為下次產(chǎn)生下降沿準(zhǔn)備delay(500); //延時(shí)1000us,等待AD轉(zhuǎn)換結(jié)束(轉(zhuǎn)換速度:1/8770s~~1/9708s) (114us~103us)RDad=0; //rd=0,即下降沿,將P0口數(shù)據(jù)釋放byte=P0; //將讀取的數(shù)值賦給byteRDad=1; //將讀信號(hào)置高,為了能使下次可以產(chǎn)生下降沿returnbyte;}voidad(ucharbyte){floatvoltage,decimal;ucharintvolt,intvoltage; //因?yàn)閡char的值最大是128,所以可以定義為unsignedchar型 voltage=byte;voltage=voltage*0.0195; //將二進(jìn)制字節(jié)數(shù)據(jù)變成實(shí)際電壓值:5/256=0.0195(最大測(cè)5.00V) !!! Vref=5Vif(voltage>3.5){P25=0; }else{P25=1;}intvolt=voltage; //取整數(shù)部分intvoltage=intvolt; //將整數(shù)部分賦給intvoltagedecimal=voltage-intvoltage; //取小數(shù)部分decimal=decimal*100; //將小數(shù)部分變成整數(shù)(只取小數(shù)的前兩位)ge=intvolt%10;//分別整數(shù)部分,(對(duì)10求余!)intvolt=decimal;//將變更后的小數(shù)部分賦給intvoltdp1=intvolt/10;//分別第一位小數(shù)部分,(對(duì)10求模!)dp2=intvolt%10; //分別其次位小數(shù)部分,(對(duì)10求余!)}voiddisplayad(){ad(ADC0804()); //調(diào)用ADC轉(zhuǎn)換函數(shù)write_com(0x80);//第一行第一個(gè) write_data('V'); //write_data(':'); //write_data(num[ge]); //顯示個(gè)位write_data('.'); //顯示'.'write_data(num[dp1]); //顯示第一位小數(shù)點(diǎn)write_data(num[dp2]); //顯示其次位小數(shù)點(diǎn)write_data('V');write_com(0x80+0x10);//防止中間亂碼}/**********************************************************函數(shù)功能:溫度測(cè)試子程序***********************************************************/#include<reg52.h>#include<intrins.h>#include"public.h"#include"18B20.h"#include"lcd1602.h"#defineucharunsignedchar#defineuintunsignedint#include<reg52.h>#include"public.h"#include"18B20.h"#defineucharunsignedchar#defineuintunsignedintucharlsb,msb;uchardisbuf[7];uchart1,t2;bitrst_ds18b20(void)//dq復(fù)位;沒(méi)有檢測(cè)從機(jī){ bitpresence; dq=1;_nop_();//稍做延時(shí)dq=0;//單片機(jī)將dq拉低delay(60);//延時(shí)480us-960us,主要是此延時(shí)要長(zhǎng)最好800us以上dq=1;//拉高總線delay(5); //延時(shí)16-60us,等待從機(jī)發(fā)存在信號(hào)presence=dq;//從機(jī)發(fā)送60-240us的低脈沖作為存在脈沖delay_50us(30); //至少延時(shí)(480us-720us),等待dq拉為高電平(自動(dòng)的)returnpresence;}ucharrd_byte() //讀時(shí),先拉低數(shù)據(jù)線至少1us,再釋放。每?jī)纱巫x至少有1us的間隔{ uchari,dat; dq=1; for(i=0;i<8;i++) { dq=0;//給脈沖信號(hào) dat>>=1; //該句4us dq=1;//給脈沖信號(hào) delay(1);//主機(jī)立即釋放總線,并延時(shí)至少14us,等待數(shù)據(jù)送上 if(dq) dat|=0x80; delay(5);//保持?jǐn)?shù)據(jù)至少(60us-15us),等待上拉電阻將dq拉高 } returndat; }voidwr_byte(uchardat)//數(shù)據(jù)線由高拉低產(chǎn)生寫信號(hào){uchari;dq=1;for(i=0;i<8;i++){dq=0;//dq由高拉低后,在15內(nèi)期間采樣dq狀態(tài) dq=dat&0x01; delay(8);//寫數(shù)據(jù)要維持60us-120usdq=1;//然后拉高dqdat>>=1;}}voidrd_temperature()//讀取溫度{ rst_ds18b20(); wr_byte(0xCC);//只有一個(gè)從機(jī),跳過(guò)讀序列號(hào)的操作 wr_byte(0x44);//啟動(dòng)溫度轉(zhuǎn)換 rst_ds18b20();//復(fù)位 wr_byte(0xCC);//跳過(guò)讀序號(hào)列號(hào)的操作 wr_byte(0xBE);//讀取溫度寄存器 lsb=rd_byte();//溫度低8位 msb=rd_byte();//溫度高8位 }voidprocess_temperature()//處理溫度{ ucharflagdat,flag; if(msb&0xf0) { flag=1; msb=~msb; lsb=~lsb+1; flagdat='-'; } else { flag=0; //0表示溫度為正 flagdat=''; } t1=msb<<4; t1|=(lsb>>4); t2=(lsb&0x0f)*0.0625*10; disbuf[0]='T'; disbuf[1]=':'; disbuf[2]=t1%100/10+'0'; disbuf[3]=t1%10+'0'; disbuf[4]='.'; disbuf[5]=t2+'0'; disbuf[6]='\0'; if(disbuf[2]==0x30) { disbuf[2]=''; if(disbuf[3]==0x30) disbuf[3]=''; }}voiddisplay_t(void){ rd_temperature();//讀取溫度 process_temperature();//處理溫度 write_com(0x80+0x08);//第er行第一個(gè) lcd_str(disbuf); write_com(0x80+0x10);//}/*************************主函數(shù)************************/#include<reg52.h>#include"public.h"#include"lcd1602.h"#include"ad.h"#include"18B20.h"#defineucharunsignedchar#defineuintunsignedintucharhour,min,sec,nhour,nmin;ucharkk;uchart_flag,n_flag;uchartime[9];sbitt_set=P3^0;//設(shè)置按鍵,按下一次設(shè)置時(shí)間,按下二次鬧鐘,三次確認(rèn)sbitn_set=P3^1;//鬧鐘開(kāi)啟關(guān)閉sbith_set=P3^4;sbitm_set=P3^3;sbitbuz_but=P3^7;voidtimer0_init();//時(shí)鐘初始化voidadd_time(void);//時(shí)間增加調(diào)整voidnadd_time(void);//時(shí)間削減調(diào)整voiddisplay_rtc(void);//實(shí)時(shí)時(shí)鐘顯示voiddisplay_set_t(void);//設(shè)置時(shí)鐘顯示voiddisplay_set_n(void);//鬧鐘設(shè)置顯示voiddisplay_n(void);//鬧鐘顯示voiddisplay_n_nop(void);//鬧鐘不顯示voidset_time(void);//修改時(shí)鐘voidbut_flag(void);//按鍵標(biāo)記位voidbut_addsub(void);//加減按鍵voidrtc_xit(void);//時(shí)鐘系統(tǒng)voidn_play(void);//鬧鐘顯示主函數(shù)voidbuz(void);//蜂鳴器voidmain() //主函數(shù){ init();//液晶初始化 timer0_init();//時(shí)鐘初始化 kk=0; while(1) { displayad(); //調(diào)用顯示函數(shù) display_t(); //溫度 rtc_xit(); }}voidint0()interrupt0//外部中斷{but_addsub();//標(biāo)記位檢測(cè)時(shí)間變更}voidtimer0()interrupt1{ TH0=(65536-5000)/256; TL0=(65536-5000)%256; kk++; if(20==kk) { sec++; }}voidtimer0_init()//時(shí)鐘初始化{ EA=1; TMOD=0x01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; ET0=1; EX0=1;//外部中斷 TR0=1; IT0=0;//外部中斷 hour=23; min=59; sec=54; nhour=9; nmin=0; t_flag=0; n_flag=0;}voidadd_time(void)//時(shí)間增加調(diào)整{ if(sec>59) { sec-=60; min++; } if(min>59) { min-=60; hour++; } if(hour>23) { hour-=24; }}voidnadd_time(void)//鬧鐘時(shí)間調(diào)整{ if(nmin>59) { nmin-=60; nhour++; } if(nhour>23) { nhour-=24; }}voiddisplay_rtc(void)//實(shí)時(shí)時(shí)鐘顯示{ add_time();//時(shí)間調(diào)整 time[0]=hour/10%10+'0'; time[1]=hour%10+'0'; time[2]=':'; time[3]=min/10%10+'0'; time[4]=min%10+'0'; time[5]=':'; time[6]=sec/10%10+'0'; time[7]

溫馨提示

  • 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)論