吳晨曦 蔣 嶸 王少力
(湖南工程學院 湖南湘潭 411101)
《微機原理及接口技術》是湖南省一流本科專業建設點—湖南工程學院機械電子工程專業的核心專業基礎課之一,本課程貫穿于專業學習、能力與素質培養的全過程,在機電特色的高水平應用型人才培養中起骨干支撐作用。課程內容主要包括:單片機結構與原理、程序設計基礎、中斷與定時計數系統、微機應用系統設計等。單片微機技術廣泛用于信號檢測采集、數據處理、實時控制等方面,已成為智能制造、機器人工程、人工智能等技術的重要組成部分,以及推動這些技術不斷發展的重要力量[1]。
以往的教學實踐表明,本課程整體上抽象難懂,需綜合運用數學、模擬電子技術、數字電子技術、計算機技術等學科知識,讓初學者學習難度陡增[2]。加上課時少、內容多、進度快,以及其他不利因素的影響,導致最終教學效果往往不盡人意。一些突出的教學難點問題表現為:單片機內部結構原理復雜抽象,學生對系統軟硬件協同工作認識模糊,對控制流程及程序編寫缺乏清晰思路、邏輯性不強,對案例教學無親歷參與感等。
其中,單片機的存儲結構、工作原理、時序邏輯是直接影響本課程乃至機電專業全局教學的首要難點問題,屬于最基礎最重要的內容。任何一個單片機應用系統都離不開它們,必須在此基礎上,由單片機執行程序指令、按一定時空關系訪問存儲器,實現計算與控制功能[3]。因此,這些內容教學效果的好壞至關重要,可謂牽一發而動全身,必須弄懂吃透。然而,由于單片機內部結構復雜、工作原理抽象,教師在常規講授或實驗過程中缺乏有效的教學方法與手段,難以闡明指令操作時序、執行機制、軟硬件協同工作過程,學生感到晦澀難懂、枯燥乏味,逐漸失去學習興趣,導致教學效果不佳。在實際教學中,對這部分內容往往一帶而過,結果影響后續學習與實際應用。因此,教師要求打破現有教學習慣的束縛,積極運用新技術新方法進行改革探索,以激發學生的學習興趣,實現課程教學目標。
為破解單片機存儲結構、工作原理、時序邏輯方面的教學難題,擬運用虛擬仿真技術,開發單片機軟硬件協同可視化虛擬仿真教學項目,通過可視化單片機的結構原理,直觀形象展現單片機存儲結構、操作時序、軟硬件協同過程。
以51單片機片內外RAM數據傳送為目標開發虛擬仿真項目,利用虛擬仿真技術,將真實單片機中無法觀測到的指令執行與片內外存儲器讀寫過程,通過程序調試運行、數據傳送、存儲器訪問、硬件仿真驅動的有機結合,以直觀清晰、精準透明、軟硬協同、可視化的方式呈現出來,深化學生對單片機存儲結構、工作原理、時序邏輯的理解應用。
數據傳送的具體要求為:向51單片機片內RAM數據存儲器寫入數據、從片內RAM數據存儲器向片外RAM數據存儲器寫入數據、CPU從片外RAM數據存儲器讀取數據。項目開發環境如下:①個人電腦配置:CPU3.7GHz,內存8GB以上,顯卡4GB 以上,硬盤500G以上;②開發工具軟件:Keil4編程仿真軟件、proteus7.8硬件仿真軟件。內容包括硬件仿真設計、程序設計仿真和仿真調試三部分。
采用proteus7.8軟件設計、搭建硬件仿真原理。由單片機AT89C51、地址鎖存器74LS373、8K片外擴展RAM、邏輯分析儀Logic Analsyer和數字分析儀DIGITAL ANALYSIS等虛擬仿真元件按要求連接而成,這些虛擬仿真元件都從proteus元件庫中選取,與實物元件功能相同。
由proteus提供的外部時鐘脈沖信號CLOCK,經引腳XTAL2進入單片機作為系統時鐘,頻率為12MHZ。單片機的P0口作為片外RAM共用的數據線和地址線,作數據線時直接與RAM數據引腳D0-D7連接,作地址線時要經過地址鎖存器74LS373再與RAM地址引腳A0-A7連接;地址鎖存器74LS373對P0口起分時復用的作用,即CPU在訪問片外RAM時,P0口先發出某地址信號給74LS373,在地址鎖存控制信號ALE的下降沿時刻,該地址信號鎖存在74LS373中,選定該地址的片外RAM單元且保持不變,然后再作為數據口對所選RAM單元進行讀寫操作。單片機的P2口作為高8位地址線與片外RAM其余地址引腳直接連接,這里與RAM的高5位地址引腳A8-A12相連,因此只占用了P2.0-P2.4地址線。P0口與P2口的低5位共同組成片外RAM的13位地址總線,尋址范圍為8KB。
單片機的寫/WR和讀/RD控制信號分別與片外RAM地寫引腳WR和讀引腳RD相連,低電平有效。寫信號/WR低電平時,CPU將數據從單片機寫入片外RAM。讀信號/RD低電平時,CPU將數據從片外RAM讀入單片機。
邏輯和數據分析儀用于輸出待觀測的片外RAM讀寫時序邏輯圖。在執行程序指令時,能以圖形方式直觀形象顯示系統時鐘、地址信號、控制信號、數據的時序分配與邏輯變化關系,有利于進一步分析、理解與應用。
采用Keil4軟件編寫程序、仿真調試。根據前述數據傳送的要求,程序設計可分為三部分:①設置要傳送的數據塊長度,數據塊的值保存在數表中,這里預設5個字節的數據塊,其值為01H,02H,03H,04H,05H;②對片內RAM置數,用查表方式向片內RAM 30H-34H區寫入該數據塊的值;③對片外RAM置數、讀數,將片內RAM 30H-34H區的值寫入片外RAM 1234H-1238H區以及CPU從該片外RAM區讀取數據。
參考程序如下所示:


通過Keil編譯、仿真調試、運行程序,觀察Keil窗口片內外存儲器的數值及變化,能直觀展現程序指令的執行過程及片內外RAM讀寫操作過程、結果等核心要素。
通過Keil與proteus聯調實現RAM數據傳送虛擬仿真。在Keil中編寫好RAM數據傳送程序,經編譯、鏈接、創建可執行程序后,再將可執行程序加載到proteus仿真中的單片機AT89C51,然后設置Keil與proteus的連接,建立聯調仿真監控系統。在Keil窗口調試運行程序,從三方面體現仿真過程與結果:①結合Keil與proteus,從兩者的窗口觀察RAM的內容,并相互印證;②從proteus窗口的地址、數據、控制總線端點顏色動態變化,形象展示程序與硬件的協同作用,實現特定的功能。③在proteus窗口探測各種總線,用邏輯分析儀、數據分析儀顯示片外RAM讀寫操作時序邏輯,直觀具體地展現單片機的工作原理、指令詳細執行過程、時序分配關系。
全速調試程序后,向片外RAM寫入數據的聯調界面與仿真結果。以向片外地址為1234H的RAM單元寫入數據01H的指令執行為例,先由P2、P0口發出16位地址信號0001001000110100,選中地址為1234H的片外RAM單元;然后寫信號/WR由高電平變為低電平的時間內,開始對選定的RAM單元進行寫操作,通過P0口將數據01H寫入該RAM單元;當/WR、ALE信號低電平變為高電平后,該指令執行完畢;指令執行過程中伴隨總線邏輯顏色的實時同步變化,高電平顯示紅色,低電平顯示藍色。由此可見,能從RAM的內容、指令時序圖和總線邏輯值的變化等多方面直觀清晰、精準透明、軟硬協同、可視化單片機的內部結構與工作原理。
51單片機片內外RAM數據傳送虛擬仿真項目,較好詮釋了單片機存儲結構、操作時序、軟硬件協同的普遍規律。本項目除了用于基本的課堂教學與實驗教學外,還經過拓展廣泛用于課程設計、畢業設計、創新創業競賽等方面,效果理想。
在講授單片機內部結構組成與工作原理時,除用51單片機實物開發板簡單演示外,主要基于51單片機片內外RAM數據傳送虛擬仿真,在Keil窗口清楚地看到RAM數據傳送匯編語言源程序經編譯后,生成的目標程序在程序存儲空間以機器碼存貯及分配的地址、占用的字節數,以及匯編指令與機器指令的對應關系;CPU怎樣一步步執行程序存儲器ROM的機器代碼,給片內數據存儲器賦值,在proteus窗口通過地址總線、控制總線、數據總線對片外RAM進行讀寫操作,以具體形象的方式揭示單片機內部結構、抽象原理、硬件和程序協同工作。
以此為基礎進行適當改變,即可推廣基本輸入輸出、中斷與定時計數系統,如蜂鳴器報警、LED燈閃爍控制、LED數碼管顯示、獨立式鍵盤輸入、4×4矩陣鍵盤鍵輸入與數碼管顯示、單一外部中斷控制循環移位燈、中斷嵌套的應用、用定時器計數器功能制作LED秒表、用定時器計數器編寫單片機音樂程序、外部程序存儲器和其他I/O口的擴展;以及其他微機綜合應用系統,如基于單片機的智能宿舍控制系統設計、51單片機的智能火災報警系統設計等簡單系統的開發設計與驗證優化。
緊緊圍繞案例虛擬仿真為主展開課堂教學,通過講授、研討、演示實操以及布置需仿真驗證的課后作業等,掌握單片機的基本組成、引腳功能、CPU、存儲器、輸入輸出接口、時鐘與復位電路等基礎知識;掌握編程語言及程序設計的方法步驟;掌握中斷、定時器計數器的基礎知識及應用;掌握程序存儲器的擴展、數據存儲器的擴展及I/O接口的擴展。打破常規教學硬件、程序、接口之間相互割裂模式,明確統一協調的應用系統概念和實際工程應用意義。
在實驗室,采用實物實驗平臺與虛擬實驗平臺比較和線上線下結合的實驗教學方法。先按實驗要求,在單片機實物平臺上演示,簡要指出單片機工作原理抽象、過程不透明、結果難于理解等不足。然后創建“51單片機軟硬件協同可視化虛擬仿真實驗”平臺,要求學生人人動手。步驟如下:首先用Keil編寫對片內外RAM讀寫操作的程序;其次用proteus搭建擴展電路和時序檢測電路;再次設置Keil和proteus聯調監控關系;最后編譯、調試、運行程序并觀察RAM的數值及片外RAM讀寫時序圖,并分析比較仿真RAM數值變化和時序圖與理論結果是否相符。虛擬仿真實驗平臺能將程序調試運行、數據傳送、存儲器訪問、硬件原理仿真模型有機結合,以直觀清晰、精準透明的方式呈現在學生面前,在此基礎上,再開展探索研究型虛擬仿真實驗,將虛擬實驗代碼、實驗過程和結果以視頻圖像形式上傳給指定的實驗教學網絡學習平臺,供老師評閱,給出實驗成績評分。
其他實驗,如判斷統計正負數個數、找最大數程序設計、急救車通行交通信號燈的外部中斷控制實驗、內部定時器/外部計數器的基本功能實驗、通用并行口輸入輸出擴展實驗、可編程并行口芯片擴展實驗、D/A數模轉換擴展實驗、A/D模數轉換擴展實驗、鍵盤與顯示器應用實驗、溫度測量與顯示綜合應用實驗等,按照類似“51單片機軟硬件協同可視化虛擬仿真實驗”的要求,完成虛擬仿真設計與調試驗證。
基于虛擬仿真的單片機系統在步進電機調速控制、直流電機速度檢測、智能云家居系統設計等課程設計中得到成功推廣應用。
步進電機調速控制包括以下內容:①采用四相單四拍、四相雙四拍工作方式、四相八拍工作方式。②用proteus設計51單片機控制的硬件仿真原理,采用總線擴展,用74LS244接啟、停、方向輸入信號與加減速信號經P0口輸入單片機,由P2口經74LS273鎖存輸出脈沖信號,再經ULN2003A放大驅動步進電機。③用Keil編寫匯編程序。④仿真調試。能實現啟動時步進電機轉速由慢到快加速過程、接著勻速運行、停止時步進電機由快到慢減速過程以及正反轉切換的仿真效果。
直流電機速度檢測通過改變電機電樞電壓調節速度,用編碼器測速或采集電樞電壓測速方法顯示速度。具體設計內容為:①用proteus設計51單片機控制的硬件仿真原理,用8255作I/O口,接速度給定輸入信號和8位LED數碼管及直流電機的驅動信號,ADC0808芯片將電樞電壓轉換為數字量速度信號,DAC0832芯片進行D/A轉換給電機供電;②在第7、6、5位LED顯示給定速度值,第2、1、0位LED顯示實際速度值;③用Keil編寫匯編程序。經仿真調試能驗證直流電機速度檢測設計的有效性。
智能家居系統用STM32處理器采集煙霧傳感器、紅外傳感器、火焰傳感器、門磁傳感器等多路傳感器信息并進行處理,以監測家庭環境,并預警和自動消除隱患。仿真設計與調試驗證了其可行性。
基于虛擬仿真的單片機系統成功應用智能臺燈控制、光照度測量儀、學生宿舍智能控制系統設計等畢業設計課題。
智能臺燈控制系統通過檢測臺燈使用者所處的位置控制臺燈的開與關。以STC89C51單片機作為處理器,首先利用紅外傳感器檢測是否有人在,然后利用超聲波傳感器檢測人和臺燈的距離,再利用光敏電阻檢測周圍環境的亮度,由ADC0832模數轉化后輸入單片機,經分析判斷自動進行光控。通過仿真設計與調試,能實現人員、距離、亮度檢測與調節功能。此畢業設計獲校優秀畢業設計。
光照度測量儀是一款能自動測量光照強度并顯示測量值及環境參考值范圍的測量儀器。光照度測量儀以STC89C52RC單片機為微控制器,通過光照傳感器BH1750FVI處理光信號,利用I2C總線接口對由光強度傳感器光電轉換、信號放大及A/D轉換之后的數據進行讀寫,再經串口通信將數據輸送至上位PC機來進行特性曲線的擬合,單片機再利用此特性曲線關系來處理未知光信號,最后再將測量值輸出在LCD屏上實時顯示。此畢業設計獲校優秀畢業設計。
在創新創業競賽等方面,虛擬仿真的微機系統也發揮了重要作用。如:基于STM32的物聯網預警滅火機器人項目獲省大學生機械創新大賽一等獎。又如:用于課堂教學的微型數控平臺由上位機與單片機、步進電機控制的微型X-Y平臺,該項目獲省大學生機械創新大賽二等獎。
通過開發51單片機片內外RAM數據傳送的虛擬仿真項目,得出單片機應用系統的普遍規律,以直觀清晰、精準透明、軟硬協同、可視化方式呈現出來,解決了常規教學中單片機原理抽象晦澀的難題。這種可視化虛擬仿真技術已深入運用到課堂教學、實驗教學、課程設計、畢業設計、創新創業競賽等各個方面,通過直觀形象的仿真場景,學生以真實般的體驗自主學習,以此激發學習興趣、培養創新精神,提升專業能力。同時培養學生縝密守時、精準控制、精益求精的職業精神。