唐翠翠
(深圳技師學(xué)院 中德智造學(xué)院,廣東 深圳 518112)
單片機課程是電類和自動化類專業(yè)必修的專業(yè)課程,是一門實踐性很強的課程,通過該課程使學(xué)生掌握單片機的基本原理與應(yīng)用,掌握指令功能、編程方法、單片機應(yīng)用系統(tǒng)的硬件組成及軟件開發(fā)方法,培養(yǎng)學(xué)生分析、解決實際問題和軟硬件綜合開發(fā)的能力。傳統(tǒng)的理論教學(xué)時,要將課堂教學(xué)安排生動、有趣,難度比較大;實踐教學(xué)時,受教學(xué)場地、實訓(xùn)設(shè)備數(shù)量和市場產(chǎn)品變化快等因素的影響,教學(xué)靈活操作性有限。鑒于這些問題,筆者在教學(xué)過程中引入Proteus軟件和Keil 軟件,可以讓學(xué)生在Proteus 軟件中繪制出硬件電路圖,加深學(xué)生對單片機系統(tǒng)硬件結(jié)構(gòu)的理解;在Keil軟件中編寫簡單的指令與Proteus 軟件中繪制好的電路進行聯(lián)合仿真,在虛擬的硬件上看到程序運行的結(jié)果,加深學(xué)生對指令功能的理解。在課上和課下,學(xué)生都可以進行單片機系統(tǒng)設(shè)計并進行虛擬仿真驗證,為后續(xù)基于實物的實訓(xùn)課打下堅實的基礎(chǔ)。Proteus 軟件和Keil 軟件聯(lián)合應(yīng)用可以節(jié)約耗材,縮短產(chǎn)品開發(fā)周期,接下來將以“霓虹燈”設(shè)計為例,具體闡述Proteus 和Keil 軟件聯(lián)合仿真的應(yīng)用方法。
Proteus 軟件是世界上著名的EDA 工具(仿真軟件),由英國Lab Center Electronics 公司出版。從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB 設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。它是目前比較好的仿真單片機及外圍接口器件的工具。
新建Proteus 工程的操作步驟如下:①新建一個文件夾,以工程的名字命名,用于存放該工程的文件,本例在桌面上新建一個命名為“霓虹燈”的文件夾;②打開Proteus 軟件,在File 菜單下選擇New Project,新建一個工程,本例工程命名為“霓虹燈.pdsprj”,并保存在“C:UsersstDesktop霓虹燈”;③然后點擊NEXT,選擇“Create Schematic from the selected template”,創(chuàng)建原理圖;④點擊NEXT,選擇“Do not create PCB layout”,不創(chuàng)建PCB;⑤繼續(xù)點擊NEXT,選擇Create Firmware Project,創(chuàng)建仿真工程,并設(shè)置Family(系列)-8051,Controller(控制器)-AT89C51,Compiler(編譯器)-ASEM-51,至此就完成工程的新建。
Keil 軟件是德國開發(fā)的,目前最流行開發(fā)51 系列單片機的軟件,支持C 語言和匯編語言。它具有方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具,它能夠不接硬件電路直接進行用戶程序仿真,或利用硬件仿真器進行實時仿真調(diào)試。新建Keil 工程的操作步驟如下:①新建一個文件夾,以工程的名字命名,用于存放該工程的文件,本例在桌面上新建一個命名為“霓虹燈K”的文件夾;②打開Keil 軟件,單擊菜單欄“Project”選項中“New uVision Project”,新建工程,本例工程命名為“霓虹燈K”,保存路徑為“C:UsersstDesktop霓虹燈K”;單片機型號選擇Atmel 的AT89C51;③建立程序代碼文件,單擊菜單欄“File”選項中“New”,新建文件,本例文件命名為“霓虹燈K.asm”;④添加代碼文件到工程中,單擊Keil 軟件界面左框中“Target 1”前面的+號,然后在“Source Group 1”選項上右鍵單擊,選擇“Add Files to Group Source Group 1”,將“霓虹燈K.asm”文件添加到工程中,至此就完成了工程的建立。
聯(lián)合仿真的配置步驟如下:①將Proteus 安裝目錄下的/MODELSVDM51.dll 文件復(fù)制到Keil 安裝目錄下的C51BIN 中,如果沒有VDM51.dll 文件,則從網(wǎng)上下載,分別放到Proteus 和Keil 軟件的對應(yīng)位置;②用記事本打開Keil 安裝目錄下的TOOLS.INI,然后在“c51”后面加上TDRV5=BINVDM51.DLL(Proteus VSM Monitor-51 Driver),這里的“5”要根據(jù)實際情況修改,只要和之前的不重復(fù),就可以;③打開Keil 軟件,新建工程,完成代碼編寫后,在“Project”菜單中選中“目標(biāo)Target1 屬性配置”,在Debug 選項欄下單擊右上角Use 選項前面的方框,并在它右邊的下拉框中,選中Proteus VSM Monitor-51 Driver[1],其他設(shè)置保持默認(rèn)狀態(tài),然后點擊ok;④打開Proteus 軟件,繪制出電路圖,在Proteus的debug 菜單中選中use remote debug monitor。
本文通過“霓虹燈控制”教學(xué)實例,講述Proteus 軟件和Keil 軟件在單片機教學(xué)中的應(yīng)用。
按下啟動鍵,實現(xiàn)8 個發(fā)光二極管先從中間向兩邊依次點亮,然后從高位向低位逐個點亮來模擬霓虹燈效果,循環(huán)3 次后全部熄滅,期間任何時候按下停止鍵,燈全部熄滅。
打開Proteus 軟件,按照前面提到的新建工程的操作步驟,進行原理圖繪制,繪制好的電路如圖1 所示。
圖1 “霓虹燈控制”電路圖
圖1 中的元器件有AT89C51 芯片、12 MHz 石英晶振、22 pF 陶瓷電容、15 uF 的電解電容、10 kΩ電阻、220 Ω電阻、發(fā)光二極管、按鍵。硬件設(shè)計采用單片機內(nèi)部時鐘電路和按鍵復(fù)位電路,發(fā)光二極管采用共陽連接方式。通過采集P1.6和P1.7 的信號來判斷啟動和停止鍵是否有按下,當(dāng)按下啟動或停止按鍵時,P1.6 或P1.7 會采集到“0”即低電平信號,否則采集到“1”即高電位信號。
本系統(tǒng)為較復(fù)雜的霓虹燈控制方式,采用查表方法將亮燈數(shù)據(jù)存放在一個數(shù)據(jù)表中,通過修改數(shù)據(jù)索引值不斷取出亮燈數(shù)據(jù)。采用主程序調(diào)用子程序的模塊化結(jié)構(gòu),主要由主程序、延時子程序、消抖子程序等部分組成。
3.3.1 主程序
主程序主要完成按鍵是否按下判斷、初始化、查表、循環(huán)結(jié)束判斷、調(diào)用延時子程序、調(diào)用消抖子程序等功能。主程序的代碼如表1 所示。
3.3.2 延時子程序
延時子程序如表2 所示。本系統(tǒng)中有2 個延時子程序,標(biāo)號為DELAY 的大約延時1 s,是相鄰亮燈數(shù)據(jù)的間隔時間。標(biāo)號為DELAY1 的延時子程序,實現(xiàn)約12 ms 的延時,用于按鍵消抖,按下按鍵后,延時12 ms,再次檢測按鍵狀態(tài),如果仍為按下狀態(tài),則判斷按鍵有效按下,否則無效。通常按鍵去抖動有硬件和軟件兩種方法,為了使電路設(shè)計簡化,通常采用軟件去抖動。
延時程序的延時時間估算方法是:第一重循環(huán)執(zhí)行一次的機器周期總數(shù)×第一重循環(huán)的總次數(shù)×第二重循環(huán)的總次數(shù)×…×第n 重循環(huán)的總次數(shù)×1 個機器周期[2],如本例1 s 延時子程序,為3 重循環(huán)結(jié)構(gòu),晶振頻率為12 MHz,1 個機器周期是1 us,則t=(1+1+2)×250×250×4×1 us=1 s。
表1 主程序的代碼
表2 延時子程序
在Proteus 軟件建立好硬件電路,Keil 軟件中編寫好程序代碼并編譯通過后,再按照前面提到過的聯(lián)合仿真時這兩個軟件的參數(shù)配置進行設(shè)置之后,在Keil 軟件中進入仿真調(diào)試讓程序開始工作;然后在Proteus 軟件的硬件電路上,按下啟動按鍵,觀察燈的顯示情況,期間任何時候按下停止鍵,觀察燈的顯示情況,以此來驗證程序的可行性。如果出現(xiàn)結(jié)果不符合要求時,可以在Keil 軟件中進行單步、跟蹤、設(shè)置斷點等方式進行調(diào)試,分析、找出問題并解決。在完成本例任務(wù)要求的基礎(chǔ)上,可以讓學(xué)生進行拓展,自由設(shè)計硬件電路和軟件程序,實現(xiàn)對燈的更豐富的顯示花樣控制。
本文通過介紹Proteus 軟件和Keil 軟件新建工程的步驟和聯(lián)合仿真的配置方法,并結(jié)合實例,向?qū)W生展示了單片機系統(tǒng)軟硬件綜合設(shè)計的整個開發(fā)過程,有利于激發(fā)學(xué)生的學(xué)習(xí)興趣,提高學(xué)生對單片機系統(tǒng)的硬件和軟件的理解能力、創(chuàng)新及綜合應(yīng)用能力,教學(xué)效果明顯得到提高。