



摘要:針對微機原理與接口技術課程傳統實驗教學中存在的問題,引入基于Proteus的虛擬仿真工具。通過4x4的16位矩陣鍵盤和一個7段數碼管構成的輸入顯示實例,介紹在Proteus中仿真設計8086硬件電路原理圖和軟件的方法。
關鍵詞:Proteus;EMU8086;微機原理與接口技術;仿真實驗
0 引 言
微機原理與接口技術是我國高校工科電類專業的重要專業基礎課,是培養學生具有微機軟、硬件設計與應用能力及工程意識和工程素養的必修課,也是學生今后從事智能控制和微機開發的重要入門課程,其教學質量的好壞,直接影響學生的就業。該課程內容主要包含匯編編程和接口兩大部分,理論性和實踐性都很強且很抽象,特別是接口部分,不同芯片的引腳數目多,工作方式也較復雜,學生需通過親自動手實驗才能理解和掌握。目前普通高校的很多學生感覺該課程較難學習,對接口芯片缺乏感性認識,面對實驗設備望而生畏,對具體的實驗或項目不知如何下手。另外,由于硬件實驗設備所固有的結構固定、資源有限、高成本、高損耗、低壽命等缺點,使部分學校實驗設備不足。因此,如何改善實驗環境,激發學生學習興趣,提高教學效果,是該課程實驗教學改革中的一個重要課題。
1 Proteus+EMU8086仿真實驗平臺
Proteus是英國Labcenter electronics公司研發的多功能EDA軟件,由原理圖編輯與仿真軟件包ISIS和布線編輯軟件包ARES兩部分組成,是目前唯一能將電路仿真、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,Proteus7.5 SP3以上版本新增對8086 CPU及相關接口芯片的仿真功能;另外,Proteus還提供有示波器、交直流電壓/電流表、邏輯分析儀、信號發生器、虛擬終端等很多虛擬儀器,是一個全開放性的仿真實驗平臺,相當于一個設備齊全的綜合實驗室,筆者使用的是Proteus7.8軟件。
對于8086,Proteus本身未對其提供編譯器,需通過外部添加,將編寫好的源程序加入工程,然后編譯并生成可執行程序后完成。筆者介紹的內容通過外加EMU8086編譯器實現。EMU8086將文本編輯器、編譯器、反編譯器、真調試、虛擬設備和驅動器集成為一體,是一個可在Windows環境下運行的8086 CPU匯編真軟件。
2 Proteus仿真8086 CPU性設置
8086 CPU有最大和最小兩種工作模式,Proteus仿真8086僅支持最小模式,因為Proteus本身沒有給8086提供編譯器和內存貯器,所以需要做一些設置,如8086的時鐘、內存的起始地址和大小、外部程序加載到內存的地址段等。圖1是Proteus為8086 CPU設置屬性的界面。
Proteus為8086設定的時鐘頻率默認是IMHz;要加載到模型內部存儲器中的程序文件只能是擴展名為.bin或是與DOS兼容的.com或.exe文件;指定外部程序加載到內存中的起始地址為OOOOOH,程序下載到內存的起始地址為OOOOH,仿真內存儲區大小為10000H,用戶也可以通過編輯元件對話框對8086的這些屬性進行修改。
3 Proteus仿真實例
3.1 功能描述
通過16個button構成4x4的16位矩陣鍵盤和一個7段數碼管構成的簡單輸入顯示系統,實現矩陣鍵盤的輸入與數碼管的顯示相對應。即16(0-15)個鍵盤的輸入對應在數碼管上顯示16進制數中的O-F這16個數字符號。
3.2 原理圖設計
3.2.1 8086最小模式默認電路
在Protcus仿真8086最小模式電路中,RESET固定接低電平表示不復位,READY固定接高電平表示外部設備始終就緒,▅固定接高電平表示采用最小模式;其他AD[0-15]、A[16-19]、ALE、▆、▄ 、▅等信號直接引出,以用于擴展使用。
3.2.2 原理圖設計
4x4鍵盤原理圖設計主要包含CPU、鍵盤電路、顯示電路三大模塊,如圖2所示,其中CPU模塊由8086 CPU、兩片地址鎖存器74HC373邏輯和一片74HC138譯碼電路構成;鍵盤電路4x4的矩陣鍵盤實現按鍵輸入,由C口的低四位和高四位分別連接4x4鍵盤的行、列信號線實現;顯示模塊由7段數碼管構成,數碼管采用靜態共陰接法。74LS138的4個引腳El、C、B、A分別與其中一片74HC373輸出的A15、A14、 A13、A12相連,8255A的CS與74LS138的Yo相連。這樣,所形成的8255A的4個端口地址就分別為:8000H、8002H、8004H、8006Hn
8086CPU的外部數據總線為16條,其中數據總線的低8位總對應一個偶地址,高8位總塒應一個奇地址。在8255A和8086 CPU相連時,若將8255A的數據線D7~Do接到8086CPU數據總線低8位上時,從CPU角度看,要求8255A的端口地址應為偶地址,這樣才能保訌E對8255A的端口讀/寫能在一個總線周期內完成;故將8255A的A1和Ao分別與8086數據總線的A2和A1對應相連,而將8086地址總線的A0總設為0。Proteus也遵從這樣的規定,所以,所形成的8255A的端口地址為4個相鄰的偶地址。
3.3 軟件設計
8255A的初始化方式控制字為88H(A口方式0輸出,PCO-PC3方式O輸出,PC4-PC7方式0輸入)。
程序整體上采用查詢傳送方式,通過不斷掃描鍵盤、讀取鍵碼、換算鍵值,最終通過顯示模塊讀出結果,如果讀出的鍵碼非法,則重新掃描。在源程序中,行號存放于BX中,按鍵掃描時,若BX=O,表示掃描第一行,第一行輸出低電平(PCo置0);行值存放于AL的低四位,列值存放于AL的高四位,讀出列值后若都為高電平,則表明無鍵按下;若其中有低電平時,再比較判斷其為AL的高四位(用3、2、1、0值代替)中的哪一位,判斷出是哪一位后,再將AL置為對應位的值(即為列號);將BX+I后的結果值回送BX,繼續掃描下一行,依此類推,掃描16個按鍵。
源程序中的鍵值定義如下:
TABLE DB OCOH,OF9H,OA4H,OBOH,99H,92H,82H,OF8H,80H,90H,88H,83H,OC6H
OAIH,86H,8EH……;0-F間的16個16進制數字
TABLE變量的偏移地址存放于DI中,通過行列號計算得出鍵值。鍵值的計算方法為:鍵值=行號(在BL中)×4+列號(在AL中)。最后將鍵值送給BL,將[DI]所指向的內容與BL內容相加后的值賦給寄存器AL,然后通過8255A的A口輸出在數碼管上對應顯示鍵值。
3.4 仿真調試與運行
在Proteus中通過“Build ALL”匯編、連接生成可執行文件后,再點擊窗口左下角的運行按鈕,系統進入仿真狀態。當按下某一按鍵時,7段數碼管顯示其對應的16進制形式的按鍵值。圖3和圖4為分別按下“0”鍵和“F”鍵時的對應顯示結果仿真圖。
4 教學實踐經驗與體會
通過教學實踐,在微機原理與接口技術課程中引入Proteus仿真實驗可帶來以下好處。
(1) Proteus操作簡單,使用和調試都很方便。在Proteus中設計的原理圖可以自由分配接口芯片的端口地址,這能很好地克服實物實驗箱結構固定、資源有限的缺點,讓學生真正有做硬件的感覺,同時,所提供的示波器、邏輯分析儀、信號發生器等虛擬儀器可用于課程的相關應用中,便于開發一些實用系統。
(2)Proteus臺節節約成本,開放性好。Proteus不僅避免了實物實驗箱價格昂貴、易損壞等缺點,而且還克服了由于實物實驗箱是成品,學生很難參與其中的細節設計和擴展設計不足問題,學生可以不受任何時間和空間的限制,充分發揮自己的想象和思維,自己搭建硬件和編寫程序,進行綜合創新性設計。
(3) Proteus能提高教學效果并增強學生的實驗能力。通過Proteus,教師一方面可以在課堂上邊講解理論知識,邊進行實例演示,并針對性地展示各基本模塊的硬件連線和軟件控制方法,做到理論與實踐相結合,給學生以直觀的認知,啟發了學生的思維;另一方面,通過教學研究,可對知識點進行拆分和綜合,可以設計出基于Proteus仿真的實驗項目和綜合實訓課題。這些都能大大激發學生的學習熱情并加深對課程知識點的理解,還能容納一些新知識和內容,給教學實踐帶來很多新思路和方法,大大增強教學效果。
我們還應該認識到,Proteus畢竟是一個仿真軟件,通過其仿真實驗與在實物實驗箱上實現還是有差別的。實際電路運行時表現出的各種電氣特征由芯片、元器件、電路連線、運行環境等多種因素共同決定,而Proteus是通過軟件模擬這些電路特性的,其運行結果取決于仿真軟件的設計和PC機本身的運算速度等因素,而且,有一些芯片功能還不完善(譬如8259A中斷接口芯片)。因此,在Proteus環境下能正常運行的仿真系統,其電路設計在實際應用中未必能成功進行。在實際教學中,最好能將實物實驗與Proteus仿真實驗結合起來使用。