www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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