




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一 引言2二 硬件系統方案設計22.1電話撥號防盜報警器硬件系統方案22.1.1 硬件系統方案設計22.1.2 脈沖撥號原理32.1.3 脈沖撥號實現過程42.1.4 AT89S2052單片機的功能特點52.2 時鐘計時器的硬件設計方案論證分析82.2.1 功能要求82.2.2 方案論證82.2.3 系統硬件電路設計84.1.2時鐘計時器的硬件電路設計描述9三 系統的軟件設計103.1電話撥號防盜報警器程序設計103.1.1主程序設計113.2 時鐘顯示程序設計123.2.1主函數123.2.2 LED顯示子函數133.2.3 定時器T0中斷函數133.2.4 中斷函數143.2.5 功能函數
2、14四 系統的調試部分154.1 時鐘系統的調試154.1.1 時鐘系統的硬件調試154.1.2 時鐘系統的軟件調試154.1.3 性能分析154.2 撥號報警器功能調試15五 總結16參考文獻17附錄18附錄1 程序清單18附錄2 系統使用說明18附錄3 英文資料18附錄4 系統PCB板圖18附錄1:程序清單19附錄2:系統使用說明36一 引言隨著人們生活水平的不斷提高,大家對住宅和辦公室的安全意識也日益增加。因此,研究和開發防盜報警裝置引起了科研單位和生產廠家的重視,特別是面對普通居民、價格低、運行可靠的自動報警系統。 長期以來,一些電子雜志介紹的廉價防盜報警均無電話撥號報警功能,而市售的
3、可自動撥號報警的防盜器材又價格高昂。這里介紹的電話撥號防盜報警器可在這兩者之間找到平衡,即兼具高性能和低價位。為了以低成本實現高性能,設計時利用了電信局的交換機支持脈沖撥號方式來實現撥號報警,這樣可利用單片機直接發出撥號脈沖,精簡了電路,降低了成本。 電話撥號防盜報警器作為家庭防盜報警器材的一員,非常經濟實用。它進入工作警戒后,主控CPU不斷檢查觸發開關的狀態,當盜賊入室觸發開關時,立即啟動電話撥號報警程序向主人告警(當然也可以通過修改軟件使其在現場發出高分貝報警音)。實踐證明,該系統報警快速、準確。由于該系統電路簡單,而且利用的是公共通信網,因此不存在建立的報警系統網絡問題,具有成本低、體積
4、小、能耗極低、體積小、能耗極低且不影響正常打電話等突出優點。平時可以作為時鐘計時器來使用,真是一舉兩得。 二 硬件系統方案設計 2.1電話撥號防盜報警器硬件系統方案2.1.1 硬件系統方案設計圖2.1為電話撥號報警器的系統構成方框圖,由單片機控制器、鍵盤輸入、數碼管顯示、觸發電路、撥號電路及電源等6部分組成。單片機控制器是整個系統的核心,負責控制檢測輸入/輸出顯示、模擬摘機、撥號摘機、撥號報警、掛機等一系列的程序動作。這里使用了小引腳、高性能、低價位的AT89S2052。 鍵盤輸入電路負責輸入電片機中一系列工作參數及功能設定。 發光二極管數碼管顯示器在整個系統工作過程中充當一個簡單的人機界面,
5、用以顯示工作狀況及輸入/輸出的數據等。 電話撥號防盜報警器的觸發電路用磁性開關(門磁開關),簡單可靠,也可用紅外探測器或無線門磁,以實現全方位遠距離監測。報警器應采用隱蔽安裝,防止小偷發現。 撥號及報警電路用來完成模擬摘機、撥號、發出報警音、掛機等工作過程,它的工作由單片機控制。 電源部分負責對整個系統供電。平時由電話線上取得工作電流并對后備電池充電,撥號報警時轉由后備電池供電。鍵盤單片機控制器觸發開關電源撥號電路顯示模塊 圖2.1 電話撥號防盜報警器方框圖2.1.2 脈沖撥號原理脈沖撥號是目前電話機兩種撥號方式中的一種,另一種為雙音多頻撥號方式。脈沖撥號就是指在電話機上撥入的電話號碼以脈沖個
6、數的形式發出,也就是說,在已經通以直流電流的回路上,利用撥號盤及發號電路將回路斷開、再接通而形成的脈沖信號,來完成輸入電話號碼的發送。在操作中,若用戶撥1,則送出1個脈沖,回路中斷一次、接通一次;撥2,則發出2個脈沖,回路斷一次、接通一次、再斷一次;而撥0時,則發出10個脈沖,回路斷、接通輪流10次。圖2.2為電話號碼“32”的脈沖波形。時間號碼字間間隔時間tID號碼2的脈沖號碼3的脈沖斷通 圖2.2 電話號碼“32”的脈沖波形 正常撥號時,電路電流中斷的時間一般在5865ms之間,視斷續比的不同而不同。快速撥號時,只要取一半時間即可。電路電流接通的時間(即在同一位號碼中的2個斷脈沖之間的接通
7、電流時間)約在3242ms之間,視斷續比的不同而不同。快速撥號時,只要取一半時間即可。顯然脈沖周期等于脈沖中斷時間和脈沖接通時間之和,每一個周期的時間為100ms左右。快速撥號時,在50ms左右。2位號碼(即2組脈沖串)之間的最小時間間隔,通常為800ms左右;而快速撥號時,其值減半,為400ms左右。我國目前采用的電話脈沖撥號的速率是10PPS(每秒的脈沖數),即每秒發出10個脈沖,因此上述各參數不存在快速撥號時的值。 為了提高撥號的可靠性及穩定性,這里設計時選定更低的脈沖撥號速率:1個脈沖代表播出1,2個脈沖代表撥出2,10個脈沖代表撥出0,每個脈沖的寬度和間隔為100ms。工作時首先進行
8、模擬摘機,然后開始脈沖撥號,撥出1位號碼后停頓500ms(保持接通)再撥下一位,直至全部撥完后再發報警音,最后掛機。2.1.3 脈沖撥號實現過程圖2.3為脈沖撥號的實現電路。平時電話線上的電壓約為5060V左右。未撥號時電片機的P3.0、P3.1 均輸出低電平。撥號過程如下:單片機的P3.0輸出高電平,使TR1導通,由于電話線路上接入了負載R1,這樣電話線的電壓下降,模擬摘機。單片機的P3.0開始輸出撥號脈沖,使電話線的電壓(電平)也呈高、低變化。1個脈沖代表撥出1,2個脈沖代表撥出2,10個脈沖代表撥出0,每個脈沖的寬度和間隔均為100ms。撥出1位號碼后停頓500ms(保持P3.0高電平)
9、再撥下一位,直至全部撥完。P3.0 保持高電平(保持電話線路接通),P3.1輸出1KHz的報警音脈沖驅動TR2,以2Hz進行調制(即接通1kHz信號0.5s、斷開1kHz信號0.5s),這樣從接聽方的電話中就會聽到“嘟、嘟”的報警聲。報警音的時間根據設計為60s。60后,P3.1輸出低電平,TR2 截止,停止報警。隨后P3.0也輸出低電平,模擬掛機。完成一次報警過程。圖2.3 脈沖撥號實現電路2.1.4 AT89S2052單片機的功能特點電話撥號防盜報警器的核心控制器是單片機AT89S2052。AT89S2052 是美國ATMEL半導體公司生產的一種高性能單片機。該單片機以與MCS-51系列單
10、片機高度兼容、低功耗、可以在接近零頻率下工作等諸多優點,而廣泛應用于各類計算機系統、工業控制、電信設備、消費類產品中。由于ATMEL是全球最大的FLASH和EEPROM生產制造公司之一,加之以其EEPROM技術與INTEL的80C51內核技術交換,使ATMEL擁有了80C51內核的使用權,其生產的AT89系列電片機不僅與80C51有極好的兼容性,而且具有極高的性能價格比。1. AT89S2051的主要性能特點指令與MCS-51完全兼容;內帶2KB可編程閃速存儲器(FLASH MEMORY)可重復擦寫1000次;數據保留10年;工作電壓范圍2.76V;工作頻率024MHZ;兩極程序加密鎖定;12
11、8B內部RAM;15條可編程雙向I/O口線;2個16位定時器/計時器;5個中斷源;可編程串行UART通道;輸出口可直接驅動LED;片內含模擬比較器;低功耗的閑置和掉電模式。AT89S2052是AT89 系列電片機種的一種精簡產品。它是將TA89C52的P0口、P2口、EA/Vpp、ALE/PROG、PSEN口線省去后,形成的一種僅20個引腳的單片機,相當于早期INTEL8031的最小應用系統。這對于一些不太復雜的控制場合,僅用一片AT89S2052就足夠了,是真正意義上的“單片機”。 由于將多功能8位CPU和2KB的閃速存儲器集成在單個芯片中,使其成為一種高效的微控制器。AT89S2052的出
12、現為很多規模不太大的嵌入式控制系統提供了一種極佳的選擇方案,使傳統的51系列單片機的體積大、功耗大、可選模式少等諸多困擾設計工程師們的致命弱點不復存在。2. 引腳功能介紹AT89S2052引腳外形如圖所示。Vcc:電源端。GND:接地。P1 口(P1.0P1.7):是一個8位雙向I/O口,其中P1.2至P1.7提供內部上拉電阻,P1.0和P1.1需外接上拉電阻。P1.0和P1.1也可作為片內精確模擬比較器的正向輸入(AINO)和反向輸入(AINI)。P1口輸出緩沖器能提供20mA的灌電流,可直接驅動LED。P1口寫入“1”后可用作輸入。P3口:引腳P3.0至P3.7(P3.5除外)是7個帶內部
13、上拉電阻的雙向I/O口線。原P3.6不能使用,已連接片內比較器輸出端。與P1口相同,P3口也能提供20mA的灌電流,并可直接驅動LED顯示器。與80C51相同,P3口也有第2功能,P3.0作為串行數據接收RXD;P3.1作為串行數據發送TXD;P3.2為外部中斷0申請INT0;P3.3 為外部中斷1申請INT1;P3.4 為定時器/計時器0輸入;P3.5位定時器/計數器1輸入;P3.7無第2功能RD。RST:復制輸入。要使芯片可靠復位,要保持RST引腳2個機器周期的高電平。XTAL1:反向振蕩放大的輸入及內部時鐘電路的殊榮。XTAL2:來自反向振蕩放大器的輸出。3. 特殊功能寄存器(SFR)與
14、80C51完全相同4. 程序存儲器鎖定AT89S2052片內有2個鎖定位,可以不編程(U),也可以編程(P),以獲得一些附加的特性,如表2.1所示。 表2.1 程序存儲器鎖定編程鎖定位LB1LB2保護模式1UU沒有編程鎖定特性2PU禁止對閃速存儲器進一步編程3PP同模式2,同時禁止校驗 5、閑置模式 在閑置模式下,CPU自身處于休眠狀態,而片內所有其他外圍設備保持工作狀態。該模式是軟件生成的。在該模式期間,片內RAM和所有特殊功能寄存器的內容保持不變。閑置模式可以允許由中斷或硬件復位終止。如果不采用外部上拉,P1.0和P1.1應置0;如果采用外部上拉,則置1。應注意的是,當閑置模式被硬件復位中
15、止時,器件要從閑置處恢復程序的執行,執行2個機器周期后,內部復位算法才起作用。此時,硬件禁止訪問內部RAM,但允許訪問端口引腳。為了排除閑置被復位中止時對端口意外寫入的可能性,跟在生成閑置模式后的指令不應是對端口引腳的讀/寫操作。6.掉電模式 在掉電模式下,振蕩器停止工作,生成掉電狀態的指令是最后執行的一條指令。片內RAM和特殊功能寄存器保持其值不變直到掉電模式終止。從掉電模式退出的唯一辦法是硬件復位。復位將重新定義特殊功能寄存器(SFR),但不會影響片內RAM。在Vcc沒有恢復到其正常工作電壓之前,不應進行復位,且復位的保持時間應足夠長,使振蕩器能重新開始工作并穩定下來。同樣,如果不采用外部
16、下拉,P1.0和P1.1應置0,如果采用外部上拉,則置1。2.2 時鐘計時器的硬件設計方案論證分析2.2.1 功能要求時鐘計時器要求用六位LED數碼管顯示時、分、秒、以二十四小時方式運行,使用按鍵開關實現時,分調整功能。2.2.2 方案論證為實現LED顯示器的數字顯示,可以采用靜態顯示法和動態顯示法。由于靜態顯示法需要數據鎖存器等硬件,接口復雜一些,考慮到時鐘顯示只有六位,且系統沒有其它復雜的處理任務,所以決定用動態掃描實現LED顯示。單片機采用易購的AT89S52系列,這種單片機可具有足夠的空余硬件資源,以實現其它的擴充功能。若使用電池供電,可采用低電壓的LV系列單片機時鐘計時器電路系統的總
17、體設計框架如圖3.1所示。單片機控制器AT89S526位LED顯示器列驅動 圖3.1 硬件系統的總體設計框架2.2.3 系統硬件電路設計電話撥號防盜報警器的硬件電路設計描述為了發揮電片機強大的計算、控制能力,充分發揮軟件的優勢,這里極大地簡化了電路,但可實現以前需要幾片甚至十幾片小規模數字電路才能完成的任務。電路原理如圖所示,共有4個按鍵,即rst、ok、up、set。rst:系統復位鍵。ok:輸入數據確認鍵。up:顯示的數字增加鍵。set:工作模式設定鍵,可設定管機、工作、輸入時間t1、輸入時間t2及輸入電話號碼5種模式。 磁性開關即為裝于門或窗口的防盜感應開關,門關閉時常開,門打開時閉合接
18、通。當然也可改用其他的感應器件,如激光探測、超聲波感應、熱釋電感應、主動紅外線探測或無線門磁等,以實現全方位遠距離檢測。為了防止磁性開關離控制器較遠而產生引入干擾,使用了光耦作信號傳遞,效果良好。LED數碼管用于工作狀態指示或輸入數據指示。L1、L2接電話線,ZND為擊穿電壓120V的壓敏二極管,防止電路受雷電干擾。平時系統處于低功耗待機狀態(此時耗電僅2mA左右),由電話線上取電工作,并對3.6V/60mA鎳鉻電池充電,當輸入數據進行設定或進行撥號報警時,耗電會達到10mA,這時主要由鎳鉻電池供電。由于有鎳鉻電池后備供電,即使電話線斷電也不會使已輸入的數據丟失。該機除用于防盜報警外,若對軟件
19、進行一些修改,也可通過電話線進行遠程數據傳遞。三極管T1、T2及電阻R1、R2構成撥號及報警電路,其工作原理前面已作詳細介紹。4.1.2時鐘計時器的硬件電路設計描述時鐘計時器的硬件電路,采用AT89S52單片機最小化應用設計,顯示采用共陽七段LED顯示器,P0口輸出段數碼數據,P2.0P2.5口作列掃描輸出,P1.0,P1.1和P1.2口接三個按鈕開關用以實現調時,調分功能.為了提供共陽LED數碼管的驅動電壓,用三極管8550作電源驅動輸出。采用12MHZ晶振有利于提高秒計時的精確性。硬件電路圖如圖3.2示。 圖3.2 具有時鐘功能的電話報警器原理圖 三 系統的軟件設計3.1電話撥號防盜報警器
20、程序設計3.1.1主程序設計 主程序的工作過程為:先進行初始化工作,隨后根據輸入的鍵值分別散轉輸入的鍵值分別散轉至對應的子程序(管機、警戒工作、輸入時間t1、輸入時間t2、輸入電話號碼)循環工作。T0為100ms定時中斷服務子程序,它實現精確的撥號脈沖時序。INT0外中斷服務子函數用于實現功能選擇;而INT1外中斷服務子函數則檢測防盜觸發開關的狀態。 主程序狀態流程圖如圖3.6所示。INT0外中斷服務子函數狀態流程圖及INT1外中斷服務子函數的狀態流程圖分別如圖3.7、圖3.8所示。開始 定時器T0初始化 關閉撥號、報警線路輸入號碼 輸入t2輸入t1 工作 根據set鍵值散轉關 機 圖3.6
21、主程序狀態流程 - 40 -INT0外中斷服務子函數開始如set鍵按下,則set鍵值加1如鍵值大于5,則鍵值回0系統進入低功耗待機狀態INT0外中斷服務子函數結束圖3.7 INT0外中斷服務子函數狀態流程INT1外中斷服務子函數結束查詢門控開關共10次INT1外中斷服務子函數開始圖3.8 INT1外中斷服務子函數結束3.2 時鐘顯示程序設計3.2.1主函數 本設計中計時采用定時器T0中斷完成,其余狀態循環調用顯示子函數及鍵掃描子函數,當端口開關按下時,轉入相應調時功能。其主函數執行流程如圖3.3所示。開 始顯示單元清0T0、T1設為16位計數器模式允許T0中斷N調用顯示子函數鍵按下?進入調時功
22、能圖3.3 主函數流程圖3.2.2 LED顯示子函數 數碼管顯示的數據存放在內存單元dis0dis5中,其中dis0dis1存放秒數據,dis2dis3存放分數據,dis4dis5存放時數據,每一單元內均為十進制BCD碼。由于采用軟件動態掃描實現數據顯示功能,顯示用的十進制BCD碼數據的對應段碼存放在ROM表(dis711)中,顯示時,先取出dis0dis5中的某一數據,然后查得對應得顯示段碼從P0口輸出,P2口將對應得數碼管選中供電,就能顯示該地址單元的數據值。3.2.3 定時器T0中斷函數 定時器T0用于時間計時。定時溢出中斷周期可設為50ms,中斷進入后先判斷,中斷計時累計20次(即1m
23、s)時對妙計數單元進行加1操作。時鐘計數單元在 義的6個單元(timedata6)中。timedata0timedata1存放秒數據,timedata2timedata3存放分數據,timedata4timedata5存放時數據。最大計時值為23小時59分59秒。在計數單元中采用十進制BCD碼計數,秒,分、時之間滿60進位。T0中斷服務程序執行流程如圖3.4所示。T0中斷 保護現場 1s到?加1處理 恢復現場,中斷返回圖3.4 T0 中斷函數3.2.4 中斷函數 T1中斷服務程序用于指示調整數字單元的亮閃,在時間調整狀態下,每過0.4s,將對應單元的顯示數據換成“熄滅符”數據(0x0a)。這樣
24、,在調整時間時,對應調整單元的顯示數據會間隔閃亮。3.2.5 功能函數 調時功能函數的設計方法是:按下T0鍵,進入調分狀態,時鐘停止走動;按T1或T2鍵可進行加1或減1操作 ;繼續按T0鍵可分別進行分十位、時個位和時十位調整;最后按T0建將退出調整狀態,時鐘開始計時運行。 四 系統的調試部分4.1 時鐘系統的調試4.1.1 時鐘系統的硬件調試硬件調試時可先檢查印制板及焊接的質量情況,在檢查無誤后可通電檢查LED顯示器的點亮狀況。若亮度不理想,可以調整P0口的電阻大小,一般情況下取200歐姆電阻即可獲得滿意的亮度效果。4.1.2 時鐘系統的軟件調試軟件調試Keil C51編譯器,源程序編譯及仿真
25、調試應分段或以子函數為單位一個個地進行,最后可結合硬件實時運行調試。4.1.3 性能分析按照設計程序分析,LED顯示器動態掃描頻率約為167Hz,實際使用觀察時完全沒有閃爍,實際計時時精度較高,可滿足一般場合的應用需要。 4.2 撥號報警器功能調試通電前應檢查焊接質量,確認無短路、虛焊等故障。將撥碼開關J2指向下側,即斷開3.6V鎳鉻電池與系統的連接。將外部直流可調穩壓電源調整為3.6V。接入系統的Vcc與地。如果系統耗電小于15mA為正常,否則應檢查是否有短路、元器件不良或錯焊現象存在。隨后取下外接直流穩壓電源,恢復3.6V鎳鉻電池與系統的連接,進行軟、硬件統調測試。由于AT89S52的I/
26、O引腳有限,故數碼管只設一位,因此輸入數字時只能分階段一位一位輸入。假設需輸入t1=061,t2=025,電話號碼=12345678,在此詳述如下:地1步:接上電話線(也即接上電源)后,數碼管顯示“E”,意為數據錯誤,因為此時我們尚未輸入任何數據。第2步:點按一下set鍵,鍵值加1,即此時set=1.這時數碼管最下的一橫點亮,顯示“_”,意為可輸入時間t1,點按ok鍵確認(小數點被同時點亮)。然后數碼管顯示數字“0”。按下up鍵后,數字開始從09循環遞增,調至0后松開up鍵,點按ok鍵確認(小數點被同時點亮)。此時百位數字“0”存入內存。按下up鍵后,數字開始循環遞增,調至1后松開up鍵,點按
27、ok鍵確認(小數點被同時點亮)。此時十位數字“6”存入內存。按下up鍵后,數字開始循環遞增,調至1后松開up鍵,點按ok鍵確認(小數點被同時點亮)。此時個位數字“6”存入內存。這樣就完成了將061(代表t1=61s)存入內存的過程。同時數碼管又恢復顯示“_”。第3步:點按一下set鍵,鍵值加1,即此時set=2。這時數碼管下面的二橫點亮,顯示“二”,意為可輸入時間t2,點按ok鍵確認(小數點被同時點亮)。然后數碼管顯示數字“0”。按下up鍵后,數字開始從從09循環遞增,調至0后松開up鍵,點按ok鍵確認(小數點被同時點亮)。此時百位數字“0”存入內存。按下up鍵后,數字開始循環遞增,調至后松開
28、up鍵,點按ok鍵確認(小數點被同時點亮)。此時十位數字“”存入內存。按下up鍵后,數字開始循環遞增,調至后松開up鍵,點按ok鍵確認(小數點被同時點亮)。此時個位數字“”存入內存。這樣就完成了將(代表t1=s)存入內存的過程。同時數碼管又恢復顯示“二”以后的調試同前面的方法相同。五 總結本系統以單片機89S52作為核心部件,利用單片機實現了電話撥號報警、時鐘顯示等功能,最終使系統完成設計要求的各項任務。在系統設計過程中,力求硬件線路簡單,并綜合運用了C語言、單片機等各種知識,采用了一些特別的方法使磁電檢測達到最佳的效果 ,充分發揮軟件編程方便靈活的特點,來滿足系統設計的要求。在設計過程中主要
29、遇到幾個關鍵性問題。如檢測部分信號不穩定,經檢查該問題與周圍的干擾有密切相關,將檢測部分的外圍進行了合理,使檢測信號很準確地檢測到。還有撥號電路模塊起初方案采用電橋和三極管進行控制,此設計采用單片機I/O口直接控制指示燈以及開關來進行控制。不僅節省了硬件資源,還提高了系統的穩定性。變量定義及初始化模塊 參考文獻1楊長春.電子報合訂本 2002年上:2612電子產品世界,2004,9(167):81-823耿德根,詹衛前,李青.單片機創新開發與機器人制作.北京 :北京航空航天大學出版社,2005.3:85-1204吳祖峰,葛麗,李剛.傳感器個數及距離對盲分離影響的分析.電子科技大學學報,2006
30、,4,35(2):186-1885韋敏,寧方立,韋娟.基于智能功率模塊的無刷直流電機控制器.西北工業大學學報,2006,4,24(2):161-1646熊磊,黃玉水.一種改進型PDM調動控制方式.南昌大學學報,2006,3,28(1):99-1027黃智偉.全國大學生電子設計競賽訓練教程. 北京:電子工業出版社,2005.18閆志峰,劉立君,崔立彪.管道弧焊機器人控制系統設計.哈爾濱理工大學學報,9 萬光毅,嚴義.單片機實驗與實踐教程(一).北京:北京航空航天大學出版社,2003.12:123-13110黃河,鮑宏亞.Protel DXP 培訓教程.北京:清華大學出版社,2004.9致 謝Ho
31、w time flies!馬上就要畢業了。在院、系領導和老師的關心、教育和幫助下,經過五年的努力,已經使自己變成一個動手動腦的復合型人才。我將利用在校學習的專業知識投身職業教育事業,為我國的職業教育發展做出自己的貢獻。五年來我學習到了大量的專業理論知識和動手實踐技能,畢業設計是對我這五年來學習的最好總結。在畢業設計過程中我遇到了很多困難,正是因為這些困難使我學習到了很多有用的實用知識,加深了書本理論知識和實踐的結合,這對我以后從事專業課教學工作是很有益處的。在大學的學習期間,我意識到了大學更重要的是教給我分析和解決問題的方法,這些必將對我以后的工作和生活產生深遠的影響。在畢業設計過程中,得到了
32、曲老師的大力支持和幫助,請允許我向曲老師表示誠摯的感謝!五年來我見證了母校的發展壯大,希望母校再接再厲,健全體制,走向更加輝煌的明天。最后祝愿偉大的母校前程似錦!祝愿所有的老師身體健康,工作順利! 附錄附錄1 程序清單附錄2 系統使用說明附錄3 英文資料附錄4 系統PCB板圖附錄1:程序清單(1) 電話撥號報警程序 程序設計時需要設立3個數組DATA20、X3、Y3。DATA20用于存放電話號碼(最長20位),X3用于存放時間t1(000999s),Y3用于存放時間t2(000999s)。 另外還要設立3個軟件計數器data_flag、t1_flag、t2_flag。Data_flag用于統計
33、輸入的電話號碼位長,t1_flag用于統計輸入的時間t1位長,t2位長。uchar DATA20; /*存放電話號碼的數組*/uchar X3; /*存放時間t1數組*/uchar Y3; /*存放時間t2數組*/uchar flag; /*RAM區防干擾標志*/ uchar dataflag=0; /*輸入電話號碼計數器(最長20位)*/uchar set=0; /*功能鍵值*/uchar m=0; /全局變量uchar n=0;uint f;uchar t1flag=0; /*輸入時間t1計數器(最長3位)*/uchar t2flag=0; /*輸入時間t2計數器(最長3位)*/uchar
34、 cnt_1=0; /*時間t1單元數學運算后暫存單元*/uchar cnt_2=0; /*時間t2單元數學運算后暫存單元*/*定時器T0初始化*/ viod init_timer() TMOD=0x01; /定時器T0方式1 TH0=-(50000/256); /裝載100ms定時初值TL0=-(50000%256);IE=0x82; /開中斷 啟動報警器子程序模塊 /*-啟動報警器進入警戒-*/void work()uchar h; p1=0xdf; /*數碼管左上角顯示“1”*/ delay(1);if(set=1) /*進入時間1循環*/while(cnt<=x0*100+X1*
35、10+X2) delay(1000); cnt_1+; /*計數器cnt_1累加*/ if(set!=1)EX1=0;cnt_1=0;break; /*如按下Set鍵,則推出此循環*/ else EX1=1;PCON=0x00;if(set=1)if(cnt_1>=X0*100+X1*10+X2) EX1=1;cnt_1=0; /*時間1到,打開外中斷1,計數器歸零*/*進入待機。若有1s以上開關動作,退出待機*/while(1)PCON=0x01;if(f>=5PCON=0x00;break;)/*-*/EX1=0; /*關閉外中斷1*/if(set=1) /*進入時間2循環*/
36、while(cnt_2<=Y0*100+Y1*10+Y2) delay(1000); cnt_2+; /*計時器cnt_2累加*/ if(set!=1)cnt_2=0;break; /*如按下Set鍵,則退出此循環*/if(set=1)bh(); /*時間2到,調用撥號子程序*/delay(3000);p3_7=0; /控制輸出端為低,可驅動蜂鳴器等for(h=0;h<60;h+) /*發出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、/控制輸出端恢復高cnt_1=0;cnt_2=0; /*有關計數器、端口回到初始狀態*/P3_0=0;P3_1=0;P1_7=1;for(f=0;f<3;f+)delay(60000); /*關閉3min,讓接警人進行手機或電話座機報警*/ 撥號脈沖子程序模塊/*-撥號-*/void bh()data_flag=0; /*電話號碼計數器(20位)歸零*/ P3_0=1; /*接通線路*/ p1_7=0; /*數碼管小數點亮*/ delay(1000);while (DATAdata_flag<10) /*號碼小于10進入循環撥號狀態*/ if(DATAdata_flag=0) /*
38、若號碼為0*/ TR0=1; /*啟動T0定時器*/ if(n=20)data_flag+; /*進行20次中斷,產生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) /*進行號碼x2次中斷,產生號碼個脈沖*/ data_flag+; n=0;TR0=0; P3_0=1;P1_7=0; delay(500); TR0=0; 關機子程序模塊 void stop() /*關機子程序if(flag=0
39、x55)P1=0xfb; /*若標志為55H,說明內存區未受干擾,數碼 /管右下角顯示“1” else P1=0x86; /否則數碼管顯示“E”delay(1); /延時1ms再判if(flag=0x55)PCON=0x01; /進入低耗節電待機狀態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數碼管段碼*/uchar DATA20; /*存放電話號碼的數組*/uchar x3; /*存放時間t2數組*/uchar flag; /*RAM區防干擾標志*/uchar data_flag=0; /*輸入電話號碼計數器(最長20位)*/uchar set=0; /* 功能鍵值*/uchar m=0; /全局變量uchar n=0;uint f;uchar t1_flag=0; /*輸入時間1計數器(最長3位)*/uchar t2_flag=0; /*輸入時間2 計數器(最長3位)*/uchar cnt_1=0; /*時間t1單元數學運算后暫存單元
41、*/uchar cnt_2=0; /*時間t2單元數學運算后暫存單元*/*/void delay(uint k); /*延時子函數聲明*/void stop(); /*關機子函數聲明*/void bh(); /*撥號子函數聲明*/*/*定時器T0初始化*/void init_timer()TMOD=0x01;TH0=-(50000/256);TL0=-(50000%256);IE=0x82;/*/*100ms定時中斷服務子函數*/void zd0()interrupt 1P3_0=! P3_0; /P3.0每100ms取反一次,送出脈沖P1_7=! P1_7; /數碼管小數點同步閃爍n+;TH
42、0=-(50000/256);TL0=-(50000%256);/*/*100ms定時中斷服務子函數*/void zd0()interrupt 1p3_0=!P3_0; /P3.0每100ms取反一次,送出脈沖P1_7=!P1_7; /數碼管小數點同步閃爍n+;TH0=-(50000/256);TL0=-(50000%256);/*/*INT0中斷服務子函數*/viod zd_int0()interrupt 0delay(10); if(P3_2=0)set+; /功能鍵值遞增if(set>=5)set=0; /鍵值的范圍04if(set=1)flag=0x55; /向RAM區的標志fl
43、ag寫入55H PCON=0x00;f=8;again:if(P3_2=0)goto again; /若按鍵未釋放,則等待/*/*INT1中斷服務子函數*/void zd_int1()interrupt 2uchar h;f=0;for(h=0;h<10;h+) /*檢查磁性開關(P3_3狀態)10次,共1s*/delay(100)if(P3_3=0)f+;/*/*-關機-*/void stop()if(flag=0x55)P1=0xfb;elsep1=0x86; /數碼管右下角顯示“1”。delay(1);if(flag=0x55)PCON=0x01; /*進入節電待機狀態*/dela
44、y(1);/*/*延時1ms*K子函數*/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); /*數碼管顯示“”*/if(P3_5=0) delay(10); /*按下OK鍵確認并點亮小數點*/ 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鍵數碼管作09遞增顯示*/ m+
45、;if(m=10)m=0;P1=DATA_7SEGm;delay(300);P1=DATA_7SEGm;delay(1); /*若不按下UP鍵數碼管也作09顯示*/if(P3_5=0) delay(10);if(P3_5=0) /*按下OK鍵顯示的數據存入數組X中*/ Xt1_flag=m;t1_flag+;P1=0x7f;delay(500); if(t1_flag>=3)t1_flag=0; /*時間1計數器>=3時歸零*/*/ /*-輸入時間t2-*/ viod in_time2()P1=0xb7;delay(1); /*數碼管顯示“二”*/if(P3_5=0) delay(
46、10); /*按下OK鍵確認并點亮小數點*/ 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鍵數碼管作09遞增顯示*/ m+;if(m=10)m=0;P1=DATA_7SEGm;delay(300);P1=DATA_7SEGm;delay(1); /*若不按UP鍵數碼管也作09顯示*/ if(P3_5=0)delay(10);if(P3_5=0) /*按下OK鍵顯示的數據存入數組Y中*/ Yt2_flag=m;t2_flag+;P1=0x7f;delay(500); if(t2_flag>=3)t2_flag=0; /*時間2計數器>=3時歸零*/ /*/ /*-輸入電話號碼-*/vioa in_data()uchar g; P1=0xb6;delay(1); /*數碼管顯示三*/if(P3_5=0)delay(10);if(P3_5=0) p1=0x7f;m=0;data_flag=0; /*按下OK鍵確認并點亮小數點*/ for(g=0;g&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024哈電集團汽輪機公司春季校園招聘筆試參考題庫附帶答案詳解
- 輔警入職培訓總結
- 干部教育培訓規劃2025
- 2025年江蘇省昆山市五校聯考中考三模道德與法治試題(原卷版+解析版)
- 【英國廣告從業者協會】2024廣告行業可持續發展轉型核心挑戰與實踐路徑報告
- 生物PCR課件-2024-2025學年高二下學期生物人教版選擇性必修3
- 2025民間個人合同模板
- 2025汽車銷售合同
- 2025簡化版餐廳轉讓合同模板
- 2025年塔式起重機租賃合同協議書示例
- 人力資源許可證制度(服務流程、服務協議、收費標準、信息發布審查和投訴處理)
- JTG-T-F20-2015公路路面基層施工技術細則
- 江蘇省蘇州市2023-2024學年五年級下學期期中綜合測試數學試卷(蘇教版)
- 2024年4月貴州省高三年級適應性考試物理試卷(含答案)
- 蘇教版五年級數學下冊第四單元易錯題梳理和重難提升(含答案)
- 西安市綠化養護管理標準
- 一只貓的生命哲學The Zen of Cat(中英文)
- 中外酒店財務管理比較研究2
- 《電子商務基礎》試題全庫
- BD-Ⅱ安裝使用說明書_博睿10-08-17
- 新版現代西班牙語第一冊課后答案(共104頁)
評論
0/150
提交評論