Este ejemplito hace uso del integrado PCF8591 que es capaz de realizar conversiones Analógico a Digital y Digital a Analógico.
Datasheet del PCF8591En nuestro caso vamos a generar una salida analógica variando desde 0V a 5v (Vcc) en 256 pasos sucesivos.
Además este integrado responde al protocolo I
2C que es el que vamos a utilizar para comunicarnos con él y mandarle realizar la conversión DA que nos interesa.
Codigo:
#include <16f876a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use standard_io(b)
int analogico=0x00;
#use i2c(master,sda=PIN_C4, scl=PIN_C3) // Configuración del I2C como Master y los pines del MSSP en mi 16F876A.
void main() {
i2c_start(); // Inicio la comunicación I2C
i2c_write(0b10010000); // Envío Dirección I2C del PCF8591
i2c_write(0b01000000); // Envío Configuración del PCF8591 para Conv. DA
do {
i2c_write(++analogico); // Envío Valor digital 0x00->0V, 0xFF->Vcc
} while (TRUE);
}
Este programa nos generará una preciosa onda de sierra en el pin 15 (AOUT) del PCF8591 (De hecho ahora, mientras escribo este post, la estoy viendo en la pantalla del osciloscopio
)