基于Proteus的自動撥號報警器仿真設計
2.2 中斷子程序設計
中斷子程序基本流程如圖3所示。首先建立一個整形數組numi[],將號碼位數k保存在numi[0]中,而電話號碼則保存在numi[1]~numi[k]中;然后將數組numi[]的前k+1位一次性發送至I2C芯片。讀取的時候,從讀取數據首地址一次性讀取出16位數據(電話號碼最多14位),將其保存在整形數組phn[]中,撥號的時候從phn[1]開始,一共讀phn[0]次,這樣不但可以準確的傳輸電話號碼并進行撥號,同時對I2C芯片的
讀/寫僅需1次,降低了讀寫過程中未知錯誤發生的概率。
該設計共有8路外部模擬報警信號輸入,其警報信號定義如表1所示。將長音視為1,短音視為0,則警報內容可譯為報警信號源代碼的BCD碼低三位,以此作為報警類型標識。本文引用地址:http://cqxgywz.com/article/150595.htm

2.3 LCD顯示子程序
LCD顯示子程序包含有多個子函數,包括:讀LCD狀態指令函數recom()、測試忙函數busytest()、寫LCD指令函數wrcomn()、LCD清屏函數clrscr()、初始化LCD函數initled()、光標定位函數setpos();寫單字節數據函數writedata();對于某一行的寫入字符串函數wrll()與wr21()。其中,讀/寫指令、測試忙、清屏、光標定位、寫單字數據均是按照LCD原理命令字進行操作。LCD的初始化包括復位設置、清除顯示、地址歸位、顯示開關、游標設置、讀/寫地址設置等,LCD中所有數字和字符都可以通過它的ASCII碼來訪問顯示。
2.4 撥號音頻模塊程序設計
在撥號程序設計中關鍵要控制好定時器以實現準確的占空比脈沖,程序編寫中,設置TMOD=0x11,定時器設置為操作模式1,當生成61.5 ms低電平脈沖時,TC=216-61.5 ms/1μs=4 036=0x0FC4,因此TH0=0x0F,TL0=0xC4;當生成38.5ms高電平脈沖時,TC=216-38.5ms/1μs= 27 036=0x699C,所以TH0=0x69,TL0=0x9C;當延時500 ms時,由于單片機定時器最大定時時間為61.5 ms(方式1),因此采取在一個循環次數為10的for循環中執行定時時間為50 ms的程序,TC=216-50 ms/1μs=15 536=0x3CB0,因此TH0=0x3C,TL0=0xB0。
音頻模塊程序設計是通過設定特定頻率的正負脈沖序列,驅動擴音器播放出相應音調的聲音,例如若設置單片機定時器1TH0=0xFB,TL0= 0x44,則脈沖周期約為2.424 ms,所發出的聲音與音調“do”相似。在此不妨定義發長音時間為500 ms,發短音時間為100 ms。長短音信號相互組合成不同的警報信息可用來定義不同的報警類型。
3 調試與運行
在Proteus和Keil中進行相關的設置,可以讓兩者進行聯調,聯調可以在同一臺計算機上進行,也可以在不同的計算機之間進行。通過Proteus與Keil的聯調可以輕易做到在不使用硬件的前提下直接在仿真平臺上進行實時仿真,對于系統的調試具有很大意義。實時仿真能降低調試的難度,更有利于設計中一些問題的解決以及BUG的發現。相比較于只能觀看運行結果的系統來說,聯調可以大大提高設計制作的效率。Pro-teus與Keil的聯調需要用到Proteus下的一個動態鏈接庫文件VDM51.DLL,用其作為Keil鏈接到Proteus的接口。
系統運行后,首先初始化系統,并顯示系統信息,數秒鐘的延時之后LCD將顯示提示“是否輸入新號碼?”,若按“#”則進入號碼輸入界面。輸入完畢后按“#”結束輸入,如果輸入錯誤則按“*”重新輸入,若按“*”則進入等待狀態,若報警開關未打開,則進入空閑狀態,此時按“#”可以修改已存儲的電話號碼。若報警開關已經打開,則進入監控狀態,此時按“#”依然可以修改之前存儲的電話號碼。若此時有外部報警信號進入,則進入中斷程序,開始撥號。同時,可用電壓探針探測到輸出的撥號脈沖序列,如圖4所示。根據脈沖撥號原理,數字1~9撥號脈沖個數與撥號數字相同,0的脈沖個數是10。

撥號完成會延時10 s,之后將會根據輸入報警信號類型判斷警報內容,若打開第六路報警信號開關,此時系統發出了長、長、短的警報信號。若將報警開關閉合,系統被掛起,解除報警信號,可模擬成報警器被人暫時關閉,并開始處理報警內容,如:火災則滅火,毒氣則通
風,盜竊則檢查門窗物件等。報警信號解除后,程序跳出中斷循環程序,返回到主程序的監控狀態。
4 結語
本文給出了使用Proteus軟件仿真自動撥號報警器實驗的具體設計過程,采用模塊程序設計,利用仿真軟件Proteus及Keil C51聯合調試程序。程序設計過程對每個模塊先進行獨立編程,調試通過之后再一起合并進行系統程序總調試。通過上述方式,學生完全可以通過Proteus軟件實現單片機實驗的仿真,并在較短的時間內完成單片機系統的軟、硬件設計,形象生動地理解并掌握單片機技術。不僅彌補了硬件資源投入不足的弊端,還明顯克服了實驗箱教學中固定硬件資源導致實驗內容固定的缺陷,極大地發揮了學生的主觀能動性和創造性。












評論