饒蕾 劉文紅
摘 要: 《單片機(jī)原理與應(yīng)用》是電子信息工程專業(yè)學(xué)生必修的一門專業(yè)基礎(chǔ)課程。作者針對我系《單片機(jī)原理與應(yīng)用》課程在教學(xué)中存在的理論性太強(qiáng)的問題,以實驗教學(xué)設(shè)計理論為指導(dǎo)思想,設(shè)計了八個軟件和硬件實驗項目,鞏固學(xué)生在課堂上所學(xué)的理論知識,從而對課程體系結(jié)構(gòu)進(jìn)行補(bǔ)充和完善。
關(guān)鍵詞: 單片機(jī) 實驗設(shè)計 實驗教學(xué)
一
《單片機(jī)原理與應(yīng)用》是電子信息工程專業(yè)的專業(yè)基礎(chǔ)必修課程,要求以C語言和MCS-51系列單片機(jī)為基礎(chǔ),使學(xué)生從應(yīng)用角度出發(fā),熟練掌握單片機(jī)基本結(jié)構(gòu)、指令系統(tǒng)、工作原理、接口技術(shù)、C語言程序設(shè)計與應(yīng)用方法、單片機(jī)內(nèi)部資源和外部擴(kuò)展資源的C51語言編程方法及Keil μVision4集成開發(fā)環(huán)境的使用方法。為從事電子信息產(chǎn)業(yè)及相關(guān)領(lǐng)域?qū)嶋H工作打下堅實的基礎(chǔ),該課程屬于應(yīng)用型課程[1]。單片機(jī)原理與應(yīng)用課程在實際理論教學(xué)中存在教學(xué)方法單一,理論性太強(qiáng),學(xué)生對理論知識的學(xué)習(xí)興趣不強(qiáng)和動手能力差的問題,因此有必要引入后續(xù)單獨的單片機(jī)原理與應(yīng)用實驗課程形成完整的教學(xué)體系,使學(xué)生理論聯(lián)系實際,進(jìn)一步鞏固單片機(jī)原理的理論知識,掌握單片機(jī)開發(fā)技術(shù)和C51語言編程方法。
為解決單片機(jī)課程教學(xué)中存在的老師難教、學(xué)生難學(xué)的問題,采用“任務(wù)驅(qū)動法”,為該課程設(shè)計若干個任務(wù),每個任務(wù)包括若干個知識點,讓學(xué)生在完成任務(wù)的過程中學(xué)習(xí),進(jìn)而掌握知識點。結(jié)果表明,利用本方法教學(xué),提高學(xué)生的學(xué)習(xí)積極性和學(xué)習(xí)效率,培養(yǎng)學(xué)生的實踐精神和創(chuàng)造精神。由淺入深、循序漸進(jìn),從提高學(xué)生興趣出發(fā),以實際項目為驅(qū)動,激勵學(xué)生自主學(xué)習(xí)相關(guān)理論知識,解決完成項目中碰到的各種問題,將項目驅(qū)動法引入單片機(jī)教學(xué),結(jié)合科研項目,把要講授的各項理論知識和實踐技能按由淺入深、現(xiàn)學(xué)現(xiàn)用的原則分解到一個個具有應(yīng)用目標(biāo)的任務(wù)中,讓學(xué)生在規(guī)定時間內(nèi)依次完成這些任務(wù)。在實驗教學(xué)過程中,項目驅(qū)動法要求以完成一個個具體實驗任務(wù)為線索,把單片機(jī)理論教學(xué)內(nèi)容巧妙地隱含在每個實驗任務(wù)中。引導(dǎo)學(xué)生掌握提出問題、分析問題和解決問題的方法,最終讓學(xué)生通過自己的努力和教師的指導(dǎo)完成任務(wù)。
二
從實驗出發(fā),讓學(xué)生循序漸進(jìn)地掌握書本上的知識,聯(lián)系實際應(yīng)用?!皢纹瑱C(jī)原理及應(yīng)用實驗”是通信工程專業(yè)“單片機(jī)原理及應(yīng)用”專業(yè)課單獨開設(shè)的實驗課程。通過本實驗課程教學(xué),學(xué)生理論聯(lián)系實際,進(jìn)一步鞏固單片機(jī)原理理論知識,掌握基本單片機(jī)開發(fā)技術(shù)和C語言編程方法,為后續(xù)單片機(jī)原理及應(yīng)用課程設(shè)計課程打下堅實的基礎(chǔ)。
我們首先采用Keil C51和Proteus這兩款軟件,設(shè)計了4個軟件實驗。KeilC51是德國Keil software公司開發(fā)的用于51單片機(jī)的C51語言開發(fā)軟件,在兼容標(biāo)準(zhǔn)C的基礎(chǔ)上增加了很多與51單片機(jī)硬件相關(guān)的編譯特性,使得在51系列單片機(jī)上開發(fā)應(yīng)用程序更為方便和快捷[1]。Proteus軟件是英國Labcenter Electronics公司開發(fā)的電路分析與實物仿真軟件??煞抡妗⒎治龆喾N模擬器件和集成電路,實現(xiàn)單片機(jī)和電路仿真的結(jié)合,具有模擬電路仿真、數(shù)字電路仿真和仿真單片機(jī)及外圍電路組成的系統(tǒng)仿真[2]。
學(xué)生使用Keil C51進(jìn)行匯編語言和C語言源程序的編寫、調(diào)試、編譯和執(zhí)行,可以掌握單片機(jī)的硬件結(jié)構(gòu)和內(nèi)部資源。進(jìn)一步地,學(xué)生使用Proteus對單片機(jī)及外圍電路組成的系統(tǒng)進(jìn)行整機(jī)仿真,可以更直觀地進(jìn)行單片機(jī)整機(jī)系統(tǒng)設(shè)計,為合理應(yīng)用單片機(jī)進(jìn)行項目設(shè)計與產(chǎn)品開發(fā)打下基礎(chǔ)。具體四個軟件實驗項目如下:
1.Keil軟件認(rèn)識實驗。讓學(xué)生采用Keil建立工程和調(diào)試工程,對匯編語言源程序進(jìn)行編譯、調(diào)試及執(zhí)行。在程序單步執(zhí)行過程中,觀察包括程序存儲器ROM、內(nèi)部數(shù)據(jù)存儲器RAM和外部數(shù)據(jù)存儲器RAM在內(nèi)的各內(nèi)存單元中的數(shù)據(jù)變化情況。通過該實驗,學(xué)生對單片機(jī)內(nèi)部硬件和軟件資源及Keil軟件有直觀印象,熟悉Keil編譯環(huán)境。
2.數(shù)據(jù)排序?qū)嶒?。將?nèi)部數(shù)據(jù)存儲器RAM中50H~5AH單元放入大小不等的數(shù),采用經(jīng)典的冒泡排序算法編寫匯編語言源程序,將數(shù)據(jù)按由小到大的次序重新排列,并依次放入內(nèi)部數(shù)據(jù)存儲器RAM中60H~6AH單元。采用Keil軟件編譯、調(diào)試和執(zhí)行。通過該實驗,學(xué)生掌握匯編語言程序設(shè)計和調(diào)試方法。
3.Proteus認(rèn)識實驗。讓學(xué)生采用Proteus建立工程和調(diào)試工程。首先在Proteus的ISIS模塊中,建立以單片機(jī)為核心,動態(tài)LED模塊為外部設(shè)備的整機(jī)仿真電路。然后在Proteus的Source code模塊中,采用C51語言編寫單片機(jī)驅(qū)動LED燈進(jìn)行閃爍的實驗程序并采用Keilfor8051編譯器對C51語言源程序進(jìn)行編譯,最后在ISIS中進(jìn)行整機(jī)仿真,觀察LED燈閃爍情況。通過該實驗,學(xué)生熟悉Proteus仿真環(huán)境。
4.外中斷應(yīng)用實驗。讓學(xué)生采用Proteus建立工程和調(diào)試工程。首先在Proteus的ISIS模塊中,建立以單片機(jī)為核心,單刀單擲開關(guān)和動態(tài)LED模塊為外部設(shè)備的整機(jī)仿真電路。然后在Proteus的Sourcecode模塊中,采用C51語言編寫單片機(jī)外部中斷0(P3.2位口)接收開關(guān)狀態(tài)并驅(qū)動LED燈進(jìn)行循環(huán)閃爍的實驗程序并采用Keilfor8051編譯器對C51語言源程序進(jìn)行編譯,最后在ISIS中進(jìn)行整機(jī)仿真,觀察LED燈閃爍情況。通過該實驗,學(xué)生掌握中斷控制的編程及實現(xiàn)方法。
三
在學(xué)生學(xué)習(xí)掌握相關(guān)軟件知識和程序編程調(diào)試技能之后,就可以開始進(jìn)行軟硬件結(jié)合的綜合實驗學(xué)習(xí)。我們基于深圳市學(xué)林電子有限公司生產(chǎn)的XL2000單片機(jī)實驗儀,編寫四個單片機(jī)硬件實驗項目。XL2000單片機(jī)綜合試驗儀由XL2000開發(fā)板和51tracer(追蹤者)仿真器組成,集常用的單片機(jī)外圍硬件、ISP下載線、單片機(jī)試驗板、編程器、獨立仿真器功能于一身[1]。具體四個硬件實驗項目如下:
1.小喇叭警報器實驗。采用C51語言編寫程序?qū)崿F(xiàn)單片機(jī)內(nèi)部定時/計數(shù)器執(zhí)行定時操作,P3.3位口輸出1KHz和2KHz的變頻信號,采用Keil軟件編譯、調(diào)試并生成后綴名為.hex的文件。將.hex文件加載到XLISP軟件中通過計算機(jī)USB口輸入至實驗箱的AT89S51單片機(jī)內(nèi)。在實驗箱上采用1PIN數(shù)據(jù)線連接P3.3位口和小喇叭的輸入端口。由于P3.3位口輸出1KHz和2KHz的變頻信號,則喇叭里發(fā)出滴答一長一短的報警聲音。通過該實驗,學(xué)生掌握定時/計數(shù)器定時的編程及實現(xiàn)方法。
2.按鍵識別數(shù)碼管顯示實驗。采用C51語言編寫程序?qū)崿F(xiàn)單片機(jī)P3的8位端口讀取8位按鍵狀態(tài),P0的8位端口送出字段碼控制8段式LED數(shù)據(jù)管顯示不同數(shù)字。采用Keil軟件編譯、調(diào)試并生成后綴名為.hex的文件。將.hex文件加載到XLISP軟件中通過計算機(jī)USB口輸入至實驗箱的AT89S51單片機(jī)內(nèi)。采用8PIN數(shù)據(jù)排線連接P3端口和按鍵模塊,用8PIN數(shù)據(jù)排線連接P0端口和數(shù)碼管模塊。按鍵模塊由8個輕觸按鍵組成,一端接地,按下某個按鍵時,相應(yīng)P3端口的某位口接收到低電平信號。通過該實驗,學(xué)生掌握按鍵識別及數(shù)碼管顯示的實現(xiàn)方法。
3.DAC0832轉(zhuǎn)換實驗。采用C51語言編寫程序?qū)崿F(xiàn)單片機(jī)輸出數(shù)字信號控制DAC0832輸出鋸齒波模擬信號。采用Keil軟件編譯、調(diào)試并生成后綴名為.hex的文件。將.hex文件加載到XLISP軟件中通過計算機(jī)USB口輸入至實驗箱的AT89S51單片機(jī)內(nèi)。采用1PIN數(shù)據(jù)線連接P3.6位口和DAC0832的WR端口,采用1PIN數(shù)據(jù)線連接P2.7位口和DAC0832的CS端口,采用8PIN數(shù)據(jù)排線連接P0端口與DAC0832的數(shù)據(jù)輸入端口,采用示波器觀察DAC0832輸出的鋸齒波模擬信號。通過該實驗,學(xué)生掌握DA轉(zhuǎn)換編程及實現(xiàn)方法。
4.期末考查綜合實驗。要求學(xué)生在2個小時以內(nèi),采用C51語言編程、Keil編譯,仿真完成單片機(jī)接口電路的一個綜合實驗。使用定時器/計數(shù)器T0,采用方式2定時,實現(xiàn)P1.0位口輸出周期為400us占空比為1:9的矩形脈沖(設(shè)晶振振蕩周期fosc=12MHz)。采用Keil中的LogicAnalyzer窗口觀察P1.0位口的電平輸出。通過該實驗考查學(xué)生綜合運用所學(xué)知識解決實際問題的能力。
通過這8次實驗課,由淺入深地使學(xué)生掌握單片機(jī)原理與應(yīng)用這門課的重要知識點,鍛煉他們的動手能力,充分體現(xiàn)“在做中學(xué)、在學(xué)中會、在會中懂”的教學(xué)理念和教學(xué)方式。一年來的教學(xué)實踐證明,我系電子信息工程專業(yè)《單片機(jī)原理與應(yīng)用》教學(xué)極大地促進(jìn)全體學(xué)生的學(xué)習(xí)興趣,全面增強(qiáng)教學(xué)效果,由此證明該實驗項目的可行性和有效性。
參考文獻(xiàn):
[1]王浩全,李晉華,張敏娟,等.單片機(jī)原理與應(yīng)用(C語言版).人民郵電出版社,2013.
[2]深圳市學(xué)林電子有限公司,http://www.8951.com/.
[3]Keil Software,Inchttp://www.keil.com/.
[4]Labcenter Electronics Ltd,http://www.labcenter.com/.