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

表1 實(shí)驗(yàn)案例的主要器件型號(hào)

圖1 實(shí)驗(yàn)案例的系統(tǒng)功能框圖Fig.1 System functional diagram of experimental case
完成系統(tǒng)總體設(shè)計(jì)和器件選型后,學(xué)生在Proteus中繪制硬件電路原理圖,如圖2所示.設(shè)計(jì)電路圖有助于學(xué)生深刻理解單片機(jī)各引腳的功能和內(nèi)部硬件資源的分配,以及單片機(jī)各引腳與外部硬件電路的連接.對(duì)單片機(jī)與液晶顯示模塊LCD1602的連接,教師要引導(dǎo)學(xué)生學(xué)會(huì)閱讀LCD1602的datasheet,使其了解1602液晶模塊的讀寫(xiě)操作和引腳功能等;在單片機(jī)的P0口與LCD1602數(shù)據(jù)口連接中要加拉電阻,引導(dǎo)學(xué)生思考,使其對(duì)P0口的結(jié)構(gòu)有更深的了解.

圖2 實(shí)驗(yàn)案例的Proteus設(shè)計(jì)原理圖Fig.2 Proteus design schematic of experimental case
單片機(jī)的C語(yǔ)言具有移植性好、易懂易用的特點(diǎn),已成為目前單片機(jī)最流行的軟件編程工具.教師可建議學(xué)生使用C語(yǔ)言編程,采用Keil軟件進(jìn)行編譯、調(diào)試.系統(tǒng)軟件的編寫(xiě)采用模塊化設(shè)計(jì)思路,根據(jù)系統(tǒng)功能,軟件設(shè)計(jì)主要包括主程序、DHT11溫濕度測(cè)量子程序、LCD1602顯示子程序、按鍵子程序、報(bào)警子程序等.系統(tǒng)主程序的主要功能是上電后對(duì)系統(tǒng)初始化和構(gòu)建系統(tǒng)的整體軟件框架.主程序流程如圖3所示.上電完成初始化后調(diào)用DHT子程序讀取DHT溫濕度數(shù)據(jù),并在LCD上顯示,判斷是否有按鍵按下,若有溫濕度上下限設(shè)置,則判斷溫濕度是否超限,若超限則調(diào)用報(bào)警子程序進(jìn)行聲光報(bào)警,并循環(huán)監(jiān)測(cè)溫濕度直至系統(tǒng)停止運(yùn)行.

圖3 主程序流程圖Fig.3 The main program flow chart
進(jìn)行軟件程序編寫(xiě)時(shí),教師應(yīng)要求學(xué)生設(shè)計(jì)軟件系統(tǒng)整體工作流程圖,再按功能劃分模塊,設(shè)計(jì)每個(gè)子模塊的工作流程圖和軟件程序,最后編寫(xiě)系統(tǒng)主程序.采用模塊化程序設(shè)計(jì)方法,不僅能降低程序設(shè)計(jì)的復(fù)雜度,還易于理解和修改程序.
完成電路原理圖繪制和軟件程序編寫(xiě)后,在Proteus下將Keil編譯生成的可執(zhí)行文件(.hex文件)加載到虛擬單片機(jī)中,便可進(jìn)行軟硬件調(diào)試和功能效果驗(yàn)證.對(duì)較復(fù)雜的程序,若沒(méi)有達(dá)到預(yù)期效果,則返回到Keil下修改程序,經(jīng)調(diào)試、編譯后重新生成.hex文件.這時(shí)我們需要將Proteus與Keil進(jìn)行聯(lián)合調(diào)試,但在聯(lián)合調(diào)試前需要對(duì)Proteus和Keil進(jìn)行相應(yīng)的設(shè)置:
(1) 在Proteus中打開(kāi)需要聯(lián)調(diào)的電路圖,選中“Debug”菜單中的“Use Remote Debug Monitor”選項(xiàng),使Proteus與Keil進(jìn)行通信;
(2) 在Proteus安裝目錄下將VDM51.dll文件復(fù)制到Keil安裝目錄的C51BIN目錄下;修改keil安裝目錄下的Tools.ini文件,在[C51]字段加入“Proteus VSM Monitor-51 Driver”;設(shè)置Keil中的Debug選項(xiàng)卡,在“Use”中選擇“Proteus VSM Monitor-51 Driver”.
聯(lián)調(diào)設(shè)置完成后,在Keil中全速運(yùn)行程序時(shí),Proteus中的單片機(jī)也會(huì)自動(dòng)運(yùn)行.本實(shí)驗(yàn)案例的聯(lián)調(diào)界面如圖4所示,左邊為KeilμVision4調(diào)試界面,右邊為Proteus8調(diào)試界面.若要觀察運(yùn)行過(guò)程中某些變量的值或系統(tǒng)狀態(tài),則要用到Keil中的各種調(diào)試方式,如單步、跳出、運(yùn)行到當(dāng)前行、設(shè)置斷點(diǎn)等.在Keil里每執(zhí)行一步操作都可在Proteus里看到相應(yīng)的單片機(jī)引腳高低電平變化、LCD顯示等現(xiàn)象.

圖4 實(shí)驗(yàn)案例的聯(lián)調(diào)界面Fig.4 Joint debugging interface of experimental case
采用Proteus與Keil聯(lián)合仿真調(diào)試后,系統(tǒng)能正確可靠地運(yùn)行.上電后LCD能正常顯示當(dāng)前的溫濕度值和預(yù)設(shè)的溫濕度上下限閾值(圖2).當(dāng)DHT對(duì)溫濕度模擬改變時(shí),系統(tǒng)能做出相應(yīng)變化.按電路中“設(shè)置”按鍵能切換溫濕度上下限設(shè)置,按“增加”和“減少”按鍵能設(shè)置溫濕度上下限值.當(dāng)溫濕度超出受限范圍時(shí),蜂鳴器報(bào)警,4個(gè)LED發(fā)光二極管電路分別對(duì)應(yīng)4種情況(溫度超上限、溫度超下限、濕度超上限、濕度超下限)報(bào)警,達(dá)到聲光報(bào)警效果.虛擬仿真通過(guò)后,學(xué)生可進(jìn)行硬件電路的實(shí)物制作與調(diào)試.
本文從單片機(jī)實(shí)驗(yàn)教學(xué)現(xiàn)狀出發(fā),以培養(yǎng)學(xué)生工程實(shí)踐能力為目標(biāo),采用Proteus和Keil軟件構(gòu)建虛擬仿真平臺(tái),并將其引入單片機(jī)實(shí)驗(yàn)教學(xué).同時(shí),以溫濕度數(shù)據(jù)監(jiān)測(cè)系統(tǒng)為例,闡述基于虛擬仿真平臺(tái)進(jìn)行單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)及仿真的過(guò)程.虛擬仿真平臺(tái)目前已應(yīng)用于電子類專業(yè)的單片機(jī)實(shí)驗(yàn)教學(xué)環(huán)節(jié).實(shí)踐表明,這種教學(xué)模式彌補(bǔ)了傳統(tǒng)教學(xué)的不足,為學(xué)生開(kāi)展探究性學(xué)習(xí)、自主實(shí)驗(yàn)和創(chuàng)新實(shí)踐提供了先進(jìn)手段、開(kāi)放平臺(tái)和優(yōu)質(zhì)資源,也為實(shí)驗(yàn)教學(xué)改革和實(shí)驗(yàn)室建設(shè)增添了活力和動(dòng)力.但我們以為,虛擬仿真作為一種教學(xué)模式,不應(yīng)該也不可能取代傳統(tǒng)的硬件實(shí)驗(yàn)方法,而應(yīng)從提高學(xué)生實(shí)際操作能力出發(fā),將虛擬仿真與傳統(tǒng)的硬件實(shí)驗(yàn)教學(xué)有機(jī)結(jié)合起來(lái),取長(zhǎng)補(bǔ)短,才能真正提高單片機(jī)實(shí)驗(yàn)教學(xué)效果.