王 超
(昌吉學院物理系 新疆 昌吉 831100)
串口通信是指外設和計算機間,通過數據信號線、地線、控制線等,按位進行傳輸數據的一種通訊方式。就單片機來說,這種通信方式是實現與PC機、智能儀器儀表連接的重要手段,常見的通信標準有RS232和RS485,其中RS232有三線制接法和九線制接法,RS-485接口則是采用平衡驅動器和差分接收器的組合,抗噪聲干擾性好,這兩種方式因接線簡單,通信協議靈活而得到廣泛的應用[1-2]。
Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件,它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前比較好的仿真單片機及外圍器件的工具,是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺[3-4]。
通常情況下,虛擬仿真系統是不能與物理環(huán)境交互通信的,但是Proteus虛擬系統模擬了這種功能,它使Proteus仿真環(huán)境下的系統能與實際的物理環(huán)境直接交互,Proteus的COMPIM組件是一種串行接口組件,當由CPU或UART軟件生成的數字信號出現在PC物理COM接口時,它能緩沖所接收的數據,并將它們以數字信號的形式發(fā)送給Proteus仿真電路,如果不使用物理串口而使用虛擬串口,使用串口調試助手軟件能與Proteus單片機串口直接交互,此時需要安裝虛擬串口驅動軟件VSPD。
選用AT89C52型號單片機,運行在PC機中的串口調試軟件,實現單片機與PC機雙向通信。
2.1.1 安裝虛擬串口驅動程序VSPD并運行
在First port中選擇COM3,在Second port中選擇COM4,單擊“Add Pair”按鈕,這兩個端口立即出現在左邊的Virtual Ports分支下,且用藍色虛線將它們連接起來,在PC的設備管理器中,也會出現兩個串口的顯示[5-6]。如圖1所示。
圖1 虛擬串口驅動軟件
2.1.2 單片機與PC機串口通信硬件電路
在Proteus中,在元件庫中選取AT89C52、數碼管、COMPIM組件和虛擬終端等,將串口中的COM3分配給COMPIM使用,COM4分配給串口助手使用,COM3和COM4已經通過虛擬串口驅動程序VSPD連接,第一個虛擬終端的RXD端接單片機的P3.0引腳,第二個虛擬終端的RXD端接單片機的P3.1TXD引腳,數碼管ABCDEFGDP口連接單片機的段選P0.0-0.7,1234口連接單片機的位選P2.0-P2.3,用按鈕K1模擬外部中斷,向PC機發(fā)送字符串,單片機時鐘頻率為11.0592MHz,如圖2所示。
圖2 單片機與PC機通信硬件電路
軟件部分由主程序和中斷程序組成,用C51程序編寫,中斷部分包括串口接收中斷函數和外部中斷發(fā)送字符串函數。采用定時器T1,工作在方式2(8位自動裝載),串口工作在方式1。
2.3.1 C51代碼級調試
在源代碼級調試C51程序,需要先把C51語言編譯成OMF51格式的可執(zhí)行文件,也就是絕對目標文件,OMF51格式的文件包含所有的指令和調試信息,允許實現全速、單步、設置斷點、觀察變量等調試功能,OM51格式是Keil所支持的。
2.3.2 Keil C與Proteus聯合調試
這種調試方式,可實現邊調試,邊修改程序,需要安裝Keil C和Proteus的連接文件vdmagdi.exe,進行相關的軟件設置后,切換到源代碼窗口,如圖3所示。
圖3 聯合調試窗口
聯合調試常見的方法有如下幾種:
(1)按F10和F11可單步運行,F11是單步運行鍵,F10是跳出函數鍵,兩者配合使用可有選擇性的進入函數,便于觀察函數的執(zhí)行過程。
(3)打開寄存器窗口、特殊寄存器窗口和內部存儲器窗口,可觀察的連續(xù)的數據變化,便于整體分析程序結果。
(4)斷點調試,該調試手段用于分析程序進入中斷函數的情況,這對調試含有中斷函數的程序非常重要,首先在中斷函數中設置斷點,打開外圍設備窗口,可以顯示I/O、定時器、中斷、串口等外圍設備的狀態(tài),在串口中斷函數receive_4_digit()interrupt 4中設置斷點,打開串行口狀態(tài)窗口,全速運行后,程序在主程序中循環(huán),通過串口助手工具發(fā)送“5678”時,主程序立刻轉入中斷服務程序,在串口狀態(tài)窗口中顯示出RI=1,SBUF=0x35,SCON=0x55,RB8=1,REN=1等數值,通過這些數據可直觀、準確觀察到串口中斷的執(zhí)行過程,非常方便的調試串口中斷程序。如圖4所示。
圖4 串口中斷調試過程
2.3.3 運行結果
打開仿真電路,全速運行后,在串口助手中發(fā)送數據“5678”,即PC機發(fā)送數據給單片機,按下K1,即單片機發(fā)送數據給PC機,運行結果的顯示采用了兩種方式,一是借助串口助手發(fā)送數據和接收數據,二是通過虛擬終端顯示發(fā)送的數據和接收數據,結果表明:兩者是一致的。如圖5所示。
圖5 調試運行結果
借助虛擬串口實現單片機與PC的雙向通信,傳輸可靠,成本低,仿真成功的電路可直接應用實際電路,有助于縮短開發(fā)周期,提高效率。
[1]杜樹春.基于Proteus和KeilC51的單片機設計與仿真[M].電子工業(yè)出版社,2012.
[2]路明,張海波.利用PC及RS_232串口實現遠程數據采集[J].微計算機信息,2011,27(2):107-108.
[3]劉磊.基于Proteus軟件仿真的單片機教學改革探索[J].大眾科技,2013,15(8):110-112.
[4]唐雨紅.基于Proteus的《單片機原理及應用》教學應用研究[J].江蘇教育學院學報,2013,29(1):33-34.
[5]陳海霞,徐智.基于PROTEUS的單片機串口通信的實例設計與仿真[J].科技信息,2011,(9):458-459.
[6]陳軍.基于proteus的串口通信系統仿真設計[J].自動化與儀器儀表,2012,(4):51-53.