第九章 8051外部接口的c編程_第1頁
第九章 8051外部接口的c編程_第2頁
第九章 8051外部接口的c編程_第3頁
第九章 8051外部接口的c編程_第4頁
第九章 8051外部接口的c編程_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第九章第九章8051外部接口的外部接口的C編程編程11模擬量模擬量D/A傳感器傳感器執行元件執行元件A/D數字量數字量數字量數字量模擬量模擬量模擬量輸入模擬量輸入(數據采集數據采集)模擬量輸出模擬量輸出(過程控制過程控制)計算機計算機1、模擬接口的作用、模擬接口的作用 模擬量的輸入、輸出通道是微型計算機與控制對象之間的重模擬量的輸入、輸出通道是微型計算機與控制對象之間的重要接口,也是實現工業過程控制的重要組成部分。要接口,也是實現工業過程控制的重要組成部分。 實際工業生產環境實際工業生產環境連續變化的模擬量連續變化的模擬量 v例如:電壓、電流、壓力、溫度、位移、流量例如:電壓、電流、壓力、溫度

2、、位移、流量 計算機內部計算機內部離散的數字量離散的數字量v二進制數、十進制數二進制數、十進制數第九章第九章8051外部接口的外部接口的C編程編程22輸入通道輸入通道模擬接口電路的任務模擬接口電路的任務模擬電路的任務模擬電路的任務0010110110101100工工業業生生產產過過程程傳傳感感器器放大放大濾波濾波多路轉換多路轉換&采樣保持采樣保持A/D轉換轉換放大放大驅動驅動D/A轉換轉換輸出輸出接口接口微微型型計計算算機機執行執行機構機構輸入輸入接口接口物理量物理量變換變換信號信號處理處理信號信號變換變換I/O接口接口輸出通道輸出通道第九章第九章8051外部接口的外部接口的C編程編程

3、33v傳感器(傳感器(Transducer)v非電量非電量電壓、電流電壓、電流 v變送器(變送器(Transformer)v轉換成標準的電信號轉換成標準的電信號v信號處理(信號處理(Signal Processing)v放大、整形、濾波放大、整形、濾波 v多路轉換開關(多路轉換開關(Multiplexer) v多選一多選一v采樣保持電路(采樣保持電路(Sample Holder,S/H)v保證變換時信號恒定不變保證變換時信號恒定不變vA/D變換器(變換器(A/D Converter)v模擬量轉換為數字量模擬量轉換為數字量 第九章第九章8051外部接口的外部接口的C編程編程44vD/A變換器(變

4、換器(D/A Converter)v數字量轉換為模擬量數字量轉換為模擬量v低通濾波低通濾波v平滑輸出波形平滑輸出波形v放大驅動放大驅動v提供足夠的驅動電壓,電流提供足夠的驅動電壓,電流第九章第九章8051外部接口的外部接口的C編程編程55v數字量是由一位一位的數位構成的,每個數位都代表一定數字量是由一位一位的數位構成的,每個數位都代表一定的權。的權。v為了把一個數字量變為模擬量,必須把每一位的數碼按照為了把一個數字量變為模擬量,必須把每一位的數碼按照權來轉換為對應的模擬量,再把各模擬量相加,這樣,得權來轉換為對應的模擬量,再把各模擬量相加,這樣,得到的總模擬量便對應于給定的數據。到的總模擬量便

5、對應于給定的數據。vD/A轉換器的主要部件是電阻開關網絡,通常是由輸入的二轉換器的主要部件是電阻開關網絡,通常是由輸入的二進制數的各位控制一些開關,通過電阻網絡,在運算放大進制數的各位控制一些開關,通過電阻網絡,在運算放大器的輸入端產生與二進制數各位的權成比例的電流,經過器的輸入端產生與二進制數各位的權成比例的電流,經過運算放大器相加和轉換而成為與二進制數成比例的模擬電運算放大器相加和轉換而成為與二進制數成比例的模擬電壓。壓。第九章第九章8051外部接口的外部接口的C編程編程66v 分辨率分辨率 由于數字量由于數字量D是不連續的,當數字增加是不連續的,當數字增加時,模擬量為階梯波電壓,如圖所示

6、:時,模擬量為階梯波電壓,如圖所示:階梯波每一級增量對應于輸入數字的階梯波每一級增量對應于輸入數字的最低數位最低數位1。把階梯波每一級增量與最。把階梯波每一級增量與最大模擬量的比值稱為分辨率。大模擬量的比值稱為分辨率。 分辨率分辨率=1/(2n-1) n例,例,4位位DAC,其分辨率為,其分辨率為=6.67%n 通常,在工程中,直接以通常,在工程中,直接以DAC能轉換的二進制位數表示分能轉換的二進制位數表示分辨率。如辨率。如8、10、12、14、16位位DAC。第九章第九章8051外部接口的外部接口的C編程編程77u 輸出范圍輸出范圍 0+5V, 滿量程滿量程FS=5V (Full Scale

7、) -5V+5V, FS=10V 0+10V, FS=10V -10V+10V FS=20Vu轉換精度轉換精度 實際輸出值與理論值之間的最大偏差。實際輸出值與理論值之間的最大偏差。 一般用最小量化階一般用最小量化階來度量,如來度量,如1/2 LSB1/2 LSB。也可用滿量程。也可用滿量程的百分比來度量,如的百分比來度量,如0.05% FSR0.05% FSR(LSB-Least Significant Bit, FSR-Full Scale Range)(LSB-Least Significant Bit, FSR-Full Scale Range)第九章第九章8051外部接口的外部接口的C

8、編程編程88v線性度(線性誤差線性度(線性誤差)DAC的理想特性為線性階梯波,實際特性可能偏離理想特性,模擬的理想特性為線性階梯波,實際特性可能偏離理想特性,模擬量實際值與理想值間的最大差值,折合為數字量的最低有效位量實際值與理想值間的最大差值,折合為數字量的最低有效位(一一般,應小于般,應小于1/2LSB)。v建立時間(轉換時間)建立時間(轉換時間) 指指“大信號大信號”工作時,從開始轉換到模擬量輸出到達最終值所工作時,從開始轉換到模擬量輸出到達最終值所需的時間,一般幾納秒幾百微秒。需的時間,一般幾納秒幾百微秒。 “大信號大信號”工作:工作:0最大,或負最大正最大。最大,或負最大正最大。v其

9、他參數其他參數 溫度漂移(溫度漂移(ppm/)、絕緣電壓、功耗等。)、絕緣電壓、功耗等。第九章第九章8051外部接口的外部接口的C編程編程99DAC0832由由8位輸入寄存器、位輸入寄存器、8位位DAC寄存器和寄存器和8位位D/A轉換器構成。轉換器構成。DAC0832有兩級鎖存器,第一級即輸入寄存器,第二級即有兩級鎖存器,第一級即輸入寄存器,第二級即DAC寄存器。寄存器。lDAC0832可以在雙緩沖方式下,輸出模擬信號同時采集數字量。可以在雙緩沖方式下,輸出模擬信號同時采集數字量。l可以在可以在D/A轉換器同時工作時,利用第二級鎖存信號實現多路轉換器同時工作時,利用第二級鎖存信號實現多路D/A

10、的的同時輸出。同時輸出。第九章第九章8051外部接口的外部接口的C編程編程1010主要特性如下:主要特性如下:l 分辨率分辨率8位;位;l 建立時間建立時間1usl 增益溫度系數增益溫度系數20106/ 0Cl 輸入輸入TTL電平電平l 功耗功耗20mWDAC0832的輸出為兩個電流信號的輸出為兩個電流信號IOUT1和和IOUT2。 IOUT1+IOUT2=常數常數當當LE2有效時,數據輸入寄存器的值進入第二級(有效時,數據輸入寄存器的值進入第二級(DAC寄存器)。寄存器)。 當當LE1有效時,數據進入第一級(數據輸入寄存器)有效時,數據進入第一級(數據輸入寄存器) 第九章第九章8051外部接

11、口的外部接口的C編程編程1111數字接口數字接口 數據輸入寄存器數據輸入寄存器”工作在工作在鎖存狀態,而鎖存狀態,而“DACDAC寄存器寄存器”工作在不鎖存狀態(工作在不鎖存狀態(LE2LE2始終始終有效,有效,DACDAC寄存器直通),只寄存器直通),只使用一級緩沖。使用一級緩沖。 單緩沖方式單緩沖方式1第九章第九章8051外部接口的外部接口的C編程編程1212“數據輸入寄存器數據輸入寄存器”工作工作在不鎖存狀態(在不鎖存狀態(LE1LE1始終始終有效,數據輸入寄存器有效,數據輸入寄存器直通),而直通),而“DACDAC寄存器寄存器”工作在鎖存狀態。只使工作在鎖存狀態。只使用一級緩沖。用一級

12、緩沖。數字接口數字接口單緩沖方式單緩沖方式2單緩沖方式適用于只有一路模擬量輸出的場合。單緩沖方式適用于只有一路模擬量輸出的場合。第九章第九章8051外部接口的外部接口的C編程編程1313數字接口數字接口使用兩級緩沖使用兩級緩沖設設CSCS由由A15A15A1A1經譯碼產生經譯碼產生 ILE=1 & CS=0 & WR1=0ILE=1 & CS=0 & WR1=0,DAC0832DAC0832內部內部LE1LE1有效;有效;WR=0 & XFER=0WR=0 & XFER=0,DAC0832DAC0832內部內部LE2LE2有效。有效。 在雙緩沖方

13、式,輸入寄存器的鎖存信號和在雙緩沖方式,輸入寄存器的鎖存信號和DACDAC寄存器的鎖存信寄存器的鎖存信號分開控制。號分開控制。適用于幾個模擬量需同時輸出的系統。每一個模擬量輸出需適用于幾個模擬量需同時輸出的系統。每一個模擬量輸出需一個一個DAC0832DAC0832,構成多個,構成多個DAC0832DAC0832同步輸出系統。同步輸出系統。第九章第九章8051外部接口的外部接口的C編程編程1414第九章第九章8051外部接口的外部接口的C編程編程1515圖中兩片圖中兩片DAC0832的輸入的輸入寄存器各占一個單元地址,寄存器各占一個單元地址,而兩個而兩個DAC寄存器占用同寄存器占用同一單元地址

14、。實現兩片一單元地址。實現兩片DAC0832的的DAC寄存器占寄存器占用同一單元地址的方法是用同一單元地址的方法是將兩個傳送允許信號將兩個傳送允許信號XFER相連后,接同一線選端。相連后,接同一線選端。轉換操作時,將兩路待轉轉換操作時,將兩路待轉換數據分別寫入兩個換數據分別寫入兩個DAC0832的輸入寄存器;的輸入寄存器;之后將數據同時傳送到兩之后將數據同時傳送到兩個個DAC寄存器,傳送的同寄存器,傳送的同時啟動兩路時啟動兩路D/A轉換。轉換。第九章第九章8051外部接口的外部接口的C編程編程1616兩片兩片DAC0832的輸入寄存器地址分別為的輸入寄存器地址分別為8FFFH和和A7FFH,兩

15、個芯,兩個芯片的片的DAC寄存器地址都為寄存器地址都為2FFFH。#include #include #define INPUTR1 XBYTE0 x8fff#define INPUTR2 XBYTE0 xa7ff#define DACR XBYTE0 x2fff#define uchar unsigned charVoid dac2b(uchar data1,uchar data2)INPUTR1=data1; /*數據送到輸入寄存器數據送到輸入寄存器*/INPUTR2=data2;DACR=0; /*啟動兩路啟動兩路D/A同時轉換同時轉換*/第九章第九章8051外部接口的外部接口的C編程編

16、程1717第九章第九章8051外部接口的外部接口的C編程編程1818DAC0832ILE接接+5V,始終保持有效。寫信始終保持有效。寫信號控制數據的鎖存,號控制數據的鎖存,WR1與與WR2相連,接相連,接8051的的WR,即數據同,即數據同時寫入寄存器;傳送時寫入寄存器;傳送允許信號允許信號XFER與片選與片選CS相連,即選中相連,即選中DAC0832后,寫入數后,寫入數據立即啟動轉換。據立即啟動轉換。第九章第九章8051外部接口的外部接口的C編程編程1919按照片選確定按照片選確定FFFEH為該片為該片DAC0832的地址。的地址。#include #include #define DA08

17、32 XBYTE0 xfffe#define uchar unsigned char#define uint unsigned intvoid stair(void)while(1) for(i=0;i=255;i+)DA0832=i;第九章第九章8051外部接口的外部接口的C編程編程2020vAD7521是12位的D/A轉換器,片內不帶輸入寄存器。對于沒有輸入寄存器的D/A轉換器,當輸入數據變化時,輸出電流或電壓會消失。在實際使用中,為控制一個對象,往往要求轉換后的模擬量保持一定時間。因此,在這類D/A轉換器之前,需增加一個數據鎖存器再與總線相連。由于由于AD7521是是12位數據輸入,因此

18、需外加位數據輸入,因此需外加12位數據鎖存器。這里采用低位數據鎖存器。這里采用低8位和高位和高4位位2個鎖存器,且低個鎖存器,且低8位用位用2片片74LS377作雙緩沖器,高作雙緩沖器,高4位用位用1片片74LS379作單緩沖寄存器。輸出轉換數據時,先輸出低作單緩沖寄存器。輸出轉換數據時,先輸出低8位數據到第一級位數據到第一級緩沖器,然后輸出高緩沖器,然后輸出高4位數據到位數據到4位緩沖寄存器。在輸出高位緩沖寄存器。在輸出高4位數據的同時,位數據的同時,把低把低8位數據打入第二級緩沖寄存器,以便位數據打入第二級緩沖寄存器,以便12位數據同時轉換。位數據同時轉換。第九章第九章8051外部接口的外

19、部接口的C編程編程2121圖中第一級緩沖器的地址為圖中第一級緩沖器的地址為7FFFH,第二級緩沖器和,第二級緩沖器和4位緩沖器地位緩沖器地址為址為BFFFH。#include #include #define DA7521L XBYTE0 x7fff#define DA7521H XBYTE0 xbfff#define UP 0 x10#define T 1000#define uint unsigned intVoid dlms(uint a);void stair(void)uint I;for(i=0;i=2=2FmFm,則,則Xs(t)Xs(t)保留了保留了X(t )X(t )的全部信

20、息的全部信息(從(從Xs(t)Xs(t)可以不失真地恢復出可以不失真地恢復出X(t)X(t))。)。 奈奎斯特采樣頻率奈奎斯特采樣頻率第九章第九章8051外部接口的外部接口的C編程編程24243、A/D轉換的參數轉換的參數 (1)模擬量輸入范圍和分辨率模擬量輸入范圍和分辨率 ADC把模擬量轉換為數字,模擬量輸入范圍可以是:把模擬量轉換為數字,模擬量輸入范圍可以是: 例:例:8 8位位ADCADC,單極性輸入,單極性輸入0 05V5V,數字量為,數字量為0 0255255,它能分,它能分辨的最小輸入信號是辨的最小輸入信號是(5V/256)=20mV(5V/256)=20mV,分辨率,分辨率=2=

21、28 8 =256位1212位位ADCADC,雙極性輸入,雙極性輸入-5V-5V+5V+5V,數字量為,數字量為-2048-2048+2047+2047,它能分辨的最小輸入信號是它能分辨的最小輸入信號是(10V/4096)=2mV(10V/4096)=2mV,分辨率,分辨率= = 2 21212=4096=4096位位05V010V單極性輸入單極性輸入-5V+5V: 雙極性輸入雙極性輸入轉換后的數字量一般有轉換后的數字量一般有8、10、12、14、16位。位。ADCADC的的分辨率分辨率是指它能夠分辨的最小輸入信號,一般用位數是指它能夠分辨的最小輸入信號,一般用位數來表示來表示第九章第九章80

22、51外部接口的外部接口的C編程編程2525(2)轉換時間和轉換率)轉換時間和轉換率轉換時間轉換時間:ADCADC完成一次轉換所需的時間。完成一次轉換所需的時間。轉換率轉換率:1 1秒時間內能完成轉換的次數,秒時間內能完成轉換的次數,kHZkHZ,MHZMHZ。A/D轉換的參數(續)轉換的參數(續) 第九章第九章8051外部接口的外部接口的C編程編程2626(3)轉換精度)轉換精度 ADCADC輸出的實際數字量與理想數字量之間有一定誤差,輸出的實際數字量與理想數字量之間有一定誤差,這種誤差由兩部分構成:這種誤差由兩部分構成:u量化誤差量化誤差量化誤差是把連續的模擬量轉換為離散的數字量(這一過程量

23、化誤差是把連續的模擬量轉換為離散的數字量(這一過程稱為量化)時產生的誤差,它必然存在的,是不可避免的。稱為量化)時產生的誤差,它必然存在的,是不可避免的。 u器件誤差器件誤差器件誤差是由于器件制造精度、溫度漂移等造成的,可以通器件誤差是由于器件制造精度、溫度漂移等造成的,可以通過提高產品質量來降低。過提高產品質量來降低。如,如,8 8位位ADCADC,單極性輸入,單極性輸入0 05V5V,數字量為,數字量為0 0255255,它的量,它的量化誤差是化誤差是=(1/2)=(1/2)* *(5V/256)=10mV(5V/256)=10mV,如,如, 4.994.995.00V5.00V輸入輸入對

24、應的數字均為對應的數字均為255255,這是不可避免的。,這是不可避免的。A/D轉換的參數(續)轉換的參數(續) 第九章第九章8051外部接口的外部接口的C編程編程27273.轉換精度轉換精度 A/DA/D轉換精度用數字量的最低有效位(轉換精度用數字量的最低有效位(LSBLSB)來表示。)來表示。 如果模擬量在如果模擬量在(/2)范圍內,都產生相對應的唯一數字范圍內,都產生相對應的唯一數字量,稱為這個量,稱為這個ADC是無誤差的,或者稱其精度為是無誤差的,或者稱其精度為0LSB 如果模擬量在如果模擬量在 范圍內,都產生相對應的唯一范圍內,都產生相對應的唯一數字量,這個數字量,這個ADC的精度為

25、的精度為1/2LSB 如果模擬量在如果模擬量在(+3/43/4)范圍內,都產生相對應的范圍內,都產生相對應的唯一數字量,這個唯一數字量,這個ADC的精度為的精度為1/4LSB。 A/D轉換的參數(續)轉換的參數(續) 第九章第九章8051外部接口的外部接口的C編程編程28284、A/D轉換的原理和方法轉換的原理和方法 A/DA/D轉換器按轉換原則可分為轉換器按轉換原則可分為直接直接A/DA/D轉換器轉換器和和間間接接A/DA/D轉換器轉換器 u直接直接A/D轉換轉換把模擬信號直接轉換為數字信號,如逐次逼近型,并聯比把模擬信號直接轉換為數字信號,如逐次逼近型,并聯比較型等較型等u間接間接A/D轉

26、換轉換 把模擬量轉換成中間量,然后再轉換為數字量,如電壓把模擬量轉換成中間量,然后再轉換為數字量,如電壓時間轉換型,電壓頻率轉換型,電壓脈寬轉換型時間轉換型,電壓頻率轉換型,電壓脈寬轉換型等。等。第九章第九章8051外部接口的外部接口的C編程編程2929START EOC CLK OED7D0VREF(+) VREF(-)ADDCADDBADDAALEIN0IN7比較器比較器8路模路模擬開擬開關關逐位逼近寄存器逐位逼近寄存器SAR樹狀開關樹狀開關電阻網絡電阻網絡三態三態輸出輸出鎖存鎖存器器時序與控制時序與控制地址地址鎖存鎖存及及譯碼譯碼D/A8個個模模擬擬輸輸入入通通道道8選選1ADC0809

27、是是8位逐次逼近型位逐次逼近型A/D轉換器,帶轉換器,帶8個模擬量輸入通道,芯片內個模擬量輸入通道,芯片內帶通道地址譯碼鎖存器,輸出帶三態數據鎖存器,啟動信號為脈沖啟動方帶通道地址譯碼鎖存器,輸出帶三態數據鎖存器,啟動信號為脈沖啟動方式,每一通道大約式,每一通道大約100us。第九章第九章8051外部接口的外部接口的C編程編程3030主要引腳如下:主要引腳如下:D7D0:輸出數據線(三態):輸出數據線(三態)IN0IN7:8通道(路)模擬輸入通道(路)模擬輸入ADDA、ADDB、ADDC:通道地址(通道選擇):通道地址(通道選擇)ALE:通道地址鎖存:通道地址鎖存START:啟動轉換:啟動轉換

28、EOC:轉換結束,可用于查詢或作為中斷申請:轉換結束,可用于查詢或作為中斷申請OE:輸出允許(打開輸出三態門):輸出允許(打開輸出三態門)CLK:時鐘輸入(:時鐘輸入(10KHz1.2MHz)VREF(+)、VREF(-):基準參考電壓:基準參考電壓ADC0809由兩大部分組成:由兩大部分組成:l 一部分為輸入通道,包括一部分為輸入通道,包括8位模擬開關、位模擬開關、3條地址線的鎖存器和條地址線的鎖存器和譯碼器,可實現譯碼器,可實現8路模擬輸入通道的選擇;路模擬輸入通道的選擇;l 一部分為逐次逼近型一部分為逐次逼近型 A/D轉換器。轉換器。第九章第九章8051外部接口的外部接口的C編程編程31

29、31ADC0809的工作過程如下:的工作過程如下:把把通道地址送到通道地址送到ADDAADDC上,選擇模擬輸上,選擇模擬輸入;入; 在通道地址信號有效期間,在通道地址信號有效期間,ALE上的上的上升沿該上升沿該地址鎖存到內部地址鎖存器;地址鎖存到內部地址鎖存器;START引腳上的下降沿啟動引腳上的下降沿啟動A/D變換;變換; 變換開始后,變換開始后,EOC引腳呈現低電平,引腳呈現低電平, EOC重新重新變為高電平時表示轉換結束;變為高電平時表示轉換結束;OE信號打開信號打開輸出鎖存器的三態門送出結果輸出鎖存器的三態門送出結果 。第九章第九章8051外部接口的外部接口的C編程編程3232 單路輸

30、入單路輸入v模擬信號可固定連接到任何一個輸入端模擬信號可固定連接到任何一個輸入端v地址線根據輸入線編號固定連接地址線根據輸入線編號固定連接(高電平或低電平高電平或低電平)多路輸入多路輸入v模擬信號按順序分別連接到輸入端模擬信號按順序分別連接到輸入端v要轉換哪一路輸入,就將其編號送到地址線上要轉換哪一路輸入,就將其編號送到地址線上(動態動態選擇選擇)單路輸入時單路輸入時ADDCADDBADDAIN4輸入輸入多路輸入時多路輸入時ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809輸入輸入0輸入輸入1輸入輸入2輸入輸入3輸入輸入4CPU指定指定通道號通道號+5V模擬輸入端模擬輸入端I

31、Ni第九章第九章8051外部接口的外部接口的C編程編程3333 多路輸入時,地址線不能接死,而是要通過一個接口芯多路輸入時,地址線不能接死,而是要通過一個接口芯片與數據總線連接。接口芯片可以選用:片與數據總線連接。接口芯片可以選用:v鎖存器鎖存器74LS273,74LS373等(要占用一個等(要占用一個I/O地址)地址)v可編程并行接口可編程并行接口8255(要占用四個(要占用四個I/O地址)地址) CPU把通道地址通過接口芯片送給把通道地址通過接口芯片送給0809ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809輸輸入入DB74LS273Q2Q1Q0CP來自來自I/O譯碼譯

32、碼D0-D7ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809DB8255PB2PB1PB0CS#來自來自I/O譯碼譯碼D0-D7A1A0A1A0地址線地址線ADDA-ADDC第九章第九章8051外部接口的外部接口的C編程編程3434 內部已接有三態門,故可直接連到內部已接有三態門,故可直接連到DB上上 也可另外通過一個輸入接口與也可另外通過一個輸入接口與DB相連相連上述兩種方法均需占用一個上述兩種方法均需占用一個I/O地址地址D0-D7ADC0809DBOE來自來自I/O譯碼譯碼D0-D7ADC0809DBOE來自來自I/O譯碼譯碼直接連直接連DB通過輸入接口連通過輸入接口

33、連DB74LS244+5VDIDOE1#E2#數據輸出線數據輸出線D0-D7第九章第九章8051外部接口的外部接口的C編程編程3535 兩種連接方法:兩種連接方法:v獨立連接:用兩個信號分別進行控制獨立連接:用兩個信號分別進行控制需占用兩個需占用兩個I/OI/O端口或兩個端口或兩個I/OI/O線線( (用用82558255時時) );v統一連接:用一個脈沖信號的上升沿進行地址鎖存,統一連接:用一個脈沖信號的上升沿進行地址鎖存,下降沿實現啟動轉換下降沿實現啟動轉換只需占用一個只需占用一個I/OI/O端口或一端口或一個個I/OI/O線線( (用用82558255時時) )。 ADC0809ALES

34、TART獨立連接獨立連接來自來自I/O譯碼譯碼1來自來自I/O譯碼譯碼2ADC0809ALESTART統一連接統一連接來自來自I/O譯碼譯碼地址鎖存地址鎖存ALE和啟動轉換和啟動轉換START第九章第九章8051外部接口的外部接口的C編程編程3636 軟件延時等待軟件延時等待(比如延時比如延時1ms)不用不用EOC信號信號vCPU效率最低效率最低 軟件查詢軟件查詢EOC狀態狀態vEOC通過一個三態門連到數據總線的通過一個三態門連到數據總線的D0(其他也可以其他也可以)v三態門要占用一個三態門要占用一個I/O端口地址端口地址vCPU效率低效率低 把把EOC作為中斷申請信號作為中斷申請信號v在中斷

35、服務程序中讀入轉換結果,效率高。在中斷服務程序中讀入轉換結果,效率高。轉換結束轉換結束EOCADC0809與系統的連接(續)與系統的連接(續)第九章第九章8051外部接口的外部接口的C編程編程3737ADC0809的啟動的啟動信號信號START由片由片選選P2.7與寫信號與寫信號WR的的“或非或非”產產生。要求一條向生。要求一條向ADC0809寫操作寫操作指令來啟動轉換。指令來啟動轉換。ALE與與START相相連,即按打入的通連,即按打入的通道地址接通模擬量道地址接通模擬量并啟動轉換。輸出并啟動轉換。輸出允許信號允許信號OE由讀由讀信號信號RD與片選信與片選信號號P2.7”或非或非“產產生生,

36、即一條即一條ADC0809的讀操的讀操作使數據輸出。作使數據輸出。第九章第九章8051外部接口的外部接口的C編程編程3838ADC0809的模擬通道的模擬通道07的地址為的地址為7FF8H7FFFH。從。從ADC0809的的8通道通道輪流采集一次數據,采集的結果放在數組輪流采集一次數據,采集的結果放在數組ad中。中。#include #include #define uchar unsigned char#define IN0 XBYTE0 x7ff8 /*設置設置ADC0809的通道的通道0地址地址*/sbit ad_busy=P33; /*EOC狀態狀態*/void ad0809(ucha

37、r idata *x,uchar n) /*采樣結果放指針中的采樣結果放指針中的A/D采集函數采集函數*/uchar i;uchar xdata *ad_adr;ad_adr=&IN0;for(i=0;in;i+) /*處理處理8個通道個通道*/ *ad_adr=0; /*啟動啟動A/D轉換轉換*/ i=i; i=i; /*延時等待延時等待*/ while(ad_busy=0); /*查詢等待轉換結束查詢等待轉換結束*/ xi=*ad_adr; /*存轉換結果存轉換結果*/ ad_adr+;void main(void)static uchar idata ad8;ad0809(ad,

38、8);第九章第九章8051外部接口的外部接口的C編程編程3939A/D采樣地址為采樣地址為7FF8H,8位位A/D最大值為最大值為255,用三個數碼管,用三個數碼管顯示,以顯示,以P3.3為查詢位。為查詢位。#include #define uint unsigned int#define uchar unsigned char #define SAMPLENUM 50sbit ad_busy=P3.3; void ad0809(uchar idata *x) uchar data i; uchar xdata *ad_adr; ad_adr=0 x7ff8; for(i=0;iSAMPLEN

39、UM;i+) *ad_adr=0; i=i; i=i; while(ad_busy=1); bufi=*ad_adr; P3=0 x01; 第九章第九章8051外部接口的外部接口的C編程編程4040void main(void) uint i, j, m, total; uchar idata bufSAMPLENUM; uchar idata dis3; uchar code tab16=0 x3f,0 x06,0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x7d, 0 x07, 0 x7f, 0 x6f, 0 x77, 0 x7c, 0 x39, 0 x5e, 0 x79,

40、0 x71;void delay(uchar data delay1) uchar data i,j; for(i=0;idelay1;i+) for(j=0;j=0;i-) total+=bufi-1; total=total/SAMPLENUM; dis0=total%10 total=total/10; dis1=total%10; dis2=total/10; for(m=0;mSAMPLENUM;m+) for(i=0;i3;i+) if(i=0) P3=0 x01; else P3=1; P1=tabdisi; delay(50); 第九章第九章8051外部接口的外部接口的C編程編程4242AD574是

溫馨提示

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

評論

0/150

提交評論