劉春龍
PROTEUS是英國(guó)Labcenter Electronics 公司研發(fā)的多功能EDA軟件,是一個(gè)完整的單片機(jī)軟件、硬件設(shè)計(jì)仿真平臺(tái),其仿真結(jié)果與實(shí)際硬件非常接近,因此在工程設(shè)計(jì)和單片機(jī)教學(xué)中都具有重要的現(xiàn)實(shí)意義。本人在課堂教學(xué)中已將PROTEUS應(yīng)用于單片機(jī)技術(shù)基礎(chǔ)課程的課堂教學(xué)、實(shí)驗(yàn)教學(xué)與課程設(shè)計(jì)中,并取得了很好的教學(xué)效果。
一、單片機(jī)PROTEUS仿真教學(xué)基本內(nèi)容和步驟
單片機(jī)在理論教學(xué)和實(shí)驗(yàn)驗(yàn)證中,教學(xué)內(nèi)容一般包括:?jiǎn)纹瑱C(jī)內(nèi)部資源及周邊外圍電路設(shè)計(jì)和裝調(diào)、控制程序的編寫(xiě)、單元電路的調(diào)試和整個(gè)應(yīng)用系統(tǒng)的調(diào)試。所以,老師在單片機(jī)教學(xué)時(shí),要根據(jù)單片機(jī)課程和學(xué)生實(shí)際,將課程教學(xué)內(nèi)容合理分配課時(shí),并在課前做好適當(dāng)充分的準(zhǔn)備,使更好的完成單片機(jī)教學(xué)任務(wù)。1.單片機(jī)內(nèi)部資源實(shí)驗(yàn);2.硬件電路的設(shè)計(jì)和裝調(diào);3.Keil軟件C程序的編制、調(diào)試;4.調(diào)試。
二、教學(xué)實(shí)例
Protues運(yùn)行于Windows操作系統(tǒng)中,可以仿真、分析各種模擬器件和集成電路。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能。同時(shí)可以觀(guān)察各個(gè)變量、寄存器等的當(dāng)前狀態(tài)。下面以一個(gè)實(shí)際的“單片機(jī)控制八路搶答器”仿真例子介紹如何使用PROTEUS軟件進(jìn)行電路設(shè)計(jì)。
(一)設(shè)計(jì)任務(wù)
設(shè)計(jì)一個(gè)單片機(jī)控制八路智能搶答器,使其可以完成競(jìng)賽時(shí)選手搶答功能。
(二)控制要求
1.設(shè)八個(gè)搶答按鈕,另設(shè)一個(gè)按鈕用來(lái)清零。
2.搶答時(shí)能夠顯示隊(duì)號(hào),具有報(bào)警功能。
3.只要有按鈕按下,其他選手按鈕功能失效。
4.電路具有倒計(jì)時(shí)功能。
(三)單片機(jī)控制八路搶答器硬件電路原理圖(略)
(四)軟件程序
#include
……? // 單片機(jī)引腳定義、數(shù)碼管數(shù)據(jù)等程序,此處省略
void main(void){? //主函數(shù)
……? // 定時(shí)設(shè)定等初始化程序,此處省略
while(1){? //大循環(huán)
……? // 數(shù)碼管動(dòng)態(tài)掃描、數(shù)碼管倒計(jì)時(shí)閃爍等程序,此處省略
switch(ID){//狀態(tài)機(jī)實(shí)現(xiàn)搶答程序
case 0:? ……? // 狀態(tài)機(jī)初始化等程序,此處省略
ID=1;//交通燈執(zhí)行流程切換變量賦值1,進(jìn)入第1步
break;//跳出第0步
case 1:? ……? // 搶答器復(fù)位等程序,此處省略
ID=2;//交通燈執(zhí)行流程切換變量賦值2,進(jìn)入第2步
break;? ?//跳出第1步
case 2: ……? // 搶答器啟動(dòng)程序,此處省略
ID=3;//交通燈執(zhí)行流程切換變量賦值3,進(jìn)入第3步
break;? ?//跳出第2步
case 3://8位選手搶答程序
if(miao==0) {TR0=0;buf[0]=buf[1]=0;ID=0;}//秒為0,停止定時(shí)器,同時(shí)清除數(shù)碼管緩存,交通燈執(zhí)行流程切換變量賦值0,進(jìn)入第0步
if(P1==0xFE){P0=0xF9;TR0= 0;LED1=1;ID=1;} //選手1搶答
else if(P1==0xFD){P0=0xA4;TR0=0;LED1=1;ID=1;}// 選手2搶答
……// 3~7搶答器程序,此處省略
else if(P1==0x7F){P0=0x80;TR0=0;LED1=1;ID=1;}// 選手8搶答
break;? ?//跳出第3步
}
}
}
void Timer_0(void)interrupt? 1 //定時(shí)器T0的中斷函數(shù)
{
……? // 定時(shí)中斷等程序,此處省略
}
}
在Keil建立項(xiàng)目并編譯出“.hex”文件后,將其導(dǎo)入Proteus仿真軟件虛擬單片機(jī)中,并按F5或單擊Proteus軟件工具欄的仿真按鈕,在Proteus軟件里直接進(jìn)行實(shí)驗(yàn)任務(wù)操作,直接可以查看到結(jié)果。最后,利用單片機(jī)下載軟件將“.hex”文件傳送至單片機(jī)進(jìn)行硬件調(diào)試,查看是否滿(mǎn)足控制要求。
責(zé)任編輯 徐國(guó)堅(jiān)