多功能數(shù)字時鐘畢業(yè)設(shè)計_第1頁
多功能數(shù)字時鐘畢業(yè)設(shè)計_第2頁
多功能數(shù)字時鐘畢業(yè)設(shè)計_第3頁
多功能數(shù)字時鐘畢業(yè)設(shè)計_第4頁
多功能數(shù)字時鐘畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一 引言2二 硬件系統(tǒng)方案設(shè)計22.1電話撥號防盜報警器硬件系統(tǒng)方案22.1.1 硬件系統(tǒng)方案設(shè)計22.1.2 脈沖撥號原理32.1.3 脈沖撥號實(shí)現(xiàn)過程42.1.4 AT89S2052單片機(jī)的功能特點(diǎn)52.2 時鐘計時器的硬件設(shè)計方案論證分析82.2.1 功能要求82.2.2 方案論證82.2.3 系統(tǒng)硬件電路設(shè)計84.1.2時鐘計時器的硬件電路設(shè)計描述9三 系統(tǒng)的軟件設(shè)計103.1電話撥號防盜報警器程序設(shè)計103.1.1主程序設(shè)計113.2 時鐘顯示程序設(shè)計123.2.1主函數(shù)123.2.2 LED顯示子函數(shù)133.2.3 定時器T0中斷函數(shù)133.2.4 中斷函數(shù)143.2.5 功能函數(shù)

2、14四 系統(tǒng)的調(diào)試部分154.1 時鐘系統(tǒng)的調(diào)試154.1.1 時鐘系統(tǒng)的硬件調(diào)試154.1.2 時鐘系統(tǒng)的軟件調(diào)試154.1.3 性能分析154.2 撥號報警器功能調(diào)試15五 總結(jié)16參考文獻(xiàn)17附錄18附錄1 程序清單18附錄2 系統(tǒng)使用說明18附錄3 英文資料18附錄4 系統(tǒng)PCB板圖18附錄1:程序清單19附錄2:系統(tǒng)使用說明36一 引言隨著人們生活水平的不斷提高,大家對住宅和辦公室的安全意識也日益增加。因此,研究和開發(fā)防盜報警裝置引起了科研單位和生產(chǎn)廠家的重視,特別是面對普通居民、價格低、運(yùn)行可靠的自動報警系統(tǒng)。 長期以來,一些電子雜志介紹的廉價防盜報警均無電話撥號報警功能,而市售的

3、可自動撥號報警的防盜器材又價格高昂。這里介紹的電話撥號防盜報警器可在這兩者之間找到平衡,即兼具高性能和低價位。為了以低成本實(shí)現(xiàn)高性能,設(shè)計時利用了電信局的交換機(jī)支持脈沖撥號方式來實(shí)現(xiàn)撥號報警,這樣可利用單片機(jī)直接發(fā)出撥號脈沖,精簡了電路,降低了成本。 電話撥號防盜報警器作為家庭防盜報警器材的一員,非常經(jīng)濟(jì)實(shí)用。它進(jìn)入工作警戒后,主控CPU不斷檢查觸發(fā)開關(guān)的狀態(tài),當(dāng)盜賊入室觸發(fā)開關(guān)時,立即啟動電話撥號報警程序向主人告警(當(dāng)然也可以通過修改軟件使其在現(xiàn)場發(fā)出高分貝報警音)。實(shí)踐證明,該系統(tǒng)報警快速、準(zhǔn)確。由于該系統(tǒng)電路簡單,而且利用的是公共通信網(wǎng),因此不存在建立的報警系統(tǒng)網(wǎng)絡(luò)問題,具有成本低、體積

4、小、能耗極低、體積小、能耗極低且不影響正常打電話等突出優(yōu)點(diǎn)。平時可以作為時鐘計時器來使用,真是一舉兩得。 二 硬件系統(tǒng)方案設(shè)計 2.1電話撥號防盜報警器硬件系統(tǒng)方案2.1.1 硬件系統(tǒng)方案設(shè)計圖2.1為電話撥號報警器的系統(tǒng)構(gòu)成方框圖,由單片機(jī)控制器、鍵盤輸入、數(shù)碼管顯示、觸發(fā)電路、撥號電路及電源等6部分組成。單片機(jī)控制器是整個系統(tǒng)的核心,負(fù)責(zé)控制檢測輸入/輸出顯示、模擬摘機(jī)、撥號摘機(jī)、撥號報警、掛機(jī)等一系列的程序動作。這里使用了小引腳、高性能、低價位的AT89S2052。 鍵盤輸入電路負(fù)責(zé)輸入電片機(jī)中一系列工作參數(shù)及功能設(shè)定。 發(fā)光二極管數(shù)碼管顯示器在整個系統(tǒng)工作過程中充當(dāng)一個簡單的人機(jī)界面,

5、用以顯示工作狀況及輸入/輸出的數(shù)據(jù)等。 電話撥號防盜報警器的觸發(fā)電路用磁性開關(guān)(門磁開關(guān)),簡單可靠,也可用紅外探測器或無線門磁,以實(shí)現(xiàn)全方位遠(yuǎn)距離監(jiān)測。報警器應(yīng)采用隱蔽安裝,防止小偷發(fā)現(xiàn)。 撥號及報警電路用來完成模擬摘機(jī)、撥號、發(fā)出報警音、掛機(jī)等工作過程,它的工作由單片機(jī)控制。 電源部分負(fù)責(zé)對整個系統(tǒng)供電。平時由電話線上取得工作電流并對后備電池充電,撥號報警時轉(zhuǎn)由后備電池供電。鍵盤單片機(jī)控制器觸發(fā)開關(guān)電源撥號電路顯示模塊 圖2.1 電話撥號防盜報警器方框圖2.1.2 脈沖撥號原理脈沖撥號是目前電話機(jī)兩種撥號方式中的一種,另一種為雙音多頻撥號方式。脈沖撥號就是指在電話機(jī)上撥入的電話號碼以脈沖個

6、數(shù)的形式發(fā)出,也就是說,在已經(jīng)通以直流電流的回路上,利用撥號盤及發(fā)號電路將回路斷開、再接通而形成的脈沖信號,來完成輸入電話號碼的發(fā)送。在操作中,若用戶撥1,則送出1個脈沖,回路中斷一次、接通一次;撥2,則發(fā)出2個脈沖,回路斷一次、接通一次、再斷一次;而撥0時,則發(fā)出10個脈沖,回路斷、接通輪流10次。圖2.2為電話號碼“32”的脈沖波形。時間號碼字間間隔時間tID號碼2的脈沖號碼3的脈沖斷通 圖2.2 電話號碼“32”的脈沖波形 正常撥號時,電路電流中斷的時間一般在5865ms之間,視斷續(xù)比的不同而不同。快速撥號時,只要取一半時間即可。電路電流接通的時間(即在同一位號碼中的2個斷脈沖之間的接通

7、電流時間)約在3242ms之間,視斷續(xù)比的不同而不同??焖贀芴枙r,只要取一半時間即可。顯然脈沖周期等于脈沖中斷時間和脈沖接通時間之和,每一個周期的時間為100ms左右??焖贀芴枙r,在50ms左右。2位號碼(即2組脈沖串)之間的最小時間間隔,通常為800ms左右;而快速撥號時,其值減半,為400ms左右。我國目前采用的電話脈沖撥號的速率是10PPS(每秒的脈沖數(shù)),即每秒發(fā)出10個脈沖,因此上述各參數(shù)不存在快速撥號時的值。 為了提高撥號的可靠性及穩(wěn)定性,這里設(shè)計時選定更低的脈沖撥號速率:1個脈沖代表播出1,2個脈沖代表撥出2,10個脈沖代表撥出0,每個脈沖的寬度和間隔為100ms。工作時首先進(jìn)行

8、模擬摘機(jī),然后開始脈沖撥號,撥出1位號碼后停頓500ms(保持接通)再撥下一位,直至全部撥完后再發(fā)報警音,最后掛機(jī)。2.1.3 脈沖撥號實(shí)現(xiàn)過程圖2.3為脈沖撥號的實(shí)現(xiàn)電路。平時電話線上的電壓約為5060V左右。未撥號時電片機(jī)的P3.0、P3.1 均輸出低電平。撥號過程如下:單片機(jī)的P3.0輸出高電平,使TR1導(dǎo)通,由于電話線路上接入了負(fù)載R1,這樣電話線的電壓下降,模擬摘機(jī)。單片機(jī)的P3.0開始輸出撥號脈沖,使電話線的電壓(電平)也呈高、低變化。1個脈沖代表撥出1,2個脈沖代表撥出2,10個脈沖代表撥出0,每個脈沖的寬度和間隔均為100ms。撥出1位號碼后停頓500ms(保持P3.0高電平)

9、再撥下一位,直至全部撥完。P3.0 保持高電平(保持電話線路接通),P3.1輸出1KHz的報警音脈沖驅(qū)動TR2,以2Hz進(jìn)行調(diào)制(即接通1kHz信號0.5s、斷開1kHz信號0.5s),這樣從接聽方的電話中就會聽到“嘟、嘟”的報警聲。報警音的時間根據(jù)設(shè)計為60s。60后,P3.1輸出低電平,TR2 截止,停止報警。隨后P3.0也輸出低電平,模擬掛機(jī)。完成一次報警過程。圖2.3 脈沖撥號實(shí)現(xiàn)電路2.1.4 AT89S2052單片機(jī)的功能特點(diǎn)電話撥號防盜報警器的核心控制器是單片機(jī)AT89S2052。AT89S2052 是美國ATMEL半導(dǎo)體公司生產(chǎn)的一種高性能單片機(jī)。該單片機(jī)以與MCS-51系列單

10、片機(jī)高度兼容、低功耗、可以在接近零頻率下工作等諸多優(yōu)點(diǎn),而廣泛應(yīng)用于各類計算機(jī)系統(tǒng)、工業(yè)控制、電信設(shè)備、消費(fèi)類產(chǎn)品中。由于ATMEL是全球最大的FLASH和EEPROM生產(chǎn)制造公司之一,加之以其EEPROM技術(shù)與INTEL的80C51內(nèi)核技術(shù)交換,使ATMEL擁有了80C51內(nèi)核的使用權(quán),其生產(chǎn)的AT89系列電片機(jī)不僅與80C51有極好的兼容性,而且具有極高的性能價格比。1. AT89S2051的主要性能特點(diǎn)指令與MCS-51完全兼容;內(nèi)帶2KB可編程閃速存儲器(FLASH MEMORY)可重復(fù)擦寫1000次;數(shù)據(jù)保留10年;工作電壓范圍2.76V;工作頻率024MHZ;兩極程序加密鎖定;12

11、8B內(nèi)部RAM;15條可編程雙向I/O口線;2個16位定時器/計時器;5個中斷源;可編程串行UART通道;輸出口可直接驅(qū)動LED;片內(nèi)含模擬比較器;低功耗的閑置和掉電模式。AT89S2052是AT89 系列電片機(jī)種的一種精簡產(chǎn)品。它是將TA89C52的P0口、P2口、EA/Vpp、ALE/PROG、PSEN口線省去后,形成的一種僅20個引腳的單片機(jī),相當(dāng)于早期INTEL8031的最小應(yīng)用系統(tǒng)。這對于一些不太復(fù)雜的控制場合,僅用一片AT89S2052就足夠了,是真正意義上的“單片機(jī)”。 由于將多功能8位CPU和2KB的閃速存儲器集成在單個芯片中,使其成為一種高效的微控制器。AT89S2052的出

12、現(xiàn)為很多規(guī)模不太大的嵌入式控制系統(tǒng)提供了一種極佳的選擇方案,使傳統(tǒng)的51系列單片機(jī)的體積大、功耗大、可選模式少等諸多困擾設(shè)計工程師們的致命弱點(diǎn)不復(fù)存在。2. 引腳功能介紹AT89S2052引腳外形如圖所示。Vcc:電源端。GND:接地。P1 口(P1.0P1.7):是一個8位雙向I/O口,其中P1.2至P1.7提供內(nèi)部上拉電阻,P1.0和P1.1需外接上拉電阻。P1.0和P1.1也可作為片內(nèi)精確模擬比較器的正向輸入(AINO)和反向輸入(AINI)。P1口輸出緩沖器能提供20mA的灌電流,可直接驅(qū)動LED。P1口寫入“1”后可用作輸入。P3口:引腳P3.0至P3.7(P3.5除外)是7個帶內(nèi)部

13、上拉電阻的雙向I/O口線。原P3.6不能使用,已連接片內(nèi)比較器輸出端。與P1口相同,P3口也能提供20mA的灌電流,并可直接驅(qū)動LED顯示器。與80C51相同,P3口也有第2功能,P3.0作為串行數(shù)據(jù)接收RXD;P3.1作為串行數(shù)據(jù)發(fā)送TXD;P3.2為外部中斷0申請INT0;P3.3 為外部中斷1申請INT1;P3.4 為定時器/計時器0輸入;P3.5位定時器/計數(shù)器1輸入;P3.7無第2功能RD。RST:復(fù)制輸入。要使芯片可靠復(fù)位,要保持RST引腳2個機(jī)器周期的高電平。XTAL1:反向振蕩放大的輸入及內(nèi)部時鐘電路的殊榮。XTAL2:來自反向振蕩放大器的輸出。3. 特殊功能寄存器(SFR)與

14、80C51完全相同4. 程序存儲器鎖定AT89S2052片內(nèi)有2個鎖定位,可以不編程(U),也可以編程(P),以獲得一些附加的特性,如表2.1所示。 表2.1 程序存儲器鎖定編程鎖定位LB1LB2保護(hù)模式1UU沒有編程鎖定特性2PU禁止對閃速存儲器進(jìn)一步編程3PP同模式2,同時禁止校驗(yàn) 5、閑置模式 在閑置模式下,CPU自身處于休眠狀態(tài),而片內(nèi)所有其他外圍設(shè)備保持工作狀態(tài)。該模式是軟件生成的。在該模式期間,片內(nèi)RAM和所有特殊功能寄存器的內(nèi)容保持不變。閑置模式可以允許由中斷或硬件復(fù)位終止。如果不采用外部上拉,P1.0和P1.1應(yīng)置0;如果采用外部上拉,則置1。應(yīng)注意的是,當(dāng)閑置模式被硬件復(fù)位中

15、止時,器件要從閑置處恢復(fù)程序的執(zhí)行,執(zhí)行2個機(jī)器周期后,內(nèi)部復(fù)位算法才起作用。此時,硬件禁止訪問內(nèi)部RAM,但允許訪問端口引腳。為了排除閑置被復(fù)位中止時對端口意外寫入的可能性,跟在生成閑置模式后的指令不應(yīng)是對端口引腳的讀/寫操作。6.掉電模式 在掉電模式下,振蕩器停止工作,生成掉電狀態(tài)的指令是最后執(zhí)行的一條指令。片內(nèi)RAM和特殊功能寄存器保持其值不變直到掉電模式終止。從掉電模式退出的唯一辦法是硬件復(fù)位。復(fù)位將重新定義特殊功能寄存器(SFR),但不會影響片內(nèi)RAM。在Vcc沒有恢復(fù)到其正常工作電壓之前,不應(yīng)進(jìn)行復(fù)位,且復(fù)位的保持時間應(yīng)足夠長,使振蕩器能重新開始工作并穩(wěn)定下來。同樣,如果不采用外部

16、下拉,P1.0和P1.1應(yīng)置0,如果采用外部上拉,則置1。2.2 時鐘計時器的硬件設(shè)計方案論證分析2.2.1 功能要求時鐘計時器要求用六位LED數(shù)碼管顯示時、分、秒、以二十四小時方式運(yùn)行,使用按鍵開關(guān)實(shí)現(xiàn)時,分調(diào)整功能。2.2.2 方案論證為實(shí)現(xiàn)LED顯示器的數(shù)字顯示,可以采用靜態(tài)顯示法和動態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜一些,考慮到時鐘顯示只有六位,且系統(tǒng)沒有其它復(fù)雜的處理任務(wù),所以決定用動態(tài)掃描實(shí)現(xiàn)LED顯示。單片機(jī)采用易購的AT89S52系列,這種單片機(jī)可具有足夠的空余硬件資源,以實(shí)現(xiàn)其它的擴(kuò)充功能。若使用電池供電,可采用低電壓的LV系列單片機(jī)時鐘計時器電路系統(tǒng)的總

17、體設(shè)計框架如圖3.1所示。單片機(jī)控制器AT89S526位LED顯示器列驅(qū)動 圖3.1 硬件系統(tǒng)的總體設(shè)計框架2.2.3 系統(tǒng)硬件電路設(shè)計電話撥號防盜報警器的硬件電路設(shè)計描述為了發(fā)揮電片機(jī)強(qiáng)大的計算、控制能力,充分發(fā)揮軟件的優(yōu)勢,這里極大地簡化了電路,但可實(shí)現(xiàn)以前需要幾片甚至十幾片小規(guī)模數(shù)字電路才能完成的任務(wù)。電路原理如圖所示,共有4個按鍵,即rst、ok、up、set。rst:系統(tǒng)復(fù)位鍵。ok:輸入數(shù)據(jù)確認(rèn)鍵。up:顯示的數(shù)字增加鍵。set:工作模式設(shè)定鍵,可設(shè)定管機(jī)、工作、輸入時間t1、輸入時間t2及輸入電話號碼5種模式。 磁性開關(guān)即為裝于門或窗口的防盜感應(yīng)開關(guān),門關(guān)閉時常開,門打開時閉合接

18、通。當(dāng)然也可改用其他的感應(yīng)器件,如激光探測、超聲波感應(yīng)、熱釋電感應(yīng)、主動紅外線探測或無線門磁等,以實(shí)現(xiàn)全方位遠(yuǎn)距離檢測。為了防止磁性開關(guān)離控制器較遠(yuǎn)而產(chǎn)生引入干擾,使用了光耦作信號傳遞,效果良好。LED數(shù)碼管用于工作狀態(tài)指示或輸入數(shù)據(jù)指示。L1、L2接電話線,ZND為擊穿電壓120V的壓敏二極管,防止電路受雷電干擾。平時系統(tǒng)處于低功耗待機(jī)狀態(tài)(此時耗電僅2mA左右),由電話線上取電工作,并對3.6V/60mA鎳鉻電池充電,當(dāng)輸入數(shù)據(jù)進(jìn)行設(shè)定或進(jìn)行撥號報警時,耗電會達(dá)到10mA,這時主要由鎳鉻電池供電。由于有鎳鉻電池后備供電,即使電話線斷電也不會使已輸入的數(shù)據(jù)丟失。該機(jī)除用于防盜報警外,若對軟件

19、進(jìn)行一些修改,也可通過電話線進(jìn)行遠(yuǎn)程數(shù)據(jù)傳遞。三極管T1、T2及電阻R1、R2構(gòu)成撥號及報警電路,其工作原理前面已作詳細(xì)介紹。4.1.2時鐘計時器的硬件電路設(shè)計描述時鐘計時器的硬件電路,采用AT89S52單片機(jī)最小化應(yīng)用設(shè)計,顯示采用共陽七段LED顯示器,P0口輸出段數(shù)碼數(shù)據(jù),P2.0P2.5口作列掃描輸出,P1.0,P1.1和P1.2口接三個按鈕開關(guān)用以實(shí)現(xiàn)調(diào)時,調(diào)分功能.為了提供共陽LED數(shù)碼管的驅(qū)動電壓,用三極管8550作電源驅(qū)動輸出。采用12MHZ晶振有利于提高秒計時的精確性。硬件電路圖如圖3.2示。 圖3.2 具有時鐘功能的電話報警器原理圖 三 系統(tǒng)的軟件設(shè)計3.1電話撥號防盜報警器

20、程序設(shè)計3.1.1主程序設(shè)計 主程序的工作過程為:先進(jìn)行初始化工作,隨后根據(jù)輸入的鍵值分別散轉(zhuǎn)輸入的鍵值分別散轉(zhuǎn)至對應(yīng)的子程序(管機(jī)、警戒工作、輸入時間t1、輸入時間t2、輸入電話號碼)循環(huán)工作。T0為100ms定時中斷服務(wù)子程序,它實(shí)現(xiàn)精確的撥號脈沖時序。INT0外中斷服務(wù)子函數(shù)用于實(shí)現(xiàn)功能選擇;而INT1外中斷服務(wù)子函數(shù)則檢測防盜觸發(fā)開關(guān)的狀態(tài)。 主程序狀態(tài)流程圖如圖3.6所示。INT0外中斷服務(wù)子函數(shù)狀態(tài)流程圖及INT1外中斷服務(wù)子函數(shù)的狀態(tài)流程圖分別如圖3.7、圖3.8所示。開始 定時器T0初始化 關(guān)閉撥號、報警線路輸入號碼 輸入t2輸入t1 工作 根據(jù)set鍵值散轉(zhuǎn)關(guān) 機(jī) 圖3.6

21、主程序狀態(tài)流程 - 40 -INT0外中斷服務(wù)子函數(shù)開始如set鍵按下,則set鍵值加1如鍵值大于5,則鍵值回0系統(tǒng)進(jìn)入低功耗待機(jī)狀態(tài)INT0外中斷服務(wù)子函數(shù)結(jié)束圖3.7 INT0外中斷服務(wù)子函數(shù)狀態(tài)流程INT1外中斷服務(wù)子函數(shù)結(jié)束查詢門控開關(guān)共10次INT1外中斷服務(wù)子函數(shù)開始圖3.8 INT1外中斷服務(wù)子函數(shù)結(jié)束3.2 時鐘顯示程序設(shè)計3.2.1主函數(shù) 本設(shè)計中計時采用定時器T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子函數(shù)及鍵掃描子函數(shù),當(dāng)端口開關(guān)按下時,轉(zhuǎn)入相應(yīng)調(diào)時功能。其主函數(shù)執(zhí)行流程如圖3.3所示。開 始顯示單元清0T0、T1設(shè)為16位計數(shù)器模式允許T0中斷N調(diào)用顯示子函數(shù)鍵按下?進(jìn)入調(diào)時功

22、能圖3.3 主函數(shù)流程圖3.2.2 LED顯示子函數(shù) 數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元dis0dis5中,其中dis0dis1存放秒數(shù)據(jù),dis2dis3存放分?jǐn)?shù)據(jù),dis4dis5存放時數(shù)據(jù),每一單元內(nèi)均為十進(jìn)制BCD碼。由于采用軟件動態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示用的十進(jìn)制BCD碼數(shù)據(jù)的對應(yīng)段碼存放在ROM表(dis711)中,顯示時,先取出dis0dis5中的某一數(shù)據(jù),然后查得對應(yīng)得顯示段碼從P0口輸出,P2口將對應(yīng)得數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。3.2.3 定時器T0中斷函數(shù) 定時器T0用于時間計時。定時溢出中斷周期可設(shè)為50ms,中斷進(jìn)入后先判斷,中斷計時累計20次(即1m

23、s)時對妙計數(shù)單元進(jìn)行加1操作。時鐘計數(shù)單元在 義的6個單元(timedata6)中。timedata0timedata1存放秒數(shù)據(jù),timedata2timedata3存放分?jǐn)?shù)據(jù),timedata4timedata5存放時數(shù)據(jù)。最大計時值為23小時59分59秒。在計數(shù)單元中采用十進(jìn)制BCD碼計數(shù),秒,分、時之間滿60進(jìn)位。T0中斷服務(wù)程序執(zhí)行流程如圖3.4所示。T0中斷 保護(hù)現(xiàn)場 1s到?加1處理 恢復(fù)現(xiàn)場,中斷返回圖3.4 T0 中斷函數(shù)3.2.4 中斷函數(shù) T1中斷服務(wù)程序用于指示調(diào)整數(shù)字單元的亮閃,在時間調(diào)整狀態(tài)下,每過0.4s,將對應(yīng)單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(0x0a)。這樣

24、,在調(diào)整時間時,對應(yīng)調(diào)整單元的顯示數(shù)據(jù)會間隔閃亮。3.2.5 功能函數(shù) 調(diào)時功能函數(shù)的設(shè)計方法是:按下T0鍵,進(jìn)入調(diào)分狀態(tài),時鐘停止走動;按T1或T2鍵可進(jìn)行加1或減1操作 ;繼續(xù)按T0鍵可分別進(jìn)行分十位、時個位和時十位調(diào)整;最后按T0建將退出調(diào)整狀態(tài),時鐘開始計時運(yùn)行。 四 系統(tǒng)的調(diào)試部分4.1 時鐘系統(tǒng)的調(diào)試4.1.1 時鐘系統(tǒng)的硬件調(diào)試硬件調(diào)試時可先檢查印制板及焊接的質(zhì)量情況,在檢查無誤后可通電檢查LED顯示器的點(diǎn)亮狀況。若亮度不理想,可以調(diào)整P0口的電阻大小,一般情況下取200歐姆電阻即可獲得滿意的亮度效果。4.1.2 時鐘系統(tǒng)的軟件調(diào)試軟件調(diào)試Keil C51編譯器,源程序編譯及仿真

25、調(diào)試應(yīng)分段或以子函數(shù)為單位一個個地進(jìn)行,最后可結(jié)合硬件實(shí)時運(yùn)行調(diào)試。4.1.3 性能分析按照設(shè)計程序分析,LED顯示器動態(tài)掃描頻率約為167Hz,實(shí)際使用觀察時完全沒有閃爍,實(shí)際計時時精度較高,可滿足一般場合的應(yīng)用需要。 4.2 撥號報警器功能調(diào)試通電前應(yīng)檢查焊接質(zhì)量,確認(rèn)無短路、虛焊等故障。將撥碼開關(guān)J2指向下側(cè),即斷開3.6V鎳鉻電池與系統(tǒng)的連接。將外部直流可調(diào)穩(wěn)壓電源調(diào)整為3.6V。接入系統(tǒng)的Vcc與地。如果系統(tǒng)耗電小于15mA為正常,否則應(yīng)檢查是否有短路、元器件不良或錯焊現(xiàn)象存在。隨后取下外接直流穩(wěn)壓電源,恢復(fù)3.6V鎳鉻電池與系統(tǒng)的連接,進(jìn)行軟、硬件統(tǒng)調(diào)測試。由于AT89S52的I/

26、O引腳有限,故數(shù)碼管只設(shè)一位,因此輸入數(shù)字時只能分階段一位一位輸入。假設(shè)需輸入t1=061,t2=025,電話號碼=12345678,在此詳述如下:地1步:接上電話線(也即接上電源)后,數(shù)碼管顯示“E”,意為數(shù)據(jù)錯誤,因?yàn)榇藭r我們尚未輸入任何數(shù)據(jù)。第2步:點(diǎn)按一下set鍵,鍵值加1,即此時set=1.這時數(shù)碼管最下的一橫點(diǎn)亮,顯示“_”,意為可輸入時間t1,點(diǎn)按ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。然后數(shù)碼管顯示數(shù)字“0”。按下up鍵后,數(shù)字開始從09循環(huán)遞增,調(diào)至0后松開up鍵,點(diǎn)按ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。此時百位數(shù)字“0”存入內(nèi)存。按下up鍵后,數(shù)字開始循環(huán)遞增,調(diào)至1后松開up鍵,點(diǎn)按

27、ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。此時十位數(shù)字“6”存入內(nèi)存。按下up鍵后,數(shù)字開始循環(huán)遞增,調(diào)至1后松開up鍵,點(diǎn)按ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。此時個位數(shù)字“6”存入內(nèi)存。這樣就完成了將061(代表t1=61s)存入內(nèi)存的過程。同時數(shù)碼管又恢復(fù)顯示“_”。第3步:點(diǎn)按一下set鍵,鍵值加1,即此時set=2。這時數(shù)碼管下面的二橫點(diǎn)亮,顯示“二”,意為可輸入時間t2,點(diǎn)按ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。然后數(shù)碼管顯示數(shù)字“0”。按下up鍵后,數(shù)字開始從從09循環(huán)遞增,調(diào)至0后松開up鍵,點(diǎn)按ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。此時百位數(shù)字“0”存入內(nèi)存。按下up鍵后,數(shù)字開始循環(huán)遞增,調(diào)至后松開

28、up鍵,點(diǎn)按ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。此時十位數(shù)字“”存入內(nèi)存。按下up鍵后,數(shù)字開始循環(huán)遞增,調(diào)至后松開up鍵,點(diǎn)按ok鍵確認(rèn)(小數(shù)點(diǎn)被同時點(diǎn)亮)。此時個位數(shù)字“”存入內(nèi)存。這樣就完成了將(代表t1=s)存入內(nèi)存的過程。同時數(shù)碼管又恢復(fù)顯示“二”以后的調(diào)試同前面的方法相同。五 總結(jié)本系統(tǒng)以單片機(jī)89S52作為核心部件,利用單片機(jī)實(shí)現(xiàn)了電話撥號報警、時鐘顯示等功能,最終使系統(tǒng)完成設(shè)計要求的各項任務(wù)。在系統(tǒng)設(shè)計過程中,力求硬件線路簡單,并綜合運(yùn)用了C語言、單片機(jī)等各種知識,采用了一些特別的方法使磁電檢測達(dá)到最佳的效果 ,充分發(fā)揮軟件編程方便靈活的特點(diǎn),來滿足系統(tǒng)設(shè)計的要求。在設(shè)計過程中主要

29、遇到幾個關(guān)鍵性問題。如檢測部分信號不穩(wěn)定,經(jīng)檢查該問題與周圍的干擾有密切相關(guān),將檢測部分的外圍進(jìn)行了合理,使檢測信號很準(zhǔn)確地檢測到。還有撥號電路模塊起初方案采用電橋和三極管進(jìn)行控制,此設(shè)計采用單片機(jī)I/O口直接控制指示燈以及開關(guān)來進(jìn)行控制。不僅節(jié)省了硬件資源,還提高了系統(tǒng)的穩(wěn)定性。變量定義及初始化模塊 參考文獻(xiàn)1楊長春.電子報合訂本 2002年上:2612電子產(chǎn)品世界,2004,9(167):81-823耿德根,詹衛(wèi)前,李青.單片機(jī)創(chuàng)新開發(fā)與機(jī)器人制作.北京 :北京航空航天大學(xué)出版社,2005.3:85-1204吳祖峰,葛麗,李剛.傳感器個數(shù)及距離對盲分離影響的分析.電子科技大學(xué)學(xué)報,2006

30、,4,35(2):186-1885韋敏,寧方立,韋娟.基于智能功率模塊的無刷直流電機(jī)控制器.西北工業(yè)大學(xué)學(xué)報,2006,4,24(2):161-1646熊磊,黃玉水.一種改進(jìn)型PDM調(diào)動控制方式.南昌大學(xué)學(xué)報,2006,3,28(1):99-1027黃智偉.全國大學(xué)生電子設(shè)計競賽訓(xùn)練教程. 北京:電子工業(yè)出版社,2005.18閆志峰,劉立君,崔立彪.管道弧焊機(jī)器人控制系統(tǒng)設(shè)計.哈爾濱理工大學(xué)學(xué)報,9 萬光毅,嚴(yán)義.單片機(jī)實(shí)驗(yàn)與實(shí)踐教程(一).北京:北京航空航天大學(xué)出版社,2003.12:123-13110黃河,鮑宏亞.Protel DXP 培訓(xùn)教程.北京:清華大學(xué)出版社,2004.9致 謝Ho

31、w time flies!馬上就要畢業(yè)了。在院、系領(lǐng)導(dǎo)和老師的關(guān)心、教育和幫助下,經(jīng)過五年的努力,已經(jīng)使自己變成一個動手動腦的復(fù)合型人才。我將利用在校學(xué)習(xí)的專業(yè)知識投身職業(yè)教育事業(yè),為我國的職業(yè)教育發(fā)展做出自己的貢獻(xiàn)。五年來我學(xué)習(xí)到了大量的專業(yè)理論知識和動手實(shí)踐技能,畢業(yè)設(shè)計是對我這五年來學(xué)習(xí)的最好總結(jié)。在畢業(yè)設(shè)計過程中我遇到了很多困難,正是因?yàn)檫@些困難使我學(xué)習(xí)到了很多有用的實(shí)用知識,加深了書本理論知識和實(shí)踐的結(jié)合,這對我以后從事專業(yè)課教學(xué)工作是很有益處的。在大學(xué)的學(xué)習(xí)期間,我意識到了大學(xué)更重要的是教給我分析和解決問題的方法,這些必將對我以后的工作和生活產(chǎn)生深遠(yuǎn)的影響。在畢業(yè)設(shè)計過程中,得到了

32、曲老師的大力支持和幫助,請允許我向曲老師表示誠摯的感謝!五年來我見證了母校的發(fā)展壯大,希望母校再接再厲,健全體制,走向更加輝煌的明天。最后祝愿偉大的母校前程似錦!祝愿所有的老師身體健康,工作順利! 附錄附錄1 程序清單附錄2 系統(tǒng)使用說明附錄3 英文資料附錄4 系統(tǒng)PCB板圖附錄1:程序清單(1) 電話撥號報警程序 程序設(shè)計時需要設(shè)立3個數(shù)組DATA20、X3、Y3。DATA20用于存放電話號碼(最長20位),X3用于存放時間t1(000999s),Y3用于存放時間t2(000999s)。 另外還要設(shè)立3個軟件計數(shù)器data_flag、t1_flag、t2_flag。Data_flag用于統(tǒng)計

33、輸入的電話號碼位長,t1_flag用于統(tǒng)計輸入的時間t1位長,t2位長。uchar DATA20; /*存放電話號碼的數(shù)組*/uchar X3; /*存放時間t1數(shù)組*/uchar Y3; /*存放時間t2數(shù)組*/uchar flag; /*RAM區(qū)防干擾標(biāo)志*/ uchar dataflag=0; /*輸入電話號碼計數(shù)器(最長20位)*/uchar set=0; /*功能鍵值*/uchar m=0; /全局變量uchar n=0;uint f;uchar t1flag=0; /*輸入時間t1計數(shù)器(最長3位)*/uchar t2flag=0; /*輸入時間t2計數(shù)器(最長3位)*/uchar

34、 cnt_1=0; /*時間t1單元數(shù)學(xué)運(yùn)算后暫存單元*/uchar cnt_2=0; /*時間t2單元數(shù)學(xué)運(yùn)算后暫存單元*/*定時器T0初始化*/ viod init_timer() TMOD=0x01; /定時器T0方式1 TH0=-(50000/256); /裝載100ms定時初值TL0=-(50000%256);IE=0x82; /開中斷 啟動報警器子程序模塊 /*-啟動報警器進(jìn)入警戒-*/void work()uchar h; p1=0xdf; /*數(shù)碼管左上角顯示“1”*/ delay(1);if(set=1) /*進(jìn)入時間1循環(huán)*/while(cnt<=x0*100+X1*

35、10+X2) delay(1000); cnt_1+; /*計數(shù)器cnt_1累加*/ if(set!=1)EX1=0;cnt_1=0;break; /*如按下Set鍵,則推出此循環(huán)*/ else EX1=1;PCON=0x00;if(set=1)if(cnt_1>=X0*100+X1*10+X2) EX1=1;cnt_1=0; /*時間1到,打開外中斷1,計數(shù)器歸零*/*進(jìn)入待機(jī)。若有1s以上開關(guān)動作,退出待機(jī)*/while(1)PCON=0x01;if(f>=5PCON=0x00;break;)/*-*/EX1=0; /*關(guān)閉外中斷1*/if(set=1) /*進(jìn)入時間2循環(huán)*/

36、while(cnt_2<=Y0*100+Y1*10+Y2) delay(1000); cnt_2+; /*計時器cnt_2累加*/ if(set!=1)cnt_2=0;break; /*如按下Set鍵,則退出此循環(huán)*/if(set=1)bh(); /*時間2到,調(diào)用撥號子程序*/delay(3000);p3_7=0; /控制輸出端為低,可驅(qū)動蜂鳴器等for(h=0;h<60;h+) /*發(fā)出60s警音*/ for(f=0;f<500;f+) f+; P3_1=! P3_1;P1=0x5f; delay(1); P3_1=0;P1=0x7f;delay(500);P3_7=1;

37、/控制輸出端恢復(fù)高cnt_1=0;cnt_2=0; /*有關(guān)計數(shù)器、端口回到初始狀態(tài)*/P3_0=0;P3_1=0;P1_7=1;for(f=0;f<3;f+)delay(60000); /*關(guān)閉3min,讓接警人進(jìn)行手機(jī)或電話座機(jī)報警*/ 撥號脈沖子程序模塊/*-撥號-*/void bh()data_flag=0; /*電話號碼計數(shù)器(20位)歸零*/ P3_0=1; /*接通線路*/ p1_7=0; /*數(shù)碼管小數(shù)點(diǎn)亮*/ delay(1000);while (DATAdata_flag<10) /*號碼小于10進(jìn)入循環(huán)撥號狀態(tài)*/ if(DATAdata_flag=0) /*

38、若號碼為0*/ TR0=1; /*啟動T0定時器*/ if(n=20)data_flag+; /*進(jìn)行20次中斷,產(chǎn)生10個脈沖*/ n=0;TR0=0; P3_0=1;P1_7=0; delay(500); if(DATAdata_flag>0) /*若號碼0但<10*/ TR=1; /*啟動T0定時器*/ if(n=(DATAdata_flag*2) /*進(jìn)行號碼x2次中斷,產(chǎn)生號碼個脈沖*/ data_flag+; n=0;TR0=0; P3_0=1;P1_7=0; delay(500); TR0=0; 關(guān)機(jī)子程序模塊 void stop() /*關(guān)機(jī)子程序if(flag=0

39、x55)P1=0xfb; /*若標(biāo)志為55H,說明內(nèi)存區(qū)未受干擾,數(shù)碼 /管右下角顯示“1” else P1=0x86; /否則數(shù)碼管顯示“E”delay(1); /延時1ms再判if(flag=0x55)PCON=0x01; /進(jìn)入低耗節(jié)電待機(jī)狀態(tài)delay(1); /延時1ms 完整代碼 #include<AT89x052.H> /器件配置文件#define uchar unsigned char /變量類型的宏定義#define uint unsigned intuchar code DATA_7SEG10=0xC0,0xF9,0xA4,0xB0,0x99 0x92,0x82

40、,0xF8,0x80,0x90,; /*09數(shù)碼管段碼*/uchar DATA20; /*存放電話號碼的數(shù)組*/uchar x3; /*存放時間t2數(shù)組*/uchar flag; /*RAM區(qū)防干擾標(biāo)志*/uchar data_flag=0; /*輸入電話號碼計數(shù)器(最長20位)*/uchar set=0; /* 功能鍵值*/uchar m=0; /全局變量uchar n=0;uint f;uchar t1_flag=0; /*輸入時間1計數(shù)器(最長3位)*/uchar t2_flag=0; /*輸入時間2 計數(shù)器(最長3位)*/uchar cnt_1=0; /*時間t1單元數(shù)學(xué)運(yùn)算后暫存單元

41、*/uchar cnt_2=0; /*時間t2單元數(shù)學(xué)運(yùn)算后暫存單元*/*/void delay(uint k); /*延時子函數(shù)聲明*/void stop(); /*關(guān)機(jī)子函數(shù)聲明*/void bh(); /*撥號子函數(shù)聲明*/*/*定時器T0初始化*/void init_timer()TMOD=0x01;TH0=-(50000/256);TL0=-(50000%256);IE=0x82;/*/*100ms定時中斷服務(wù)子函數(shù)*/void zd0()interrupt 1P3_0=! P3_0; /P3.0每100ms取反一次,送出脈沖P1_7=! P1_7; /數(shù)碼管小數(shù)點(diǎn)同步閃爍n+;TH

42、0=-(50000/256);TL0=-(50000%256);/*/*100ms定時中斷服務(wù)子函數(shù)*/void zd0()interrupt 1p3_0=!P3_0; /P3.0每100ms取反一次,送出脈沖P1_7=!P1_7; /數(shù)碼管小數(shù)點(diǎn)同步閃爍n+;TH0=-(50000/256);TL0=-(50000%256);/*/*INT0中斷服務(wù)子函數(shù)*/viod zd_int0()interrupt 0delay(10); if(P3_2=0)set+; /功能鍵值遞增if(set>=5)set=0; /鍵值的范圍04if(set=1)flag=0x55; /向RAM區(qū)的標(biāo)志fl

43、ag寫入55H PCON=0x00;f=8;again:if(P3_2=0)goto again; /若按鍵未釋放,則等待/*/*INT1中斷服務(wù)子函數(shù)*/void zd_int1()interrupt 2uchar h;f=0;for(h=0;h<10;h+) /*檢查磁性開關(guān)(P3_3狀態(tài))10次,共1s*/delay(100)if(P3_3=0)f+;/*/*-關(guān)機(jī)-*/void stop()if(flag=0x55)P1=0xfb;elsep1=0x86; /數(shù)碼管右下角顯示“1”。delay(1);if(flag=0x55)PCON=0x01; /*進(jìn)入節(jié)電待機(jī)狀態(tài)*/dela

44、y(1);/*/*延時1ms*K子函數(shù)*/void delay(uint k)uint i,j;for(i=1;j<k;i+)for(j=0;j<60;j+);/*/*-輸入時間t1-*/viod in_time1()P1=0xf7;delay(1); /*數(shù)碼管顯示“”*/if(P3_5=0) delay(10); /*按下OK鍵確認(rèn)并點(diǎn)亮小數(shù)點(diǎn)*/ if(P3_5=0)P1=0x7f;m=0;t1_flag=0;delay(500);while(t1_flag<3) if(P3_4=0)delay(10);if(P3_4=0) /*按下UP鍵數(shù)碼管作09遞增顯示*/ m+

45、;if(m=10)m=0;P1=DATA_7SEGm;delay(300);P1=DATA_7SEGm;delay(1); /*若不按下UP鍵數(shù)碼管也作09顯示*/if(P3_5=0) delay(10);if(P3_5=0) /*按下OK鍵顯示的數(shù)據(jù)存入數(shù)組X中*/ Xt1_flag=m;t1_flag+;P1=0x7f;delay(500); if(t1_flag>=3)t1_flag=0; /*時間1計數(shù)器>=3時歸零*/*/ /*-輸入時間t2-*/ viod in_time2()P1=0xb7;delay(1); /*數(shù)碼管顯示“二”*/if(P3_5=0) delay(

46、10); /*按下OK鍵確認(rèn)并點(diǎn)亮小數(shù)點(diǎn)*/ if(P3_5=0)P1=0X7f;m=0;t2_flag=0;delay(500);while(t2_flag<3) if(P3_4=0) delay(10);if(P3_4=0) /*按下UP鍵數(shù)碼管作09遞增顯示*/ m+;if(m=10)m=0;P1=DATA_7SEGm;delay(300);P1=DATA_7SEGm;delay(1); /*若不按UP鍵數(shù)碼管也作09顯示*/ if(P3_5=0)delay(10);if(P3_5=0) /*按下OK鍵顯示的數(shù)據(jù)存入數(shù)組Y中*/ Yt2_flag=m;t2_flag+;P1=0x7f;delay(500); if(t2_flag>=3)t2_flag=0; /*時間2計數(shù)器>=3時歸零*/ /*/ /*-輸入電話號碼-*/vioa in_data()uchar g; P1=0xb6;delay(1); /*數(shù)碼管顯示三*/if(P3_5=0)delay(10);if(P3_5=0) p1=0x7f;m=0;data_flag=0; /*按下OK鍵確認(rèn)并點(diǎn)亮小數(shù)點(diǎn)*/ for(g=0;g&

溫馨提示

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

評論

0/150

提交評論