摘 要: 描述了基于RS232接口的GPIB控制器的設(shè)計,,利用單片機控制GPIB接口芯片" title="接口芯片">接口芯片NAT9914,并通過SCPI語句在Windows操作系統(tǒng)自帶的串口" title="串口">串口通信工具超級終端中,,實現(xiàn)了計算機與GPIB儀器的通信與程控,。
關(guān)鍵詞: 單片機 GPIB SCPI 超級終端
越來越多的測量儀器提供GPIB(General Purpose Interface Bus)總線接口,,通過該總線可以方便快捷地連接帶有GPIB接口的儀器及計算機,組成一個GPIB網(wǎng)絡(luò),。GPIB設(shè)備與計算機連接時,,需要借助GPIB接口板卡,但這些GPIB接口板卡價格昂貴,,給儀器與計算機連接帶來不便,。在大多數(shù)情況下計算機只連接一臺GPIB接口儀器,并不需要這些功能復(fù)雜價格昂貴的GPIB板卡,。面對單臺儀器與計算機連接的功能需求,,本文設(shè)計了一種性價比突出的RS232-GPIB控制器,該控制器利用計算機最常用的RS232接口,,控制帶有GPIB接口的儀器,,在計算機與儀器之間建立數(shù)據(jù)傳輸?shù)耐ǖ馈M瑫r,,支持SCPI(Standard Commands for Programmable Instrumentation) 指令集,,只需在Windows操作系統(tǒng)自帶的工具軟件超級終端中輸入SCPI指令,,便可方便地對儀器進(jìn)行參數(shù)設(shè)置和讀取測試結(jié)果。
RS232-GPIB控制器的設(shè)計,,旨在連接計算機和帶有GPIB接口的測量儀器,,并利用計算機的鍵盤和顯示器來操控儀器進(jìn)行程控測量。本設(shè)計中計算機端接口為RS232接口,,使用這個串口作為通信工具,,編程方便、連接簡單可靠,,軟件則采用Windows操作系統(tǒng)自帶的超級終端,。因此,可以很方便地完成計算機串口數(shù)據(jù)的接收和發(fā)送,,無需自行開發(fā)計算機端軟件,,節(jié)省了控制器的開發(fā)時間。所設(shè)計控制器的核心是單片機,,它一端連接計算機RS232串口,一端連接儀器GPIB接口,,單片機接收來自計算機超級終端的SCPI指令,,并轉(zhuǎn)發(fā)給帶有GPIB接口的儀器執(zhí)行。儀器執(zhí)行完成指令后將執(zhí)行結(jié)果發(fā)送給控制器,,控制器再將所收到的數(shù)據(jù)通過RS232串口傳遞給計算機,,在超級終端中顯示。
1 硬件設(shè)計
單片機是RS232-GPIB控制器的核心,,本設(shè)計選用ATEML公司的AT89C51" title="89C51">89C51單片機,。由于89C51應(yīng)用領(lǐng)域廣泛,擁有豐富的片上資源和總線式I/O口,,支持高級語言編程,,內(nèi)部集成了符合RS232數(shù)據(jù)規(guī)范的異步串行控制單元。因此,,使用Tx和Rx串行接口線與外部串行傳輸數(shù)據(jù),,只需在單片機外部使用MAX232芯片進(jìn)行電平轉(zhuǎn)換,便可直接連接計算機的串行端口(COM),??刂破鞯挠布Y(jié)構(gòu)如圖1所示,其中,,GPIB接口控制電路是控制器硬件設(shè)計的重點,。
需要指出的是:使用智能化的GPIB接口芯片,可以大大簡化GPIB接口電路的設(shè)計,。目前最常用的芯片有兩種,,一種以美國國家儀器公司生產(chǎn)的TNT4882芯片為代表,,將所有接口功能集成在芯片上,完全由硬件完成接口功能,,不需要其他輔助芯片,,并且直接連接GPIB總線;另一種是以美國德州儀器公司生產(chǎn)的TMS9914芯片為代表,,依靠軟件編程來完成GPIB接口功能,,由接口芯片SN75160和SN75161進(jìn)行電平轉(zhuǎn)換后連接GPIB總線。這二種芯片的比較如表1所示,??紤]到成本等因素,本設(shè)計選用與TMS9914芯片完全兼容的NAT9914芯片作為GPIB總線接口芯片,。NAT9914是一款標(biāo)準(zhǔn)的GPIB控制芯片,,可以執(zhí)行所有GPIB接口功能,具有直接存儲器存取(DMA)功能,,可編程時鐘和波特率,, 采用CMOS驅(qū)動,并兼容TTL電平,,因此使用極為方便,。同時,選用SN75160作為數(shù)據(jù)轉(zhuǎn)換器,,SN75162作為握手線和控制線轉(zhuǎn)換器,,與NAT9914配套使用,連接GPIB接口,。
在圖1中,,采用89C51的P0口連接NAT9914的數(shù)據(jù)接口,作為數(shù)據(jù)總線和GPIB進(jìn)行雙向數(shù)據(jù)交換,;P1的I/O口作為地址總線,,對NAT9914內(nèi)部寄存器尋址。NAT9914的中斷輸出連接在89C51的外部中斷" title="外部中斷">外部中斷接口上,,采用中斷觸發(fā)的方式管理GPIB接口通信,;NAT9914的時鐘信號一般采用獨立時鐘源。本設(shè)計中,,考慮到控制器的功能僅完成與單臺GPIB接口儀器之間的通信,,時鐘頻率的高低對GPIB接口數(shù)據(jù)傳輸速度影響基本可以忽略,因此直接使用89C51的ALE信號作為NAT9914時鐘信號,,這樣可以充分利用89C51的片上資源,,簡化電路,降低硬件成本,。
2 軟件設(shè)計
計算機端軟件采用超級終端,,用戶在超級終端中鍵入指令語句控制帶有GPIB接口的儀器,。因SCPI指令集提供一個無縫的控制界面,使其在更換不同公司的同類GPIB設(shè)備時,,不需要重新設(shè)定控制程序,,可方便地和不同廠商同類GPIB設(shè)備的操作編程。因此,,本設(shè)計選取對業(yè)界通用的SCPI指令集作為控制指令,,以便RS232-GPIB控制器可以和絕大多數(shù)GPIB接口儀器配合使用。
本設(shè)計中控制器軟件采用C51語言編寫,,編譯后燒錄在89C51單片機中運行,。軟件框架采用主程序" title="主程序">主程序加中斷調(diào)用方式,以提高功能模塊的內(nèi)聚性,。軟件功能分為RS232串口通信程序和GPIB接口通信程序兩部分,,分別和兩個中斷相關(guān):(1)串行通信中斷。該中斷負(fù)責(zé)RS232串口數(shù)據(jù)傳輸,。(2)接收NAT9914中斷信號的外部中斷,。該中斷處理來自GPIB接口數(shù)據(jù)通信的各種事件。主程序在完成全部初始化后進(jìn)入死循環(huán)狀態(tài),,等待這兩個中斷的發(fā)生,。其中,RS232串口數(shù)據(jù)發(fā)送在主程序中執(zhí)行,,而串口數(shù)據(jù)接收由串口中斷處理程序完成。串口通信程序較為簡單,,這里主要給出GPIB通信程序結(jié)構(gòu),。
NAT9914芯片開始工作之前需要對其進(jìn)行初始化,這部分代碼作為主程序中初始化程序的一部分運行,,包括設(shè)置ICR寄存器,、選擇時鐘信號頻率、設(shè)置GPIB延遲時間T1,、定義通信結(jié)束字符EOS,、設(shè)置GPIB設(shè)備地址(規(guī)定地址必須在0~30之間,如果寫入更大的地址,,則設(shè)備仍看作30),。初始化完成后將NAT9914接通GPIB總線。初始化流程如圖2所示,。
GPIB控制部分的代碼以中斷方式運行,,當(dāng)NAT9914觸發(fā)89C51芯片的外部中斷時,單片機中止正常工作,,將現(xiàn)場數(shù)據(jù)壓入堆棧保護(hù),,并調(diào)用外部中斷處理函數(shù),,響應(yīng)NAT9914芯片的中斷申請,其中斷處理程序流程如圖3所示,。引起NAT9914向單片機發(fā)出中斷信號的事件主要有四種:發(fā)送數(shù)據(jù)事件,、接收數(shù)據(jù)事件、接收GET命令事件和接收DCAS命令事件,。中斷頻繁時會影響主程序運行效率,,但考慮到所設(shè)計的轉(zhuǎn)換器功能單一,主程序基本處于空轉(zhuǎn)狀態(tài),,四種事件的處理都在中斷程序中完成,,因此,對主程序運行影響不大,。GPIB接收數(shù)據(jù)和發(fā)送數(shù)據(jù)流程如圖4和圖5所示,。
?
每次GPIB接口數(shù)據(jù)接收中,NAT9914接收到第一個字節(jié)數(shù)據(jù)后,,即置位寄存器ISR0中的BI位,,觸發(fā)單片機外部中斷,單片機進(jìn)入外部中斷處理程序后,,讀取ISR0寄存器,,判斷NAT9914觸發(fā)中斷的原因是接收數(shù)據(jù)事件后,調(diào)用接收數(shù)據(jù)子程序的執(zhí)行,,開始接收來自GPIB儀器的數(shù)據(jù),。
在主程序中,NAT9914發(fā)送完第一個字節(jié)數(shù)據(jù)后,,即置位寄存器ISR0中的BO位,,觸發(fā)單片機外部中斷。單片機進(jìn)入外部中斷處理程序后,,根據(jù)BO位判斷事件類型為發(fā)送數(shù)據(jù)事件,,則調(diào)用GPIB數(shù)據(jù)發(fā)送程序,將緩沖區(qū)中剩余的數(shù)據(jù)依次發(fā)送到GPIB總線上,。
3 運行情況及結(jié)果
本文設(shè)計的RS232-GPIB控制器已成功用于計算機和泰克TDS210型示波器的GPIB總線連接中,。圖6是計算機超級終端顯示界面的部分截圖,其中COMMAND:>為計算機鍵盤SCPI命令輸入提示符,,GPIB:>為GPIB連接設(shè)備的反饋信息輸出提示符,,表示后面的信息來自GPIB設(shè)備(即泰克TDS210型示波器)。
首先輸入的是查詢命令,,該類命令以‘,?’結(jié)尾,當(dāng)示波器收到查詢命令后,,會立即反饋相關(guān)查詢信息,。ID,?命令,查詢該示波器的品牌和型號信息,,示波器回復(fù)相關(guān)信息顯示在超級終端上,;CH1?命令,,查詢示波器1號通道的設(shè)置信息,;DATA?命令,,查詢示波器當(dāng)前使用通道信息以及采樣點數(shù)等信息,。
接著輸入控制命令,示波器收到該命令后,,執(zhí)行相應(yīng)的操作,,但并不將執(zhí)行結(jié)果反饋回來。如:LANG ENGL命令,,表示將示波器語言界面改為英文界面,;LANG JAPA命令,表示將修改界面為日語界面,。
參考文獻(xiàn)
1 NAT9914 Reference Manual.America, National Instruments Corporation,, 1995
2 Andrew Thomson Designing a GPIB Device Using the NAT9914.America, National Instruments Corporation,1998
3 TNT4882TM Programmer Reference Manual.America, National Instruments Corporation,,1995
4 袁海英. 基于以太網(wǎng)的GPIB控制器的設(shè)計和實現(xiàn). 測控技術(shù),2004,;(3)
5 王一鳴. GPIB芯片TNT4882在多路程控電源中的應(yīng)用.單片機與嵌入式系統(tǒng),2003;(6)
6 劉 景,賈伯年. MCS-51單片機與微機通用并行接口GPIB通訊的實現(xiàn)[J].微計算機信息,1996;(4)
7 王崇杰. 把打印口換成GPIB-488接口. 電子技術(shù)應(yīng)用,1996;(8)
8 王毅敏,高勇章. 用GPIB接口實現(xiàn)通用計數(shù)器的PC機程控.電測與儀器,1995;(3)
9王向周,白志大. μPD7210智能GPIB接口芯片及其接口驅(qū)動程序的C語言編程[J].微型機與應(yīng)用,1994;(6)
10 吳 昊, 固亞平. USB-GPIB控制器設(shè)計.測控技術(shù), 2004; (3)
11陳章龍, 韓 光. Motorola單片機接口技術(shù)手冊.上海:復(fù)旦大學(xué)出版社, 1993
12 方彥軍,孫 健.智能儀器技術(shù)及其應(yīng)用.北京:化學(xué)工業(yè)出版社,,2004