高 林
(湖北民族學院 信息工程學院,湖北 恩施 445000)
微機原理課程和單片機原理課程在電子、電氣和自動化等專業(yè)中廣泛的開設。微機原理課程偏向于原理性的介紹,涉及的實驗比較簡單;而單片機原理課程則偏向于應用性,涉及的實驗較多。這兩門課程的實驗過程、使用的芯片及編程的方式非常類似[1]。正是由于這種相似性,國內有學者便主張將這兩門課合并[2]。但這兩門課程不管是合并處理還是單獨開設,傳統(tǒng)的教學都是通過一定的理論教學課加上有限的實驗教學課進行的[3]。實驗課上所使用的實驗儀器設備存在硬件電路固定、學生不能更改、實驗內容固定等方面的局限性。
為了解決傳統(tǒng)教學存在的問題,有必要采用先進的教學手段和教學方法提高教學質量[4]。Proteus是一款已經廣泛應用于單片機教學和仿真實驗[5]的軟件,并且已經開發(fā)出基于Proteus的單片機仿真實驗系統(tǒng)[6]。自從Proteus 7.5 SP3軟件支持8086微處理器與8255、8253、8259、8251等接口芯片的系統(tǒng)仿真后[7],它在微機原理教學中的應用也逐漸增多,但是Proteus在多門課程中的綜合應用卻鮮有報道。因此,需要設計出一個基于Proteus的單片機與微機原理綜合仿真系統(tǒng),以同時提升這兩門課程的教學效果。
本文以Proteus 7.5 SP3以上版本軟件為平臺,結合微機原理和單片機原理兩門課程所涉及的教學內容和學校現(xiàn)有實驗平臺的電路結構,設計出一個綜合仿真系統(tǒng)。該系統(tǒng)總體框圖如圖1所示。

圖1 系統(tǒng)總體框圖
整個系統(tǒng)的核心是AT89C51單片機和8086最小模式系統(tǒng)。如果外圍電路較少,單片機引腳夠用,則P0—P3口工作在通用I/O口方式,否則,P0—P3口工作在三總線(即地址總線、數(shù)據(jù)總線和控制總線)方式[8]。8086微處理器則工作在最小模式,還包括3片74LS373作為地址鎖存器[9]。
在外圍配有其他主要電路模塊。
(1) 人機交互界面。以16×16點陣、發(fā)光二極管、數(shù)碼管顯示和液晶顯示器為輸出設備,其中前三者需要通過I/O接口與系統(tǒng)核心相連,I/O接口既可以是基本I/O并口芯片(如8位鎖存器等),也可以是可編程并口芯片(如8255等)。另外,系統(tǒng)以獨立式鍵盤和4×4矩陣式鍵盤為輸入設備。
(2) 常用接口電路。包括串口擴展芯片8251、并口擴展芯片8255、基本I/O并口擴展芯片、定時/計數(shù)器8253、8位A/D轉換器ADC0808、8位D/A轉換器DAC0832等。由于Proteus的局限性,微機原理課程中常見的DMA控制器8237等不能仿真[10]。
(3) 通信電路模塊。主要是RS-232串行總線、I2C總線等,用于模擬與PC機、其他單片機或串行設備的數(shù)據(jù)交換。8086必須經過串口擴展芯片8251才能與外設進行串行通信,而AT89C51則自帶串口。
當系統(tǒng)設計出來以后,直接引入到微機原理課程和單片機原理課程的實際教學中。不但能使學生很好地掌握流行的編譯器和仿真平臺,還能有效地訓練學生繪制電路原理圖、PCB圖及電路仿真的能力[11]。由于Proteus本身未提供8086編譯器,微機原理課程采用EMU8086軟件進行匯編語言源程序的編寫和編譯[12]。而單片機程序編制則采用Keil C軟件和C51語言[13]。本文以“8086與AT89C51串行通信實驗”為例說明該系統(tǒng)的應用方法和仿真過程。
AT89C51單片機以1602液晶顯示器為輸出設備,以4×4矩陣式鍵盤為輸入設備。8086最小模式系統(tǒng)用8251擴展串口,以8255擴展出的并口作為段碼鎖存器和位碼鎖存器,使6個數(shù)碼管構成顯示器。AT89C51單片機通過自身串口,經由8251再與8086微處理器進行數(shù)據(jù)交換。該實驗原理如圖2所示。

圖2 實驗原理框圖
實驗要求每按下一個鍵,將鍵值(以0—F的ASCII碼形式表示)通過單片機串口輸出,經過8251送入8086中,然后將其顯示在數(shù)碼顯示器上(顯示格式“X-YYH”,X為字符,YY為ASCII碼值的十六進制表示),并且將接收的字符又回送給單片機,最后單片機將其顯示在1602液晶顯示器上。
該實驗電路從綜合仿真系統(tǒng)中選擇7個電路模塊組成,每個模塊功能如下:
(1) AT89C51單片機:單片機晶振頻率為11.059 2 MHz。由于外圍電路不多,工作在通用I/O口方式,P0口接1602液晶顯示器D0—D7,P2口連接鍵盤,串口及液晶控制線位于P3口;
(2) 1602液晶顯示:將單片機接收的字符以2行16列、從左向右的方式顯示出來;
(3) 4×4矩陣式鍵盤:4根行線接P2口低四位,4根列線接P2口高四位,單片機采用行掃描法讀取鍵值;
(4) 8086最小模式系統(tǒng):通過地址鎖存器及74LS138譯碼器產生地址信號選址8255和8251芯片,通過數(shù)據(jù)總線與外界交換數(shù)據(jù),控制信號主要是ALE和讀/寫信號輸出;
(5) 串口擴展芯片8251:擴展8086的串口功能,其串行輸出TXD和串行輸入RXD與單片機串口交叉互連,而且串口接收和發(fā)生時鐘RXC/TXC接153.6 kHz的時鐘信號,保證串行波特率與單片機一致;
(6) 并口擴展芯片8255:PA口作為數(shù)碼顯示的段碼鎖存,PB口控制位碼鎖存,外接74LS244的目的是提高驅動能力,保證數(shù)碼顯示足夠的亮度;
(7) 數(shù)碼管顯示:6個共陽極數(shù)碼管并排放置,8根段選線共用,位選線為6根。
AT89C51單片機和8086微處理器的主程序流程如圖3所示。其中單片機串口設置為方式1,定時器T1作為波特率發(fā)生器,波特率為9 600。串行數(shù)據(jù)發(fā)送采用的是查詢方式(查詢發(fā)送中斷標志TI),串行接收采用中斷方式。8086微處理器將8255設為方式0輸出,8251設為8位異步串行通信,波特率因子為16,波特率為9 600,進行查詢式輸入(查詢接收準備好標志RXRDY)和無條件輸出。
首先在Proteus中完成電路原理圖設計,然后在Keil C軟件中完成單片機的編程,將生成的HEX文件裝載到AT89C51中作為程序文件(Program File)。接著在EMU8086軟件中進行8086匯編語言程序的編寫和編譯,生成的EXE文件作為8086的程序文件。最后點擊Proteus 軟件的運行按鈕,就會按照加載進去的程序進行仿真[14]。其仿真結果如圖4所示,圖中數(shù)碼管上顯示的是最后一個接收到的字符及其ASCII碼值,1602液晶顯示器上顯示的是8086回送給單片機的字符,此刻鍵盤所按下的鍵正好是“E”。

圖3 主程序流程圖

圖4 仿真結果圖
上述應用實例表明,不管微機原理和單片機原理課程是合并還是分開設置,該綜合仿真系統(tǒng)都能夠幫助教師更好地完成教學,并且培養(yǎng)學生的實踐動手能力。該系統(tǒng)應用于理論教學可提高課堂的互動性,有利于學生理解相關基礎知識;應用于實驗教學,有利于學生理解相關電路和編寫程序;應用于課程設計、畢業(yè)設計,則可以加強學生的工程項目設計能力,提高系統(tǒng)開發(fā)的效率。
[1] 趙晚昭,周柳娜,趙晚春,等.微機原理及單片機課程改革淺談[J].物聯(lián)網技術,2012(7):74-76.
[2] 蔡述庭,劉銀萍,謝云,等.微機原理及單片機技術課程教學改革研究[J].實驗科學與技術,2011,9(5):70-72.
[3] 李現(xiàn)國,張艷.Proteus仿真在微機原理及接口技術教學中的應用[J].實驗技術與管理,2010,27(12):125-127.
[4] 謝國強.基于Proteus的《單片機接口技術》仿真教學應用[J].軟件導刊,2013,12(5):105-106.
[5] 吉向東,李新鄂.基于Proteus的微機原理實驗仿真[J].信息技術,2010(2):36-39,44.
[6] 吳政南,程遠勝.基于Proteus的單片機仿真實驗系統(tǒng)設計與應用[J].計算機與數(shù)字工程,2011,39(11):175-177,192.
[7] 陳越,顧暉,梁惺彥.Proteus虛擬仿真在微機原理教學中的應用[J].電子技術應用,2012,38(1):106-108.
[8] 丁元杰.單片微機原理及應用[M].北京:機械工業(yè)出版社,2005.
[9] 周荷琴,吳秀清.微型計算機原理與接口技術[M].合肥:中國科學技術大學出版社,2008.
[10] 田社平,俞水鋒,方向忠,等.Proteus在微機原理課程教學中的應用[J].電氣電子教學學報,2011,33(5):70-72.
[11] 曲貴波,喬爽,吳東艷,等.Proteus仿真軟件在單片機課程教學中的應用[J].林區(qū)教學,2013(2):73-74.
[12] 楊杜,趙文進.基于Proteus仿真軟件的“微機原理與接口技術”實驗教學的研究[J].電腦知識與技術,2012,8(36):8730-8732.
[13] 趙月靜,陳繼榮,張永弟.單片機原理及應用課程創(chuàng)新實踐教學改革[J].實驗技術與管理,2013,30(1):176-179.
[14] 陳令榮.仿真軟件在單片機教學中的應用[J].計算機光盤軟件與應用,2013(3):247-248.