唐學鋒
(湖州學院,浙江 湖州 313000)
單片機是普通高等院校電子類專業(yè)的重要專業(yè)基礎(chǔ)課程.該課程的教學目的是培養(yǎng)學生具有單片機應(yīng)用系統(tǒng)軟硬件設(shè)計、開發(fā)、調(diào)試的能力,為其在將來的工作中應(yīng)用單片機技術(shù)打下良好的基礎(chǔ).單片機系列課程有“單片機原理與應(yīng)用”“單片機C語言程序設(shè)計”“單片機應(yīng)用系統(tǒng)設(shè)計”等.構(gòu)建課程群的目的是引導學生由淺入深地建立單片機系統(tǒng)概念,逐步掌握單片機系統(tǒng)的設(shè)計與開發(fā)[1].傳統(tǒng)單片機實驗室的主要設(shè)備是基于51內(nèi)核的單片機實驗箱.實驗箱集成了基本功能模塊,學生可以按照實驗指導書操作驗證模塊功能.但由于功能模塊已封裝好,學生看不到內(nèi)部電路結(jié)構(gòu),且實驗主要以演示性、驗證性為主,實驗項目固定不變,所以學生的學習興趣和主動性不足[2-3].這種傳統(tǒng)的實驗箱式教學較適合原理性知識的掌握,如輔助“單片機原理與應(yīng)用”課程教學,但對課程群中的其他課程實驗或課程設(shè)計不能達到良好的實驗教學效果,也不能有效提升學生的實踐能力和創(chuàng)新能力.
本文重點針對單片機課程群中的非原理性課程,以培養(yǎng)學生的實際設(shè)計、調(diào)試能力為出發(fā)點,對傳統(tǒng)的實驗教學模式進行改革,即將虛擬仿真引入單片機實驗教學,建立一套基于虛擬仿真的課程體系架構(gòu),利用構(gòu)建的虛擬仿真平臺將課堂講授與實踐環(huán)節(jié)有機地結(jié)合起來.在實驗和課程設(shè)計環(huán)節(jié)要求學生在虛擬仿真平臺中進行設(shè)計、調(diào)試,仿真正確后下載至實驗硬件進行現(xiàn)場調(diào)試.該模式的虛擬仿真過程生動直觀、操作靈活,可降低實驗難度和調(diào)動學生的積極性[4-7].
虛擬仿真是信息技術(shù)與教學深度融合的教學模式,它能利用軟件設(shè)計虛擬儀器,從而構(gòu)建高仿真度的虛擬實驗環(huán)境.學生在這個虛擬環(huán)境中可以自行設(shè)計實驗方案、擬定實驗參數(shù)、操作儀器、模擬真實實驗過程[8-9].本文采用Proteus和Keil軟件構(gòu)建單片機虛擬仿真平臺.首先建立一個計算機局域網(wǎng),其由一臺服務(wù)器、一臺教師機和若干臺學生機組成,然后在服務(wù)器上安裝Proteus和Keil軟件并進行相關(guān)設(shè)置,可根據(jù)需要開發(fā)實驗教學指導系統(tǒng),也可指導學生在個人電腦上建立虛擬仿真實驗平臺,以便課余使用.
Proteus是英國Labcenter公司推出的一款用于單片機系統(tǒng)設(shè)計的虛擬仿真軟件,已在全球各大高校的單片機課程教學中廣泛應(yīng)用.它很好地解決了單片機與外圍電路組成的綜合系統(tǒng)協(xié)同仿真問題,實現(xiàn)了單片機系統(tǒng)的軟硬件同步仿真調(diào)試,使單片機應(yīng)用系統(tǒng)的設(shè)計變得簡單易用.Proteus軟件具有豐富的器件資源,涵蓋了目前主流單片機的微處理器模型,系統(tǒng)集成了大量的74系列、CMOS系列、A/D、D/A轉(zhuǎn)換器、鍵盤、LCD顯示器等常用器件,還提供了電壓/電流表、示波器、信號發(fā)生器等各種虛擬儀表,這些都可直接用于仿真設(shè)計[10].Keil是美國Keil Software公司出品的一款51系列兼容單片機C語言開發(fā)軟件,是目前全球最流行的開發(fā)80C51系列單片機的軟件工具[11].本文構(gòu)建的單片機虛擬仿真平臺采用Proteus軟件建立虛擬單片機硬件系統(tǒng),采用Keil進行軟件程序調(diào)試,通過Proteus與Keil的聯(lián)合調(diào)試,其程序運行結(jié)果能夠在Proteus環(huán)境中得以反映,并模擬出“單片機系統(tǒng)+仿真器+開發(fā)軟件”的實際系統(tǒng)調(diào)試效果.
一般的單片機原理性課程教學采用的是理論教學與實驗教學相分離的教學模式,即首先在課堂上教師通過PPT講解基本知識點,從單片機片內(nèi)資源、匯編指令到外部接口等;實驗課開設(shè)相對滯后,且主要針對基本功能模塊進行驗證.這樣的教學模式缺乏一種有效地將軟硬件結(jié)合、理論與實際相結(jié)合的演示方法,課堂內(nèi)容雖然較全面,但許多學生卻難以系統(tǒng)性地掌握.
后續(xù)的非原理性課程旨在讓學生建立單片機系統(tǒng)概念,提升學生的系統(tǒng)設(shè)計與開發(fā)能力.在教學中可將單片機應(yīng)用于工程的典型案例引入教學,圍繞具體的應(yīng)用項目展開,使項目設(shè)計貫穿整個教學過程,還可將每個應(yīng)用項目分解為多個子模塊,按照模塊化思路講解相關(guān)硬件[12-14].Proteus虛擬仿真軟件具有豐富的虛擬元器件資源,配合各種虛擬儀表可以展現(xiàn)整個單片機系統(tǒng)的運行過程.教師通過虛擬仿真平臺對案例進行講解和演示,將原本無法用語言描述的內(nèi)容直觀地展現(xiàn)出來,不僅能夠為課堂教學提供很好的交互界面,還能讓學生對完整的單片機應(yīng)用系統(tǒng)有一個感性認識.這種課堂教學模式不僅易于學生更直觀、更形象地理解單片機系統(tǒng)的組成,還解決了單片機課堂教學中理論與應(yīng)用、軟件與硬件無法很好結(jié)合的難題,能夠有效提高學生的學習興趣和教學效果.
在單片機的非原理性課程教學中,提升學生系統(tǒng)開發(fā)能力的實驗方式是將基礎(chǔ)實驗?zāi)K進行組合,實現(xiàn)具有一定檢測和控制功能的單片機應(yīng)用系統(tǒng),并通過增加或改變某方面功能的要求,帶動學生去思考和探究[15].單片機應(yīng)用系統(tǒng)的開發(fā)過程包括硬件電路設(shè)計、軟件設(shè)計、PCB電路板制作、元器件焊接和系統(tǒng)調(diào)試等幾個階段.整個開發(fā)過程不僅需要設(shè)計者掌握軟硬件技術(shù),還需要設(shè)計者具有一定的布線和焊接工藝水平.但系統(tǒng)設(shè)計的初學者由于經(jīng)驗欠缺,可能需要反復(fù)搭建電路或多次制作PCB板,這就大大增加了開發(fā)成本和時間.引入單片機虛擬仿真平臺后,學生可以根據(jù)實驗內(nèi)容要求,首先利用Proteus軟件提供的元器件模型設(shè)計硬件電路原理圖;然后在Keil軟件中編寫程序;再利用Keil與Proteus間的軟件接口協(xié)議將Keil中編寫的程序下載到Proteus單片機中進行實時聯(lián)合調(diào)試;最后在調(diào)試達到預(yù)期效果后再搭建硬件電路實物驗證其功能.這種采用Proteus+Keil虛擬仿真平臺進行系統(tǒng)仿真開發(fā)成功后再進行實際制作的實驗方式,能大大提高單片機系統(tǒng)的設(shè)計效率.
本研究設(shè)計一個單片機應(yīng)用系統(tǒng)實驗案例,要求學生設(shè)計并實現(xiàn)一個基于單片機的溫濕度監(jiān)測系統(tǒng).案例取材于工程實踐,涵蓋單片機教學大綱中的多個知識點,具有一定的深度和廣度.通過該案例,教師可引導學生如何對一個單片機應(yīng)用系統(tǒng)進行虛擬仿真和調(diào)試,從而鍛煉學生綜合應(yīng)用單片機知識解決工程實際問題的能力.
本案例的基本任務(wù)是采用AT89C51單片機(可選用其它89C51系列的單片機)和溫濕度傳感器,設(shè)計一個溫濕度監(jiān)測系統(tǒng).系統(tǒng)功能如下:
(1) 上電時能夠?qū)崟r監(jiān)測環(huán)境溫濕度數(shù)據(jù),并在LCD1602上顯示;
(2) 能夠通過按鍵設(shè)置溫濕度的報警上、下限值,當實際溫濕度值不在正常范圍內(nèi)時,相應(yīng)的LED指示燈報警,并伴隨蜂鳴器報警.
學生接受課題任務(wù)后,教師引導學生從系統(tǒng)功能出發(fā)進行資料收集、小組討論、師生交流,最終確定方案,然后進行系統(tǒng)總體設(shè)計,并將系統(tǒng)分為幾個功能模塊,最后完成每個功能模塊的具體電路設(shè)計.實驗案例的系統(tǒng)功能框圖如圖1所示,主要包括單片機最小系統(tǒng)模塊、溫濕度傳感器、顯示模塊、報警模塊、按鍵電路5個部分.通過對系統(tǒng)功能的分析和對硬件功能模塊的劃分,實驗案例中選擇的主要器件可參考表1,也可根據(jù)設(shè)計需求和器件功能及成本自行選擇.
表1 實驗案例的主要器件型號
圖1 實驗案例的系統(tǒng)功能框圖Fig.1 System functional diagram of experimental case
完成系統(tǒng)總體設(shè)計和器件選型后,學生在Proteus中繪制硬件電路原理圖,如圖2所示.設(shè)計電路圖有助于學生深刻理解單片機各引腳的功能和內(nèi)部硬件資源的分配,以及單片機各引腳與外部硬件電路的連接.對單片機與液晶顯示模塊LCD1602的連接,教師要引導學生學會閱讀LCD1602的datasheet,使其了解1602液晶模塊的讀寫操作和引腳功能等;在單片機的P0口與LCD1602數(shù)據(jù)口連接中要加拉電阻,引導學生思考,使其對P0口的結(jié)構(gòu)有更深的了解.
圖2 實驗案例的Proteus設(shè)計原理圖Fig.2 Proteus design schematic of experimental case
單片機的C語言具有移植性好、易懂易用的特點,已成為目前單片機最流行的軟件編程工具.教師可建議學生使用C語言編程,采用Keil軟件進行編譯、調(diào)試.系統(tǒng)軟件的編寫采用模塊化設(shè)計思路,根據(jù)系統(tǒng)功能,軟件設(shè)計主要包括主程序、DHT11溫濕度測量子程序、LCD1602顯示子程序、按鍵子程序、報警子程序等.系統(tǒng)主程序的主要功能是上電后對系統(tǒng)初始化和構(gòu)建系統(tǒng)的整體軟件框架.主程序流程如圖3所示.上電完成初始化后調(diào)用DHT子程序讀取DHT溫濕度數(shù)據(jù),并在LCD上顯示,判斷是否有按鍵按下,若有溫濕度上下限設(shè)置,則判斷溫濕度是否超限,若超限則調(diào)用報警子程序進行聲光報警,并循環(huán)監(jiān)測溫濕度直至系統(tǒng)停止運行.
圖3 主程序流程圖Fig.3 The main program flow chart
進行軟件程序編寫時,教師應(yīng)要求學生設(shè)計軟件系統(tǒng)整體工作流程圖,再按功能劃分模塊,設(shè)計每個子模塊的工作流程圖和軟件程序,最后編寫系統(tǒng)主程序.采用模塊化程序設(shè)計方法,不僅能降低程序設(shè)計的復(fù)雜度,還易于理解和修改程序.
完成電路原理圖繪制和軟件程序編寫后,在Proteus下將Keil編譯生成的可執(zhí)行文件(.hex文件)加載到虛擬單片機中,便可進行軟硬件調(diào)試和功能效果驗證.對較復(fù)雜的程序,若沒有達到預(yù)期效果,則返回到Keil下修改程序,經(jīng)調(diào)試、編譯后重新生成.hex文件.這時我們需要將Proteus與Keil進行聯(lián)合調(diào)試,但在聯(lián)合調(diào)試前需要對Proteus和Keil進行相應(yīng)的設(shè)置:
(1) 在Proteus中打開需要聯(lián)調(diào)的電路圖,選中“Debug”菜單中的“Use Remote Debug Monitor”選項,使Proteus與Keil進行通信;
(2) 在Proteus安裝目錄下將VDM51.dll文件復(fù)制到Keil安裝目錄的C51BIN目錄下;修改keil安裝目錄下的Tools.ini文件,在[C51]字段加入“Proteus VSM Monitor-51 Driver”;設(shè)置Keil中的Debug選項卡,在“Use”中選擇“Proteus VSM Monitor-51 Driver”.
聯(lián)調(diào)設(shè)置完成后,在Keil中全速運行程序時,Proteus中的單片機也會自動運行.本實驗案例的聯(lián)調(diào)界面如圖4所示,左邊為KeilμVision4調(diào)試界面,右邊為Proteus8調(diào)試界面.若要觀察運行過程中某些變量的值或系統(tǒng)狀態(tài),則要用到Keil中的各種調(diào)試方式,如單步、跳出、運行到當前行、設(shè)置斷點等.在Keil里每執(zhí)行一步操作都可在Proteus里看到相應(yīng)的單片機引腳高低電平變化、LCD顯示等現(xiàn)象.
圖4 實驗案例的聯(lián)調(diào)界面Fig.4 Joint debugging interface of experimental case
采用Proteus與Keil聯(lián)合仿真調(diào)試后,系統(tǒng)能正確可靠地運行.上電后LCD能正常顯示當前的溫濕度值和預(yù)設(shè)的溫濕度上下限閾值(圖2).當DHT對溫濕度模擬改變時,系統(tǒng)能做出相應(yīng)變化.按電路中“設(shè)置”按鍵能切換溫濕度上下限設(shè)置,按“增加”和“減少”按鍵能設(shè)置溫濕度上下限值.當溫濕度超出受限范圍時,蜂鳴器報警,4個LED發(fā)光二極管電路分別對應(yīng)4種情況(溫度超上限、溫度超下限、濕度超上限、濕度超下限)報警,達到聲光報警效果.虛擬仿真通過后,學生可進行硬件電路的實物制作與調(diào)試.
本文從單片機實驗教學現(xiàn)狀出發(fā),以培養(yǎng)學生工程實踐能力為目標,采用Proteus和Keil軟件構(gòu)建虛擬仿真平臺,并將其引入單片機實驗教學.同時,以溫濕度數(shù)據(jù)監(jiān)測系統(tǒng)為例,闡述基于虛擬仿真平臺進行單片機應(yīng)用系統(tǒng)設(shè)計及仿真的過程.虛擬仿真平臺目前已應(yīng)用于電子類專業(yè)的單片機實驗教學環(huán)節(jié).實踐表明,這種教學模式彌補了傳統(tǒng)教學的不足,為學生開展探究性學習、自主實驗和創(chuàng)新實踐提供了先進手段、開放平臺和優(yōu)質(zhì)資源,也為實驗教學改革和實驗室建設(shè)增添了活力和動力.但我們以為,虛擬仿真作為一種教學模式,不應(yīng)該也不可能取代傳統(tǒng)的硬件實驗方法,而應(yīng)從提高學生實際操作能力出發(fā),將虛擬仿真與傳統(tǒng)的硬件實驗教學有機結(jié)合起來,取長補短,才能真正提高單片機實驗教學效果.