【摘要】本文針對單片機項目設計中出現的問題和基本方法,提出了將Proteus仿真軟件和Keil軟件引入到單片機項目式開發(fā)中。以“單片機雙機通信實驗”項目為例,詳細闡述Proteus軟件在單片機課程教學中的使用方法和仿真調試過程。實踐證明,該方法能激發(fā)開發(fā)熱情,鍛煉創(chuàng)新能力和單片機軟硬件綜合開發(fā)能力,是提高單片機開發(fā)效率和設計產品質量的一種有效方法。
【關鍵詞】單片機開發(fā);Proteus軟件;仿真調試
引言
單片機開發(fā)是一項綜合性、實踐性、應用性很強的技術。傳統(tǒng)的單片機開發(fā)采用“先理論設計,再動手實驗”的開發(fā)模式,該模式造成編程與之實驗結果分離,不便于調試,效果并不理想。鑒于此,本文將Proteus和引入到單片機的項目式開發(fā)中,通過仿真的直觀性和真實感,不僅節(jié)約了硬件資源的投入,而且提高了單片機開發(fā)效率和產品質量。
一、Proteus簡介
Proteus軟件是英國Labcenter electronics公司開發(fā)的電路分析與實物仿真軟件,它除了具有其他EDA工具的原理布圖、PCB自動或人工布線、電路仿真等功能外,Proteus最大的特點是基于微控制器的設計連同所有的外圍電路一起仿真,可直接在單片機虛擬系統(tǒng)上對MCU編程,并可對軟件源代碼進行實時調試。同時,它具有電路互動仿真功能,通過動態(tài)外設模型,如鍵盤、LED/LCD等,可實時顯示系統(tǒng)輸入、輸出結果,以實現交互仿真,或配合Proteus配置的虛擬儀器如示波器、邏輯分析儀等,使單片機虛擬系統(tǒng)實現預期的實驗效果。
此處還需要用Keil軟件來協助。Keil軟件是美國Keil Software公司出品的兼容單片機C語言軟件的開發(fā)系統(tǒng),是目前世界上最好的51單片機開發(fā)工具之一。它提供了豐富的庫函數和功能強大的集成開發(fā)調試工具,生成的目標代碼效率高,多數語句生成的匯編代碼很緊湊,容易理解。
Proteus和Keil各自都可以進行仿真調試,但效果不是很理想,如把兩者結合起來相互配合,則可發(fā)揮Proteus和Keil的優(yōu)勢使其在仿真過程中的軟件調試和硬件設計更加便捷、高效。
二、仿真項目教學案例
(一)項目要求
本項目要求用兩片AT89C51單片機實現A機檢測輸入鍵盤信息,并通過串行通信方式,傳送給B機,在B機用數碼管顯示A機所按下的對應按鍵代號,“0-9”顯示對應數字,其余按鍵顯示“-”。
(二)任務分析
項目開發(fā)過程是緊緊圍繞一個或多個完整的項目展開的,因此項目的設計,是單片機課程教學成敗的關鍵。按照本項目要求,通過分析,該項目實際上是一個雙機單向通信項目,只要掌握了該項目,雙向通信問題不難理解。具體思路是:
1.A、B單片機均采用AT89C51,A機須完成矩陣鍵盤掃描識別、鍵盤代碼串行傳送兩項任務。B機須完成串行接收代碼、數碼顯示兩項任務。本項目程序的關鍵就是串行通信程序部分。
2.A機通過檢測P2口外接的矩陣鍵盤信息,并進行識別處理,產生相應的鍵盤代碼,然后通過串行發(fā)送端TXD/P3.1發(fā)送給B機;
3.B機收到A機發(fā)送的鍵盤代碼后,通過處理,從P0口輸出七段數碼管段碼信號,驅動共陽極七段數碼管顯示鍵盤代碼。
圖1
圖2
圖3
(三)硬件仿真圖繪制
通過以上的任務分析,我們先設計出硬件電路,并將電路在Proteus中繪制出來。電源電路用5V,具體電路省略。時鐘電路用來產生時鐘信號供單片機工作,晶振采用12MHz,平衡電容采用33pF。復位電路在系統(tǒng)上電或運行過程中對單片機進行初始化操作。
圖4
圖5
1.單片機最小系統(tǒng)
本案例所用單片機型號為AT89C51,其結構簡單,控制靈活。其最小系統(tǒng)主要包括主芯片、電源電路、時鐘電路、復位電路。
2.本例單片機最小系統(tǒng)
在這里要特別說明的是,在Proteus中單片機可以默認以最小系統(tǒng)工作。即可以不加上電源電路、復位電路、時鐘電路也可以工作。不過為了便于直觀觀察,我們還是畫出這些路。在繪制時,雙機只畫出單機的這些電路,另一個不畫。并且為了不產生標號沖突,B機的引腳標號用數字表示。
本例中A機的主電路、電源電路、時鐘電路、復位電路見附圖。B機的系統(tǒng)圖和A機系統(tǒng)大同小異。
3.本例輸入、輸出系統(tǒng)及通信連接
本例中的輸入系統(tǒng)是矩陣鍵盤電路,從A機輸入。利用P2口作為鍵盤檢測口,P2.0-P2.3為行線掃描,P2.4-P2.7為列線檢測。
本例中的通信連接是將雙機的RXD和TXD兩腳,即P3.0和P3.1交叉相邊即可。B機的這兩腳標號和A機對應。
本例中的輸出系統(tǒng)是單個LED共陽數碼管顯示電路,從B機P0輸出段碼控制信號。
4.本例硬件仿真總圖見附1。
(四)軟件系統(tǒng)流程圖
A機主程序流程圖如圖1所示,鍵盤掃描檢測程序流程圖如圖2所示,B機主程序流程圖如圖3所示。具體的程序見附3。編程輸入Kei uVsion4軟件并生成A機和B機的”.hex”格式可執(zhí)行文件。
圖6
圖7
圖8
附1 雙機通信實驗仿真電路原理圖
附2 電源原理圖
(五)Proteus ISIS載入仿真
1.加加載源程序和目標程序文件、目標代碼文件、設置時鐘頻率
在ISIS菜單中單擊Source(源程序),彈出下拉菜單,點擊“Add/Remove Source File…”,彈出如圖1.9所示的對話框,選取A機芯片,點擊 ,加入源程序“雙機通信實驗A機發(fā)送程序.C”,如圖4所示;選取B機芯片,點擊 ,加入源程序“雙機通信實驗B機接收程序.C”,如圖5所示。點擊確定。
在ISIS編輯窗口中雙擊A機AT89C51芯片,在彈出的對話框中點擊如圖6所示的按鈕,選擇前面所生成的“雙機通信實驗A機發(fā)送程序.hex”代碼文件,再在Clock Frequency:欄中設置時鐘為12MHz,點擊“OK”即可。B機同樣設置。如圖7所示。
2.PROTEUS交互仿真
代碼裝載完畢后即可進行仿真,只需點擊運行仿真按鈕即可運行仿真。仿真運行效果如圖8所示。
(六)本例仿真電路原理圖及程序部分源代碼
1.本例仿真電路原理圖(附1、附2)
2.本例程序部分源代碼(附3)
A機檢測發(fā)送程序:
#include lt;at89x51.hgt;
#define uchar unsigned char
#define uint unsigned int
#define key_4x4_port P2 "http://定義P3口為鍵盤輸入
uchar key; " "http://按鍵值
void delayms(uint xms);//1ms延時程序
void key_4x4_scan(); " "http://鍵盤掃描指示程序
uchar d[11]={0,1,2,3,4,5,6,7,8,9,10}; //發(fā)送的數據
void delay();
/*--------------Xms延時程序----------------*/
void delayms(uint xms)
{ " " " "uint i,j;
for(i=xms;igt;0;i--) //i=xms時延時xms
for(j=110;jgt;0;j--);
}
/*---------------鍵盤掃描指示程序--------------*/
{省略}
/*---------------A機檢測發(fā)送程序--------------*/
main(){
uchar i;
PCON=0x80;//波特率加倍
SCON=0x40;//方式1,波特率與T1溢出率相關
TMOD=0x20;//T1方式2
TH1=0xfd;//串口速度為19.2Kb/s
TL1=0xfd;
TR1=1;//啟動T1
while(1){
key_4x4_scan();
SBUF=d[key];//啟動串口并發(fā)送數據
while(1)
{
if(TI==1)
{//檢測,發(fā)送完發(fā)送下一數據
TI=0;//清中斷
break;
}
}
delay();//發(fā)送速度控制
}
}
void delay(){
unsigned int i;
for(i=0;ilt;40;i++){
}
}
B機接收顯示程序:
#include lt;at89x51.hgt;
unsigned char code d[11]= "http://LED字符碼
{ "0xc0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90,0xbf
};
main(){
PCON=0x80;//波特率加倍
SCON=0x50;//方式1,允許接收
IE=0x90;//開串口中斷
TMOD=0x20;//T1方式2
TH1=0xfd;//串口速度為19.2Kb/s
TL1=0xfd;
TR1=1;//啟動T1
while(1){
if(RI==1){//檢測
P0=d[SBUF];//顯示
RI=0;//清中斷
}
}
}
三、結論
通過本次實驗,可以熟悉單片機串行通信的編程方法,提高鍵盤掃描檢測程序、定時器的使用技巧,熟悉ProteusISIS的使用方法,將其與Keil uVsion4有機結合,使用該軟件有利于直觀觀察仿真結果,培養(yǎng)單片機綜合應用能力,明顯地提高單片機開發(fā)效率和教學質量。
參考文獻
[1]谷秀榮,單片機原理與應用(C51版),北京交大出版社,2009.7.
[2]李全利.單片機原理及應用技術.北京:高等教育出版社,2001.7.