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

下載本文檔

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

文檔簡(jiǎn)介

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

2、1P0通道選擇啟動(dòng)轉(zhuǎn)換完成A/D轉(zhuǎn)換器接轉(zhuǎn)換器接 口口A/D轉(zhuǎn)換器概述轉(zhuǎn)換器概述 在設(shè)計(jì)A/D轉(zhuǎn)換器與單片機(jī)接口之前,往往要根據(jù)A/D轉(zhuǎn)換器的技術(shù)指標(biāo)選擇A/D轉(zhuǎn)換器。為此,先介紹一下A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)。 量化間隔和量化誤差是A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)之一。量化間隔可用下式表示。其中n為A/D轉(zhuǎn)換器的位數(shù)。nn212滿量程輸入電壓滿量程輸入電壓 量化誤差有兩種表示方法:一種是絕對(duì)誤差,另一種是相對(duì)誤差。22量化間隔絕對(duì)誤差%100211n相對(duì)誤差 A/D轉(zhuǎn)換器芯片種類很多,按其轉(zhuǎn)換原理可分為逐次比較式、雙重積分式、量化反饋式和并行式A/D轉(zhuǎn)換器;按其分辨率可分為816位的A/D轉(zhuǎn)換器芯

3、片。目前最常用的是逐次逼近式和雙重積分式。 逐次逼近式轉(zhuǎn)換器的常用產(chǎn)品有ADC0801ADC0805型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)換器與單片機(jī)接口具有硬、軟件相依性。一般來(lái)說(shuō),A/D轉(zhuǎn)換器與單片機(jī)的接口主要考慮的是數(shù)字量輸出線的連接、ADC啟動(dòng)方式、轉(zhuǎn)換結(jié)束信號(hào)處理方法以及時(shí)鐘的連接等。 一個(gè)一個(gè)ADC開始轉(zhuǎn)換時(shí),必須加一

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

5、70、AD571等都屬于電平啟動(dòng)型ADC。 當(dāng)當(dāng)ADC轉(zhuǎn)換結(jié)束時(shí),轉(zhuǎn)換結(jié)束時(shí),ADC輸出一個(gè)轉(zhuǎn)換結(jié)束標(biāo)志信號(hào),通知輸出一個(gè)轉(zhuǎn)換結(jié)束標(biāo)志信號(hào),通知單片機(jī)讀取轉(zhuǎn)換結(jié)果。單片機(jī)讀取轉(zhuǎn)換結(jié)果。單片機(jī)檢查判斷A/D轉(zhuǎn)換結(jié)束的方法一般有中斷和查詢兩種。對(duì)于中斷方式,可將轉(zhuǎn)換結(jié)束標(biāo)志信號(hào)接到單片機(jī)的中斷請(qǐng)求輸入線上或允許中斷的I/O接口的相應(yīng)引腳,作為中斷請(qǐng)求信號(hào);對(duì)于查詢方式,可把轉(zhuǎn)換結(jié)束標(biāo)志信號(hào)經(jīng)三態(tài)門送到單片機(jī)的某一位I/O口線上,作為查詢狀態(tài)信號(hào)。 A/D轉(zhuǎn)換器的另一個(gè)重要連接信號(hào)是時(shí)鐘,其頻率是決定芯轉(zhuǎn)換器的另一個(gè)重要連接信號(hào)是時(shí)鐘,其頻率是決定芯片轉(zhuǎn)換速度的基準(zhǔn)。片轉(zhuǎn)換速度的基準(zhǔn)。整個(gè)A/D轉(zhuǎn)換

6、過(guò)程都是在時(shí)鐘的作用下完成的。A/D轉(zhuǎn)換時(shí)鐘的提供方法有兩種:一種是由芯片內(nèi)部提供(如AD574),一般不需外加電路;另一種是由外部提供,有的用單獨(dú)的振蕩電路產(chǎn)生,更多的則把單片機(jī)輸出時(shí)鐘經(jīng)分頻后,送到A/D轉(zhuǎn)換器的相應(yīng)時(shí)鐘端。A/D轉(zhuǎn)換器轉(zhuǎn)換器ADC0809與單片機(jī)的接與單片機(jī)的接 口口1ADC0809芯片簡(jiǎn)芯片簡(jiǎn) 介介圖 1 ADC0809芯片的內(nèi)部邏輯結(jié)構(gòu)與引腳圖 表 1 ADC0809通道地址選擇表 ADDC ADDB ADDA選通的通道0 0 0IN00 0 1IN10 1 0IN20 1 1IN31 0 0IN41 0 1IN51 1 0IN61 1 1IN7圖 2 ADC0809

7、轉(zhuǎn)換工作時(shí)序 ADC0809與單片機(jī)接口與單片機(jī)接口 圖 3 ADC0809與8051的接口連接圖 A/D轉(zhuǎn)換應(yīng)用程序舉例轉(zhuǎn)換應(yīng)用程序舉例 設(shè)圖3接口電路用于一個(gè)8路模擬量輸入的巡回檢測(cè)系統(tǒng),使用中斷方式采樣數(shù)據(jù),把采樣轉(zhuǎn)換所得的數(shù)字量按序存于片內(nèi)RAM的30H37H單元中。采樣完一遍后停止采集。 其數(shù)據(jù)采集的初始化程序和中斷服務(wù)程序如下:初始化程序: MOV R0,#30H ;設(shè)立數(shù)據(jù)存儲(chǔ)區(qū)指針 MOV R2,#08H ;設(shè)置8路采樣計(jì)數(shù)值 SETB IT0 ;設(shè)置外部中斷0為邊沿觸發(fā)方式 SETB EA ;CPU開放中斷 SETB EX0 ;允許外部中斷0中斷 MOV DPTR,#FEF8

8、H ;送入口地址并指向IN0 LOOP: MOVX DPTR,A ;啟動(dòng)A/D轉(zhuǎn)換,A的值無(wú)意義 HERE: SJMP HERE ;等待中斷中斷服務(wù)程序: MOVX A,DPTR ;讀取轉(zhuǎn)換后的數(shù)字量 MOV R0,A ;存入片內(nèi)RAM單元 INC DPTR ;指向下一模擬通道 INC R0 ;指向下一個(gè)數(shù)據(jù)存儲(chǔ)單元 DJNZ R2,INT0 ;8路未轉(zhuǎn)換完,則繼續(xù) CLR EA ;已轉(zhuǎn)換完,則關(guān)中斷 CLR EX0 ;禁止外部中斷0中斷 RETI ;中斷返回INT0: MOVX DPTR,A ;再次啟動(dòng)A/D轉(zhuǎn)換 RETI ;中斷返回后向通道接口技術(shù)后向通道的特點(diǎn): 小信號(hào)輸出、大功率控制

9、與信號(hào)采集通道交叉,是干擾的來(lái)源 接近受控對(duì)象,環(huán)境干擾嚴(yán)重輸出信號(hào)的形式:開關(guān)量、數(shù)字量、頻率量 需要的變換: 功率放大、隔離、D/A變換、F/V變換D/A變換器的使用數(shù)字輸入特性:并行、串行二進(jìn)制輸出特性:電流輸出,需進(jìn)行電流-電壓轉(zhuǎn)換,當(dāng)有多路D/A輸出時(shí),有的D/A器件具有鎖存功能,在外部信號(hào)控制下才開始D/A轉(zhuǎn)換參考源:有的D/A器件內(nèi)部具有高精度低漂移參考電壓源輸出電壓極性:?jiǎn)螛O性、雙極性DAC0832的使用8位輸入鎖存器8位DAC鎖存器8位D/A轉(zhuǎn)換器VREFIOUT2IOUT1RFBAGNDVccDGNDDI0DI7ILE CS WR1 WR2 XFER DAC0832結(jié)構(gòu)圖D

10、AC0832引腳圖CSWR1AGNDDI3DI2DI1DI0VREFRFBDGNDVccILEWR2XFERDI4DI5DI6DI7IOUT2IOUT11234567891020191817161514131211DAC0832管腳圖DI0DI7:8位數(shù)據(jù)輸入線; ILE:數(shù)據(jù)鎖存允許信號(hào),一般接Vcc; /CS:片選信號(hào);/WR1:輸入鎖存器寫控制信號(hào);/XFER:DAC鎖存器選擇信號(hào);/WR2:DAC鎖存器寫控制信號(hào).一旦數(shù)據(jù)進(jìn)入DAC鎖存器,D/A轉(zhuǎn)換即開始;Vref:基準(zhǔn)參考電源輸入。一般接Vcc;Rfb:電流/電壓轉(zhuǎn)換放大器反饋信號(hào)輸入端;Iout1:電流輸出端1,其值隨DAC鎖存器

11、內(nèi)容線性變化;Iout2:電流輸出端2,Iout1+Iout2=常數(shù);Vcc:電源輸入端;AGND:模擬地;DGND:數(shù)字地。單緩沖方式下單片機(jī)與DAC0832的接口電路case 16: ; case 16: ; / /* *處理處理4 4號(hào)鍵號(hào)鍵* */ /break;break;case 32: ; case 32: ; / /* *處理處理5 5號(hào)鍵號(hào)鍵* */ /break;break;case 64: ; case 64: ; / /* *處理處理6 6號(hào)鍵號(hào)鍵* */ /break;break;case 128: ; case 128: ; / /* *處理處理7 7號(hào)鍵號(hào)鍵* *

12、/ /break;break;default:default:break; break; / /* *無(wú)效按鍵,如多個(gè)鍵同時(shí)按下無(wú)效按鍵,如多個(gè)鍵同時(shí)按下* */ / key_flag=0;key_flag=0; void int0_srv( ) void int0_srv( ) interrupt 0interrupt 0 uchar reread_key;uchar reread_key;IE=0 x80;IE=0 x80;/ /* *屏蔽中斷屏蔽中斷* */ /key_flag=0; key_flag=0; / /* *設(shè)置中斷標(biāo)志設(shè)置中斷標(biāo)志* */ /P1=0 xff; P1=0 x

13、ff; / /* * P1 P1口鎖存器置口鎖存器置1 1* */ /key_value=P1; key_value=P1; / /* *讀入讀入P1P1口的狀態(tài)口的狀態(tài)* */ /delay_10ms(void); delay_10ms(void); / /* *延時(shí)延時(shí)10ms10ms,去抖動(dòng),去抖動(dòng)* */ /reread_key=P1&0 x07; reread_key=P1&0 x07; / /* *再次讀取再次讀取P1P1口的狀態(tài)口的狀態(tài)* */ /if(key_value=reread_key)if(key_value=reread_key) key_flag=1

14、; key_flag=1; / /* *設(shè)置中斷標(biāo)志為設(shè)置中斷標(biāo)志為1 1* */ / IE=0 x81; IE=0 x81; / /* *中斷允許中斷允許* */ / 2. 矩陣式鍵盤矩陣式鍵盤矩陣式(也稱行列式)鍵盤用于按鍵數(shù)目較多場(chǎng)合,由行線矩陣式(也稱行列式)鍵盤用于按鍵數(shù)目較多場(chǎng)合,由行線和列線組成,一組為行線,另一組為列線,按鍵位于行、列的和列線組成,一組為行線,另一組為列線,按鍵位于行、列的交叉點(diǎn)上。交叉點(diǎn)上。如如下下圖圖所示,一個(gè)所示,一個(gè)4 4的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)16個(gè)按鍵的鍵盤。在按鍵數(shù)目較多的場(chǎng)合,與獨(dú)立式鍵盤相比,個(gè)按鍵的鍵盤。在按鍵數(shù)目較多

15、的場(chǎng)合,與獨(dú)立式鍵盤相比,要節(jié)省較多的要節(jié)省較多的I/O口線。口線。(1)查詢方式的矩陣式鍵盤程序)查詢方式的矩陣式鍵盤程序【例例4】對(duì)對(duì)下下圖圖所示的矩陣式鍵盤,編寫查詢式的鍵盤處理所示的矩陣式鍵盤,編寫查詢式的鍵盤處理程序。程序。 矩陣式鍵盤接口首先判鍵盤首先判鍵盤有無(wú)鍵按下有無(wú)鍵按下,即,即把所有行線把所有行線P1.0P1.3均置為均置為低電平,然后檢查各列線的狀態(tài)低電平,然后檢查各列線的狀態(tài),若列線不全為高電平,則,若列線不全為高電平,則表示鍵盤中有鍵被按下;若所有列線列均為高電平,說(shuō)明鍵表示鍵盤中有鍵被按下;若所有列線列均為高電平,說(shuō)明鍵盤中無(wú)鍵按下。盤中無(wú)鍵按下。在確認(rèn)有鍵按下后,

16、即可進(jìn)入確定具體閉合鍵的過(guò)程。判在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。判斷閉合鍵所在的位置,其方法是斷閉合鍵所在的位置,其方法是依次將行線置為低電平,再依次將行線置為低電平,再逐行檢查各列線的電平狀態(tài)逐行檢查各列線的電平狀態(tài)。若某列為低,則該列線與行線。若某列為低,則該列線與行線交叉處的按鍵就是閉合的按鍵。判斷有無(wú)鍵按下,以及按下交叉處的按鍵就是閉合的按鍵。判斷有無(wú)鍵按下,以及按下鍵的位置的參考程序如下。鍵的位置的參考程序如下。 #include#define uchar unsigned char#define uint unsigned intvoid main(void)uch

17、ar key;while(1)key= keyscan( ); /*調(diào)用鍵盤掃描函數(shù),返回的鍵值送變量調(diào)用鍵盤掃描函數(shù),返回的鍵值送變量key*/delay( );/*延時(shí)延時(shí)*/void delay(void); /*延時(shí)函數(shù)延時(shí)函數(shù)*/ uchar i;for(i=0;i200;i+) uchar keyscan(void)/*鍵盤掃描函數(shù)鍵盤掃描函數(shù)*/uchar code_h; /*行掃描值行掃描值*/uchar code_l; /*列掃描值列掃描值*/P1=0 xf0;/*P1.0P1.3輸出都為輸出都為0,準(zhǔn)備讀列狀態(tài),準(zhǔn)備讀列狀態(tài)*/if(P1&f0)!=0 xf0)/*

18、如果如果P1.4P1.7不全為不全為1,可能有鍵按下,可能有鍵按下*/delay( );/*延時(shí)去抖動(dòng)延時(shí)去抖動(dòng)*/if(P1&f0)!=0 xf0) /*重讀重讀P1.4P1.7,若還是不全為,若還是不全為1,定有鍵按下,定有鍵按下*/code_h=0 xfe;/* P1.0置為置為0,開始行掃描,開始行掃描*/while(code_h&0 x10)!=0 xf0); /*判斷是否為最后一行,若不是,繼續(xù)掃判斷是否為最后一行,若不是,繼續(xù)掃描描*/P1= code_h;/*P1口輸出行掃描值口輸出行掃描值*/if(P1&f0)!=0 xf0);/*如果如果P1.4P1

19、.7不全為不全為1,該行有鍵按下,該行有鍵按下*/code_l=(P1&0 xf0|0 x0f); /*保留保留P1高高4位,低位,低4位變?yōu)槲蛔優(yōu)?,作為列值,作為列值*/return(code_h)+(code_l); /*鍵掃描值鍵掃描值=行掃描值行掃描值+列掃描值,列掃描值, 返回主程序返回主程序*/else/*若該行無(wú)鍵按下,往下執(zhí)行若該行無(wú)鍵按下,往下執(zhí)行*/code_h=(code_h1)|0 x01; /*行掃描值左移,掃描下一行行掃描值左移,掃描下一行*/ return(0) ; /*無(wú)鍵按下,返回?zé)o鍵按下,返回0*/鍵盤掃描方式的選取鍵盤掃描方式的選取單片機(jī)忙于其他

20、各項(xiàng)工作任務(wù)時(shí),如何兼顧鍵盤的輸入,這單片機(jī)忙于其他各項(xiàng)工作任務(wù)時(shí),如何兼顧鍵盤的輸入,這取決于鍵盤的工作方式。鍵盤工作方式選取原則是,既要保證取決于鍵盤的工作方式。鍵盤工作方式選取原則是,既要保證及時(shí)響應(yīng)按鍵操作,又不要過(guò)多占用單片機(jī)的工作時(shí)間。通常,及時(shí)響應(yīng)按鍵操作,又不要過(guò)多占用單片機(jī)的工作時(shí)間。通常,鍵盤工作方式有鍵盤工作方式有3種:查詢掃描、定時(shí)掃描和中斷掃描。種:查詢掃描、定時(shí)掃描和中斷掃描。1查詢掃描查詢掃描查詢方式(也稱編程掃描方式)是利用單片機(jī)空閑時(shí),調(diào)用查詢方式(也稱編程掃描方式)是利用單片機(jī)空閑時(shí),調(diào)用鍵盤掃描子程序,反復(fù)掃描鍵盤,來(lái)響應(yīng)鍵盤的輸入請(qǐng)求。鍵盤掃描子程序,反復(fù)掃描鍵盤,來(lái)響應(yīng)鍵盤的輸入請(qǐng)求。采用本掃描方式,如單片機(jī)查詢頻率過(guò)高,雖能及時(shí)響應(yīng)鍵采用本掃描方式,如單片機(jī)查詢頻率過(guò)高,雖能及時(shí)響應(yīng)鍵盤的輸入,但也會(huì)影響其他任務(wù)的進(jìn)行。如查詢的頻率過(guò)低,盤的輸入,但也會(huì)影響其他任務(wù)的進(jìn)行。如查詢的頻率過(guò)低,可能出現(xiàn)鍵盤輸入漏判。所以要根據(jù)單片機(jī)系統(tǒng)的繁忙程度和可能出現(xiàn)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論