李 麗
(太原工業(yè)學(xué)院 計(jì)算機(jī)工程系,山西 太原 030008)
Proteus是英國(guó)Labcenter electronics公司研發(fā)的用于電路分析與實(shí)物仿真、印制電路板設(shè)計(jì)的軟件,它支持Windows 操作系統(tǒng),是目前世界上唯一將電路仿真、虛擬模型仿真、PCB設(shè)計(jì)合為一體的EDA軟件[1].Proteus提供了很多種虛擬仿真模型,例如: VSM for ARM7/LPC2000、VSM for 805l、 VSM for AVR等.2009年推出的Proteus 7.5版本更增加了VSM for 8086仿真模型,使8086/8088微處理器、并行接口芯片8255A、定時(shí)計(jì)數(shù)器8253、中斷控制器8259、串行接口8251等芯片的仿真運(yùn)行得以實(shí)現(xiàn)[2].一直以來(lái),Proteus都以其強(qiáng)大的功能、方便的操作,備受廣大電子設(shè)計(jì)者的青睞.
隨著科技的進(jìn)步和城市建設(shè)的發(fā)展,人們對(duì)城市亮化的要求也越來(lái)越高,單一的路燈照亮,已經(jīng)不能滿足人們的需要,人們希望有絢麗多彩的城市夜景,遇到喜事也喜歡“張燈結(jié)彩”.所以我們的周圍有各種各樣的裝飾彩燈,那些炫目的燈光效果,實(shí)際上都是在微控制器的控制下實(shí)現(xiàn)的多樣流水燈效果[3].本文就介紹了在Proteus仿真環(huán)境下,以INTEL8086微處理器為核心,利用并行接口芯片8255控制LED花樣流水燈的電路設(shè)計(jì)與實(shí)現(xiàn).經(jīng)仿真調(diào)試,運(yùn)行效果良好,且后期經(jīng)過(guò)簡(jiǎn)單的代碼修改,亦可擴(kuò)展出更多燈光效果.
電路主要由8086微處理器、地址譯碼電路、8255驅(qū)動(dòng)電路、按鈕輸入、LED流水燈顯示電路和狀態(tài)顯示電路構(gòu)成.電路設(shè)計(jì)框架圖如圖1所示.
圖1 花樣流水燈電路設(shè)計(jì)框架圖
硬件設(shè)計(jì)思路為:在微處理器8086的控制下驅(qū)動(dòng)并行接口8255實(shí)現(xiàn)花樣流水燈效果,其中,8255具體負(fù)責(zé)接收按鈕輸入、流水燈的顯示和狀態(tài)顯示功能.當(dāng)用戶每按下一次按鈕就切換一種流水燈效果,并顯示當(dāng)前狀態(tài)號(hào).考慮到實(shí)效性,用戶按鈕輸入以中斷請(qǐng)求的方式提交給CPU.
電路所需元器件列表如表1所示.
表1 元器件清單
系統(tǒng)具體電路連接則如圖 2 所示.
圖2 花樣流水燈硬件電路連接圖
表2 燈光效果與狀態(tài)號(hào)對(duì)應(yīng)表
軟件設(shè)計(jì)部分利用EMU8086仿真系統(tǒng)實(shí)現(xiàn)匯編語(yǔ)言程序的編寫和編譯.
系統(tǒng)控制程序采用程序段CODE和數(shù)據(jù)段DATA兩段結(jié)構(gòu).?dāng)?shù)據(jù)段定義了按鈕計(jì)數(shù)變量NUM,五種燈光效果的初始狀態(tài)變量S0(0),S1(FFH),S2(01H),S3(80H),S4(55H)以及7段數(shù)碼管0-9的字形碼表DIGITALDISP.程序段包括MAIN主程序、INTPROC中斷服務(wù)子程序、多個(gè)流水燈控制子程序(MODE2-MODE5)、DIGITALDISP數(shù)碼管顯示子程序和DELAY延時(shí)子程序.主程序控制流程如圖3所示.
圖3 主程序流程圖
圖4 中斷服務(wù)子程序流程圖
主程序的主要任務(wù)是完成中斷類型號(hào)的設(shè)置和初始化8255A,然后循環(huán)等待即可.如果用戶點(diǎn)擊了按鈕,即觸發(fā)了不可屏蔽中斷,CPU執(zhí)行中斷服務(wù)子程序,該程序流程如圖4所示.服務(wù)子程序?qū)Π存I次數(shù)計(jì)數(shù),并根據(jù)按鍵值轉(zhuǎn)入數(shù)碼管顯示子程序和不同的燈光控制子程序,控制實(shí)現(xiàn)不同的流水燈效果.程序中共給出了6種燈光控制,當(dāng)按鍵值大于5時(shí),清零重新開(kāi)始循環(huán)判斷.?dāng)?shù)碼管顯示子程序較簡(jiǎn)單,按照按鍵值查字形碼表B口輸出即可.多個(gè)燈光控制子程序結(jié)構(gòu)相似,但燈光控制不同,以單燈順時(shí)針流水顯示為例,其實(shí)現(xiàn)代碼如下:
MODE2 PROC NEAR
MOV AL,S2;對(duì)8255A的A口送狀態(tài)2
MOV DX,IO3
NEXT2: OUT DX,AL
CALL DELAY; 軟件延時(shí)0.5秒
ROL AL,1
CMP NUM,2
JZ NEXT2
RET
MODE2 ENDP
如果需要更多流水燈效果,只需要添加相應(yīng)控制子程序,并在中斷服務(wù)子程序中,對(duì)計(jì)數(shù)判斷稍作修改即可.
Proteus支持多種外部編譯器,如:EMU8086,MASM32,TASM等,添加相應(yīng)的編譯器.加載源程序成功即可進(jìn)行仿真調(diào)試,特別應(yīng)該注意修改CPU的Internal Memory Size和Program Loading Segment參數(shù)為合適大小[5],否則,調(diào)試無(wú)法進(jìn)行.系統(tǒng)仿真調(diào)試界面如圖5所示.
圖5 系統(tǒng)仿真調(diào)試界面圖
本系統(tǒng)以8086為核心,在Proteus平臺(tái)聯(lián)合EMU8086編譯器仿真運(yùn)行.設(shè)計(jì)中利用按鈕產(chǎn)生NMI中斷請(qǐng)求,使CUP必響應(yīng)每次中斷,執(zhí)行中斷服務(wù)程序,驅(qū)動(dòng)可編程并行接口芯片8255A實(shí)現(xiàn)花樣流水燈效果.仿真結(jié)果表明:系統(tǒng)運(yùn)行效果良好,代碼可擴(kuò)展性強(qiáng),具有一定實(shí)用價(jià)值.將其作為《微機(jī)原理與接口技術(shù)》的典型案例,應(yīng)用于的實(shí)踐教學(xué)中,亦能起到了不錯(cuò)的效果.