摘要:在AVR單片機(jī)學(xué)習(xí)過程引入EDA技術(shù),利用Proteus在軟件環(huán)境對(duì)單片機(jī)系統(tǒng)進(jìn)行建模與仿真,使學(xué)生擺脫因硬件設(shè)備條件限制而無法自學(xué)AVR單片機(jī)的困難,有利于培養(yǎng)學(xué)生的創(chuàng)新意識(shí)及學(xué)習(xí)能動(dòng)性。
關(guān)鍵詞:Proteus;AVR;單片機(jī);虛擬系統(tǒng)
中圖分類號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)23-1065-03
AVR Microcontroller Virtual System Design Based on Proteus
WU Feng-jie, XIE Chen-yue, HUANG Wen-kai
(Laboratory Center of Guangzhou University, Guangzhou 510006, China)
Abstract: AVR microcontroller in the learning process to introduce EDA technologies, use of Proteus in the software environment on the SCM system modeling and simulation, so that students out because of hardware limitations and can not be self-AVR microcontroller difficulties, to train students Sense of innovation and learning initiative.
Key words: proteus; AVR; microcontroller; virtual system
目前國內(nèi)大多數(shù)高等院校的單片機(jī)教學(xué)側(cè)重51系列單片機(jī),而其他系列單片機(jī),如PIC、AVR、凌陽等單片機(jī),學(xué)生往往只能通過選修或自學(xué),以滿足開放性實(shí)驗(yàn)、課程設(shè)計(jì)及畢業(yè)設(shè)計(jì)的需要。而且大多數(shù)單片機(jī)實(shí)驗(yàn)室只提供51系列單片機(jī)實(shí)驗(yàn)系統(tǒng),有限的實(shí)驗(yàn)條件在一定程度上打擊了學(xué)生學(xué)習(xí)其他單片機(jī)的積極性及主動(dòng)性。
本文提供了一種快速又方便的 AVR 單片機(jī)學(xué)習(xí)方法,以 Proteus 為核心構(gòu)建單片機(jī)虛擬系統(tǒng),利用BASCOM-AVR進(jìn)行系統(tǒng)軟件設(shè)計(jì)與調(diào)試,并生成.hex文件,通過在 Proteus 虛擬 MCU 加載 .hex 文件實(shí)現(xiàn)系統(tǒng)的仿真。
1 Proteus簡介
Proteus 是一款電路分析與實(shí)物仿真軟件,具有實(shí)驗(yàn)資源豐富、實(shí)驗(yàn)周期短、硬件投入少、實(shí)驗(yàn)過程損耗小、與實(shí)際設(shè)計(jì)接近程度大等優(yōu)點(diǎn)[1],它最大的特點(diǎn)是基于微控制器的設(shè)計(jì)連同所有的外圍電路一起仿真,能直接在單片機(jī)虛擬系統(tǒng)上對(duì)MCU編程,并對(duì)軟件源代碼進(jìn)行實(shí)時(shí)調(diào)試。同時(shí),它具有電路互動(dòng)仿真功能,通過動(dòng)態(tài)外設(shè)模型,如鍵盤、LED/LCD 等,可實(shí)時(shí)顯示系統(tǒng)輸入、輸出結(jié)果,以實(shí)現(xiàn)交互仿真,或配合 Proteus 配置的虛擬儀器如示波器、邏輯分析儀等,使單片機(jī)虛擬系統(tǒng)實(shí)現(xiàn)預(yù)期的實(shí)驗(yàn)效果。
2 AVR 單片機(jī)及 BASCOM-AVR 介紹
AVR 單片機(jī)采用增強(qiáng)型 RISC(Reduced Instruction Set CUP)結(jié)構(gòu),使用在線可編程(ISP)技術(shù)的 FLASH ROM,片上集成了電可擦寫 EEPROM 及 SRAM。具有32個(gè)通用寄存器,克服其他同類單片機(jī)單一累加器結(jié)構(gòu)的瓶頸現(xiàn)象,每個(gè)時(shí)鐘周期執(zhí)行一條字指令,指令執(zhí)行速度超快,此外,還提供了功能強(qiáng)大的外圍器件,如I/0、T/C、PWM、ADC、WDT、TWI、USART、SPI 等[2]。
BASCOM-AVR 是一款用于 AVR 單片機(jī),并與 VB/QB 高度兼容的 BASIC 語言開發(fā)工具,其圖形界面非常友好,開發(fā)平臺(tái)集源程序編寫、編譯、仿真及下載于一體,十分方便實(shí)用。與匯編語言相比,具有易學(xué)好用、功能強(qiáng)大、易于移植及可維護(hù)性好等優(yōu)點(diǎn)。
BASCOM-AVR 不僅提供了豐富的數(shù)據(jù)類型及大量簡單實(shí)用的函數(shù),還開發(fā)了專門的外設(shè)函數(shù),包括 LCD 語句、RC5 語句、SOUND 語句及I2C語句等,大大降低開發(fā)難度,縮短開發(fā)周期[3]。
3 AVR 單片機(jī)虛擬系統(tǒng)設(shè)計(jì)
下面以一個(gè)簡單的例子介紹 Proteus 在 AVR 單片機(jī) ——ATMEGA8 系統(tǒng)仿真中的應(yīng)用。
設(shè)計(jì)要求:用D口控制8個(gè)LED狀態(tài),要求用定時(shí)器實(shí)現(xiàn)每隔0.1s輪流點(diǎn)亮一個(gè)LED。
3.1 硬件原理圖繪制
原理圖分析:通常有兩種實(shí)現(xiàn)方法:LED陰極接PD口,或 LED 陽極接PD口。這里采取第一種方法,8個(gè)LED分別接PD0~PD7,每個(gè)LED的陽極分別接一個(gè)上拉電阻,且上拉電阻的另一端統(tǒng)一接+5V電源,則當(dāng)PD口輸出“0”時(shí),LED導(dǎo)通,反之,LED截止。
系統(tǒng)的硬件電路比較簡單,所采用的元器件,在Proteus的元件庫中都可以找到,而無須自己建庫。系統(tǒng)的硬件原理圖如圖1所示。
3.2 系統(tǒng)軟件設(shè)計(jì)
ATMEGA8提供了2個(gè)8位(T0及T2)及1個(gè)16位(T1)的定時(shí)器/計(jì)數(shù)器,當(dāng)它們做定時(shí)器時(shí),可對(duì)時(shí)鐘脈沖進(jìn)行預(yù)分頻,預(yù)分頻數(shù)有1、8、64、256及1024共五個(gè)選擇[5]。
定時(shí)器的定時(shí)時(shí)間主要取決與預(yù)分頻數(shù)及初值設(shè)定,設(shè)預(yù)分頻數(shù)為Y,計(jì)數(shù)器計(jì)數(shù)初值為C,單片機(jī)晶振頻率為f,定時(shí)時(shí)間為t,可用公式
表示它們間的關(guān)系。
在定時(shí)器計(jì)數(shù)長度許可下取合理的預(yù)分頻數(shù)及計(jì)數(shù)初值,可使計(jì)算簡便及定時(shí)時(shí)間更精確。本設(shè)計(jì)選用TO,晶振頻率為8MHz,預(yù)分頻為64,初值為250,根據(jù)公式 得t=2ms。由50×=2ms=0.1s,程序設(shè)計(jì)時(shí)利用循環(huán)程序設(shè)計(jì)方法,定時(shí)器每中斷50次點(diǎn)亮下一個(gè)LED。
系統(tǒng)軟件主要包括主程序、初始化程序及中斷子程序。程序清單如下:
'****系統(tǒng)初始化****'
$regfile = \"m8def.dat\"
$regfile = \"m8def.dat\"
$crystal = 8000000' 設(shè)置CPU型號(hào)及晶振頻率
Config Portd = Output' 設(shè)置PD口輸出
Config Timer0 = Timer , Prescale = 256
' Timer0配置為定時(shí)器,預(yù)分頻為256
On Ovf0 Timer0_int' 中斷子程序入口地址
Enable Interrupts' 開放全局中斷
Enable Timer0' 開放Timer0中斷
'****系統(tǒng)主程序****'
Dim A As Byte : A = HFE
Dim B As Byte : B = 0' 定義變量并賦初值
Portd = A ' 點(diǎn)亮PD0口的LED
Load Timer0 , 250' 定時(shí)器裝入計(jì)數(shù)初值
'****系統(tǒng)主程序****'
Do
Idle' 等待中斷
If B = 50 Then
Rotate A , Left , 1
Portd = A' Timer0產(chǎn)生50次中斷共
' 0.1s時(shí),依次點(diǎn)亮下一個(gè)LED
B = 0
End If
Loop
'****中斷子程序****'
Timer0_int: ' 產(chǎn)生一次2ms的定時(shí)
Load Timer0 , 250' 定時(shí)器裝入計(jì)數(shù)初值
B = B + 1' 記錄定時(shí)器產(chǎn)生中斷的次數(shù)
Return
3.2 系統(tǒng)仿真實(shí)現(xiàn)
運(yùn)行BASCOM-AVR,建立文件并設(shè)置BASCOM-AVR Options的相關(guān)屬性,在output一欄選中HEX file。在新建的文件中輸入源程序代碼并保存為*.bas文件,編譯、調(diào)試程序并生成*.hex文件。運(yùn)行Proteus,在硬件原理圖MCU——ATMEGA8上加載該*.hex文件,得系統(tǒng)仿真結(jié)果如圖2所示。
4 結(jié)束語
利用Proteus仿真軟件,使學(xué)生不需硬件支持也能完成多款單片機(jī)的系統(tǒng)設(shè)計(jì)。有利于培養(yǎng)學(xué)生主觀學(xué)習(xí)能動(dòng)性,提高科研能力與創(chuàng)新能力。
參考文獻(xiàn):
[1] 許文斌.Proteus軟件在單片機(jī)仿真實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].商業(yè)經(jīng)濟(jì),2006,(3):90-93.
[2] 劉丹, 胡旭波.基于ATmega88V單片機(jī)的智能喂食系統(tǒng)設(shè)計(jì)[J].電子元器件應(yīng)用,2008,10(2):14-15.
[3] 吳龍挺,曹順安.基于BASCOM-AVR的多路數(shù)據(jù)采集系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2006,19(1):55,57.
[4] 萬勝前.基于KeilC51軟件的電子鐘設(shè)計(jì)與制作[J].鄂州大學(xué)學(xué)報(bào),2007,14(2):17-19.
[5] 周建新,馬潮,耿德銀.AVR單片機(jī)BASIC語言編程及開發(fā)[M].北京:清華大學(xué)出版社,2005:103-111.