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