用容柵作為傳感器的數(shù)顯量具,它的數(shù)據(jù)處理部分是一個模塊,模塊上設(shè)置了一個串行接口,用此接口和單片機連接可以對其功能進行擴展,如增加某些控制功能,或用此模塊開發(fā)自己的長度測量或控制儀器。本文以BJ200卡尺模塊為例給出它與51單片機的接口電路和接口程序。引腳: 圖1 、數(shù)顯模塊引腳圖圖1示出了接口的相對位置,1為負(fù)1.5V;2為數(shù)據(jù)信號;3為同步信號;4為0V,即接地端。如果不使用電池,而采用穩(wěn)壓電源,可將電源電壓提高為1.8~2.0V,以提高其抗干擾能力。數(shù)據(jù)格式: 串行口的數(shù)據(jù)是二進制碼,約0.2秒輸出一次,每次輸出兩組數(shù)據(jù),第一組為絕對相移,不受人工控制,對測量沒有意義,第二組為相對相移,是相對于零位置的相移,即是我們所要采集的數(shù)據(jù)。一組數(shù)據(jù)24位,低位在前,高位在后,最后一位是符號位。最后一位為“1”表示數(shù)據(jù)為負(fù)數(shù),以補碼輸出,為“0”表示數(shù)據(jù)為正數(shù),以原碼輸出。若用D作為此數(shù)據(jù)的十進制表示,則最終測得的位移量“l(fā)”可表示如下:
與8051接口: 信號電平轉(zhuǎn)換電路: 電路見圖2。由于模塊使用負(fù)2V電源,所以它的輸出信號需經(jīng)過轉(zhuǎn)換才能和8051相容。R2、Q2、U1D和U1E對數(shù)據(jù)信號進行變換,輸出用DATA表示;R1、Q1和U1A對同步信號進行變換,輸出用CLK表示;CLK后面的電路用來給單片機提供一個中斷信號,信號未傳送時,INT信號為低電平,信號傳送期間,由于R3、C1積分電路的作用,INT保持高電平,信號傳送完畢,INT又回到低電平,單片機設(shè)為脈沖中斷方式,檢測到這個脈沖下降沿即轉(zhuǎn)入中斷服務(wù)程序,從串行口讀入數(shù)據(jù)。與8051接口電路: 電路見圖3,其中DATA、CLK、INT各端分別和圖2中同名端口相連。MC14053是3刀雙擲模擬開關(guān),我們選用其中一組;MC14557是長達(dá)64位的可變移位寄存器,移位位數(shù)由L1、L2、L4、L8、L16、L32的接法決定,在此接成24位((16 4 2 1) 1=24),其輸出端接到8051的串行口。8051復(fù)位后,P1.7置0,MC14557的時鐘端接至模塊同步信號CLK。數(shù)據(jù)傳送完畢,INT產(chǎn)生負(fù)跳變,單片機轉(zhuǎn)入中斷服務(wù)程序,將P1.7置1,MC14557時鐘端接至8051的串行時鐘,程序分三次將24位數(shù)據(jù)讀入單片機,數(shù)據(jù)通信任務(wù)完成。此后,即可對數(shù)據(jù)進行各種加工處理,達(dá)到工作要求。編程: 為了和以上電路配合,程序中先將P1.7置0,主程序中開放外中斷,中斷方式設(shè)為脈沖方式。8051采用串行通信方式0從MC14557讀取數(shù)據(jù),一次讀取8位,需三次讀完24位。程序中用到R0、R1寄存器,數(shù)據(jù)讀入后按高位在前的順序存入30H、31H、32H單元,即30H的最高位為符號位?!?------------開始----------------CLR P1.7 ;MC14557時鐘接到模塊同步信號MOV IE, #81H ;開放外中斷0SETB IT0 ;中斷方式置為脈沖方式;以下為數(shù)據(jù)接收子程序: MOV IE, #00H ;禁止中斷MOV SCON,#00H ;串行通信方式0SETB P1.7 ;將MC14557的時鐘轉(zhuǎn)為CPU控制MOV R0,#32HMOV R1,#03H ;分三次讀取數(shù)據(jù)L0:SETB REN ;開始接收數(shù)據(jù)JNB RI,$MOV A,SBUF ;數(shù)據(jù)從緩沖區(qū)移至RAM單元MOV @R0,ACLR RIDEC R0DJNZ R1,L0CLR P1.7 ;MC14557時鐘轉(zhuǎn)換到CLKRET除了本例所用的串行讀取數(shù)據(jù)方式以外,還可以使用串入并出寄存器將模塊輸出的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),再讀入單片機。此接口電路已用于筆者設(shè)計的數(shù)顯測厚儀,用來測量光學(xué)玻璃元件的厚度。在這個儀器中,筆者利用采集的數(shù)據(jù)添加了公差輸入、絕對/相對測量方式轉(zhuǎn)換、超差報警等功能,以滿足用戶的要求。