1 概述
隨著半導(dǎo)體技術(shù)的飛速發(fā)展,,以及移動(dòng)通信,、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)在嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用,,單片機(jī)從4位,、8位、16位到32位,,其發(fā)展歷程一直受到廣大電子愛(ài)好者的極大關(guān)注,。單片機(jī)功能越來(lái)越強(qiáng)大,價(jià)格卻不斷下降的優(yōu)勢(shì)無(wú)疑成為嵌入式系統(tǒng)方案設(shè)計(jì)的首選,,同時(shí)單片機(jī)應(yīng)用領(lǐng)域的擴(kuò)大也使得更多人加入到基于單片機(jī)系統(tǒng)的開(kāi)發(fā)行列中,,推動(dòng)著單片機(jī)技術(shù)的創(chuàng)新進(jìn)步,。
然而傳統(tǒng)的單片機(jī)系統(tǒng)開(kāi)發(fā)除了需要購(gòu)置諸如仿真器、編程器,、示波器等價(jià)格不菲的電子設(shè)備外,,開(kāi)發(fā)過(guò)程也較繁瑣。如圖1所示,,用戶程序需要在硬件完成的情況下才能進(jìn)行聯(lián)調(diào),,如果在調(diào)試過(guò)程中發(fā)現(xiàn)需修改硬件,則要重新制板,。因此無(wú)論從硬件成本還是開(kāi)發(fā)周期來(lái)看,,其高風(fēng)險(xiǎn)、低效率的特性顯露無(wú)遺,。來(lái)自英國(guó)Labcenter Electronics公司的Proteus軟件很好地詮釋了利用現(xiàn)代EDA工具方便快捷開(kāi)發(fā)單片機(jī)系統(tǒng)的優(yōu)勢(shì),。它包括PROTEUS VSM(Virtual System Modelling)、PROTEUS PCB DESIGN兩大組成部分,,在PC機(jī)上就能實(shí)現(xiàn)原理圖電路設(shè)計(jì),、電路分析與仿真、單片機(jī)代碼級(jí)調(diào)試與仿真,、系統(tǒng)測(cè)試與功能驗(yàn)證以及形成PCB文件的完整嵌入式系統(tǒng)設(shè)計(jì)與研發(fā)過(guò)程,。本文講述PROTEUS VSM單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真功能,圖2為基于PROTEUS仿真軟件的單片機(jī)系統(tǒng)設(shè)計(jì)流程,,它極大地簡(jiǎn)化了設(shè)計(jì)工作,,得到眾多設(shè)計(jì)師的青睞,。
圖1 傳統(tǒng)的單片機(jī)系統(tǒng)設(shè)計(jì)流程 圖2 基于Proteus的單片機(jī)系統(tǒng)設(shè)計(jì)流程
2 基于Proteus的單片機(jī)系統(tǒng)設(shè)計(jì)與仿真
Proteus支持51,、PIC、AVR,、ARM7等多個(gè)系列的單片機(jī)芯片,,集編輯、編譯,、仿真調(diào)試于一體,。它的界面簡(jiǎn)潔友好,可利用該軟件提供的數(shù)千種數(shù)字/模擬仿真元器件以及豐富的仿真設(shè)備,,使得在程序調(diào)試,、系統(tǒng)仿真時(shí)不僅能觀察到程序執(zhí)行過(guò)程中單片機(jī)寄存器和存儲(chǔ)器等內(nèi)容變化,還可從工程的角度直觀地看到外圍電路工作情況,,非常接近工程應(yīng)用,。另外Proteus還能與第三方集成開(kāi)發(fā)環(huán)境(如Keil的μVision)進(jìn)行聯(lián)合仿真調(diào)試,給予開(kāi)發(fā)人員莫大便利,。本設(shè)計(jì)以51單片機(jī)構(gòu)成的99秒馬表為例描述基于Proteus的硬件設(shè)計(jì),、基于Keil C的軟件設(shè)計(jì)以及它們的聯(lián)合仿真調(diào)試過(guò)程,。
2.1 硬件設(shè)計(jì)
2個(gè)七段數(shù)碼管顯示馬表時(shí)間,用51單片機(jī)的P1口驅(qū)動(dòng),;按鍵SP掛在外部中斷0的I/O口上,,第1次按下表示開(kāi)始運(yùn)行,第2次按下為計(jì)時(shí)停止,,第3次按下重新歸零,;擴(kuò)展程序存儲(chǔ)器27256、數(shù)據(jù)存儲(chǔ)器62256主要是緣于嵌入式操作系統(tǒng)μC/OSII下的應(yīng)用程序設(shè)計(jì),,片內(nèi)存儲(chǔ)空間有限,,同時(shí)也方便擴(kuò)展。
根據(jù)以上分析,,選取的元器件有:AT89C51,、4位7段譯碼顯示器、74LS373,、27256,、62256、按鍵及電阻電容等,。Proteus繪制原理圖和Protel軟件相似,,先從元件庫(kù)中取出所需的元件并在繪圖區(qū)布局好,設(shè)置元器件屬性,,接著進(jìn)行連線,,添加必要的網(wǎng)絡(luò)標(biāo)示等,最后完成電氣檢測(cè),。圖3為馬表電路原理圖,。
圖3 基于Proteus的馬表系統(tǒng)原理圖
2.2 軟件設(shè)計(jì)
隨著嵌入式系統(tǒng)應(yīng)用不斷擴(kuò)大,功能不斷增強(qiáng),,為了對(duì)整個(gè)系統(tǒng)及其所操作的部件,、裝置等資源進(jìn)行統(tǒng)一協(xié)調(diào)、指揮和有效控制,,使開(kāi)發(fā)人員只專注于應(yīng)用程序設(shè)計(jì),,在嵌入式系統(tǒng)中引入操作系統(tǒng)是非常必要的。μC/OSII是源碼公開(kāi)的實(shí)時(shí)多任務(wù)操作系統(tǒng),,具備足夠的穩(wěn)定性和安全性,,特別適合用于中小型嵌入式系統(tǒng)中。μC/OSII的具體介紹和移植過(guò)程請(qǐng)見(jiàn)參考文獻(xiàn)[1],。
Keil公司的Keil μVision3,,是目前使用最為廣泛的開(kāi)發(fā)環(huán)境之一。這里介紹在Keil μVision3環(huán)境下基于μC/OSII嵌入式操作系統(tǒng)的用戶程序設(shè)計(jì),。根據(jù)馬表系統(tǒng)功能,,設(shè)計(jì)兩個(gè)任務(wù): 任務(wù)1為數(shù)碼管顯示,,調(diào)用系統(tǒng)延時(shí)函數(shù)實(shí)現(xiàn)馬表的運(yùn)行;任務(wù)2為按鍵判斷,,屬于中斷級(jí)任務(wù),,通過(guò)按鍵啟動(dòng)/停止/重置馬表。數(shù)碼管顯示和按鍵判斷任務(wù)之間用信號(hào)量實(shí)現(xiàn)通信,;其中按鍵任務(wù)發(fā)出信號(hào)量,,數(shù)碼管顯示任務(wù)負(fù)責(zé)接收信號(hào)量。程序流程如圖4所示,。部分程序清單如下:
主程序
任務(wù)1
任務(wù)2
圖4 程序流程圖
2.3 系統(tǒng)聯(lián)調(diào)
在Proteus硬件電路圖和Keil C程序設(shè)計(jì)完成之后,,接著進(jìn)行聯(lián)合仿真。此時(shí)需要對(duì)Proteus和Keil兩個(gè)軟件進(jìn)行簡(jiǎn)單的配置,,具體配置過(guò)程見(jiàn)參考文獻(xiàn)\[2\],。同時(shí)打開(kāi)電路仿真圖和C工程文件,在Keil中啟動(dòng)調(diào)試“DebugStart/Stop Debug Session”,,并運(yùn)行DebugGo,,此時(shí)Proteus仿真被Keil啟動(dòng),在Keil和Proteus中都可以觀察運(yùn)行狀態(tài),。程序運(yùn)行后,,可看到數(shù)碼管顯示情況,當(dāng)按下按鍵,,數(shù)碼管顯示作相應(yīng)切換,。
結(jié)語(yǔ)
基于Proteus電路設(shè)計(jì)、Keil程序設(shè)計(jì)以及它們聯(lián)合仿真調(diào)試的方法,,建立了單片機(jī)系統(tǒng)硬件設(shè)計(jì),、軟件設(shè)計(jì)以及調(diào)試的全虛擬環(huán)境,使得全部的設(shè)計(jì)工作基于PC就能完成,,顯著提高了設(shè)計(jì)開(kāi)發(fā)效率,,降低開(kāi)發(fā)風(fēng)險(xiǎn),,這對(duì)嵌入式方案設(shè)計(jì)無(wú)疑是一個(gè)很好的思路,。
參考文獻(xiàn)
[1] 陳是知.μC/OSII內(nèi)核分析、移植與驅(qū)動(dòng)程序開(kāi)發(fā)[M].北京:人民郵電出版社,,2007.
[2] 張靖武,,周靈彬.單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真[M].北京:電子工業(yè)出版社,2007.