當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]摘要:主要討論以微型計算機為操作平臺、基于Widnows操作系統(tǒng)的單片機實驗教學(xué)仿真軟件的設(shè)計。實現(xiàn)對單片機教學(xué)實驗的全軟件仿真。針對自主研發(fā)的單片機實驗教學(xué)仿真軟件的特點和實際實驗教學(xué)過程面臨的問題,詳細闡

摘要:主要討論以微型計算機為操作平臺、基于Widnows操作系統(tǒng)的單片機實驗教學(xué)仿真軟件的設(shè)計。實現(xiàn)對單片機教學(xué)實驗的全軟件仿真。針對自主研發(fā)的單片機實驗教學(xué)仿真軟件的特點和實際實驗教學(xué)過程面臨的問題,詳細闡述軟件的系統(tǒng)需求分析、建模及各子系統(tǒng)的詳細設(shè)計過程。在此重點論述了仿真編譯、仿真運行和仿真電路子系統(tǒng)的設(shè)計思路、相關(guān)算法的設(shè)計及程序設(shè)計與實現(xiàn)。
關(guān)鍵詞:仿真軟件;虛擬實驗;實驗教學(xué);仿真編譯

0 引言
   
目前,各高校順應(yīng)發(fā)展設(shè)置的單片機課程是機電、自動化等電類專業(yè)的一門重要課程,是一門多基礎(chǔ)、多理論的實踐性課程。在高職單片機教學(xué)過程中理論教學(xué)的發(fā)展已經(jīng)較為完善,而實驗教學(xué)由于受到經(jīng)費的限制,提供的實驗設(shè)備有限,不能滿足學(xué)生的要求。
    鑒于以上情況,開發(fā)單片機教學(xué)實驗的全軟件仿真??梢詼p少實驗經(jīng)費的開銷,又便于增添實驗內(nèi)容,同時也可借用投影儀更加清晰地為學(xué)生做演示實驗,非常有利于學(xué)生加深對所學(xué)理論知識的感性認識、掌握基本實驗知識、方法、技能。對于有危險性的實驗,虛擬實驗平臺更具有優(yōu)勢。

1 單片機實驗教學(xué)軟件的系統(tǒng)組成
   
由于單片機實驗教學(xué)仿真軟件系統(tǒng)較為復(fù)雜固將其設(shè)計為如干個子系統(tǒng),對每個子系統(tǒng)建模和設(shè)計,最后將它們連接起來構(gòu)成整個系統(tǒng)模型。圖1說明了系統(tǒng)的組成和各子系統(tǒng)關(guān)系。


    考慮到單片機實驗教學(xué)仿真軟件的具體情況,同時使用結(jié)構(gòu)化程序設(shè)計與面向?qū)ο笤O(shè)計2種方法,對于單片機實驗教學(xué)仿真軟件系統(tǒng)的功能模塊采用結(jié)構(gòu)化方法來設(shè)計。
    采用面向?qū)ο蟮姆椒ㄔO(shè)計軟件中的用戶界面、各個窗口、菜單、仿真元件等,最后,將各個子系統(tǒng)結(jié)合在一起,就構(gòu)成了單片機實驗教學(xué)仿真軟件。
    下面對主要功能模塊進行論述。

2 仿真編譯子系統(tǒng)的設(shè)計
   
實際的編譯是利用編譯程序從源程序產(chǎn)生目標程序的過程。該過程分為5個階段:詞法分析,語法分析,語義檢查,中間代碼生成,代碼優(yōu)化,目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析。考慮本軟件的實際情況,仿真編譯子系統(tǒng)只進行詞法分析和語法分析,發(fā)現(xiàn)有語法錯誤,給出提示信息,仿真編譯成功后將仿真編譯結(jié)果保存。
    (1)詞法分析模塊調(diào)用源程序編輯子系統(tǒng)產(chǎn)生的用戶源程序文件,逐行對文件中用戶輸入的源程序按照單片機指令系統(tǒng)規(guī)定的符號,如:(“Rn”、“#”、“/”、“@”、“$”、“:”及7種不同尋址方式表示的數(shù)據(jù)或地址、指令轉(zhuǎn)移的偏移量、工作寄存器和特殊功能寄存器的表示符號、44個指令助記符、7個偽指令、用戶定義的標號和符號常量、回車符)。進行詞法分析,判斷用戶源程序中使用的基本符號是否正確,如果不是合法的符號則將錯誤所在的位置及錯誤的類型反饋給用戶,終止仿真編譯等待用戶修改后再一次運行仿真編譯;如果是合法的符號則將每個符號以及符號的類型保存在string類型數(shù)組cifa[]和int類型數(shù)組type[]中供語法分析程序模塊使用。
    (2)語法分析模塊首先定義了51系列單片機所有指令和偽指令的檢查函數(shù)。然后在詞法分析的基礎(chǔ)上,從數(shù)組cifa[]和數(shù)組type[]中取出用戶輸入的字符根據(jù)單片機指令的語法格式,字符的前后關(guān)系逐一進行處理,并調(diào)用指令和偽指令的檢查函數(shù)判斷:用戶輸入的源程序是否符合語法規(guī)則;標號和符號常量的定義與使用是否正確;偽指令的使用是否正確;程序是否以END結(jié)束等。如果存在錯誤則將錯誤所在的位置及錯誤的類型反饋給用戶,終止仿真編譯等待用戶修改后再一次進行仿真編譯;如果是正確的指令則將指令進行處理(對指令地址、指令I(lǐng)D、指令字節(jié)數(shù)、指令周期、操作數(shù)類型、操作數(shù)的值等進行處理)后存入預(yù)先定義的全局數(shù)組對象command中。仿真運行時由仿真運行子系統(tǒng)調(diào)用。

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

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

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉