Signal control on ADC0804
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.
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
Example of ADC Application
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
Interfacing with the LM35 (Temperature Sensor)
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: