<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于Proteus的自動撥號報警器仿真設(shè)計

          基于Proteus的自動撥號報警器仿真設(shè)計

          作者: 時間:2011-06-16 來源:網(wǎng)絡 收藏

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

          本文引用地址:http://www.ex-cimer.com/article/150595.htm

          c.JPG


          2.3 LCD顯示子程序
          LCD顯示子程序包含有多個子函數(shù),包括:讀LCD狀態(tài)指令函數(shù)recom()、測試忙函數(shù)busytest()、寫LCD指令函數(shù)wrcomn()、LCD清屏函數(shù)clrscr()、初始化LCD函數(shù)initled()、光標定位函數(shù)setpos();寫單字節(jié)數(shù)據(jù)函數(shù)writedata();對于某一行的寫入字符串函數(shù)wrll()與wr21()。其中,讀/寫指令、測試忙、清屏、光標定位、寫單字數(shù)據(jù)均是按照LCD原理命令字進行操作。LCD的初始化包括復位設(shè)置、清除顯示、地址歸位、顯示開關(guān)、游標設(shè)置、讀/寫地址設(shè)置等,LCD中所有數(shù)字和字符都可以通過它的ASCII碼來訪問顯示。
          2.4 音頻模塊程序
          在撥號程序設(shè)計中關(guān)鍵要控制好定時器以實現(xiàn)準確的占空比脈沖,程序編寫中,設(shè)置TMOD=0x11,定時器設(shè)置為操作模式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),因此采取在一個循環(huán)次數(shù)為10的for循環(huán)中執(zhí)行定時時間為50 ms的程序,TC=216-50 ms/1μs=15 536=0x3CB0,因此TH0=0x3C,TL0=0xB0。
          音頻模塊程序設(shè)計是通過設(shè)定特定頻率的正負脈沖序列,驅(qū)動擴音器播放出相應音調(diào)的聲音,例如若設(shè)置單片機定時器1TH0=0xFB,TL0= 0x44,則脈沖周期約為2.424 ms,所發(fā)出的聲音與音調(diào)“do”相似。在此不妨定義發(fā)長音時間為500 ms,發(fā)短音時間為100 ms。長短音信號相互組合成不同的警報信息可用來定義不同的報警類型。

          3 調(diào)試與運行
          和Keil中進行相關(guān)的設(shè)置,可以讓兩者進行聯(lián)調(diào),聯(lián)調(diào)可以在同一臺計算機上進行,也可以在不同的計算機之間進行。通過與Keil的聯(lián)調(diào)可以輕易做到在不使用硬件的前提下直接在平臺上進行實時,對于系統(tǒng)的調(diào)試具有很大意義。實時能降低調(diào)試的難度,更有利于設(shè)計中一些問題的解決以及BUG的發(fā)現(xiàn)。相比較于只能觀看運行結(jié)果的系統(tǒng)來說,聯(lián)調(diào)可以大大提高設(shè)計制作的效率。Pro-teus與Keil的聯(lián)調(diào)需要用到下的一個動態(tài)鏈接庫文件VDM51.DLL,用其作為Keil鏈接到Proteus的接口。
          系統(tǒng)運行后,首先初始化系統(tǒng),并顯示系統(tǒng)信息,數(shù)秒鐘的延時之后LCD將顯示提示“是否輸入新號碼?”,若按“#”則進入號碼輸入界面。輸入完畢后按“#”結(jié)束輸入,如果輸入錯誤則按“*”重新輸入,若按“*”則進入等待狀態(tài),若報警開關(guān)未打開,則進入空閑狀態(tài),此時按“#”可以修改已存儲的電話號碼。若報警開關(guān)已經(jīng)打開,則進入監(jiān)控狀態(tài),此時按“#”依然可以修改之前存儲的電話號碼。若此時有外部報警信號進入,則進入中斷程序,開始撥號。同時,可用電壓探針探測到輸出的撥號脈沖序列,如圖4所示。根據(jù)脈沖撥號原理,數(shù)字1~9撥號脈沖個數(shù)與撥號數(shù)字相同,0的脈沖個數(shù)是10。

          d.JPG


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

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


          上一頁 1 2 3 4 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();