《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于Proteus的自動撥號報警器仿真設計
基于Proteus的自動撥號報警器仿真設計
摘要: 本文利用嵌入式系統仿真軟件Proteus實現了基于AT89C51單片機的自動撥號報警器仿真設計,具有開發周期短,成本低等特點,對于單片機應用系統、電子電路的開發和教學等都有較大的實用價值,且設計的電路及驅動程序對相應的實際應用系統具有一定的借鑒作用。
Abstract:
Key words :
  0 引言

  Proteus VSM是英國Labcenter Electronics公司推出的一款基于標準仿真引擎Spice3F5的電路分析、實物仿真系統,是一款電子設計的教學平臺、實驗平臺和創新平臺,涵蓋了電工電子實驗室、電子技術實驗、單片機應用實驗室等的主要功能,其組合了高級原理布圖、混合模式Spice仿真、PCB設計以及自動布線來實現一個完整的電子設計系統。Proteus軟件可以仿真、分析各種模擬器件和集成電路,可以支持不同系列的單片機仿真,如51系列、PIC系列、AVR系列、摩托羅拉的68MH11系列等;Proteus提供了虛擬示波器、邏輯分析儀、信號發生器、計數器、電表、Virtual Terminal等虛擬儀器儀表供選擇用,其虛擬系統建模(VSM)技術可以仿真基于微控制器的設計,包括其周邊電路,甚至可以使用動畫演示的外設模型(如LED/LCD顯示、開關、按鈕、RS 232終端、鍵盤等)與設計目標實時交互;它具備強大的調試工具,包括寄存器和存儲器數據查詢、斷點和單步模式,并可以利用IAR C—SPY,KeilμVision和Matlab等軟件進行源代碼級聯合調試,以求達到最好的仿真效果。本文利用嵌入式系統仿真軟件Proteus實現了基于AT89C51單片機的自動撥號報警器仿真設計,具有開發周期短,成本低等特點,對于單片機應用系統、電子電路的開發和教學等都有較大的實用價值,且設計的電路及驅動程序對相應的實際應用系統具有一定的借鑒作用。

  1 Proteus中自動撥號報警器設計

  基于AT89C51單片機的自動撥號報警器硬件系統原理圖如圖1所示。該報警器由6個子模塊組成,包括單片機最小系統模塊、功率放大電路與模擬報警信號模塊、LCD顯示模塊、鍵盤輸入模塊、I2C存儲模塊和撥號音頻模塊。

a.JPG

  下面分析各個模塊的設計原理:

  (1)單片機最小系統模塊。主要包括51系列單片機一塊(AT89C51)、時鐘電路(12 MHz晶振)與復位電路(包括上電復位與手動復位兩種)。

  (2)功率放大電路與模擬報警信號模塊。由于單片機本身I/O口的驅動能力有限,直接接入電話網絡會因驅動電流太小而使得信息無法傳輸出去,因此需通過功率放大電路增強其輸出驅動力。功率放大電路采用一個NPN三極管與兩個PNP三極管組成多級放大電路,其中NPN管采用的是共射放大,而兩個PNP管則采用了共基放大的方式。模擬報警信號模塊以8個開關模擬8路不同類型的報警輸入,通過一個8路與非門后再接一個非門,當有任何一個按鍵按下時,INT0口均可獲得產生中斷的低電平,以此啟動中斷程序。同時8個開關再分別接入單片機I/0口P2,用以判斷產生中斷的報警類型。在實際應用中,模擬報警信號模塊可以用8路不同的傳感器電路代替,如:溫度傳感器探測火警、氣體傳感器探測有毒氣體等。在仿真平臺下,傳感器較難應用,因此在設計中直接用開關來模擬。

  (3)LCD顯示模塊。使用16×2的點陣字符型液晶LM016L,用以顯示操作提示信息。1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同點陣字符圖形,這些字符有阿拉伯數字、英文字母的大小寫、常用符號和日文假名等,每1個字符都有1個固定的代碼。用戶在模塊中寫入適當的控制命令,即可完成清屏、顯示、地址設置等操作。設計采用并連方式控制,LCD與單片機的通信接口電路采用直連方法。

  (4)鍵盤輸入模塊:鍵盤采用Proteus自帶的3×4電話機鍵盤模塊,主要用來編輯修改電話號碼與功能控制選擇。

  (5)I2C存儲模塊:該模塊用于存儲撥號的電話號碼,數據量小。為節省I/O口,采用24CXX系列存儲芯片,僅需占用2個I/O口(SDA,SCL)。

  (6)撥號音頻模塊:電話撥號脈沖以及聲音脈沖由單片機軟件設置生成,由定時器控制脈沖的頻率和占空比。電話機脈沖撥號的國家標準規定,脈沖斷續比為(1.6+0.2):1或(2.0+0.2):1,當脈沖撥號速度(脈沖數/s)為10+1時,相鄰兩脈沖串的時間間隔大于等于500 ms。由此可以計算得出,脈沖撥號斷、續時間間隔分別為:100×1.6/(1.6+1)≈61.5 ms和100-61.5=38.5 ms。在摘機狀態時,電話機處于低阻態,國家標準規定的直流阻值小于等于300 Ω。

  2 軟件程序設計

  2.1 主程序設計

  系統主程序設計流程圖如圖2所示,主程序流程分為3個狀態:號碼輸入狀態,在存儲器中已存有電話號碼的情況下此步驟可手動跳過;等待狀態,該狀態是在警報開關關閉的時候系統所處的空閑狀態,可按“#”重新進入號碼輸入狀態,當警報開關打開時會自動跳進監控狀態;監控狀態,系統等待外部中斷以做出相關處理。按“#”可以跳回到號碼輸入狀態。在號碼輸入狀態和等待狀態,系統需要關閉中斷,以避免中斷信號對系統設置產生干擾。

b.JPG

  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碼低三位,以此作為報警類型標識。

c.JPG

  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。

d.JPG

  撥號完成會延時10 s,之后將會根據輸入報警信號類型判斷警報內容,若打開第六路報警信號開關,此時系統發出了長、長、短的警報信號。若將報警開關閉合,系統被掛起,解除報警信號,可模擬成報警器被人暫時關閉,并開始處理報警內容,如:火災則滅火,毒氣則通風,盜竊則檢查門窗物件等。報警信號解除后,程序跳出中斷循環程序,返回到主程序的監控狀態。

  4 結語

  本文給出了使用Proteus軟件仿真自動撥號報警器實驗的具體設計過程,采用模塊程序設計,利用仿真軟件Proteus及Keil C51聯合調試程序。程序設計過程對每個模塊先進行獨立編程,調試通過之后再一起合并進行系統程序總調試。通過上述方式,學生完全可以通過Proteus軟件實現單片機實驗的仿真,并在較短的時間內完成單片機系統的軟、硬件設計,形象生動地理解并掌握單片機技術。不僅彌補了硬件資源投入不足的弊端,還明顯克服了實驗箱教學中固定硬件資源導致實驗內容固定的缺陷,極大地發揮了學生的主觀能動性和創造性。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 2021国产麻豆剧果冻传媒入口| 久久国产精品一国产精品金尊| 美女黄18以下禁止观看| 国产精品无码专区| 一级毛片不卡免费看老司机| 最新仑乱免费视频| 人人妻人人爽人人澡欧美一区| 野花社区视频在线观看| 国产精品高清一区二区三区不卡| 中国大陆一级毛片| 日韩欧美亚洲国产精品字幕久久久| 亚洲网址在线观看| 色天天综合色天天碰| 国产第一页在线观看| HUGEBOOBS熟妇大波霸| 扒开美妇白臀扒挺进在线视频| 亚洲xxxx18| 毛片视频在线免费观看| 嗯啊h客厅hh青梅h涨奶| 91精品国产高清久久久久久91| 成人在线免费观看| 久久国产精品久久精品国产| 欧美性xxxxx极品| 人人添人人澡人人澡人人人爽| 翁熄性放纵交换| 国产又爽又黄又无遮挡的激情视频 | wwwxxx日本| 无遮挡1000部拍拍拍免费凤凰| 亚洲av综合色区无码专区桃色| 欧美黑人换爱交换乱理伦片| 免费看小12萝裸体视频国产| 色多网站免费视频| 国产又黄又大又粗的视频| 1024在线播放| 国产精品视频永久免费播放| a级日本高清免费看| 性欧美18-19sex性高清播放 | 国产精品久久国产精麻豆99网站 | 日韩一本二本三本的区别青| 亚洲国产一区二区三区| 热久久视久久精品18国产|