ADC Interfacing
ADC Interfacing
=
Pin Vref/2 is open, Step size =19.6mV
ADC0804 has
resolution of
8 bits
ADC0804 Chip
D0 D7
D0 D7 are the digital data output pins. These are the tri-state
buffered and the converted data is accessed only when CS = 0
and RD is forced low. The output voltage:
Analog Ground and Digital Ground
Analog ground is connected to the ground of the analog signal
while digital ground is connected to the ground of the Vcc pin.
size Step
V
D
in
out
=
Question: An analog input voltage of 3.5V, Pin Vref/2 is open.
Solution:
Dout = 3.5V / 19.6mV = 178 or 179 (depends on accuracy of ADC)
1. Make CS = 0 and send a L-to-H pulse to pin WR to start the
conversion.
2. Keep monitoring the INTR pin. If INTR is low, the conversion is
finished and we can go to the next step. If INTR is high, keep
polling until it goes low.
3. After the INTR has become low, we make CS = 0 and send a H-
to-L pulse to the RD pin to get the data out of the ADC0804 IC
chip.
Signal control on ADC0804
Read it
End conversion
Start conversion
Data out
CS
WR
D0 D7
INTR
RD
Note: CS is set to low for both RD and WR pulses
The timing diagram of ADC0804
Figure 10.2
Testing the ADC0804
P2.5
P2.6
P1.0
P1.7
P2.7
RD
WR
D0
:
:
:
:
:
D7
INTR
CS
A GND
Vref/2
D GND
V
CC
CLK R
CLK IN
10k
POT
+5V
8051 ADC0804
V
in
(+)
V
in
()
P2.5
P2.6
Example 10-1
Write a program to monitor the INTR pin and bring the digital input value into register A.
Then call a subroutine to display the input value on a 7-segment display. Do this
continuously.
;P2.6 = WR (Start conversion needs a L-to-H pulse)
; P2.7 = INTR (When low, end-of-conversion)
; P2.5 = RD (H-to-L will read the data from ADC chip)
; P1.0 P1.7 = D0 D7 of the ADC0804
;
MOV P1, #0FFH ; make P1=input
BACK: CLR P2.6 ; WR=0
SETB P2.6 ; WR=1 L-to-H to start conversion
HERE: JB P2.7, HERE ; wait for end of conversion
CLR P2.5 ; conversion finished, enable RD
MOV A, P1 ; read the data
ACALL DATA_DISPLAY ; display the data
SETB P2.5 ; make RD=1 for next round
SJMP BACK
Referred to Example 10.1, the digital values output from the ADC0804
correspond to the analogue voltage inputs. It is calculated by:
1 2
=
n
cc
V
Size Step
V Size Step 019608 . 0
255
5
1 2
5
8
= =
=
Analogue input voltage
V
in
(V)
Digital Value Output
D
out
0 0/0.019608 = 0
0.5 0.5/0.019608 = 26
1.0 1.0/0.019608 = 51
1.5 1.5/0.019608 = 77
2.0 2.0/0.019608 = 102
size Step
V
D
in
out
=
5.0 5.0/0.019608 = 255
Temperature detection
A temperature sensor (LM34 or LM35) is interfaced to the 8051
via an ADC (ADC0804)
The output voltage from the LM34/LM35 is linearly proportional
to the measuring temperature
The ADC0804 converts the output voltages from the
LM34/LM35 into digital signals, which correspond to the
measured temperature.
They are then handled by the 8051
Example of ADC Application
Interfacing with the LM35 (Temperature Sensor)
P2.5
P2.6
P1.0
P1.7
P2.7
RD
WR
D0
D7
INTR
CS
A GND
Vref/2
D GND
V
CC
CLK R
CLK IN
+5V
8051 ADC0804
XTAL1
XTAL2
Q
Q
D Q
V
in
(+)
V
in
()
Set to
1.28V
LM35
Clock freq 4
Q
Q
D Q
The ADC0804 converts the output voltages from the LM35 into
digital signals, which correspond to the measured temperature.
Step size of the ADC0804 = (1.28)x(2)/255 = 0.01004V
Clock input to the ADC0804 = clock frequency 4
If the following data of LM35 are given
the temperature range of the temperature sensor LM35 is -
55C to 150C and its output scale is 10mV/C, and
the output value of the ADC0804 is 00H when the LM35
senses -55C
then the value output from the ADC0804 for a measuring
temperature 100 C is:
BH or
x
D
out
9 155 38 . 154
01004 . 0
01 . )) 55 ( 100 (
= =
=
Example ADC Application
size Step
V
D
in
out
=
ADC 0808/0809
CHIP WITH 8 ANALOG CHANNEL
ADC 0804 has one input, this chip has 8 inputs.
A,B,C addresses to select IN0-IN7 and activate
ALE to latch in the address
SC to start conversion
SC is same as WR
EOC end of conversion
EOC is same as INTR
OE output enable(READ)
OE is same as RD
ADC0808/0809
ANALOG CHANNEL SELECTION
Selected Analog Channel C B A
IN0 0 0 0
IN1 0 0 1
IN2 0 1 0
IN3 0 1 1
IN4 1 0 0
IN5 1 0 1
IN6 1 1 0
IN7 1 1 1
ALGORITHM
Select an analog channel by provide bits to A, B, C.
NOTE : there is no self-clocking and clock must be provided
from an external source to the CLK pin. Hence Enable clock
Activate ALE (address latch enable) with a low-to-high
pulse.
Activate SC (start conversion) with a high-to-low pulse
The conversion is begun on the falling edge of the start
conversion pulse.
Monitor EOC (end of conversion) Pin .After conversion
this pin goes high.
Activate OE (output enable) with a low-to-high pulse to
read data out of the ADC chip.
SELECTING A CHANNEL AND READ TIMING
PROGRAM
The digital-to-analog converter (DAC) is a device widely used to convert
digital values to analog signals.
It does the reverse operation of an ADC
The resolution of DAC depends on the no. of binary bits input to it.
The common ones are 8, 10 and 12 bits.
An 8-input DAC provides 256 discrete voltages (or current) levels of output.
(The 12-bit DAC gives 4096 discrete levels).
Digital-to-Analog (DAC) Conversion
D0
D7
DAC
Digital
inputs
Analog output
(Voltage or current)
Figure 10.5
DAC0808 Chip (MC1408)
P2.5
P2.6
P1.0
P1.7
V
ref
(e.g +5V)
8051
V
out
= 0 to 10V
D0
D7
Comp.
V
ee
V
CC
DAC0808
V
in
(+)
V
in
()
GND
+5V
R
ref1
I
out
15V
I
ref
= V
ref
/(R
ref1
+R
ref2
)
= 2mA (Typical)
To Scope
I
ref
R
ref 2
R
0
+
Figure 10.6
DAC0808 Chip (MC1408)
Operating Principle
In the DAC0808, the digital inputs are converted to corresponding current (I
out).
Then by connecting a resistor to the I
out
pin, the current will further convert to
voltage level.
The total current provided by the output I
out
pin is a function of the reference
current (I
ref
) and is follows:
Converting I
out
to voltage (V
out
)
Connect the output pin I
out
to a output standard resistor and hence convert
this current to a voltage.
|
.
|
\
|
+ + + + + + + =
256
D
128
D
64
D
32
D
16
D
8
D
4
D
2
D
0 1 2 3 4 5 6 7
ref out
I I
Output voltage, V
out
= I
out
x R
o
Solution:
(a) 99H = 153
10
(b) C8H = 200
10
Example
Assume that Ro = 5kO, R
ref1
= 1k O, R
ref2
= 1.5k O and using a standard 5V
supply connected to V
ref(+),
calculate V
out
for the following binary inputs.
(a) 1001 1001 (99H) (b) 1100 1000 (C8H)
mA I
ref
2
1500 1000
5
=
+
=
mA mA I
out
195 . 1
256
153
) 2 ( = =
V k mA V
out
975 . 5 ) 5000 )( 195 . 1 ( = O =
mA mA I
out
562 . 1
256
200
) 2 ( = =
V k mA V
out
8125 . 7 ) 5000 )( 562 . 1 ( = O =
Example
In order to generate a star-step ramp, set up the circuit as in Figure
10.6 and connect the output to an oscilloscope. Then write a program
to send data to the DAC at port 1 to generate a stair-step ramp.
Solution:
ORG 0H
CLR A
AGAIN: MOV P1, A ; send data to DAC
INC A ; count from 0 to FFH
ACALL DELAY ; let DAC work and recover
SJMP AGAIN
END
Example
Use the circuit in Figure 10.6, write a program to generate a sine wave
of full-scale 10V output. If the output is connected to a CRO, draw the
display on the CRO screen.
Solution:
Assume 10V full-scale voltage for the DAC output.
V
out
= [5 + (5 sin u)] V
A table is drawn up to list the magnitude of the sine of angles between 0 and
360 degrees. The table values are integer numbers representing the voltage
magnitude for the sine u.
Table 10.5 gives the angles, the sine values, the voltage magnitudes and the
integer values representing the voltage magnitude for each angle (with 30
interval).
Table : Angle vs Voltage Magnitude for Sine Wave
Angle u (degree) Sine u Vout
5V + (5sin u )
Voltage Values
sent to DAC
0 0 5 128
30 0.5 7.5 192
60 0.866 9.33 238
90 1.0 10 255
120 0.866 9.33 238
150 0.5 7.5 192
180 0 5 128
210 0.5 2.5 64
240 0.866 0.669 17
270 1.0 0 0
300 0.866 0.669 17
330 0.5 2.5 64
360 0 5 128
Vout x 256/10
256 steps and full scale Vout is 10 volts
9.33*256/10
Program Generating a Sine Wave
ORG 0H
AGAIN: MOV DPTR, #TABLE
MOV R2, #COUNT
BACK: CLR A
MOVC A,@A+DPTR
MOV P1,A
INC DPTR
DJNZ R2, BACK
SJMP AGAIN
;
ORG 300
TABLE: DB 128, 192, 238, 255, 238, 192
DB 128, 64, 17, 0, 17, 64, 128
;
; To get a better looking sine wave, regenerate the look-up table for 2-degree angles
END
Display on the Generating Sine Wave on CRO
30 90 150 210 270 330
10
9
8
7
6
5
4
3
2
1
0
u /Degrees
V / Volts
V = 5 + 5 * sin u
FFh
80h
D7..D0
1. In the ADC0804, the INTR signal is an _____ (input, output)
2. In the ADC0804, to begin conversion, send a(n) ______ pulse to pin _____ .
3. Which pin of the ADC0804 indicates end-of-conversion?
4. In a ADC, input is ________ (digital, analog) and output is _______ (digital, analog).
5. Find the step size for an ADC0804 chip if V
ref
/2 =1.9V .
6. With V
ref
/2 =0.64V, find the Vin for the D7 D0 = 1001 1001 output.
7. In a DAC, input is ________ (digital, analog) and output is _______ (digital, analog).
8. DAC0808 is a9n) ___-bit D-to-A converter.
9. The output of DAC0808 is in _________ (current, voltage).
10.Find the I
out
for the digital input 1110 1110 to DAC0808. Assume I
ref
= 2mA.
11.To get a smaller step, we need a DAC with _____ (more, fewer) digital inputs.
12.The LM35 provides ____mV for each degree of _______ (Fahrenheit, Celsius).
Review Questions