于博 楊曉慶
摘 要:傳統(tǒng)單片機技術教學中,采用的理論教學與實驗讓學生感到難以入門,針對教學中存在的這個問題,采用Keil C51和Proteus進行仿真教學,這種教學方法給學生創(chuàng)造一個直觀的形象,更有利于學生對單片機技術的掌握,從而提高了教學質(zhì)量。
關鍵詞:軟件調(diào)試;單片機;KEILC51;PROTEUS;硬件仿真
中圖分類號:TP399 文獻標識碼:A
1 引言(Introduction)
單片機技術在各行各業(yè)中得到廣泛的應用,同時單片機技術應用課程是一門實踐性很強的軟硬件結(jié)合的技術,需要通過大量的實踐才能理解和掌握程序設計方法與硬件結(jié)構設計。同時在目前的教學中,單片機開發(fā)Keil C51與Proteus軟件的聯(lián)合仿真在實際的單片機系統(tǒng)開發(fā)中被普遍應用。為此,在單片機課程教學過程中,教師一定要結(jié)合工程實際做到軟件和硬件相結(jié)合,實現(xiàn)理論教學與工程實踐緊密結(jié)合,在傳授理論知識的同時,教會學生如何使用實際工程所應用的相關軟件進行單片機系統(tǒng)開發(fā)。
2 PROTEUS與KEIL C51介紹(Introduction of
PROTEUS與KEIL C51)
2.1 程序編譯軟件Keil C51
Keil C51軟件是德國Keil Software公司開發(fā)的51系列單片機開發(fā)軟件。Keil μVison系列是該公司推出的51系列兼容單片機軟件開發(fā)系統(tǒng)。μVison是集成的可視化Windows操作界面,其提供了豐富的庫函數(shù)和各種編譯工具,能夠?qū)?1系列單片機以及和51系列兼容的絕大部分類型的單片機進行設計[1]。Keil μVison系列可以支持單片機C51程序設計語言,也可以直接進行匯編語言的設計與編譯。
2.2 仿真軟件Proteus
為了驗證設計程序的正確性,單片機程序設計與開發(fā)往往采用軟件仿真與硬件仿真相結(jié)合的形式。軟件仿真只能驗證程序的正確性,不能仿真具體的硬件環(huán)境。硬件仿真常用的軟件是英國Labcenter Electronics公司研發(fā)的電路設計與仿真平臺Proteus。Proteus具有原理圖編輯、印刷電路板(PCB)設計及電路仿真功能,該軟件由ISIS和ARES兩部分構成,其中ISIS是一款便捷的電子系統(tǒng)原理設計和仿真平臺軟件,ARES是一款高級的PCB布線編輯軟件。
3 硬件電路設計(Hardware circuit design)
3.1 運用Proteus進行的硬件電路設計原理
LED發(fā)光管控制就是通常所說的流水燈控制,這是單片機控制技術入門的基本控制項目。通過花樣繁多的流水燈控制任務,可以學習和應用基本的單片機和C語言程序設計的知識與技術,積累豐富的單片機項目開發(fā)與程序設計的經(jīng)驗與技巧,為進一步提高單片機技術水平打下堅實的基礎[2]。本項目采用的流水燈實際上是一個帶有八個發(fā)光二極管的單片機最小應用系統(tǒng),即為由發(fā)光二極管D1—D8、晶振Xl、電源VCC、單片機AT89C51和程序等組成的系統(tǒng)。如果讓接在P1.0口的D1亮起來,那么只要把P1.0口的電平變?yōu)榈碗娖骄涂梢粤?;相反,如果要接在P1.0口的D1熄滅,就要把P1.0口的電平變?yōu)楦唠娖?;同理,接在P1.1—P1.7口的其他七只發(fā)光二極管點亮和熄滅的方法同D1。因此,要實現(xiàn)流水燈功能,只要將發(fā)光二極管D1—D8依次點亮、熄滅,八只發(fā)光二極管便會一亮一暗的做流水燈了[3]。在此還應注意一點,由于人眼的視覺暫留效應以及單片機執(zhí)行每條指令的時間很短,在控制二極管亮滅的時候應該延時一段時間,否則就看不到“流水”效果了。
3.2 KEIL C語言序的編程
單片機的應用系統(tǒng)由硬件和程序組成,上述硬件原理圖搭建完成上電之后,還不能看到流水燈循環(huán)點亮的現(xiàn)象,要實現(xiàn)流水燈循環(huán)點亮,還要告訴單片機該怎么進行工作,即編寫程序控制單片機管腳電平的高低變化,以實現(xiàn)發(fā)光二極管的一亮一滅。下面以八個發(fā)光二極管循環(huán)點亮來介紹兩種。采用數(shù)組控制與運算符控制兩種編程[4]方法實現(xiàn)。
(1)數(shù)組控制P0口流水燈
#include
void delay(unsigned char x)
{
unsigned char m,n;
for(m=0;m
for(i=0;i<8;i++)
{
P2=P2>>1; //P2每次右移一位
delay();
}
}
void zizeng_LED(void)
{
unsigned char i;
for(i=0;i<32;i++)
{
P2=i;
delay();
}
}
void main(void)
{
while(1) //無限循環(huán)
{
rightmove_LED();
delay();
zizeng_LED();
delay();
}
}
4 程序仿真與Proteus 聯(lián)合調(diào)試(Program simulation
and proteus debug)
4.1 在Proteus硬件仿真電路圖單片機中加載HEX文件
打開先前設計好的Proteus設計文件“項目1.DSN”,右鍵單擊AT89C51單片機,從彈出的快捷菜單中選擇“編輯屬性”命令;或者直接雙擊AT89C51單片機,彈出“編輯元件”對話框,在“Program File”文本框中載入在編譯生成的“項目1.hex”HEX文件,在“Clock Frequency”文本框中輸入“11.0592MHz”,單擊“確定”按鈕返回到Proteus設計文件“項目1.DSN”工作界面。
4.2 運用Proteus硬件仿真電路圖進行仿真實驗
執(zhí)行菜單“調(diào)試”→“執(zhí)行”命令,或者直接點擊仿真工具欄中的仿真啟動按鈕,或者直接按下“F12”功能鍵,均能啟動功能仿真。仿真效果如圖1所示。
從圖中可見,接至P1.0的發(fā)光二極管D1處于點亮狀態(tài),其他二極管處于熄滅狀態(tài)。從仿真效果上看,設計的C語言程序?qū)崿F(xiàn)了對單片機的預期控制。要停止電路的仿真運行,可以點擊工具欄中的仿真停止按鈕,要暫停電路的仿真運行,可以點擊仿真暫停按鈕。要對電路進行單步運行仿真,可以點擊幀進仿真按鈕。
5 結(jié)論(Conclusion)
單片機開發(fā)Keil C51與Proteus軟件的聯(lián)合仿真應用于單片機接口技術的課程教學,收到了良好的教學效果,教學質(zhì)量得到明顯提高,學生對單片機學習興趣明顯增強。在教學過程中,每個實例都采用單片機開發(fā)Keil C51與Proteus軟件聯(lián)合仿真、調(diào)試,學生可以直觀地看到電路輸出狀態(tài)從而方便的進行開發(fā)練習。
參考文獻(References)
[1] 徐磊,申紅軍,蔡亞永.單片機開發(fā)Keil C51與Proteus仿真聯(lián)合
應用研究[J].電子設計工程,2013,(9):178-181.
[2] 楊暾.單片機技術及應用:基于Proteus仿真的C語言程序設計
[M].北京:電子工業(yè)出版社,2012.
[3] 周靈彬,張靖武.PROTEUS的單片機教學與應用仿真[J].單片
機與嵌入式系統(tǒng)應用,2008(1):76-79.
[4] 杜樹春.基于Proteus和Keil C51的單片機設計與仿真[M].北
京:電子工業(yè)出版社,2012.
作者簡介:
于 博(1981-),男,碩士,講師.研究領域:嵌入式開發(fā),圖
像處理技術.
楊曉慶(1980-),女,碩士,講師.研究領域:網(wǎng)絡技術開發(fā).