EDA仿真工具proteus
proteus是由英國Labcenter Electronics公司研發(fā)的EDA仿真工具軟件,EDA主要用于自動化控制系統(tǒng)電路設(shè)計和仿真。我們使用proteus主要完成兩部分工作:一部分工作用于設(shè)計單片機(jī)應(yīng)用電路,包括單片機(jī)與外圍芯片、電子器件的布局和連線;一部分工作用于電路仿真,在仿真單片機(jī)內(nèi)運(yùn)行keil開發(fā)工具編寫的嵌入式程序,驗證電路設(shè)計和嵌入式程序運(yùn)行結(jié)果,降低學(xué)習(xí)嵌入式開發(fā)對硬件操作的依賴程度。
proteus支持ARM、51等單片機(jī)仿真,51單片機(jī)主要支持ATMEL公司研制的51系列單片機(jī),但不影響使用其它51系列單片機(jī)編寫的嵌入式程序,因為51系列單片機(jī)的指令架構(gòu)都是相同的。proteus仿真的單片機(jī)可以運(yùn)行keil、matlab、IAR等軟件開發(fā)的嵌入式程序,并可以進(jìn)行源代碼級調(diào)試。
proteus正版軟件費(fèi)用比較高,可以在proteus官網(wǎng)下載演示版,演示版是免費(fèi)的且沒有時間限制。但演示版只能在現(xiàn)有的示例上運(yùn)行自己編寫的程序,不能仿真調(diào)試,不能保存設(shè)計文件,若演示版不能滿足要求,可以通過搜索引擎查詢其它安裝方式。
點(diǎn)亮二極管實(shí)驗任務(wù)
實(shí)驗?zāi)康?/strong>
設(shè)計51單片機(jī)最小系統(tǒng)電路,包括單片機(jī)晶振電路、復(fù)位電路和發(fā)光二級管控制電路,加載前面實(shí)驗用keil編寫的單片機(jī)嵌入程序,驗證程序的運(yùn)行結(jié)果,實(shí)驗用單片機(jī)型號為AT89C52。
1.1.2.2.實(shí)驗步驟
實(shí)驗步驟如下:① 認(rèn)識晶振、電容、電阻、發(fā)光二極管元器件;② 了解晶振電路、復(fù)位電路、發(fā)光二極管控制電路;③ 使用proteus設(shè)計電路模型;④ 加載運(yùn)行keil編寫的單片機(jī)程序。
實(shí)驗用相關(guān)電子元器件
晶振
晶振(Crystal)——單片機(jī)的心臟,為單片機(jī)提供時鐘脈沖,單片機(jī)所有操作都在時鐘脈沖下執(zhí)行。
時鐘脈沖除時間外,一般要注意上升沿、下降沿、高電平、低電平,上圖有8個時序脈沖,開始是低電平,過一段時間后出現(xiàn)一個上升沿,并躍變到高電平,高電平持續(xù)一段時間后,出現(xiàn)下降沿,并躍變到低電平。
時鐘周期是晶振工作頻率的倒數(shù),例如12M的晶振,它的時鐘周期就是1/12 μs,若采用了1MHZ的時鐘頻率,則時鐘周期為1μs;若采用4MHZ的時鐘頻率,則時鐘周期為250ns。
下圖是晶振電子元器件的實(shí)物圖和電路符號。
電容
電容(capacitance)——兩個相互靠近的導(dǎo)體,中間夾一層不導(dǎo)電的絕緣介質(zhì),就構(gòu)成了電容器,電容器可以儲存電荷,在交變電路內(nèi)會交替充放電,因此電容可以通交流,隔直流,電容可以與晶振構(gòu)成時鐘脈沖電路,與電阻構(gòu)成單片機(jī)復(fù)位電路,另外濾波、諧振、整流等電路都要用到電容。
電容的容量單位為:法拉(F),其它單位有:毫法(mF)、微法(uf)、納法(nF)、皮法(pf),單位的換算進(jìn)率是1000。
下圖是電容電子元器件的實(shí)物圖和電路符號。
電阻
電阻(resistance)——又稱為電阻器,該器件在電路中阻礙電流的流動,是電路內(nèi)主要的負(fù)載器件。電阻的單位是歐姆,簡稱歐,用希臘字母“Ω”表示。常用的電阻單位還有千歐姆(KΩ),兆歐姆(MΩ)。
換算關(guān)系:1KΩ=1000Ω,1MΩ=1000KΩ
在電路圖中一般將電阻值中的Ω省去,凡阻值在千歐以下的電阻,直接用數(shù)字表示,阻值在千歐以上的,用K表示;兆歐以上的用M表示。
下圖是電阻電子元器件的實(shí)物圖和電路符號。
發(fā)光二極管
發(fā)光二級管(LED)——是一種光電子器件,該器件通電后,電能轉(zhuǎn)換為光能。
下圖是發(fā)光二極管電子元器件的實(shí)物圖和電路符號。
實(shí)驗用相關(guān)電路
晶振電路
晶振電路構(gòu)成時鐘脈沖振蕩電路,為單片機(jī)提供時鐘脈沖,下圖為AT89C52單片機(jī)的外部晶振電路。
晶振電路由晶振和兩個相同容量的電容構(gòu)成,這兩個電容一般稱為匹配電容或負(fù)載電容,并聯(lián)到晶振兩端,為晶體振蕩提供電流回路,若沒有這兩個電容,晶振的振蕩會因為沒有電流回路而停振,這兩個電容的容量都很小,選擇幾十皮法即可,兩個電容的另一端都需要接地。
AT89C52單片機(jī)的XTAL1和XTAL2是外接時鐘引腳,XTAL1為片內(nèi)振蕩電路的輸入端,XTAL2為片內(nèi)振蕩電路的輸出端,這兩個引腳外接晶振和電容,晶振一般取值為12MHZ,電容一般取值為10P~30P。
復(fù)位電路
復(fù)位電路讓單片機(jī)恢復(fù)到初始狀態(tài),讓單片機(jī)的程序從頭開始執(zhí)行。AT89C52單片機(jī)的RST引腳為復(fù)位引腳,該引腳連續(xù)輸入兩個機(jī)器周期以上高電平時有效,機(jī)器周期是單片機(jī)完成一個基本操作所需要的時間,一個機(jī)器周期大約為12個時鐘周期。下圖為AT89C52的復(fù)位電路。
復(fù)位電路由一個極性電容和一個電阻串聯(lián)構(gòu)成,電容的正極接5V電源,負(fù)極接1K的電阻,電阻的一端接地,RST引腳接電容的負(fù)極。該電路為上電復(fù)位,當(dāng)單片機(jī)在通電瞬間,確保復(fù)位端為高電位并持續(xù)大約2個機(jī)器周期。當(dāng)單片機(jī)加電時,復(fù)位電路通過電容給RST端加一個高電平,此高電平信號隨著對電容的充電而逐漸降低,因此要保持電容充電時間足夠長來完成復(fù)位操作。
發(fā)光二極管控制電路
發(fā)光二極管控制電路用于控制二極管的發(fā)光狀態(tài),下圖為發(fā)光二級管控制電路。
電路圖的D1為發(fā)光二極管,一端接單片機(jī)P1第0位,一端接200歐姆的電阻,電阻的一端接5V電源,該電阻對電路進(jìn)行限流,因為發(fā)光二級管允許流過的電流較小,所以需要串聯(lián)一個幾百歐姆的電阻。
在當(dāng)前電路下,單片機(jī)加電后,發(fā)光二級管并不會點(diǎn)亮,因為單片機(jī)I/O口(包括P1口)所有位引腳都輸出高電平,該電路無電流流通。前面我們使用keil編寫了一個嵌入程序,該嵌入程序?qū)1口第0位改變?yōu)榈碗娖剑谶@種情況下,該電路將有電流通過,發(fā)光二級管被點(diǎn)亮。
實(shí)驗過程
新建電路設(shè)計模型
proteus安裝完成后程序名稱為“ISISX Professional”,其中‘X’是版本號。啟動proteus,啟動后的proteus工作窗口如下圖所示。
展開【File】菜單,選擇【New Design…】命令,或按下Ctrl+O快捷鍵,在彈出的“Create New Design”對話框中,選擇“DEFAULT”模板,單擊【OK】按鈕。如下圖所示。
展開【File】菜單,選擇【Save Design】命令,或按下Ctrl+S快捷鍵,在彈出的“Save ISIS Design File”對話框,輸入文件名稱,單擊“保存”按鈕保存電路模型。
1.1.5.2.添加單片機(jī)到電路模型
proteus提供了仿真電子元器件庫,后面統(tǒng)稱為元件庫,單擊下圖所示的“P”按鈕可以打開元件庫窗口。
元件庫窗口如下圖。
“keywords”輸入域可以輸入要查找的元器件英文名稱的關(guān)鍵詞、或者元器件的型號。proteus會將與關(guān)鍵詞或型號相匹配的項列在“Results”列表窗口,在列表窗口選擇需要添加的元器件項,單擊“OK”按鈕即可將選擇的元器件添加到當(dāng)前電路模型的存儲庫,以備使用。
例如在“keywords”輸入域輸入要查找的單片機(jī)型號“AT89”,proteus會在列表窗口列出與關(guān)鍵詞“AT89”相關(guān)的元器件,在列表窗口選擇“AT89C52”單片機(jī),proteus會在“Preview”窗口預(yù)覽“AT89C52”單片機(jī)的電路模型符號。單片機(jī)型號確定后,單擊“OK”按鈕將選擇的單片機(jī)添加到電路模型元器件庫。
在電路模型元器件庫選擇“AT89C52”,在電路模型設(shè)計窗口合適位置單擊鼠標(biāo)左鍵,放置到單片機(jī),并可以拖動單片機(jī)到電路模型的合適位置,位置確定后雙擊鼠標(biāo)左鍵,將單片機(jī)添加到電路模型。
為單片機(jī)添加晶振電路
前面說過晶振電路需要晶振、電容、電源元器件,打開元件庫,分別使用關(guān)鍵詞“crystal”和“cap”搜索晶振和電容元器件,添加晶振、電容到電路模型元器件庫。
晶振電路還需要5V的電源,用鼠標(biāo)單擊proteus窗口左側(cè)工具條的“Terminals Mode”模式,該模式包含了電源(POWER)、接地(GROUND)等電路器件。如下圖所示。
從“Terminals Mode”模式切換到電路模型元器件庫,用鼠標(biāo)單擊proteus窗口左側(cè)工具條的“Component Mode”模式即可完成切換。
從電路模型元器件庫添加兩個電容、一個晶振、一個接地點(diǎn)到電路模型,如下圖所示。
為方便元器件連接,可以對元器件進(jìn)行旋轉(zhuǎn)。例如旋轉(zhuǎn)名稱為X1的晶振器件:用鼠標(biāo)選中X1元器件,單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“Rotate Anti-clockwise”命令,X1元器件會在當(dāng)前狀態(tài)下逆時針旋轉(zhuǎn)90度。
添加的電子元器件默認(rèn)顯示元器件多個參數(shù),如元器件名稱、元器件值的大小、元器件文字說明等。設(shè)計者可以自定義是否顯示和修改這些參數(shù)。例如修改名稱為C1的電容元器件,用鼠標(biāo)選中C1元器件,雙擊該C1元器件,proteus會彈出C1元器件參數(shù)修改對話框,如下圖所示。
在輸入域“Component Reference”可以修改元器件的名稱,在輸入域“Capacitance”可以修改C1電容的容量,在這里修改為22pf,若不需要在電路模型顯示C1電容的名稱和容量,可以選上Hidden檢查框。
按照上述步驟,分別修改電容器件C1和C2的容量為22pf,修改X1晶振的振蕩頻率為12MHZ。修改后電路模型如下圖所示。
我們發(fā)現(xiàn)電路模型內(nèi)電子元器件的文本說明沒有隱藏,若需要隱藏文本說明,展開【Template】菜單,選擇“Set Design Defaults……”命令,在彈出的對話框(如下圖所示)去掉“Show Hidden text”檢查。
元器件參數(shù)配置完成后的電路模型如下圖所示。
下一步的工作是將單片機(jī)、電容、晶振、電源通過導(dǎo)線連接在一起,連接方式可以參照前面的晶振電路圖。連接方法是將鼠標(biāo)移動到元器件的一端或電路的節(jié)點(diǎn),當(dāng)鼠標(biāo)變?yōu)榫G色的鉛筆時,按下鼠標(biāo)左鍵,同時拖動鼠標(biāo)繪制出導(dǎo)線,拖動導(dǎo)線到合適位置后,雙擊鼠標(biāo)左鍵導(dǎo)線繪制完成。
繪制晶振電路時,可以分別從單片機(jī)的XTAL1腳和XTAL2腳引出導(dǎo)線連接C1和C2的一端,同時連接到晶振的兩端,然后將C1和C2另一端分別連接到接地點(diǎn)。
為單片機(jī)添加復(fù)位電路
復(fù)位電路需要一個22uF的極性電容,一個1K的電阻,一個+5V的直流電源。打開元件庫,使用關(guān)鍵詞“res”搜索電阻元器件,添加電阻到電路模型元器件庫,使用關(guān)鍵詞“cap-pol”搜索極性電容元器件,添加極性電容到電路模型元器件庫。
從電路模型元器件庫添加一個極性電容、一個電阻、一個電源到電路模型,如下圖所示。
修改C3電容容量參數(shù)為22uf,修改R1電阻值為1K,電源默認(rèn)為+5V電源,無需修改。
復(fù)位電路元器件參數(shù)配置完成后的電路模型如下圖所示。
參照前面的復(fù)位電路圖,將單片機(jī)、C3、R1、電源通過導(dǎo)線連接在一起,連接之前添加接地點(diǎn)到電路模型。
為單片機(jī)添加發(fā)光二極管控制電路
發(fā)光二級管控制電路需要一個200歐姆的電阻,一個發(fā)光二極管,一個+5V的直流電源。打開元件庫,使用關(guān)鍵詞“LED-RED”搜索發(fā)光二極管元器件,添加發(fā)光二極管到電路模型元器件庫。
從電路模型元器件庫添加一個發(fā)光二極管、一個電阻、一個電源到電路模型,修改元器件參數(shù),調(diào)整元器件到合適位置,如下圖所示。
參照前面的發(fā)光二極管電路圖,將單片機(jī)、D1、R2、電源通過導(dǎo)線連接在一起。
裝載和運(yùn)行Keil編寫的嵌入式程序
實(shí)際上51單片機(jī)要正常工作,還需要在Vcc引腳接入電源,在Vss引腳或GND引腳接公共接地端。proteus默認(rèn)單片機(jī)已經(jīng)接電源和接地,無需再進(jìn)行導(dǎo)線連接。
在前面的“Keil開發(fā)環(huán)境與第一個單片機(jī)實(shí)驗”課程中,我們編寫了控制單片機(jī)P1口第0位輸出低電平的程序,程序代碼如下:
#include
sbit led1 = P1^0;
void main()
{
led1 = 0;
}
51單片機(jī)只能運(yùn)行HEX或BIN文件,HEX是十六進(jìn)制文件,英文全稱為“hexadecimal”,BIN文件是二進(jìn)制文件,英文全稱為binary,這兩種文件可以通過軟件相互轉(zhuǎn)換。若需要Keil編譯后輸出HEX文件,需要對Keil輸出選項進(jìn)行配置。在Keil工作窗口,展開【Project】菜單,選擇“Options for Targets”命令,在彈出的對話框中,選擇“Output”標(biāo)簽頁,確定“Create Hex File”被選中。
重新編譯C源代碼,在項目的輸出目錄可以看到擴(kuò)展名為“hex”的HEX文件。
C程序編譯完成后,回到proteus工作窗口,在電路模型窗口使用鼠標(biāo)雙擊單片機(jī),或選中單片機(jī)后單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“Edit Properties”命令,proteus彈出Edit Component對話框(見下圖),選擇使用keil編譯的HEX文件,單擊【OK】按鈕即可裝載C程序到單片機(jī)。
在電路模型內(nèi)仿真運(yùn)行前面裝載的單片機(jī)程序,運(yùn)行程序有兩種方式:一種方式是展開【Debug】菜單,選擇“Start/Restart Debugging”命令來運(yùn)行程序;一種方式是用鼠標(biāo)單擊調(diào)試工具條的啟動按鈕(見下圖)來運(yùn)行程序。
程序運(yùn)行后電路模型各端口狀態(tài)如下圖所示。
觀察電路模型狀態(tài),D1發(fā)光二級管已經(jīng)點(diǎn)亮,藍(lán)色方塊表示該端口為低電平,紅色方塊表示該端口為高電平,灰色方塊表示電壓不確定。下一節(jié)實(shí)驗課程解釋P0口電壓不確定的問題。
實(shí)驗小結(jié)
通過這次實(shí)驗,掌握了proteus設(shè)計單片機(jī)電路模型的過程,并仿真運(yùn)行由Keil編寫的嵌入式C程序,點(diǎn)亮了發(fā)光二極管。下次實(shí)驗?zāi)繕?biāo)主要是應(yīng)用proteus結(jié)合keil對嵌入式程序進(jìn)行源代碼級調(diào)試,并解釋在實(shí)驗過程中,P0口電壓不確定的問題。
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634615 -
電路設(shè)計
+關(guān)注
關(guān)注
6673文章
2451瀏覽量
204147 -
Proteus
+關(guān)注
關(guān)注
79文章
1692瀏覽量
106515 -
仿真
+關(guān)注
關(guān)注
50文章
4070瀏覽量
133552 -
51單片機(jī)
+關(guān)注
關(guān)注
274文章
5702瀏覽量
123490
發(fā)布評論請先 登錄
相關(guān)推薦
評論