




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE33畢業(yè)設(shè)計(jì)(論文)題目:紅外線報(bào)警器的設(shè)計(jì)姓名:學(xué)號(hào):專業(yè):電子信息科學(xué)與技術(shù)系別:電子信息指導(dǎo)教師:起止日期:2021-2——2021-6防盜報(bào)警系統(tǒng)的設(shè)計(jì)本設(shè)計(jì)就是為了滿足預(yù)防搶劫、盜竊等意外事件的需要而設(shè)計(jì)的果園防盜報(bào)警系統(tǒng)。目前市面上主要有壓力觸發(fā)式防盜報(bào)警器、開(kāi)關(guān)電子防盜報(bào)警器和壓力遮光觸發(fā)式防盜報(bào)警器等各種報(bào)警器,但這幾種比較常見(jiàn)的報(bào)警器都存在一些缺點(diǎn)。本系統(tǒng)采用了熱釋電紅外傳感器,它的制作簡(jiǎn)單、成本低,安裝比較方便,而且防盜性能比較穩(wěn)定,抗干擾能力強(qiáng)、靈敏度高、安全可靠。這種防盜器安裝隱蔽,不易被盜賊發(fā)現(xiàn)。同時(shí)它的信號(hào)經(jīng)過(guò)單片機(jī)系統(tǒng)處理后方便和PC機(jī)通信,便于多用戶統(tǒng)一管理。本設(shè)計(jì)主要包括硬件和軟件設(shè)計(jì)兩個(gè)部分。硬件部分包括單片機(jī)控制電路、紅外探頭電路、驅(qū)動(dòng)執(zhí)行報(bào)警電路、LED控制電路等部分組成。處理器采用51系列單片機(jī)AT89S51。整個(gè)系統(tǒng)是在系統(tǒng)軟件控制下工作的。軟件部分可以劃分為以下幾個(gè)模塊:數(shù)據(jù)采集、鍵盤(pán)控制、報(bào)警和顯示等子函數(shù)。[關(guān)鍵詞]:?jiǎn)纹瑱C(jī)、紅外傳感器、數(shù)據(jù)采集、報(bào)警電路。目錄1.緒論 1
1.1前言 1
1.2設(shè)計(jì)任務(wù)與要求 12.熱釋電紅外傳感器概述 22.1PIR傳感器簡(jiǎn)單介紹 22.2PIR的原理特性 22.3PIR結(jié)構(gòu)特性 33.AT89S51單片機(jī)概述 63.1AT89S51單片機(jī)的結(jié)構(gòu) 63.1.1管腳說(shuō)明 83.1.2主要特性 113.1.3振蕩器特性 113.2AT89S51單片機(jī)的工作周期 123.3AT89S51單片機(jī)的工作過(guò)程和工作方式 133.4AT89S51的指令系統(tǒng) 164.方案設(shè)計(jì) 184.1系統(tǒng)概述 184.2總體設(shè)計(jì) 194.3系統(tǒng)硬件選擇 194.4硬件電路實(shí)現(xiàn) 204.5軟件的程序?qū)崿F(xiàn) 215.結(jié)論概述 275.1主要結(jié)論 275.2結(jié)束語(yǔ) 27致謝 28參考文獻(xiàn) 29基于單片機(jī)控制的紅外防盜報(bào)警器的設(shè)計(jì)1.緒論前言人們生活水平不斷提高,對(duì)私有財(cái)產(chǎn)的保護(hù)意識(shí)在不斷的增強(qiáng),因而對(duì)防盜措施提出了新的要求。本設(shè)計(jì)就是為了滿足預(yù)防搶劫、盜竊等意外事件的需要而設(shè)計(jì)的果園防盜報(bào)警系統(tǒng)。目前,葡萄已成為農(nóng)民增收的主要經(jīng)濟(jì)作物,但每年葡萄成熟季節(jié),由于多種因素使得成熟的葡萄遭受損失或毀壞。為了防止葡萄受損或被盜,果農(nóng)通常在葡萄園周圍鋪上鐵絲網(wǎng),一來(lái)可用于葡萄掛果,二來(lái)可以防盜。一旦有異常,鐵絲網(wǎng)牽動(dòng)葡萄樹(shù)就會(huì)發(fā)出聲音,提醒守園人,有外客造訪。這些鐵絲網(wǎng)還可以直接阻止一些動(dòng)物的侵襲。一般,夜晚最易失竊,這就需要守園人整夜守著葡萄園子,一旦聽(tīng)到風(fēng)吹草動(dòng)就得出去巡查。無(wú)疑給守園人造成了極大的困擾,休息時(shí)間沒(méi)有保障,長(zhǎng)期精神緊張。因此,配置一套經(jīng)濟(jì)實(shí)用的葡萄園專用防盜報(bào)警系統(tǒng)是非常必要的。就目前市面上裝備主要有壓力觸發(fā)式防盜報(bào)警器、開(kāi)關(guān)電子防盜報(bào)警器和壓力遮光觸發(fā)式防盜報(bào)警器等各種報(bào)警器,但這幾種比較常見(jiàn)的報(bào)警器都存在一些缺點(diǎn):(一)壓力觸發(fā)式防盜報(bào)警器由于壓力板式安裝在墊子內(nèi),當(dāng)主機(jī)停止工作,很容易失報(bào)和誤報(bào),其可靠性低。(二)開(kāi)關(guān)式電子防盜報(bào)警器一般只有一個(gè)定點(diǎn),有效范圍小,而且各種開(kāi)關(guān)也易壞,失報(bào)和誤報(bào)率就高,不可靠。(三)遮光式觸發(fā)防盜報(bào)警器在受到太陽(yáng)光照射就會(huì)引起誤報(bào),同時(shí)若遮住了光也會(huì)引起誤報(bào),所以這種報(bào)警器的可靠性也不高。還有,就閉路監(jiān)控電路防盜系統(tǒng)而言:它的安裝線路復(fù)雜,而且技術(shù)要求比較高,價(jià)格也比較昂貴,不利于廣泛利用。本系統(tǒng)采用了熱釋電紅外傳感器,它的制作簡(jiǎn)單、成本低,安裝比較方便,而且防盜性能比較穩(wěn)定,抗干擾能力強(qiáng)、靈敏度高、安全可靠。這種防盜器安裝隱蔽,不易被盜賊發(fā)現(xiàn),同時(shí)它的信號(hào)經(jīng)過(guò)單片機(jī)系統(tǒng)處理后方便和PC機(jī)通信,便于多用戶統(tǒng)一管理和用戶操作。設(shè)計(jì)任務(wù)與要求(1)該設(shè)計(jì)主要包括硬件和軟件設(shè)計(jì)兩個(gè)部分。模塊劃分為數(shù)據(jù)采集、鍵盤(pán)控制、報(bào)警和顯示等模塊子函數(shù)。(2)本紅外線防盜報(bào)警系統(tǒng)由熱釋電紅外傳感器、智能報(bào)警器、單片機(jī)控制電路、LED控制電路及相關(guān)的控制管理軟件組成。用戶終端完成信息采集、處理、數(shù)據(jù)傳送、功能設(shè)定、本地顯示、本地報(bào)警等功能。終端由中央處理器、輸入模塊、輸出模塊、通信模塊、功能設(shè)定模塊等部分組成。(3)系統(tǒng)可實(shí)現(xiàn)功能。為了探測(cè)移動(dòng)人體,通常使用雙元件型熱釋電紅外傳感器,在這種傳感器內(nèi)部,兩個(gè)敏感元件反相連接,當(dāng)人體靜止時(shí)兩元件極化程度相同,互相抵消。但人體移動(dòng)時(shí),兩元件極化程度不同,凈輸出電壓不為0,從而達(dá)到了探測(cè)移動(dòng)人體的目的。因此可把報(bào)警系統(tǒng)設(shè)置在外出布防狀態(tài),使探測(cè)器工作。當(dāng)有人闖入時(shí),熱釋電紅外傳感器將探測(cè)到動(dòng)作,設(shè)置在監(jiān)測(cè)點(diǎn)上的紅外探頭將人體輻射的紅外光譜變換成電信號(hào),經(jīng)放大電路、比較電路送至門限開(kāi)關(guān),打開(kāi)門限閥門送出TTL電平至AT89S51單片機(jī),經(jīng)單片機(jī)處理運(yùn)算后驅(qū)動(dòng)執(zhí)行報(bào)警電路使警號(hào)發(fā)聲。(4)紅外線具有隱蔽性,在露天防護(hù)的地方設(shè)計(jì)一束紅外線可以方便地檢測(cè)到是否有人。此類裝置設(shè)計(jì)的要點(diǎn):其一是能有效判斷是否有人員活動(dòng);其二是盡可能大地增加防護(hù)范圍。當(dāng)然,系統(tǒng)工作的穩(wěn)定性和可靠性也是追求的重要指標(biāo)。至于報(bào)警可采用聲光信號(hào)。2.1方案討論如何使用傳感器來(lái)簡(jiǎn)單地實(shí)現(xiàn)移動(dòng)人員檢測(cè)呢?在設(shè)計(jì)這樣的系統(tǒng)時(shí),應(yīng)該記住兩個(gè)目標(biāo):一是低功率,二是低成本。這兩者都是在設(shè)計(jì)移動(dòng)檢測(cè)系統(tǒng)時(shí)需要考慮的關(guān)鍵因素。1.選擇傳感器傳感器是指能感受規(guī)定的被測(cè)量并按照一定的規(guī)律轉(zhuǎn)換成可用信號(hào)的器件或裝置,通常由敏感元件和轉(zhuǎn)換元件組成。傳感器是一種檢測(cè)裝置,能感受到被測(cè)量的信息,并能將檢測(cè)感受到的信息,按一定規(guī)律變換成為電信號(hào)或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲(chǔ)、顯示、記錄和控制等要求。它是實(shí)現(xiàn)自動(dòng)檢測(cè)和自動(dòng)控制的首要環(huán)節(jié)。防盜報(bào)警系統(tǒng)的前端探測(cè)部分主要是各種類型的探測(cè)器,其中最主要的是入侵探測(cè)器。入侵探測(cè)器通常由傳感器、信號(hào)處理器和輸出接口組成,入侵探測(cè)器主要包括有主動(dòng)紅外入侵探測(cè)器、被動(dòng)紅外入侵探測(cè)器、微波入侵探測(cè)器、微波和被動(dòng)紅外復(fù)合入侵探測(cè)器、超聲波入侵探測(cè)器、振動(dòng)入侵探測(cè)器、音響入侵探測(cè)器、磁開(kāi)關(guān)入侵探測(cè)器、超聲和被動(dòng)紅外復(fù)合入侵探測(cè)器等,其中最常用的是被動(dòng)紅外探測(cè)器。被動(dòng)紅外探測(cè)器的組成:被動(dòng)紅外探測(cè)器主要是探測(cè)接收外界的紅外輻射,探測(cè)器本身不發(fā)射任何能量,而只對(duì)人體發(fā)出的紅外線波段敏感。人體輻射的紅外光波長(zhǎng)是3~50μm,其中8~14μm占46%,峰值波長(zhǎng)在9.5μm,所以被動(dòng)紅外探測(cè)器主要是接收波長(zhǎng)8~14μm的紅外輻射。工作原理被動(dòng)紅外探測(cè)器基本工作原理是:當(dāng)防范區(qū)域內(nèi)有人體移動(dòng)時(shí),人體發(fā)出的紅外線經(jīng)過(guò)光學(xué)透鏡聚焦到熱釋電紅外傳感器上,熱釋電紅外傳感器感應(yīng)到紅外線信號(hào),輸出熱電信號(hào),輸出的熱電信號(hào)非常微弱,并且?jiàn)A雜著很多干擾信號(hào),為此需要設(shè)計(jì)特殊的熱電信號(hào)處理電路,在放大熱電信號(hào)的同時(shí),濾除掉造成干擾的雜波信號(hào)。由于要檢測(cè)是否有活動(dòng)的人員,所以通過(guò)研究各種類型的傳感器,比較各類傳感器的優(yōu)點(diǎn)、缺點(diǎn)和合理性,最終確定本設(shè)計(jì)選擇的傳感器是雙元件熱釋紅外傳感器。其基本原理為:當(dāng)防范區(qū)域內(nèi)有人體移動(dòng)時(shí),人體發(fā)出的紅外線經(jīng)過(guò)光學(xué)透鏡聚焦到熱釋電紅外傳感器上,熱釋電紅外傳感器感應(yīng)到紅外線信號(hào),輸出熱電信號(hào),輸出的熱電信號(hào)非常微弱,并且?jiàn)A雜著很多干擾信號(hào),為此需要設(shè)計(jì)特殊的熱電信號(hào)處理電路,在放大熱電信號(hào)的同時(shí),濾除掉造成干擾的雜波信號(hào)。2.熱釋電紅外傳感器2.1熱釋電紅外線傳感器簡(jiǎn)介熱釋電紅外線傳感器是80年代發(fā)展起來(lái)的一種新型高靈敏度探測(cè)元件,它能以非接觸形式檢測(cè)出人體輻射的紅外線能量的變化,并將其轉(zhuǎn)化成電壓信號(hào)輸出。將這個(gè)電壓信號(hào)加以放大,便可驅(qū)動(dòng)各種控制電路,如作電源開(kāi)關(guān)控制、防盜防火報(bào)警、自動(dòng)檢測(cè)等。熱釋電紅外線傳感器應(yīng)用電路如下:為了探測(cè)移動(dòng)人體,通常使用雙元件型熱釋電紅外傳感器,在這種傳感器內(nèi)部,兩個(gè)敏感元件反相連接,當(dāng)人體靜止時(shí)兩元件極化程度相同,互相抵消。但人體移動(dòng)時(shí),兩元件極化程度不同,凈輸出電壓不為0,從而達(dá)到了探測(cè)移動(dòng)人體的目的。2.2PIR的原理特性熱釋電紅外線傳感器主要是由一種高熱電系數(shù)的材料,如鋯鈦酸鉛系陶瓷、鉭酸鋰、硫酸三甘鈦等制成尺寸為2*1mm的探測(cè)元件。在每個(gè)探測(cè)器內(nèi)裝入一個(gè)或兩個(gè)探測(cè)元件,并將兩個(gè)探測(cè)元件以反極性串聯(lián),以抑制由于自身溫度升高而產(chǎn)生的干擾。由探測(cè)元件將探測(cè)并接收到的紅外輻射轉(zhuǎn)變成微弱的電壓信號(hào),經(jīng)裝在探頭內(nèi)的場(chǎng)效應(yīng)管放大后向外輸出。為了提高探測(cè)器的探測(cè)靈敏度以增大探測(cè)距離,一般在探測(cè)器的前方裝設(shè)一個(gè)菲涅爾透鏡,該透鏡用透明塑料制成,將透鏡的上、下兩部分各分成若干等份,制成一種具有特殊光學(xué)系統(tǒng)的透鏡,它和放大電路相配合,可將信號(hào)放大70分貝以上,這樣就可以測(cè)出10-20米范圍內(nèi)人的行動(dòng)。
菲涅爾透鏡利用透鏡的特殊光學(xué)原理,在探測(cè)器前方產(chǎn)生一個(gè)交替變化的“盲區(qū)”和“高靈敏區(qū)”,以提高它的探測(cè)接收靈敏度。當(dāng)有人從透鏡前走過(guò)時(shí),人體發(fā)出的紅外線就不斷地交替從“盲區(qū)”進(jìn)入“高靈敏區(qū)”,這樣就使接收到的紅外信號(hào)以忽強(qiáng)忽弱的脈沖形式輸入,從而強(qiáng)其能量幅度。
人體輻射的紅外線中心波長(zhǎng)為9-10um,而探測(cè)元件的波長(zhǎng)靈敏度在0.2-20um范圍內(nèi)幾乎穩(wěn)定不變。在傳感器頂端開(kāi)設(shè)了一個(gè)裝有濾光鏡片的窗口,這個(gè)濾光片可通過(guò)光的波長(zhǎng)范圍為7-10um,正好適合于人體紅外輻射的探測(cè),而對(duì)其它波長(zhǎng)的紅外線由濾光片予以吸收,這樣便形成了一種專門用作探測(cè)人體輻射的紅外線傳感器。一旦人侵入探測(cè)區(qū)域內(nèi),人體紅外輻射通過(guò)部分鏡面聚焦,并被熱釋電元接收,但是兩片熱釋電元接收到的熱量不同,熱釋電也不同不能抵消,經(jīng)信號(hào)處理而輸出電壓信號(hào)。在該探測(cè)技術(shù)中,所謂“被動(dòng)”是指探測(cè)器本身不發(fā)出任何形式的能量,只是靠接收自然界能量或能量變化來(lái)完成探測(cè)目的。被動(dòng)紅外報(bào)警器的特點(diǎn)是能夠響應(yīng)入侵者在所防范區(qū)域內(nèi)移動(dòng)時(shí)所引起的紅外輻射變化,并能使監(jiān)控報(bào)警器產(chǎn)生報(bào)警信號(hào),從而完成報(bào)警功能。PIR結(jié)構(gòu)特性及安裝圖1是一個(gè)雙探測(cè)元熱釋電紅外傳感器的結(jié)構(gòu)示意圖。使用時(shí)D端接電源正極,G端接電源負(fù)極,S端為信號(hào)輸出。該傳感器將兩個(gè)極性相反、特性一致的探測(cè)元串接在一起,目的是消除因環(huán)境和自身變化引起的干擾。它利用兩個(gè)極性相反、大小相等的干擾信號(hào)在內(nèi)部相互抵消的原理來(lái)使傳感器得到補(bǔ)償。對(duì)于輻射至傳感器的紅外輻射,熱釋電傳感器通過(guò)安裝在傳感器前面的菲涅爾透鏡將其聚焦后加至兩個(gè)探測(cè)元上,從而使傳感器輸出電壓信號(hào)。制造熱釋電紅外探測(cè)元的高熱電材料是一種廣譜材料,它的探測(cè)波長(zhǎng)范圍為0.2-20μm。為了對(duì)某一波長(zhǎng)范圍的紅外輻射有較高的敏感度,該傳感器在窗口上加裝了一塊干涉濾波片。這種濾波片除了允許某些波長(zhǎng)范圍的紅外輻射通過(guò)外,還能將燈光、陽(yáng)光和其它紅外輻射拒之門外。當(dāng)人體輻射的紅外線通過(guò)菲涅爾透鏡被聚焦在熱釋電紅外傳感器的探測(cè)元上時(shí),電路中的傳感器將輸出電壓信號(hào),然后使該信號(hào)通過(guò)一個(gè)由C1、C2、R1、R2組成的帶通濾波器,該濾波器的上限截止頻率為16Hz,下限截止頻率為0.16Hz。由于熱釋電紅外傳感器輸出的探測(cè)信號(hào)電壓十分微弱(通常僅有1mV左右),而且是一個(gè)變化的信號(hào),同時(shí)菲涅爾透鏡的作用又使輸出信號(hào)電壓呈脈沖形式(脈沖電壓的頻率由被測(cè)物體的移動(dòng)速度決定,通常為0.1-10Hz左右),所以應(yīng)對(duì)熱釋紅外傳感器輸出的電壓信號(hào)進(jìn)行放大。本設(shè)計(jì)運(yùn)用集成運(yùn)算放大器LM324來(lái)進(jìn)行兩級(jí)放大,以使其獲得足夠的增益。本設(shè)計(jì)所用的熱釋感器就采用這種雙探測(cè)元的結(jié)構(gòu)。其工作電路原理及設(shè)計(jì)電路如圖2所示,在VCC電源端利用C1和R2來(lái)穩(wěn)定工作電壓,同樣輸出端也多加了穩(wěn)壓元件穩(wěn)定信號(hào)。當(dāng)檢測(cè)到人體移動(dòng)信號(hào)時(shí),電荷信號(hào)經(jīng)過(guò)場(chǎng)效應(yīng)管FET放大后,經(jīng)過(guò)C2,R1的穩(wěn)壓后使輸出變?yōu)楦唠娢?,再?jīng)過(guò)三極管Q2的轉(zhuǎn)化,輸出OUT為低電平。圖2熱釋電紅外傳感器原理圖
被動(dòng)紅外探測(cè)器光學(xué)系統(tǒng)的類型被動(dòng)紅外探測(cè)器光學(xué)系統(tǒng)包括菲涅爾透鏡、拋物面反射鏡、遮擋片三種類型。圖雙元紅外傳感器示意圖菲涅爾透鏡作用有兩個(gè):一是聚焦作用,即將熱釋的紅外信號(hào)折射(反射)在PIR上;第二個(gè)作用是將警戒區(qū)內(nèi)分為若干個(gè)明區(qū)和暗區(qū)。菲涅爾透鏡是凸透鏡,將物體的紅外影像投射在熱電元件表面。熱釋電紅外傳感器其熱釋電器件及前置放大電路封裝在圓型金屬帽內(nèi),金屬帽頂部方型開(kāi)孔鑲嵌有抗冷白光的硅紅外濾光片,底部有金屬引腳,分別為電源引腳,地線引腳,熱電信號(hào)輸出腳。熱釋電器件是熱釋電傳感器的核心元件,是將熱輻射變?yōu)殡娏鞯膭?dòng)態(tài)能量轉(zhuǎn)換元件,熱釋電器件的電特征屬性是一個(gè)以熱電晶體薄膜為電介質(zhì)的平板電容器,隨著溫度的改變,熱電晶體表面自發(fā)極化電荷其規(guī)模具有跟隨變化的性質(zhì),即熱輻射可引起該電容器的電容量變化,從而可利用這一特性來(lái)探測(cè)變化的熱輻射。熱釋電紅外傳感器包括單元、雙元、四元三種類型?,F(xiàn)在主要使用的是雙元和四元傳感器。被動(dòng)紅外傳感器優(yōu)缺點(diǎn)優(yōu)點(diǎn)主要為:1、本身不發(fā)射任何類型輻射,安全可靠;2、價(jià)格低廉。缺點(diǎn)主要為:1、容易受各種熱源、陽(yáng)光源干擾;2、受環(huán)境溫度限制,環(huán)境溫度和人體溫度接近時(shí),靈敏度下降;針對(duì)被動(dòng)紅外探測(cè)器存在的缺點(diǎn),可以采用不同的措施來(lái)避免產(chǎn)品誤報(bào)和漏報(bào)現(xiàn)象。一方面是采用新技術(shù)來(lái)加強(qiáng)抗干擾能力;另一方面是在安裝方面加以注意。4、安裝方向產(chǎn)品在安裝過(guò)程中還需要注意安裝方向,由于透鏡的光學(xué)特性決定橫切探測(cè)區(qū)域比較敏感,所以產(chǎn)品安裝時(shí)要注意入侵方向與探測(cè)器視場(chǎng)的夾角,最好成90o垂直,這樣就可以保證有人入侵時(shí)能最大程度橫切探測(cè)區(qū)域。3.AT89S51單片機(jī)概述3.1AT89S51單片機(jī)的結(jié)構(gòu)AT89S51是一個(gè)低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4kBytesISP(In-systemprogrammable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。
AT89S51具有如下特點(diǎn):40個(gè)引腳,4kBytesFlash片內(nèi)程序存儲(chǔ)器,128bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。
此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式。空閑模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。圖3-1為AT89S51單片機(jī)的基本組成功能方塊圖。有圖可見(jiàn),在這一塊芯片上,集成了一臺(tái)微型計(jì)算機(jī)的主要組成部分,其中包括CPU、存儲(chǔ)器、可編程I/O口、定時(shí)器/計(jì)數(shù)器、串行口等,各部分通過(guò)內(nèi)部總線相連。下面介紹幾個(gè)主要部分。外時(shí)鐘源外部事件計(jì)數(shù)時(shí)鐘電路程序存儲(chǔ)器4KBROM時(shí)鐘電路程序存儲(chǔ)器4KBROM數(shù)據(jù)存儲(chǔ)器256BRAM/SFR2×16位定時(shí)器/計(jì)數(shù)器AT89S51CPU64KB總線擴(kuò)展控制器并行I/O串行口中斷控制系統(tǒng)圖3-1AT89S51功能方塊圖1.中央處理器(CPU)中央處理器是單片機(jī)最核心的部分,是單片機(jī)的大腦和心臟,具有運(yùn)算和控制功能。AT89S51的CPU是一個(gè)字長(zhǎng)為8位的中央處理單元,即它對(duì)數(shù)據(jù)的處理是按字節(jié)為單位進(jìn)行的。2.數(shù)據(jù)存儲(chǔ)器(內(nèi)部RAM)芯片中共有256B的RAM單元,但其中后128個(gè)單元(80H-0FFH)被專用寄存器占用,能作為寄存器提供用戶使用的只是前128個(gè)單元(00-7FH),用于存放可讀寫(xiě)的數(shù)據(jù)。因此常說(shuō)的內(nèi)部數(shù)據(jù)存儲(chǔ)器是指前128個(gè)單元,簡(jiǎn)稱內(nèi)部RAM。3.程序存儲(chǔ)器(內(nèi)部ROM)芯片內(nèi)部有4KB的掩膜ROM,可用于存放程序、原始數(shù)據(jù)和表格等,因此稱為程序存儲(chǔ)器,簡(jiǎn)稱內(nèi)部ROM。4.定時(shí)器/計(jì)數(shù)器出于控制應(yīng)用的需要,芯片內(nèi)部共有兩個(gè)16位的定時(shí)器/計(jì)數(shù)器以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)單片機(jī)進(jìn)行控制。5.并行I/O口AT89S51共有4個(gè)8位的I/O口(P0、P1、P2、P3口),可以實(shí)現(xiàn)數(shù)據(jù)的并行輸入/輸出。6.串行口AT89S51有1個(gè)全雙工的可編程串行口,以實(shí)現(xiàn)單片機(jī)和其他設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可以作為全雙工異步通信收發(fā)器使用,也可以作為同步移位寄存器使用。7.中斷控制系統(tǒng)AT89S51的中斷系統(tǒng)功能較強(qiáng),可以滿足一般控制應(yīng)用的需要。它共有5個(gè)中斷源:2個(gè)外部中斷源/INTO和/INT1;3個(gè)內(nèi)部中斷源,即2個(gè)定時(shí)/計(jì)數(shù)中斷,1個(gè)串行口中斷。8.時(shí)鐘電路AT89S51單片機(jī)芯片內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需要外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列,系統(tǒng)允許的最高晶振頻率為12MHz。9.內(nèi)部總線上述部件只有通過(guò)內(nèi)部總線將其連接起來(lái)才能構(gòu)成一個(gè)完整的單片機(jī)系統(tǒng)??偩€在圖中以帶箭頭的空心線表示。系統(tǒng)的地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)分別通過(guò)系統(tǒng)的三大總線—地址總線、數(shù)據(jù)總線和控制總線進(jìn)行傳送,總線結(jié)構(gòu)減少了單片機(jī)的連線和引腳,提高了集成度和可靠性。由上所述,AT89S51雖然是一塊芯片,但它包括了構(gòu)成計(jì)算機(jī)的基本部件,因此可以說(shuō)它是一臺(tái)簡(jiǎn)單的計(jì)算機(jī)。AT89S51較詳細(xì)的內(nèi)部結(jié)構(gòu)如圖3-2所示。圖3-2AT89S51內(nèi)部結(jié)構(gòu)框圖3.1.1管腳說(shuō)明AT89S51是一種高效微控制器。采用40引腳雙列直插封裝(DIP)形式,如圖3-3所示。AT89S51單片機(jī)是高性能單片機(jī),因?yàn)槭芤_數(shù)目的限制,所以有不少引腳具有第二功能。圖3-3AT89S51引腳圖圖3-4SMT的封裝圖VCC:供電電壓。
GND:接地。
P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89S51的一些特殊功能口,如下表所示:
P3口管腳備選功能
P3.0RXD(串行輸入口)
P3.1TXD(串行輸出口)
P3.2/INT0(外部中斷0)
P3.3/INT1(外部中斷1)
P3.4T0(記時(shí)器0外部輸入)
P3.5T1(記時(shí)器1外部輸入)
P3.6/WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)
P3.7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許端的輸出電平用于鎖存地址的地址字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)端。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2:來(lái)自反向振蕩器的輸出。3.1.2主要特性:·與MCS-51兼容
·4K字節(jié)可編程閃爍存儲(chǔ)器壽命:1000寫(xiě)/擦循環(huán)
數(shù)據(jù)保留時(shí)間:10年
·全靜態(tài)工作:0Hz-24Hz
·三級(jí)程序存儲(chǔ)器鎖定
·128*8位內(nèi)部RAM
·32可編程I/O線
·兩個(gè)16位定時(shí)器/計(jì)數(shù)器
·5個(gè)中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時(shí)鐘電路3.1.3振蕩器特性(1)XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。(2)芯片擦除整個(gè)EPROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms來(lái)完成。在芯片擦除操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。3.2AT89S51單片機(jī)的工作周期單片機(jī)有了硬件和軟件就可以在控制器發(fā)出的控制信號(hào)作用下有條不紊地工作,控制信號(hào)必須定時(shí)發(fā)出,為了定時(shí)計(jì)算機(jī)內(nèi)部必須有一個(gè)準(zhǔn)確的定時(shí)脈沖。這種定時(shí)脈沖是由晶體振蕩器產(chǎn)生的,并組成下面幾種工作周期,如圖3-6所示。這種定時(shí)脈沖是由晶體振蕩器產(chǎn)生的,并組成下面幾種工作周期,如圖1.2所示。圖3-6振蕩周期、狀態(tài)周期、機(jī)器周期和指令周期振蕩周期:是指為單片機(jī)提供時(shí)鐘脈沖信號(hào)的振蕩源的周期。即由單片機(jī)的晶體振蕩器產(chǎn)生的時(shí)鐘脈沖的周期。狀態(tài)周期:每個(gè)狀態(tài)周期為振蕩周期的2倍,是振蕩周期經(jīng)二分頻后得到的。在一個(gè)狀態(tài)周期中有兩個(gè)時(shí)鐘脈沖,通常稱它為P1、P2。機(jī)器周期:一個(gè)機(jī)器周期包含6個(gè)狀態(tài)周期S1~S6,也就是12個(gè)振蕩周期。在一個(gè)機(jī)器周期內(nèi),CPU可以完成一個(gè)獨(dú)立的操作。指令周期:它是指CPU完成一條操作所需的全部時(shí)間。控制部件是單片機(jī)的神經(jīng)中樞,以主振頻率為基準(zhǔn)(主振周期即為振蕩周期),控制器控制CPU的時(shí)序,對(duì)指令進(jìn)行譯碼,然后發(fā)出各種控制信號(hào),它將各個(gè)硬件環(huán)節(jié)組織在一起。一般情況下,算術(shù)邏輯操作發(fā)生在時(shí)相P1期間,而內(nèi)部寄存器之間的傳送發(fā)生在時(shí)相P2期間,這些內(nèi)部時(shí)鐘信號(hào)無(wú)法從外部觀察,故用XTAL2引腳振蕩信號(hào)作參考。3.3AT89S51單片機(jī)的工作過(guò)程和工作方式單片機(jī)工作過(guò)程遵循現(xiàn)代計(jì)算機(jī)的工作原理(馮·諾依曼原理),即程序存儲(chǔ)和程序控制。存儲(chǔ)程序是指人們必須事先把計(jì)算機(jī)的執(zhí)行步驟序列(即程序)及運(yùn)行中所需的數(shù)據(jù),通過(guò)一定的方式輸入并存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)器中。程序控制是指計(jì)算機(jī)能自動(dòng)地逐一取出程序中的指令,加以分析并執(zhí)行規(guī)定的操作。單片機(jī)的工作方式有:復(fù)位、程序執(zhí)行、掉電保護(hù)和低功耗、編程、校驗(yàn)與加密等方式。1.復(fù)位方式通過(guò)某種方式,使單片機(jī)內(nèi)各寄存器的值變?yōu)槌跏紶顟B(tài)的操作稱為復(fù)位。復(fù)位方式是單片機(jī)的初始化操作。單片機(jī)除了正常的初始化外,當(dāng)程序運(yùn)行出錯(cuò)或由于操作錯(cuò)誤而使系統(tǒng)處于死循環(huán)時(shí),也需要按復(fù)位鍵重啟機(jī)器。MCS—51單片機(jī)復(fù)位后,程序計(jì)數(shù)器PC和特殊功能寄存器復(fù)位的狀態(tài)如圖3-7所示。復(fù)位不影響片內(nèi)RAM存放的內(nèi)容,而ALE在復(fù)位期間將輸出高電平。由圖3-7可以看出,復(fù)位后:(1)(PC)=0000H表示復(fù)位后程序的入口地址為0000H,即單片機(jī)復(fù)位后從0000H單元開(kāi)始執(zhí)行程序;(2)(PSW)=00H,其中RS1(PSW.4)=0,RS0(PSW.3)=0,表示復(fù)位后單片機(jī)選擇工作寄存器0組;(3)(SP)=07H表示復(fù)位后堆棧在片內(nèi)RAM的08H單元處建立;(4)P0口~P3口鎖存器為全1狀態(tài),說(shuō)明復(fù)位后這些并行接口可以直接作輸入口,無(wú)須向端口寫(xiě)1。定時(shí)器/計(jì)數(shù)器、串行口、中斷系統(tǒng)等特殊功能寄存器復(fù)位后的狀態(tài)對(duì)各功能部件工作狀態(tài)的影響。能部件工作狀態(tài)的影響。圖3-7PC與SFR復(fù)位狀態(tài)表單片機(jī)在時(shí)鐘電路工作以后,在RST/VPD端持續(xù)給出2個(gè)機(jī)器周期的高電平時(shí)就可以完成復(fù)位操作。例如使用晶振頻率為12MHz時(shí),則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)不小于2us。復(fù)位方法一般有上電自動(dòng)復(fù)位和外部按鍵手動(dòng)復(fù)位以及“看門狗”復(fù)位三種類型。前兩種見(jiàn)圖3-8所示。“看門狗”電路則是一種集成有單片機(jī)的電源監(jiān)測(cè)、按鍵復(fù)位以及對(duì)程序運(yùn)行進(jìn)行監(jiān)控,防止程序“跑飛”而出現(xiàn)死機(jī)而設(shè)計(jì)的電路。圖3-8(a)上電復(fù)位電路;(b)上電/外部復(fù)位電路2.程序執(zhí)行方式程序執(zhí)行方式是單片機(jī)的基本工作方式。由于復(fù)位后PC=0000H,因此程序執(zhí)行總是從地址0000H開(kāi)始,為此就得在0000H處開(kāi)始的存儲(chǔ)單元安放一條無(wú)條件轉(zhuǎn)移指令,以便跳轉(zhuǎn)到實(shí)際程序的入口去執(zhí)行。3.待機(jī)方式待機(jī)方式也稱空閑方式,是一種節(jié)電工作方式。在待機(jī)工作方式中,振蕩器保持工作,時(shí)鐘脈沖繼續(xù)輸出到中斷、串行口、定時(shí)器等功能部件,使它們繼續(xù)工作,但時(shí)鐘脈沖不再送到CPU,因而CPU停止工作。4.掉電方式掉電方式,也被稱為停機(jī)方式。在掉電方式中,振蕩器工作停止,單片機(jī)內(nèi)部所有功能部件停止工作。它同樣是一種為降低功耗而設(shè)計(jì)的節(jié)電工作方式。待機(jī)方式和掉電方式都是為了進(jìn)一步降低功耗而設(shè)計(jì)的節(jié)電工作方式,它們特別適合于電源功耗要求很低的應(yīng)用場(chǎng)合。這類系統(tǒng)往往是直流供電或停電時(shí)依靠備用電源供電,以維持系統(tǒng)的持續(xù)工作。CHMOS型單片機(jī)的節(jié)電方式是由特殊功能寄存器PCON控制,其具體使用可參考相關(guān)書(shū)籍和手冊(cè)??臻e和掉電模式外部引腳狀態(tài)如下圖3-9所示:圖3-9空閑和掉電模式外部引腳狀態(tài)5.編程和校驗(yàn)方式對(duì)于內(nèi)部集成有EPROM可以進(jìn)入編程或校驗(yàn)方式。(1)內(nèi)部EPROM編程編程時(shí),時(shí)鐘頻率應(yīng)定在3-6MHz的范圍內(nèi),其余各有關(guān)引腳的接法和用法如下:P1口和P2口的P2.0~P2.3為EPROM的4k地址輸入,P1為8位地址;P2.4~P2.6以及PSEN應(yīng)為低電平;P0口為編程數(shù)據(jù)輸入;P2.7和RST應(yīng)為高電平;RST的高電平可為2.5V,其余的都以TTL的高低電平為準(zhǔn);EA/VPP端加+21V的編程脈沖,此電壓要求穩(wěn)定,不能大于21.5V,否則會(huì)損壞EPROM在出現(xiàn)正脈沖期間,ALE/PROG端加上50ms的負(fù)脈,完成一次寫(xiě)入。(2)EPROM程序校驗(yàn)在程序的保險(xiǎn)位未設(shè)置前,無(wú)論在寫(xiě)入的當(dāng)時(shí)或?qū)懭胍院?,均可將片上程序存貯器的內(nèi)容讀出進(jìn)行檢驗(yàn),在讀出時(shí),除P2.7腳保持為TTL低電平之外,其他引腳與寫(xiě)入EPROM的連接方式相同。要讀出的程序存貯器單元地址由P1口和P2口的P2.0~P2.3送入,P2口的其他引腳及保持低電平,ALE、EA和RST接高電平,檢驗(yàn)的單元內(nèi)容由P0口送出。在檢驗(yàn)操作時(shí),需在P0的各位外部加上電阻10k?。(3)程序存貯器的保險(xiǎn)位AT89S51內(nèi)部有一個(gè)保險(xiǎn)位,亦稱保密位,一旦將該位寫(xiě)入便建立了保險(xiǎn),就可禁止任何外部方法對(duì)片內(nèi)程序存貯器進(jìn)行讀寫(xiě)。將保險(xiǎn)位寫(xiě)入以建立保險(xiǎn)位的過(guò)程與正常寫(xiě)入的過(guò)程相似,僅只P2.6腳要加TTL高電平而不是像正常寫(xiě)入時(shí)加低電平,而P0、P1和P2的P2.0~P2.3的狀態(tài)隨意,加上編程脈沖后就可使保險(xiǎn)位寫(xiě)入。保險(xiǎn)位一旦寫(xiě)入,內(nèi)部程序存貯器便不能再被寫(xiě)入和讀出校驗(yàn),而且也不能執(zhí)行外部存貯器的程序。只有將EPROM全部擦除時(shí),保險(xiǎn)位才能被一起擦除,也才可以再次寫(xiě)入。通過(guò)以上對(duì)單片機(jī)硬件系統(tǒng)的簡(jiǎn)單介紹,應(yīng)該已經(jīng)掌握了單片機(jī)的內(nèi)部結(jié)構(gòu)及工作的原理和過(guò)程,但是單片機(jī)要實(shí)現(xiàn)它的強(qiáng)大控制功能特性,只有硬件是不能工作的,還必須依靠它的指令才能發(fā)揮單片機(jī)的強(qiáng)大作用。下面介紹單片機(jī)的指令系統(tǒng)。AT89S51的指令系統(tǒng)1.機(jī)器指令的編碼格式指令是規(guī)定計(jì)算機(jī)進(jìn)行某種操作的命令,一條指令只能完成有限的的功能,為使計(jì)算機(jī)完成一定的或復(fù)雜的功能就需要一系列指令。計(jì)算機(jī)能夠執(zhí)行的各種指令的集合稱為指令系統(tǒng)。單片機(jī)的主要功能也是有指令系統(tǒng)體現(xiàn)的。機(jī)器指令通常由兩部分組成,即操作碼和操作數(shù)(或操作數(shù)地址)。操作碼用于規(guī)定指令的操作功能,如加、減、乘、除等。操作數(shù)是指參與操作的數(shù)據(jù),它可能是一個(gè)具體的數(shù)據(jù),也可能是地址或符號(hào)。2.匯編語(yǔ)言指令格式匯編指令由操作碼或偽操作碼、目的操作數(shù)和源操作數(shù)構(gòu)成,標(biāo)準(zhǔn)書(shū)寫(xiě)格式如下:[標(biāo)號(hào):]操作碼/偽操作碼[操作數(shù)][;注釋](1)[]表示該項(xiàng)為可選項(xiàng)。(2)標(biāo)號(hào):又稱指令地址符號(hào)。它是用戶設(shè)定的符號(hào),代表著該指令所在的地址。(3)操作碼/偽操作碼:是英文縮寫(xiě)的指令助記符。它規(guī)定了指令的操作功能,它所對(duì)應(yīng)的匯編語(yǔ)句稱為指令性語(yǔ)句,在匯編后有具體的目標(biāo)代碼。而偽操作碼說(shuō)明匯編程序如何完成匯編工作,任何一條指令都必須有操作碼或偽操作碼,不得省略。(4)操作數(shù):是指參加操作的數(shù)據(jù)或數(shù)據(jù)所在的地址。在指令系統(tǒng)中,操作數(shù)可以是1個(gè)、2個(gè)或3個(gè),也可以沒(méi)有。不同功能的指令,操作數(shù)作用不同。例如,傳送指令多數(shù)有兩個(gè)操作數(shù),寫(xiě)在左邊的稱為目的操作數(shù)(表示操作結(jié)果存放的單元地址),寫(xiě)在右邊的稱為元操作數(shù)(支出操作數(shù)的來(lái)源)。例如,一條傳送指令的書(shū)寫(xiě)格式為:MOVA,#10H;表示將#10H存儲(chǔ)單元的內(nèi)容送到累加器A中。操作碼/偽操作碼和操作數(shù)之間必須用空格分開(kāi),操作數(shù)與操作數(shù)之間必須用逗號(hào)分開(kāi)。(5)注釋:是為該條指令作的說(shuō)明,以便于閱讀。3.尋址方式尋址方式包括立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對(duì)尋址、位尋址等共7種尋址方式,且每一種尋址方式所涉及的存儲(chǔ)器空間各有不同。指令中的源操作數(shù)可以使用七種尋址方式中的任何一種,但是目的操作數(shù)只能使用寄存器尋址、寄存器間接尋址、直接尋址和位尋址四種方式。4.指令系統(tǒng)在單片機(jī)指令系統(tǒng)中,根據(jù)功能不同將指令分為數(shù)據(jù)傳送類指令、算數(shù)運(yùn)算類指令、邏輯運(yùn)算及移位類指令、控制轉(zhuǎn)移類指令和位操作類指令等五大類,共計(jì)111條指令。4.方案設(shè)計(jì)4.1系統(tǒng)概述本系統(tǒng)采用了熱釋電紅外傳感器,它的制作簡(jiǎn)單、成本低,安裝比較方便,而且防盜性能比較穩(wěn)定,抗干擾能力強(qiáng)、靈敏度高、安全可靠。這種防盜器安裝隱蔽,不易被盜賊發(fā)現(xiàn),同時(shí)它的信號(hào)經(jīng)過(guò)單片機(jī)系統(tǒng)處理后方便和PC機(jī)通信,便于多用戶統(tǒng)一管理和用戶操作。為了探測(cè)移動(dòng)人體,通常使用雙元件型熱釋電紅外傳感器,在這種傳感器內(nèi)部,兩個(gè)敏感元件反相連接,當(dāng)人體靜止時(shí)兩元件極化程度相同,互相抵消。但人體移動(dòng)時(shí),兩元件極化程度不同,凈輸出電壓不為0,從而達(dá)到了探測(cè)移動(dòng)人體的目的。該設(shè)計(jì)包括硬件和軟件設(shè)計(jì)兩個(gè)部分。模塊劃分為數(shù)據(jù)采集、鍵盤(pán)控制、報(bào)警和顯示等模塊子函數(shù)。電路結(jié)構(gòu)做成可劃分為:熱釋電紅外傳感器、家庭智能報(bào)警器、單片機(jī)控制電路、LED控制電路及相關(guān)的控制管理軟件組成。用戶終端完成信息采集、處理、數(shù)據(jù)傳送、功能設(shè)定、本地顯示、本地報(bào)警等功能。就此設(shè)計(jì)的核心模塊來(lái)說(shuō),單片機(jī)就是設(shè)計(jì)的中心單元,所以此系統(tǒng)也是單片機(jī)應(yīng)用系統(tǒng)的一種應(yīng)用。單片機(jī)應(yīng)用系統(tǒng)也是有硬件和軟件組成。硬件包括單片機(jī)、輸入/輸出設(shè)備、以及外圍應(yīng)用電路等組成的系統(tǒng),軟件是各種工作程序的總稱。單片機(jī)應(yīng)用系統(tǒng)的研制過(guò)程包括總體設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)、在線調(diào)試等幾個(gè)階段,就本設(shè)計(jì)來(lái)說(shuō)也包括這些過(guò)程。它們的進(jìn)程框圖如圖4-1所示。開(kāi)始開(kāi)始確定設(shè)計(jì)方案確定設(shè)計(jì)方案硬件設(shè)計(jì)軟件設(shè)計(jì)硬件設(shè)計(jì)軟件設(shè)計(jì)聯(lián)機(jī)仿真調(diào)試聯(lián)機(jī)仿真調(diào)試排除故障排除故障系統(tǒng)運(yùn)行系統(tǒng)運(yùn)行完成研制完成研制圖4-1單片機(jī)應(yīng)用系統(tǒng)研制過(guò)程框圖4.2總體設(shè)計(jì)從設(shè)計(jì)的要求來(lái)分析該設(shè)計(jì)包含如下結(jié)構(gòu):熱釋電紅外傳探頭電路、報(bào)警電路、單片機(jī)、復(fù)位電路、LED顯示控制電路及相關(guān)的控制管理軟件組成;它們之間的構(gòu)成框圖如圖4-2總體設(shè)計(jì)框圖所示:CPUAT89C51復(fù)位電路信號(hào)檢測(cè)電路LED數(shù)字顯示報(bào)警執(zhí)行電路LED發(fā)光顯示放大驅(qū)動(dòng)驅(qū)動(dòng)驅(qū)動(dòng)圖4-2總體設(shè)計(jì)框圖處理器采用51系列單片機(jī)AT89C51。整個(gè)系統(tǒng)是在系統(tǒng)軟件控制下工作的。設(shè)置在監(jiān)測(cè)點(diǎn)上的紅外探頭將人體輻射的紅外光譜轉(zhuǎn)換成電信號(hào),經(jīng)過(guò)放大電路、比較電路送至門限開(kāi)關(guān),打開(kāi)門限閥門送出TTL電平至AT89C51單片機(jī)。在單片機(jī)內(nèi),經(jīng)過(guò)軟件查詢、識(shí)別判決等環(huán)節(jié)實(shí)時(shí)發(fā)出入侵報(bào)警狀態(tài)控制信號(hào)。驅(qū)動(dòng)電路將控制信號(hào)放大并推動(dòng)聲光報(bào)警設(shè)備完成相應(yīng)動(dòng)作。當(dāng)報(bào)警延遲10s一段時(shí)間后自動(dòng)解除,也可人工手動(dòng)解除報(bào)警信號(hào),然后通過(guò)LED顯示報(bào)警次數(shù),當(dāng)警情消除后復(fù)位電路使系統(tǒng)復(fù)位,或者是在聲光報(bào)警10s鐘后有定時(shí)器實(shí)現(xiàn)自動(dòng)消除報(bào)警。4.3系統(tǒng)硬件選擇從以上的分析可知在本設(shè)計(jì)中要用到如下器件:AT89S51、熱釋電紅外傳感器、LED、按鍵、反相器74LS04、蜂鳴器等一些單片機(jī)外圍應(yīng)用電路,以及單片機(jī)的手工復(fù)位電路等等。所需元器件如下:編號(hào)名稱型號(hào)數(shù)量R1、R6電阻4.7K2R2、R3、R7~R10電阻220R6R4、R5電阻10K2C1、C2電容30pF2C3、C4、C5(極性)電容47uF3D1~~D6發(fā)光二極管LED2綠4紅Q1、Q2三極管9015/80502U1、U2集成電路AT89S51、74LS041、1Y1石英晶振12MHZ1K1、K2按鍵*2LS蜂鳴器8R1Tantou熱釋電傳感器3TR1DS1共陰數(shù)碼管DISPLAY1JP電源接頭3OT14.4硬件電路實(shí)現(xiàn)經(jīng)分析本設(shè)計(jì)的電路原理圖如下圖4-3所示圖4-3基于單片機(jī)控制的紅外防盜報(bào)警器原理圖4.5軟件的程序?qū)崿F(xiàn)按上述工作原理和硬件結(jié)構(gòu)分析可知系統(tǒng)主程序工作流程圖如下圖4-4所示;入口入口初始化初始化監(jiān)測(cè)外部有無(wú)信號(hào)輸入監(jiān)測(cè)外部有無(wú)信號(hào)輸入NY顯示報(bào)警的次數(shù)且啟動(dòng)聲光報(bào)警電路開(kāi)始報(bào)警顯示報(bào)警的次數(shù)且啟動(dòng)聲光報(bào)警電路開(kāi)始報(bào)警聲光報(bào)警是否持續(xù)10秒聲光報(bào)警是否持續(xù)10秒N聲光報(bào)警結(jié)束,LED顯示出報(bào)警次數(shù)聲光報(bào)警結(jié)束,LED顯示出報(bào)警次數(shù)是否還有檢測(cè)信號(hào)等待下次報(bào)警是否還有檢測(cè)信號(hào)等待下次報(bào)警YN結(jié)束結(jié)束圖4-4主程序工作流程圖本主程序?qū)崿F(xiàn)的功能是:當(dāng)單片機(jī)檢測(cè)到外部熱釋點(diǎn)傳感器送來(lái)的脈沖信號(hào)后,表示有人闖入監(jiān)控區(qū),從而經(jīng)過(guò)單片機(jī)內(nèi)部程序處理后,驅(qū)動(dòng)聲光報(bào)警點(diǎn)路開(kāi)始報(bào)警,報(bào)警持續(xù)10秒鐘后自動(dòng)停止報(bào)警,同時(shí)顯示出報(bào)警次數(shù)以便人們查詢,然后程序開(kāi)始循環(huán)工作,檢測(cè)是否還有下次觸發(fā)信號(hào),等待報(bào)警從而使報(bào)警器進(jìn)入連續(xù)工作狀態(tài)。同時(shí),利用中斷方式可以實(shí)現(xiàn)報(bào)警持續(xù)時(shí)間未到10秒時(shí),用手工按鍵停止的聲光報(bào)警的作用。手工按鍵停止報(bào)警中斷服務(wù)程序工作流程圖,如下圖4-5所示;中斷源發(fā)出中斷申請(qǐng)中斷源發(fā)出中斷申請(qǐng)關(guān)中斷、保護(hù)現(xiàn)場(chǎng)關(guān)中斷、保護(hù)現(xiàn)場(chǎng)INTO/端有輸入信號(hào)關(guān)閉報(bào)警INTO/端有輸入信號(hào)關(guān)閉報(bào)警恢復(fù)現(xiàn)場(chǎng)、關(guān)中斷恢復(fù)現(xiàn)場(chǎng)、關(guān)中斷中斷返回中斷返回圖4-5中斷服務(wù)程序工作流程圖1.主程序清單如下:ORG0000HLJMPMAINORG0003HLJMPPINT0ORG0200HMAIN:MOVIE,#81H;CPU開(kāi)放中斷,/INT0允許中斷SETBIT0;外部中斷為邊沿觸發(fā)方式MOVSP,#30H;指針入口地址MOVR0,#00HSETBP3.0CLRP3.1MOVP1,#0FFH;使P1口全部置1MOVP2,#00H;P2口清零CLRP1.2LP:JNBP1.0,LA;監(jiān)測(cè)輸入信號(hào),是否有輸入信號(hào)LA:ACALLDELAY;延時(shí)消抖JNBP1.0,ALARM;再次監(jiān)測(cè)輸入信號(hào),若有輸入信號(hào)轉(zhuǎn)入報(bào)警子程序AJMPLPDELAY:MOVR1,0AAHLD2:MOVR2,0BBHLD1:NOPDJNZR2,LD1DJNZR1,LD2RETALARM:SETBP1.2;開(kāi)始報(bào)警使運(yùn)行正常綠指示燈熄滅,紅燈和聲報(bào)警啟動(dòng)MOVA,#00HINCR0;報(bào)警次數(shù)加一CJNER0,#0AH,LP1MOVR0,#00HLP1:MOVA,R0;顯示報(bào)警次數(shù)MOVDPTR,#TABMOVCA,@A+DPTRMOVP2,ATAB:DB3FH,06H,5BH,4FHDB66H,6DH,7DH,07HDB7FH,6FH;10S鐘定時(shí):MOV50H,#14H;1S循環(huán)次數(shù)20MOV51H,#0AH;10S循環(huán)次數(shù)MOVTMOD,#01H;定時(shí)器T0定時(shí)方式1MOVTL0,#0B0H;置50ms定時(shí)初值MOVTH0,#3CHSETBTR0;啟動(dòng)T0L2:JBCTF0,L1;查詢記數(shù)溢出SJMPL2L1:CPLP3.0CPLP3.1MOVTL0,#0B0H;重新賦值MOVTH0,#3CHDJNZ50H,L2;未到1S繼續(xù)循環(huán)CPLP3.0CPLP3.1MOV50H,#14HDJNZ51H,L2;未到10S繼續(xù)循環(huán)SETBP3.0;10s到關(guān)閉報(bào)警CLRP3.1CLRP1.2;報(bào)警結(jié)束,正常運(yùn)行綠指示燈亮LJMPLP;循環(huán),繼續(xù)工作END其中,10秒鐘的定時(shí)采用定時(shí)器T0定時(shí)工作在方式1,單片機(jī)晶振Fosc=12MHz,所以機(jī)器周期T=12×t0=12×(1/12MHz)=1us設(shè)定時(shí)器T0初始值為X,則:(2∧16-X)×1us=50ms從而可知定時(shí)器T0初始值X=65536-50000=15536=3CB0H,在此用50H、51H單元分別進(jìn)行1秒和10秒的計(jì)數(shù),它們內(nèi)的賦值分別為14H、0AH,T0的初值置為TL0=0B0H、TH0=3CH。2.外部中斷INTO服務(wù)程序:PINT0:CLREX0;外部中斷0服務(wù)程序開(kāi)始,屏蔽外部中斷PUSHPSWPUSHACCJNBP3.2,LN;監(jiān)測(cè)是否有中斷輸入LN:LCALLDELAY;延時(shí)消抖JNBP3.2,LN1AJMPLN2;無(wú)中斷輸入,中斷返回LN1:SETBP3.0CLRP3.1CLRP1.2;使報(bào)警結(jié)束,綠指示燈亮POPACCPOPPSWSETBEX0;開(kāi)放外部中斷0LCALLLP;在中斷繼續(xù)檢測(cè)是否有輸入信號(hào)LN2:RETI以上程序所編寫(xiě)的程序,通過(guò)Keil編譯軟件已經(jīng)編譯通過(guò),同時(shí)運(yùn)行效果已經(jīng)通過(guò)仿真軟件Proteus仿真,可以達(dá)到預(yù)定設(shè)計(jì)的目的,仿真效果圖如下圖4-6所示;圖4-6結(jié)果仿真效果圖通過(guò)仿真圖可以看出,該設(shè)計(jì)程序的結(jié)果達(dá)到了預(yù)期的目的,通過(guò)多次調(diào)試和修改,且在程序設(shè)計(jì)過(guò)程中應(yīng)考慮到各方面的干擾以及輸入輸出信號(hào)在工作中的不穩(wěn)定因素,都應(yīng)該在程序設(shè)計(jì)或硬件外圍電路中對(duì)這些干擾和不穩(wěn)定因素進(jìn)行消除和穩(wěn)定。在本設(shè)計(jì)中已經(jīng)對(duì)外部輸入信號(hào)和按鍵中斷進(jìn)行了軟件消抖和防干擾處理,本設(shè)計(jì)在設(shè)計(jì)過(guò)程中,應(yīng)該考慮的問(wèn)題和因素都已經(jīng)進(jìn)行了對(duì)應(yīng)的處理,所以,一些隱患在設(shè)計(jì)過(guò)程中都已經(jīng)消除了,根據(jù)仿真實(shí)現(xiàn)了設(shè)計(jì)功能,同時(shí),根據(jù)原理圖作出相應(yīng)的PCB圖,如下圖4-7所示;圖4-7報(bào)警器PCB效果圖根據(jù)PCB圖做出電路板,按照PCB圖的線路元器件的連接即可焊接出報(bào)警器成品,然后對(duì)焊接后的成品進(jìn)行修正、測(cè)試,可以達(dá)到預(yù)期的目的,既當(dāng)報(bào)警器工作時(shí),當(dāng)人體移動(dòng)到距離報(bào)警器0—10M范圍時(shí),即可觸發(fā)報(bào)警器工作,當(dāng)持續(xù)報(bào)警10S鐘后自動(dòng)停止報(bào)警,也可以手工按鍵解除報(bào)警;在報(bào)警的同時(shí)也可以顯示出報(bào)警的次數(shù),以供人員查閱。所以,此次設(shè)計(jì)的報(bào)警器靈敏度高,操作簡(jiǎn)單、靈活、易用。5.結(jié)論概述5.1主要結(jié)論本課題研究設(shè)計(jì)了一種基于單片機(jī)技術(shù)的無(wú)線智能防盜報(bào)警器。該防盜報(bào)警器通過(guò)以AT89S51單片機(jī)為工作處理器核心,外接熱釋電紅傳感器,它是一種新穎的被動(dòng)式紅外探測(cè)器件,能夠以非接觸方式探測(cè)出人體發(fā)出的紅外輻射,并將其轉(zhuǎn)化為相應(yīng)的電信號(hào)輸出,同時(shí)能有效的抑制人體輻射波長(zhǎng)以外的紅外光線與可見(jiàn)光的干擾,平時(shí)傳感器輸出低電平,當(dāng)有人在探測(cè)區(qū)范圍內(nèi)移動(dòng)時(shí)輸出低電平變?yōu)楦唠娖?,此高電平輸入單片機(jī),作為單片機(jī)的外部觸發(fā)信號(hào)處理,經(jīng)單片機(jī)內(nèi)部軟件編程處理后,單片機(jī)輸出控制信號(hào),驅(qū)動(dòng)聲光報(bào)警電路開(kāi)始報(bào)警,同時(shí)通過(guò)顯示電路顯示出報(bào)警次數(shù),以便人們識(shí)別了解報(bào)警情況。該報(bào)警器的最大特點(diǎn)就是使用戶能夠操作簡(jiǎn)單、易懂、靈活;且安裝方便、智能性高、誤報(bào)率低,同時(shí)它的信號(hào)經(jīng)過(guò)單片機(jī)系統(tǒng)處理后方便和PC機(jī)通信,便于多用戶統(tǒng)一管理。隨著現(xiàn)代人們安全意識(shí)的增強(qiáng)以及科學(xué)技術(shù)的快速發(fā)展,相信報(bào)警器必將在更廣闊的領(lǐng)域得到更深層次的應(yīng)用。5.2結(jié)束語(yǔ)到目前為止我的畢業(yè)設(shè)計(jì)也即將告一段落了,在這次的畢業(yè)設(shè)計(jì)中,自己也學(xué)習(xí)到了很多以前沒(méi)有經(jīng)歷過(guò)的知識(shí),讓我更加清楚了理論知識(shí)和實(shí)踐能力的差別,了解到自己的短處,培養(yǎng)了我的獨(dú)立思考能力,進(jìn)一步提高了自己在實(shí)際設(shè)計(jì)過(guò)程中研究問(wèn)題、發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力,同時(shí),也發(fā)現(xiàn)了自己的不足之處,和一些問(wèn)題的存在,并有待進(jìn)一步學(xué)習(xí)和發(fā)展,讓自己在未來(lái)的工作和學(xué)習(xí)之中更快的適應(yīng)和提高自己。致謝在畢業(yè)設(shè)計(jì)即將結(jié)束之即,再次對(duì)幫助過(guò)我的同學(xué)、和教誨過(guò)我的各位老師表示忠心的感謝,特別是我的指導(dǎo)教師李鑒老師,在我的畢業(yè)設(shè)計(jì)過(guò)程中給了我很大的幫助和細(xì)心指導(dǎo),李老師不但知識(shí)廣博、治學(xué)嚴(yán)謹(jǐn)、實(shí)踐經(jīng)驗(yàn)豐富,而且寬厚待大,和藹可親,讓我受益非淺,再次表示感謝。同時(shí),也感謝系里面給我們提供了非常難得的學(xué)習(xí)實(shí)驗(yàn)機(jī)房環(huán)境。一并表示感謝。參考文獻(xiàn)[1]元增民.單片機(jī)原理與應(yīng)用.—長(zhǎng)沙:國(guó)防科學(xué)大學(xué)出版社2021[2]劉仁宇.單片微型計(jì)算機(jī)原理及應(yīng)用.—西安:西安電子科技大學(xué)出版社.2021[3]馬忠梅.單片機(jī)外圍電路設(shè)計(jì)—北京:北京航空航天大學(xué)出版社2021[4]李光飛.傳感器技術(shù)與應(yīng)用.—北京:北京航空航天大學(xué)出版社2021[5]尹勇、王洪成.單片機(jī)開(kāi)發(fā)環(huán)境μVision2的使用指南.--北京:北京航空航天大學(xué)出版社2021.1[6]范立南.PROTUES仿真軟件實(shí)例使用指南.—北京:電子工業(yè)出版社2021.6[7]李全利.單片機(jī)原理及接口技術(shù).--北京:北京航空航天大學(xué)出版社2021.1[8]坎特編著.WindowsWDM開(kāi)發(fā)指南[M].孫義,馬莉波等譯.--西安:西安電子科技大學(xué)出版社,2021.9[9]徐愛(ài)鈞、彭秀華.單片機(jī)高級(jí)語(yǔ)言C51應(yīng)用程序設(shè)計(jì).--北京:北京航空航天大學(xué)出版社2021.1[10]薛均義、張彥斌.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用.--西安:西安交通大學(xué)出版社2021.1[11]樓然苗.51系列單片機(jī)設(shè)計(jì)實(shí)例.—北京:北京航空航天大學(xué)出版社2021.4[12]黃智偉.傳感器應(yīng)用設(shè)計(jì)實(shí)例制作.—北京:電子工業(yè)出版社2021.4[13]唐桃波、陳玉林.基于AT89C51的智能無(wú)線安防報(bào)警器[J].電子設(shè)計(jì)應(yīng)用,2021,(6):49~51[14]Compaq,Intel,Microsoft,NEC.UniversalSerialBusSpecificationV1.1[S].2021[15]Philips,Augest.PDIUSBDI2DataSheet[EB].2021PAGE1
中南民族大學(xué)學(xué)生課程設(shè)計(jì)報(bào)告課程名稱:C程序設(shè)計(jì)語(yǔ)言選題名稱:通訊錄管理年級(jí):專業(yè):信息管理與信息系統(tǒng)學(xué)號(hào):姓名:指導(dǎo)教師:完成地點(diǎn):管理學(xué)院綜合實(shí)驗(yàn)室完成日期:1.課程設(shè)計(jì)的目的為了熟練掌握C語(yǔ)言的語(yǔ)法特點(diǎn)、及其數(shù)據(jù)結(jié)構(gòu),提高自身編寫(xiě)程序的能力。通過(guò)課程設(shè)計(jì)實(shí)現(xiàn)理論知識(shí)與實(shí)際情況的結(jié)合,使所學(xué)知識(shí)能夠在現(xiàn)實(shí)社會(huì)中起到一定的作用,防止所編寫(xiě)的程序脫離實(shí)際,讓程序可以更好的發(fā)揮作用,以便減輕實(shí)際工作中所遇到的繁瑣步驟,提高現(xiàn)實(shí)工作中的效率。此外通過(guò)課程設(shè)計(jì)提高邏輯思考能力和解決實(shí)際問(wèn)題的能力。程序設(shè)計(jì)是公認(rèn)的、最能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維,培養(yǎng)分析問(wèn)題、解決問(wèn)題能力的學(xué)科之一。其次課程設(shè)計(jì)有利于治學(xué)態(tài)度的培養(yǎng)。程序設(shè)計(jì)中,語(yǔ)句的語(yǔ)法和常量變量的定義都有嚴(yán)格的要求,有時(shí)輸了一個(gè)中文標(biāo)點(diǎn)、打錯(cuò)了一個(gè)字母,編譯就不通過(guò),程序無(wú)法正常運(yùn)行。因此,程序設(shè)計(jì)初學(xué)階段,學(xué)生經(jīng)常會(huì)犯這樣的錯(cuò)誤,可能要通過(guò)幾次乃至十多次的反復(fù)修改、調(diào)試,才能成功,但這種現(xiàn)象會(huì)隨著學(xué)習(xí)的深入而慢慢改觀。這當(dāng)中就有一個(gè)嚴(yán)謹(jǐn)治學(xué)、一絲不茍的科學(xué)精神的培養(yǎng),又有一個(gè)不怕失敗、百折不撓品格的鍛煉。通訊錄信息管理系統(tǒng)是生活中不可缺少的部分編寫(xiě)了一個(gè)通訊錄信息管理系統(tǒng)是十分必要的。本程序設(shè)計(jì)具有通訊信息的錄入,進(jìn)行保存、查找、刪除等功能,操作界面簡(jiǎn)潔美觀,易于操作。程序用了條件、循環(huán)、指針、結(jié)構(gòu)體等知識(shí)點(diǎn),綜合了文件的打開(kāi)和保存編寫(xiě)的??蛇\(yùn)用于小的管理軟件。軟件運(yùn)用菜單實(shí)現(xiàn)交互式管理,用戶輕松的按鍵既可實(shí)現(xiàn)對(duì)軟件的操作,操作簡(jiǎn)單易懂,功能豐富,可以很好的滿足的需要。通過(guò)對(duì)通訊錄管理系統(tǒng)的設(shè)計(jì),進(jìn)一步理解和掌握C語(yǔ)言這門課程的知識(shí)點(diǎn),能夠熟練的調(diào)用各種函數(shù),把各種C語(yǔ)句有機(jī)的結(jié)合起來(lái),提高自己C語(yǔ)言程序設(shè)計(jì)的能力,為今后解決實(shí)際問(wèn)題打下良好基礎(chǔ)。2.設(shè)計(jì)方案論證2.1設(shè)計(jì)思路建立一個(gè)函數(shù),用來(lái)添加、顯示、刪除、查詢通訊錄等信息,完成通訊錄的功能。主函數(shù)可以調(diào)用六個(gè)子函數(shù),分別完成添加記錄、顯示記錄、刪除記錄、查詢記錄、退出系統(tǒng)等功能。在主函數(shù)中可以以1、2、3、4、0數(shù)字鍵分別可以執(zhí)行某個(gè)功能模塊。退出程序刪除記錄查詢記錄顯示退出程序刪除記錄查詢記錄顯示記錄添加記錄通訊錄管理系統(tǒng) 2.2程序設(shè)計(jì)2.2.1根據(jù)圖1定義數(shù)據(jù)類型建立函數(shù)typedefstruct { charscore;/*編號(hào)*/ charname[10];/*姓名*/ charnum[15];/*號(hào)碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;2.2.2主函數(shù)及其流程圖Y定義主函數(shù)main()和一系列的功能函數(shù),只有通過(guò)這些函數(shù)才可實(shí)現(xiàn)程序的功能。每次使用都會(huì)調(diào)用主函數(shù)。主函數(shù)主要是利用switch語(yǔ)句對(duì)數(shù)據(jù)進(jìn)行處理,流程圖如下:Y添加記錄選擇1開(kāi)始N選擇2YYYYNNNN退出系統(tǒng)查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3添加記錄選擇1開(kāi)始N選擇2YYYYNNNN退出系統(tǒng)查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3結(jié)束結(jié)束2.2.3增加函數(shù)及其流程圖.添加通訊錄記錄流程圖:.顯示通訊錄記錄流程圖:.刪除通訊錄記錄流程圖:.查詢通訊錄記錄流程圖:2.3源程序#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct { charscore;/*編號(hào)*/ charname[10];/*姓名*/ charnum[15];/*號(hào)碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;Personpe[80];intmenu_select() { charc; do{ system("cls"); printf("\t\t*****通訊錄*****\n"); printf("\t\t┌───────┐\n"); printf("\t\t│1.添加記錄│\n"); printf("\t\t│2.顯示記錄│\n"); printf("\t\t│3.刪除記錄│\n"); printf("\t\t│4.查詢記錄│\n"); printf("\t\t│0.退出程序│\n"); printf("\t\t└───────┘\n"); printf("\t\t請(qǐng)您選擇(0-4):"); c=getchar(); }while(c<'0'||c>'4'); return(c-'0'); }intInput(Personper[],intn){ inti=0; charsign,x[10]; while(sign!='n'&&sign!='N') { printf("\t編號(hào):"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t年齡:"); scanf("\t%s",per[n+i].age); printf("\t電話號(hào)碼:"); scanf("\t%s",per[n+i].num); printf("\t通訊住址:"); scanf("\t%s",per[n+i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[n+i].email); gets(x); printf("\n\t是否繼續(xù)添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);}voidDisplay(Personper[],intn){ inti; printf("\n");/*格式*/ printf("編號(hào)姓名年齡電話號(hào)碼通訊地址電子郵箱\n"); printf("\n"); for(i=1;i<n+1;i++) { printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t\n"); printf("\t"); system("pause"); printf("\t\n"); } } printf("\n"); system("pause");}intDelete_a_record(Personper[],intn){ chars[20]; inti=0,j; printf("\t請(qǐng)輸入想刪除記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒(méi)有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已經(jīng)成功刪除!\n"); return(n-1);}voidQuery_a_record(Personper[],intn){ intm; printf("\t\n請(qǐng)選擇查詢方式:\n");printf("\t┌──────┐\n");printf("\t│1姓名│\n");printf("\t│2電話│\n");printf("\t│3地址│\n");printf("\t│4返回│\n");printf("\t└──────┘\n");printf("請(qǐng)選擇:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("輸入錯(cuò)誤,請(qǐng)重新選擇:"); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t請(qǐng)輸入想查詢的姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒(méi)有此人!\n"); return; } printf("\t此人編號(hào):%d\n",per[i].score); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號(hào)碼:%s\n",per[i].num); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t請(qǐng)輸入想查詢的電話:"); scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒(méi)有此人!\n"); return; } printf("\t此人編號(hào):%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==3) { chars[20]; inti=0; printf("\t請(qǐng)輸入想查詢的地址:"); scanf("\t%s",s); while(strcmp(per[i].adds,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒(méi)有此人!\n"); return; } printf("\t此人編號(hào):%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號(hào)碼:%s\n",per[i].num); printf("\t電子郵箱:%s\n",per[i].email); };}voidChange(Personper[],intn){ chars[20]; inti=0; printf("\t請(qǐng)輸入想修改的記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒(méi)有此人!\n"); return; } printf("\t編號(hào):"); scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t年齡:"); scanf("\t%s",per[i].age); printf("\t電話號(hào)碼:"); scanf("\t%s",per[i].num); printf("\t通訊住址:"); scanf("\t%s",per[i].adds); printf("\t電
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 舞蹈面試必 備:中國(guó)舞面試題目及答案全解析
- 知識(shí)題庫(kù)-物業(yè)管理師考試題目及答案(填空題、單選題)
- 山西省大同四中聯(lián)盟體2026屆化學(xué)高一第一學(xué)期期末監(jiān)測(cè)試題含解析
- 你的名字講解版
- 天然藥物化學(xué)萜類
- 湖北省襄陽(yáng)市第四中學(xué)2026屆化學(xué)高一上期中綜合測(cè)試模擬試題含解析
- 氧氣放散率講解
- 市場(chǎng)營(yíng)銷消費(fèi)者行為分析講解
- 膝關(guān)節(jié)結(jié)核講解
- 三級(jí)中醫(yī)醫(yī)院評(píng)審匯報(bào)
- 2025年(完整版)十八項(xiàng)核心制度培訓(xùn)考核試題(含答案)
- 社工的勞動(dòng)合同范本(2025版)
- 2025年中國(guó)LCP料數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 紡織服裝產(chǎn)業(yè)園項(xiàng)目建設(shè)方案
- DB44T 1597-2015 電鍍水污染物排放標(biāo)準(zhǔn)
- 兒童保健工作管理辦法
- 全固態(tài)高功率超快激光器:放大機(jī)制與熱透鏡效應(yīng)的深度剖析
- KET教學(xué)課件新版
- DGTJ08-2232-2017 城市軌道交通工程技術(shù)規(guī)范
- 中職思政試題及答案
- 中小學(xué)暑期安全教育班會(huì)課件
評(píng)論
0/150
提交評(píng)論