單片機接口技術(shù)_第1頁
單片機接口技術(shù)_第2頁
單片機接口技術(shù)_第3頁
單片機接口技術(shù)_第4頁
單片機接口技術(shù)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

MCS-51單片機接口技術(shù)前向通道接口技術(shù)后向通道接口技術(shù)人機通道接口技術(shù) 單片機與外圍單元的關(guān)系: 前向通道;后向通道;人機通道和相互通道。受控對象單片機系統(tǒng)操作員其它系統(tǒng)前向通道接口技術(shù) 前向通道的作用是采集被控對象的狀態(tài)信息,所采集的數(shù)據(jù)類型復(fù)雜,主要有:非電量數(shù)據(jù)強電信號 強度電量數(shù)據(jù)弱電信號模擬信號形式數(shù)字信號頻率信號 前向通道的主要工作: 信號變換: 非電信號到電信號,使用變換器(傳感器)。 強電信號到弱電信號,使用變送器或衰減器。 模擬信號到數(shù)字信號,使用A/D變換器。 信號調(diào)理: 濾波,非線性處理。 抗干擾: 信號隔離處理。

A/D變換器的使用:保持器1保持器2保持器n多路開關(guān)A/D8051P0通道選擇啟動轉(zhuǎn)換完成A/D轉(zhuǎn)換器接口A/D轉(zhuǎn)換器概述在設(shè)計A/D轉(zhuǎn)換器與單片機接口之前,往往要根據(jù)A/D轉(zhuǎn)換器的技術(shù)指標選擇A/D轉(zhuǎn)換器。為此,先介紹一下A/D轉(zhuǎn)換器的主要技術(shù)指標。量化間隔和量化誤差是A/D轉(zhuǎn)換器的主要技術(shù)指標之一。量化間隔可用下式表示。其中n為A/D轉(zhuǎn)換器的位數(shù)。量化誤差有兩種表示方法:一種是絕對誤差,另一種是相對誤差。

A/D轉(zhuǎn)換器芯片種類很多,按其轉(zhuǎn)換原理可分為逐次比較式、雙重積分式、量化反饋式和并行式A/D轉(zhuǎn)換器;按其分辨率可分為8~16位的A/D轉(zhuǎn)換器芯片。目前最常用的是逐次逼近式和雙重積分式。逐次逼近式轉(zhuǎn)換器的常用產(chǎn)品有ADC0801~ADC0805型8位MOS型A/D轉(zhuǎn)換器、ADC0808/0809型8位MOS型A/D轉(zhuǎn)換器、ADC0816/0817型8位MOS型A/D轉(zhuǎn)換器、AD574型快速12位A/D轉(zhuǎn)換器。雙重積分式轉(zhuǎn)換器的常用產(chǎn)品有ICL7106/ICL7107/ICL7126、MC14433/5G14433、ICL7135等。

A/D轉(zhuǎn)換器與單片機接口具有硬、軟件相依性。一般來說,A/D轉(zhuǎn)換器與單片機的接口主要考慮的是數(shù)字量輸出線的連接、ADC啟動方式、轉(zhuǎn)換結(jié)束信號處理方法以及時鐘的連接等。

一個ADC開始轉(zhuǎn)換時,必須加一個啟動轉(zhuǎn)換信號,這一啟動信號要由單片機提供。不同型號的ADC,對于啟動轉(zhuǎn)換信號的要求也不同,一般分為脈沖啟動和電平啟動兩種。對于脈沖啟動型ADC,只要給其啟動控制端上加一個符合要求的脈沖信號即可,如ADC0809、ADC574等。通常用WR和地址譯碼器的輸出經(jīng)一定的邏輯電路進行控制。對于電平啟動型ADC,當把符合要求的電平加到啟動控制端上時,立即開始轉(zhuǎn)換。在轉(zhuǎn)換過程中,必須保持這一電平,否則會終止轉(zhuǎn)換的進行。因此,在這種啟動方式下,單片機的控制信號必須經(jīng)過鎖存器保持一段時間,一般采用D觸發(fā)器、鎖存器或并行I/O接口等來實現(xiàn)。AD570、AD571等都屬于電平啟動型ADC。

當ADC轉(zhuǎn)換結(jié)束時,ADC輸出一個轉(zhuǎn)換結(jié)束標志信號,通知單片機讀取轉(zhuǎn)換結(jié)果。單片機檢查判斷A/D轉(zhuǎn)換結(jié)束的方法一般有中斷和查詢兩種。對于中斷方式,可將轉(zhuǎn)換結(jié)束標志信號接到單片機的中斷請求輸入線上或允許中斷的I/O接口的相應(yīng)引腳,作為中斷請求信號;對于查詢方式,可把轉(zhuǎn)換結(jié)束標志信號經(jīng)三態(tài)門送到單片機的某一位I/O口線上,作為查詢狀態(tài)信號。

A/D轉(zhuǎn)換器的另一個重要連接信號是時鐘,其頻率是決定芯片轉(zhuǎn)換速度的基準。整個A/D轉(zhuǎn)換過程都是在時鐘的作用下完成的。A/D轉(zhuǎn)換時鐘的提供方法有兩種:一種是由芯片內(nèi)部提供(如AD574),一般不需外加電路;另一種是由外部提供,有的用單獨的振蕩電路產(chǎn)生,更多的則把單片機輸出時鐘經(jīng)分頻后,送到A/D轉(zhuǎn)換器的相應(yīng)時鐘端。A/D轉(zhuǎn)換器ADC0809與單片機的接口1.ADC0809芯片簡介圖1ADC0809芯片的內(nèi)部邏輯結(jié)構(gòu)與引腳圖表1ADC0809通道地址選擇表

ADDCADDBADDA選通的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7圖2ADC0809轉(zhuǎn)換工作時序ADC0809與單片機接口圖3ADC0809與8051的接口連接圖A/D轉(zhuǎn)換應(yīng)用程序舉例設(shè)圖3接口電路用于一個8路模擬量輸入的巡回檢測系統(tǒng),使用中斷方式采樣數(shù)據(jù),把采樣轉(zhuǎn)換所得的數(shù)字量按序存于片內(nèi)RAM的30H~37H單元中。采樣完一遍后停止采集。其數(shù)據(jù)采集的初始化程序和中斷服務(wù)程序如下:初始化程序:

MOVR0,#30H ;設(shè)立數(shù)據(jù)存儲區(qū)指針

MOVR2,#08H ;設(shè)置8路采樣計數(shù)值

SETBIT0 ;設(shè)置外部中斷0為邊沿觸發(fā)方式

SETBEA ;CPU開放中斷

SETBEX0 ;允許外部中斷0中斷

MOVDPTR,#FEF8H;送入口地址并指向IN0LOOP:MOVX@DPTR,A ;啟動A/D轉(zhuǎn)換,A的值無意義

HERE:SJMPHERE ;等待中斷中斷服務(wù)程序:

MOVXA,@DPTR ;讀取轉(zhuǎn)換后的數(shù)字量

MOV@R0,A ;存入片內(nèi)RAM單元

INCDPTR ;指向下一模擬通道

INCR0 ;指向下一個數(shù)據(jù)存儲單元

DJNZR2,INT0 ;8路未轉(zhuǎn)換完,則繼續(xù)

CLREA ;已轉(zhuǎn)換完,則關(guān)中斷

CLREX0 ;禁止外部中斷0中斷

RETI ;中斷返回INT0:MOVX@DPTR,A ;再次啟動A/D轉(zhuǎn)換

RETI ;中斷返回后向通道接口技術(shù)后向通道的特點: 小信號輸出、大功率控制 與信號采集通道交叉,是干擾的來源 接近受控對象,環(huán)境干擾嚴重輸出信號的形式:開關(guān)量、數(shù)字量、頻率量 需要的變換: 功率放大、隔離、D/A變換、F/V變換D/A變換器的使用 數(shù)字輸入特性:并行、串行二進制 輸出特性:電流輸出,需進行電流-電壓轉(zhuǎn)換,當有多路D/A輸出時,有的D/A器件具有鎖存功能,在外部信號控制下才開始D/A轉(zhuǎn)換 參考源:有的D/A器件內(nèi)部具有高精度低漂移參考電壓源 輸出電壓極性:單極性、雙極性DAC0832的使用8位輸入鎖存器8位DAC鎖存器8位D/A轉(zhuǎn)換器VREFIOUT2IOUT1RFBAGNDVccDGNDDI0~DI7ILECSWR1WR2XFER

DAC0832結(jié)構(gòu)圖DAC0832引腳圖CSWR1AGNDDI3DI2DI1DI0VREFRFBDGNDVccILEWR2XFERDI4DI5DI6DI7IOUT2IOUT11234567891020191817161514131211DAC0832管腳圖DI0~DI7:8位數(shù)據(jù)輸入線;

ILE:數(shù)據(jù)鎖存允許信號,一般接Vcc;

/CS:片選信號;/WR1:輸入鎖存器寫控制信號;/XFER:DAC鎖存器選擇信號;/WR2:DAC鎖存器寫控制信號.一旦數(shù)據(jù)進入DAC鎖存器,D/A轉(zhuǎn)換即開始;Vref:基準參考電源輸入。一般接Vcc;Rfb:電流/電壓轉(zhuǎn)換放大器反饋信號輸入端;Iout1:電流輸出端1,其值隨DAC鎖存器內(nèi)容線性變化;Iout2:電流輸出端2,Iout1+Iout2=常數(shù);Vcc:電源輸入端;AGND:模擬地;DGND:數(shù)字地。

單緩沖方式下單片機與DAC0832的接口電路case16:……; /*處理4號鍵*/break;case32:……; /*處理5號鍵*/break;case64:……; /*處理6號鍵*/break;case128:……; /*處理7號鍵*/break;default:break; /*無效按鍵,如多個鍵同時按下*/ } key_flag=0; }}}voidint0_srv()interrupt0{ ucharreread_key; IE=0x80; /*屏蔽中斷*/ key_flag=0; /*設(shè)置中斷標志*/P1=0xff; /*P1口鎖存器置1*/key_value=P1; /*讀入P1口的狀態(tài)*/delay_10ms(void); /*延時10ms,去抖動*/reread_key=P1&0x07; /*再次讀取P1口的狀態(tài)*/if(key_value==reread_key) { key_flag=1; /*設(shè)置中斷標志為1*/}IE=0x81; /*中斷允許*/}2.矩陣式鍵盤矩陣式(也稱行列式)鍵盤用于按鍵數(shù)目較多場合,由行線和列線組成,一組為行線,另一組為列線,按鍵位于行、列的交叉點上。如下圖所示,一個44的行、列結(jié)構(gòu)可以構(gòu)成一個16個按鍵的鍵盤。在按鍵數(shù)目較多的場合,與獨立式鍵盤相比,要節(jié)省較多的I/O口線。(1)查詢方式的矩陣式鍵盤程序【例4】對下圖所示的矩陣式鍵盤,編寫查詢式的鍵盤處理程序。矩陣式鍵盤接口首先判鍵盤有無鍵按下,即把所有行線P1.0~P1.3均置為低電平,然后檢查各列線的狀態(tài),若列線不全為高電平,則表示鍵盤中有鍵被按下;若所有列線列均為高電平,說明鍵盤中無鍵按下。在確認有鍵按下后,即可進入確定具體閉合鍵的過程。判斷閉合鍵所在的位置,其方法是依次將行線置為低電平,再逐行檢查各列線的電平狀態(tài)。若某列為低,則該列線與行線交叉處的按鍵就是閉合的按鍵。判斷有無鍵按下,以及按下鍵的位置的參考程序如下。

#include<reg51.h>#defineucharunsignedchar #defineuintunsignedint voidmain(void){ ucharkey; while(1){key=keyscan();/*調(diào)用鍵盤掃描函數(shù),返回的鍵值送變量key*/ delay(); /*延時*/}voiddelay(void); /*延時函數(shù)*/{ uchari; for(i=0;i<200;i++){}}

ucharkeyscan(void) /*鍵盤掃描函數(shù)*/{ ucharcode_h; /*行掃描值*/ ucharcode_l; /*列掃描值*/ P1=0xf0; /*P1.0~P1.3輸出都為0,準備讀列狀態(tài)*/ if((P1&f0)!=0xf0) /*如果P1.4~P1.7不全為1,可能有鍵按下*/ { delay(); /*延時去抖動*/if((P1&f0)!=0xf0)/*重讀P1.4~P1.7,若還是不全為1,定有鍵按下*/code_h=0xfe; /*P1.0置為0,開始行掃描*/while((code_h&0x10)!=0xf0);/*判斷是否為最后一行,若不是,繼續(xù)掃描*/{ P1=code_h; /*P1口輸出行掃描值*/ if((P1&f0)!=0xf0); /*如果P1.4~P1.7不全為1,該行有鍵按下*/{ code_l=(P1&0xf0|0x0f);/*保留P1高4位,低4位變?yōu)?,作為列值*/

return((~code_h)+(~code_l));/*鍵掃描值=行掃描值+列掃描值,返回主程序*/ }else /*若該行無鍵按下,往下執(zhí)行*/

code_h=(code_h<<1)|0x01;/*行掃描值左移,掃描下一行*/

} } }

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論