Interfacing 8051 with ADC 0808 and DAC 0808
Analog to Digital Converter (ADC):
In most of our Microcontroller based projects, if we need to interface a sensor whose output is a voltage range corresponding to the input what it senses, (like Temperature, Humidity, Gas concentration, Pressure, Light Intensity etc.) which needs to be taken to the Microprocessor or Microcontroller to act upon or for further processing, then we need a Mediator between the analog voltages and the Digital Signals of Microcontroller. An ADC (Analog to Digital Converter) is just the device to do it.
It has the following characteristics:
- The input to the A/D converter is a voltage. A/D converters may be designed for voltages from 0 to 10v, from -5 to +5v, etc., but they almost always take a voltage input. In any event, the input is an analog voltage signal for most cases.
- The output of the A/D converter is a binary signal, and that binary signal encodes the analog input voltage. So, the output is some sort of digital number, which can be read by a computer.
ADC0808, ADC0809 data acquisition component is a monolithic CMOS device with an 8-bit analog-to-digital converter, 8-channel multiplexer and microprocessor compatible control logic. Easy interfacing to microprocessors is provided by the latched and decoded multiplexer address inputs and latched TTL TRI-STATE® outputs.
Key Specifications Of ADC 0808:
- Resolution: 8 Bits
- Single Supply: 5 VDC
- Low Power: 15 mW
- Conversion Time: 100 μs
Absolute Maximum Ratings
- Supply Voltage (VCC) (Note 3) 6.5V
- Voltage at Any Pin Except Control Inputs −0.3V to (VCC+0.3V)
- Voltage at Control Inputs (START, OE, CLOCK, ALE, ADD A, ADD B, ADD C) −0.3V to +15V
Flow Chart of Reading Data from ADC:
Digital to Analog Converter (DAC):
To interface the Microcontroller to the real world where just an ON/OFF control is not sufficient enough, for example a Proportional Valve which requires an Analog voltage ranging within certain voltage levels, or a voltage controlled fan/motor speed controller, or brightness of an LIGHT which depends proportionally to the input voltage, we need a device which can take the digital output data of the microcontroller and give a analog electrical quantity. A DAC is a device for just that purpose.
A DAC is a device which gives a current output which is proportional to the input digital data. But in real world applications we mostly need a voltage output, hence a current to voltage converter is mostly connected to the output of a DAC as shown above.
The output Current of the DAC is given as,
Schematic of Interfacing ADC 0808 and DAC 0808 with AT89c51 Microcontroller:
;ADC 0808 Interfacing with Atmel 89C51 uC ;Interrupt Driven Method adc_a bit p2.0 ;define ADC pins connected adc_b bit p2.1 ;to the pins of Microcontroller adc_c bit p2.2 adc_sc bit p2.3 adc_ale bit p2.4 adc_oe bit p2.5 .org 0000h ;set start address to 0000h sjmp main ;jump to main program .org 0003h ;address of the ISR setb adc_oe ;enable the Output port of ADC nop mov A, p1 ;move converted data from ADC to Accumulator mov p0, A ;move the data to DAC's I/p port' clr adc_oe reti ;return from ISR to main Program main: mov IE, #81h ;enable Int0 setb TCON.0 ;enable edge triggered mov p1, #0ffh ;set p1 as i/p port clr adc_oe ;disconnect adc's data bus from Microcontroller clr adc_ale clr adc_sc clr adc_a ;set the address of I/P channel of ADC clr adc_b clr adc_c setb adc_ale ;latch the address setb adc_sc ;give a pulse for Start Conversion clr adc_ale clr adc_sc loop_here: mov r6, #2fh ;this is what the Microcontroller repeat: djnz r6,repeat ;is busy doing;Note:THIS SHOULD BE GREATER ljmp main ;THAN THE TIME REQUIRED FOR CONVERSION i.e. approx 100uS END ;end of main program
The Simulated CRO Waveform:
The Proteus Simulation Video (Flash Recording):