趙月靜,張永弟,翟衛(wèi)賀
(河北科技大學 機械工程學院,石家莊 050018)
Proteus 軟件是英國Labcenter electronics 公司研發(fā)的電路分析與實物仿真軟件,是目前最好的單片機及外圍器件仿真工具[1]。Proteus 軟件提供了30多個元件庫,近8 000 個數(shù)字和模擬元件模型(包括各種單片機、常用邏輯電路),各種調(diào)試工具,測試儀器,顯示設備,虛擬儀器,調(diào)試信號等[2]。它由智能仿真輸入系統(tǒng)ISIS (Intelligent Simulation Input System)和ARES (Advanced Range Editing Software)兩個軟件構(gòu)成,其中ISIS 是原理圖編輯與仿真軟件,ARES 是布線編輯軟件[3-4]。
利用Proteus 可實現(xiàn)單片機應用電路的仿真,包括模擬電路、數(shù)字電路、單片機外圍電路、RS232 接口、I2C 調(diào)試器、SPI 調(diào)試器、鍵盤和LCD 等單元的仿真。該軟件不但可以模擬硬件系統(tǒng),而且可以把編譯好的程序代碼裝入仿真元件中,對軟件進行仿真調(diào)試,效果就像在焊接好的電路板上一樣看到系統(tǒng)的執(zhí)行結(jié)果[5-6]。真正實現(xiàn)了在計算機上完成從原理圖設計、硬件電路分析和仿真、軟件調(diào)試與仿真、系統(tǒng)測試與功能驗證,到形成印刷電路板PCB (Print Circuit Board)文件的完整研發(fā)過程。
Keil C μVision4 是一款基于51 單片機的軟件開發(fā)工具,提供了強大的項目管理功能,可以十分方便地進行模塊化程序設計。其中的C 語言部分稱為C51。C51 根據(jù)51 單片機的特點,對美國國家標準協(xié)會ANSI(American National Standard Institute)C 進行了若干擴展。在語法和庫函數(shù)方面存在稍許差別,但大部分是兼容的[7],C51 和匯編語言一樣可直接訪問51 系列單片機的硬件資源。μVision4 集成開發(fā)環(huán)境IDE-(Integrated Develop Environment)包括項目管理器、程序編輯器、Cx51編譯器、Ax51 宏匯編、BL51/Lx51 連接定位器、RTX51 實時操作系統(tǒng)、Simulator 軟件模擬器以及Monitor51 硬件目標調(diào)試器等功能模塊[7],并且支持匯編語言編程,還可以使用匯編語言和C 語言混合編程。其最大優(yōu)勢在于具有強大的仿真功能,可進行硬件和純軟件仿真。
采用Keil C μVision4 開發(fā)單片機應用程序的基本方法如下[7]:
1)在Keil C μVision4 集成環(huán)境中創(chuàng)建一個新項目(project),并為該項目選定合適的單片機型號。一個項目可以包含多個文件,除源程序文件外還可以有庫文件或文本說明文件。
2)利用Keil C μVision4 的文件編輯器編寫C語言(或匯編語言)源程序文件,并將文件添加到項目中去。
3)通過Keil C μVision4 的各種選項,配置Cx51 編譯器、Ax51 宏匯編、BL51/Lx51 連接定位器以及Debug 調(diào)試器的功能。
4)利用Keil C μVision4 的構(gòu)造(Build)功能對項目中的源程序文件進行編譯鏈接,生成目標代碼和可執(zhí)行文件。如果出現(xiàn)編譯鏈接錯誤則返回2)步,修改源程序中的錯誤后重新構(gòu)造整個項目。
5)將沒有錯誤的目標代碼裝入μVision4 調(diào)試器進行仿真調(diào)試,調(diào)試成功后用編程器將可執(zhí)行文件寫入到單片機應用系統(tǒng)的程序存儲器或單片機內(nèi)部的Flash Rom 中。
VSM(Virtual Simulation Mode,VSM)是虛擬仿真模式,而Keil C 具備強大的軟件仿真功能,在軟件模擬仿真方式下不需要任何單片機硬件即可完成用戶程序的調(diào)試;它還提供了硬件仿真功能,但我們在利用該功能時,會受到一定的限制。Proteus ISIS 則提供了完善的硬件仿真功能,如果我們把Proteus ISIS 與Keil C 整合起來使用,充分利用各自的優(yōu)勢,單片機軟硬件的設計將變得十分便捷,可以有效降低開發(fā)成本[8-10]。
進入Proteus ISIS,打開一個原理圖文件,鼠標左鍵單擊Debug,選中use remote debugger monitor,便可實現(xiàn)Keil C μVision4 與Proteus 的連接調(diào)試。
打開μVision4,建立或打開一個工程,打開project 菜單下的option for target 1 選項,在彈出的窗口中單擊debug 按鈕,在出現(xiàn)的對話框中右欄上部的下拉菜單中選中Proteus VSM simulator,并單擊一下use 前面的圓圈,選中它。然后打開output標簽頁,將Create Hex file 項打鉤選中。
在μVision4 環(huán)境下,首先在project 菜單下選擇build target,編譯連接該項目,同時生成Hex 文件。Proteus VSM 下將生成的Hex 文件加載到單片機中。然后進入μVision4 環(huán)境下的debug 菜單,選中start/stop debug session 進入調(diào)試狀態(tài),取消所有斷點,進入全速運行方式。然后切換到Proteus VSM 環(huán)境下就能觀察到程序連續(xù)運行情況。此時Proteus VSM 的運行完全依賴于外部調(diào)試器μVision4。
1)主干道和支干道上的車輛交替運行,主干道每次通行時間設為30 s,支干道每次通行時間設為20 s,主、支干道通行時間可通過修改,如圖1所示,先按下K4 鍵,然后按下K0 鍵改變南北方向的時間,按一下加一秒;先按下K4 鍵,然后按下K1 鍵改變東西方向的時間,按一下加一秒。設定好時間后按返回鍵K2 開始運行。
2)在綠燈轉(zhuǎn)為紅燈時,要求黃燈先亮5 s,才能變換運行車道。
3)黃燈亮時,要求每秒閃亮一次。
4)除了有紅、黃、綠燈指示外,每一種燈亮的時間都用顯示器進行顯示。
5)在需要手動控制時,按下開關K0 控制主干道手動放行,K1 控制支干道手動放行。
6)有緊急車輛要求通過時,系統(tǒng)能禁止普通車輛通行,按開關K3,主、支干道均為紅燈。
在Proteus ISIS 中繪制系統(tǒng)原理圖。在Proteus軟件主界面中通過對象選擇按鈕P(從庫中選擇元件)命令,在彈出的Pick Devices 窗口中選擇電路所需的元件,放置元件并調(diào)整其相對位置,對元件參數(shù)進行設置,接著進行元器件間連線,添加網(wǎng)絡標志,完成單片機系統(tǒng)的硬件原理圖繪制,如圖1所示。
圖1 十字路口紅綠燈控制系統(tǒng)硬件原理圖
通過分析可知,系統(tǒng)共有4 個狀態(tài):支干道綠燈,主干道紅燈;支干道黃燈閃爍,主干道紅燈;支干道紅燈,主干道綠燈;支干道紅燈,主干道黃燈閃爍;系統(tǒng)在各個狀態(tài)之間進行轉(zhuǎn)換。系統(tǒng)流程圖見圖2。
圖2 程序流程圖
利用Keil C μVision4 軟件編程過程如下:
1)打開Keil C μVision4,選擇project 菜單下的new project,新建工程。
2)在對話框中選擇要保存項目文件的路徑,最好事先編好一個該工程的文件夾,所有與該工程有關的文件都存放在該文件夾中,方便以后的工作。文件名文本框中輸入項目名稱為lightproject,然后保存,最好起一個有提示意義的名稱,好找好記。
3)在彈出的對話框,選擇CPU 的型號。先選擇公司,然后選擇型號。此處選擇Atmel 公司下的AT89C51,單擊“確定”按鈕,彈出是否將8051 初始化代碼復制到項目中去的詢問窗口,單擊“是”按鈕。
4)選擇File 菜單下的new,在彈出的程序文本框中輸入編寫好的程序,可以是匯編語言或C 語言文件,選擇file 菜單下的Save as 或者單擊工具欄按鈕,保存文件。注意一定要輸入擴展名,如* .c、* .asm 或* .a51、* .ini。此處文件保存為light.c。
5)鼠標右鍵單擊左邊項目窗口中的source group 1,在彈出的菜單中選擇Add files to group“source group 1”,選擇剛才建立的light.c 文件,然后單擊Add 按鈕,將light.c 文件加入到項目中。可以添加多個文件,添加完后單擊close,關閉該窗口。
6)設置目標。用鼠標右鍵單擊lightproject,在彈出的快捷菜單中選擇option for Target“target 1”,在彈出的對話框中有10 個選項卡,分別針對這個項目進行相應的設置,如3.2 節(jié)中所示。
7)選擇project 菜單下的Rebuild all target files,編譯鏈接程序。編譯完成后,選擇Debug 下的start debug session 選項,即可進入Debug 調(diào)試環(huán)境。裝載代碼成功在左下角顯示“l(fā)oad light”。
打開Proteus 下的硬件電路原理圖,雙擊單片機AT89c51,打開Edit component 對話框,在program file 中選擇在Keil C 中生成的hex 文件light. hex。在clock frequency 文本框中填入合適的單片機的時鐘頻率,單擊OK 按鈕退出。從文件下拉菜單中選擇保存整個項目。單擊仿真按鈕開始運行??梢钥吹绞致房谛盘枱舻淖兓癄顟B(tài)。單擊調(diào)整按鈕,能按照對應的設定功能改變運行狀態(tài)。
借助Proteus 軟件和Keil C 軟件,完成原理圖仿真后,就可以制作試驗電路板。復雜系統(tǒng)原理圖可以利用Proteus 下的Ares professional 進行PCB 板的設計。本系統(tǒng)實物圖如圖3 所示。
圖3 單片機控制的十字路口紅綠燈控制系統(tǒng)實物圖
采用Proteus 和Keil C 仿真軟件進行單片機系統(tǒng)開發(fā)具有比較明顯的優(yōu)勢。只要擁有電腦并安裝軟件后,就可以進行單片機系統(tǒng)軟硬件的設計、開發(fā)、調(diào)試工作[11]。借助Proteus 和Keil C 軟件,即使沒有實物硬件的情況下,也可將單片機應用電路的功能和運行的過程形象化。在硬件和軟件仿真都正確后再進行實物制作,節(jié)省了大量時間和資金,能方便經(jīng)濟地開發(fā)單片機各種應用系統(tǒng),而且很容易獲得其PCB 圖,為實物制作提供了方便。
[1]毛玉蓉.Proteus 在單片機原理及應用教學中的應用[J].實驗科學與技術,2009,7(4):48-49.
[2] 張建華,靳婷.Proteus 軟件在單片機教學中的應用[J].實驗科學與技術,2011,9(1):60-61.
[3]劉燎原,孫秋波.Proteus 軟件在單片機項目教學中的應用[J]. 徐州建筑職業(yè)技術學院學報,2009,9(2):63-65.
[4]張富貴,黃海松,呂敬堂,等. 單片機設計性實驗與工程實踐能力的培養(yǎng)[J]. 實驗技術與管理,2011,28(2):135-138.
[5]陳慧,饒成明.Proteus 仿真軟件在單片機項目教學中的應用[J]. 現(xiàn)代企業(yè)教育,2009.6:56-57.
[6]周潤景,張麗娜. 基于PROTEUS 的電路及單片機系統(tǒng)設計與仿真[M]. 北京:北京航空航天大學出版社,2006:154-202.
[7]張齊,朱寧西. 單片機應用系統(tǒng)設計技術[M]. 北京:電子工業(yè)出版社,2009:46-75.
[8]楊明欣,鄭郁正,趙建,等. 結(jié)合電子設計競賽進行單片機課程改革[J]. 實驗科學與技術,2007,5(4):94-97.
[9]殷士勇.keil 和proteus 在單片機實驗教學中的應用[J].重慶工商大學學報:自然科學版,2009,26(6):567-570.
[10]許超,吳新杰,張丹. 基于Proteus 和Keil 的單片機課程教學改革[J]. 遼寧大學學報:自然科學版,2011,38(1):27-29.
[11]曾成,伍萍輝,劉艷萍. 基于虛擬硬件環(huán)境的單片機原理與應用實驗開發(fā)[J]. 實驗技術與管理,2011,28(2):91-93.