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