Aim:
This
section will show how to interface a DAC (digital-to-analog converter)
to the 8051. Then we demonstrate how to generate a sine wave on the
scope using the DAC.
Description:
Digital-to-analog (DAC) converter
The
digital-to-analog converter (DAC) is a device widely used to convert
digital pulses to analog signals. In this section we discuss the basics
of interfacing a DAC to the 8051.
Recall from your
digital electronics book the two methods of creating a DAC: binary
weighted and R/2R ladder. The vast majority of integrated circuit DACs,
including the MC1408 (DAC0808) used in this section, use the R/2R method
since it can achieve a much higher degree of precision. The first
criterion for judging a DAC is its resolution, which is a function of
the number of binary inputs. The common ones are 8, 10, and 12 bits. The
number of data bit inputs decides the resolution of the DAC since the
number of analog output levels is equal to 2″, where n is the number of data bit inputs. Therefore, an 8-input DAC
such as the DAC0808 provides 256 discrete voltage (or current) levels of output.Similarly, the 12-bit DAC provides 4096 discrete voltage levels. There are also16-bit DACs, but they are more expensive.
MC1408 DAC (or DAC0808)
In the MC1408 (DAC0808), the digital inputs are converted to current (Iout), and by connecting a resistor to the Ioutpin, we convert the result to voltage.The total current provided by the Iout pin is a function of the binary numbers at the DO – D7 inputs of the DAC0808 and the reference current (Iref), and is as follows:
where DO is the LSB, D7 is the MSB for the inputs, and Iref is the input current that must be applied to pin 14. The Iref current is generally set to 2.0 mA. Figure 13-18 shows the generation of current reference (setting Iref = 2 mA) by using the standard
5-V power supply and IK and 1.5K-ohm standard resistors. Some DACs also
use the zener diode (LM336), which overcomes any fluctuation associated
Figure 13-18. 8051 Connection to DAC808
Example 13-3
with the power supply voltage. Now assuming that Iref = 2 mA, if all the inputs to the DAC are high, the maximum output current is 1.99 mA (verify this for yourself).
Converting lout to voltage in DAC0808
Ideally we connect the output pin Iout to a resistor, convert this current to
voltage, and
monitor the output on the scope. In real life, however, this can cause
inaccuracy since the input resistance of the load where it is connected
will also affect the output voltage. For this reason, the Iref current output is isolated by connecting it to an op-amp such as the 741 with Rf = 5K ohms for the feedback resistor. Assuming that R = 5K ohms, by changing the binary input, the output voltage changes
Block Diagram
Schematic
Code
Main File:
// ******************************************************* // Project: Interfacing DAC with 8051 // Author: Code Bloges // Module description: Operate DAC0808 // ******************************************************* #include<reg51.h> unsigned char sine[50] = {52,57,62,66,70,74,77,80,82,84,85,86,86,86,85,83,81,78,75,72,69,65,61,56,52,48,44,39,35,31,28,25,22,19,17,15,14,14,14,15,16,18,20,23,26,30,34,38,43,48}; // Function Purpose: Produce approximate delay in Secs. void delay_us(unsigned int d) { unsigned int i; for(i=0;i<(d*20);i++); } // Main function void main() { int i; while(1) { for(i=0;i<50;i++) { P2=sine[i]; // assign the sine wave values to PORTB for DAC0808 IC delay_us(1); } // Two second delay } }
Downloads:
To download code and proteus simulation click here.
Further Reading suggestions:
- Interfacing keypad with 8051
- Interfacing with UART of 8051 controller
- Interfacing SPI communication with 8051
- 8051 Displaying Custom Characters on LCD
- 8051 Graphical LCD
- RTC interfacing using I2C in 8051
- Interfacing ultrasonic sensor with 8051
- Interfacing GPS Modu with 8051
- Interfacing GSM Module with 8051
- Interfacing PWM in 8051
No comments:
Post a Comment