新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實驗教學仿真軟件設計

        單片機實驗教學仿真軟件設計

        作者: 時間:2013-04-24 來源:網絡 收藏


        3 仿真運行子系統的設計與實現
        (1)對51系列單片機指令系統的111條指令建立對應的處理函數,依照地址指針在指令類的數組對象中查詢到對應元素,再根據指令ID調用指令的處理函數,完成指令的所有處理功能,返回下一指令地址給地址指針,實現仿真運行子系統的基本需求。
        (2)設計狀態掃描程序,查詢中斷申請。當有中斷時,在指令處理函數在完成指令的所有處理功能后進行中斷處理。
        (3)仿真運行子系統與仿真電路建立子系統的信息交換功能的設計通過仿真電路子系統與程序仿真運行子系統的接口函數實現。
        當仿真運行子系統仿真執行的指令向單片機I/O接口發送數據,這些數據將引起單片機外接電路及相關元件狀態的改變。此時,由仿真運行子系統向仿真電路子系統發送消息,啟動仿真電路狀態修改進程,對仿真電路及元件的狀態更新。然后修改進程結束將控制權交還,繼續仿真運行。
        如果在仿真運行期間仿真電路或元件(僅限按鈕開關)狀態發生改變,此時則由仿真電路子系統向仿真運行子系統發送消息,啟動仿真運行狀態修改進程,更新存儲器單元對應的內部變量。然后修改進程結束將控制權交還,繼續仿真運行。

        4 仿真電路子系統的設計
        仿真電路子系統在外部,它向用戶提供了一個可視的虛擬的單片機實驗平臺,用戶通過這一平臺建立仿真的實驗電路。當用戶仿真運行實驗源程序時,將再次通過這一平臺進行相關操作,觀察實驗現象。在內部,仿真電路子系統對用戶建立的仿真電路進行元件的記錄、電路連接的分析、節點表的建立與維護、元件(包括單片機端口)狀態得計算,通過發送消息與仿真運行子系統交互。最終達到在完全軟件仿真的環境中讓用戶完成單片機教學實驗,并獲得與真實實驗條件下相同的實驗結果。
        4.1 仿真元件的設計與實現
        元件是電路建立的基礎。對實驗中用到的電器元件(如:51系列單片機89S51、電阻、電容、發光二極管、數碼管、各種開關、邏輯門電路、譯碼器、存儲器芯片等)設計元件類。另外將電源、接地、導線、節點也作為元件進行設計。
        部分元件以簡化的圖形表現,在設計元件時為簡化軟件的設計,將元件以單元模塊的形式進行設計,即以單元模塊電路的形式將模擬元件簡化為數字邏輯單元。忽略了電路及元件具體的電流電壓等模擬特性。類似的單元模塊有,復位模塊、振蕩電路模塊、數碼管模塊、開關模塊。
        4.2 元件類的設計與實現
        首先設計出CYuanJian類,它定義了元件共有的基本屬性及方法,例如:在窗口中的位置、元件的線條及填充顏色、元件管腳的坐標,其次,對元件操作時的方法,例如:元件的繪制和對其他屬性進行設置等。為了讓元件對象能方便地以數據文件的形式在存儲器中存儲和
        讀取,將CYuanJian類的父類定義為VC++MFC提供的基類CObject類。這樣就可使用CObject類的成員函數Serialize()對元件對象進行串行化。由于每個元件的外形均不相同,對元件進行繪制的Draw()函數和元件移動函數Move()定義為虛函數,利用VC++的多態性在子類中實現。同時這使得CYuanJian類成為了抽象類,CYuanJian類僅用來派生子類,不能實例化。
        對每一個元件或單元模塊都根據上述方法建立對應的類。元件類的建立是仿真電路建立的基礎。根據元件的功能要設計其自身特有的屬性和方法。由于元件較多受篇幅限制不再一一詳細敘述。
        4.3 電路仿真設計與實現
        單片機電路設計在現實中是非常復雜的,要考慮眾多因素,如:接口的驅動能力、布線不良使數字噪聲影響模擬信號、電源去耦合、高低頻噪聲的處理、信號延時造成的競爭與冒險、阻抗匹配等。在電路仿真設計時同樣采用元件設計時的思路,將電路簡化為一個數字電路模型。通過元件類中管腳結點號這一屬性記錄元件的連接信息,再通過結點表記錄各個結點的邏輯電平,最終元件同過結點的邏輯電平計算出自己的狀態。
        數字電路中所有數字器件天然的按照時間的推移并行運算。輸入的變化導致器件按照內部的電路,完成一定的邏輯運算并可能導致輸出的改變。實際電路中各個器件是并行運行的,而程序指令的執行是串行的。在軟件仿真中,引腳狀態的變化,數字器件的運算,只能按照程序中函數調用的順序,逐一執行,或交替執行。在不考慮信號延時的情況下,程序通過循環,檢測元件電路狀態最終計算出電路穩定時的各元件輸出值,達到與實際電路一致的目的。電路仿真設計主要有以下幾個部分:
        (1)元件的基本操作和元件的連接
        單片機仿真實驗軟件系統通過電路建立菜單中各菜單項及工具欄按鈕向用戶提供操作類型選擇。用戶首先選擇操作類型,主要包括選擇元件、添加元件、設置結點、連接元件等。用戶通過鍵盤操作(按下shift鍵)和鼠標操作(左鍵單擊、右鍵單擊、雙擊、拖動)進行仿真電路的建立或修改,系統獲得Windows消息判斷出鼠標和鍵盤事件再結合操作類型以決定程序如何執行;元件的連接反映出用戶期望實現的電路功能,仿真電路子系統要完成連接線和連接點信息的記錄,元件管腳結點號的更新,結點表的建立及更新。
        (2)電路初始狀態的計算
        電路初始狀態的計算的主要目的是根據仿真電路中的具體元件和連接信息計算出電路各結點的邏輯電平,進而計算各元件管腳的邏輯電平,最終決定各元件的狀態。在這里將元件管腳分為輸入型、輸出型和雙向型三類,并設置優先度。建立結點表時會將元件管腳的優先度傳遞給結點,但電路元件狀態發生改變更新結點表時,對某一結點的改變要參考優先度決定結點值。并在電路狀態計算時設計了一組規則以保證電路計算的正確性。電路初始狀態計算時發現仿真電路違反連接規則時停止計算提示用戶修改。否則遵循計算規則進行計算。
        (3)電路狀態的跟蹤
        與現實中的單片機實驗一樣,在用戶進行仿真運行時有兩種情況會改變仿真電路的狀態,一是:正在運行的用戶程序改變了單片機的I/O口。二是:用戶通過鼠標操作改變了電路中按鈕開關或撥動開關的狀態。在設計時定義兩個函數IOchange()和SWehange(),該函數采用與電路初始狀態計算相似的算法計算當前電路狀態。仿真電路子系統將重新計算電路中個結點的邏輯值并更新元件管腳的值。同時發出消息使所有元件將發生重繪,在元件重繪時由元件類自己的成員函數根據管腳值計算元件狀態繪制對應圖形。

        5 結論
        本文在深入分析單片機需求的基礎上,對單片機建立系統模型并針對功能最為重要的、仿真運行和電路仿真三個子系統的設計方法進行詳細的論述。對詞法分析、語法分析、元件操作、元件連接以及電路狀態計算跟蹤等重要功能,設計了相關算法。由于單片機的實際應用涉及到很多領域的相關知識,本文不是非常成熟和完善。但同時我們看到單片機的應用在單片機的教學過程中有著巨大的使用價值和深遠的意義。

        本文引用地址:http://www.104case.com/article/170525.htm

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大名县| 繁峙县| 南岸区| 伽师县| 城步| 左云县| 砀山县| 荥经县| 班戈县| 甘泉县| 黔西县| 高陵县| 襄樊市| 岚皋县| 翁源县| 宜都市| 廊坊市| 洛浦县| 全南县| 历史| 宜黄县| 香格里拉县| 云梦县| 前郭尔| 辰溪县| 阜康市| 平定县| 昌宁县| 蒙阴县| 乐东| 浮梁县| 蒙山县| 马关县| 泾阳县| 卓尼县| 和田县| 库车县| 萨迦县| 黄冈市| 平罗县| 肇庆市|