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