Huanca Marcelo LAB3
Huanca Marcelo LAB3
Huanca Marcelo LAB3
MICROPROCESADORES I
Grupo “A”
Gestión II – 2021
❖ Objetivo General:
Parte 1:
Programar el microcontrolador para que realice la lectura de dos entradas analógicas,
conectadas a dos pontenciometros y muestre los valores obtenidos por el ADC en un LCD.
❖ Objetivos específicos:
❖ Marco Teórico:
Un conversor o convertidor de señal analógica a digital (Conversor Analógico Digital, CAD; Analog-to-
Digital Converter, ADC) es un dispositivo electrónico capaz de convertir una señal analógica, ya sea de
tensión o corriente, en una señal digital mediante un cuantificador y codificándose en muchos casos en un
código binario en particular. Donde un código es la representación unívoca de los elementos, en este caso,
cada valor numérico binario hace corresponder a un solo valor de tensión o corriente.
En la cuantificación de la señal se produce pérdida de la información que no puede ser recuperada en el
proceso inverso, es decir, en la conversión de señal digital a analógica y esto es debido a que se truncan los
valores entre 2 niveles de cuantificación, mientras mayor cantidad de bits mayor resolución y por lo tanto
menor información perdida.
Se utiliza en equipos electrónicos como computadoras, grabadores de sonido y de vídeo, y equipos de
telecomunicaciones.
❖ Enunciado de la Experiencia:
Código
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
int main(void)
{
uint16_t valor1,valor2;
char txt[4]; // Vector usado para la conversion de entero a cadena
ADMUX=0b01000000; //Vref= AVcc y justificacion a la derecha
ADCSRA=0b10000111; // Habilitar modulo ADC y prescalador de 128
DIDR0=0b00000011; //deshabilitar buffer digital del canal 0,1
lcdInit();
lcdCommand(0x0C);
lcdCommand(0x80);
lcdPrint("ADC0:");
lcdGotoxy(0,1);
lcdPrint("ADC1:");
while (1)
{
ADMUX=0b01000000; //Habilitar el canal 0;
ADCSRA|=(1<<ADSC); //Iniciar conversion
while((ADCSRA & (1<<ADIF))==0);
valor1=ADC;
ADMUX=0b01000001; //Habilitar el canal 1;
ADCSRA|=(1<<ADSC); //Iniciar conversion
while((ADCSRA & (1<<ADIF))==0);
valor2=ADC;
lcdCommand(0x86);
lcdPrint(itoa(valor1,txt,10));
lcdCommand(0xC6);
lcdPrint(itoa(valor2,txt,10));
if (valor1<10 ) //si el valor1 es menor a 10
{
lcdCommand(0x87);
lcdPrint(" "); //Borrar el resto de digitos
}
if (valor1<100 && valor1>=10) // Si el valor1 esta entre 10 y 99
{
lcdCommand(0x88);
lcdPrint(" "); //Borrar el resto de digitos
}
if (valor1<1000 && valor1>=100) //Si el valor1 esta entre 100 y 999
{
lcdCommand(0x89);
lcdPrint(" "); //Borrar el resto de digitos
}
if (valor2<10 ) // Si el valor 2 es menor a 10
{
lcdCommand(0xC7);
lcdPrint(" "); //Borrar el resto de digitos
}
if (valor2<100 && valor2>=10) //Si el valor2 esta entre 10 y 99
{
lcdCommand(0xC8);
lcdPrint(" "); //Borrar el resto de digitos
}
if (valor2<1000 && valor2>=100) //Si el valor2 esta entre 100 y 999
{
lcdCommand(0xC9);
lcdPrint(" "); //Borrar el resto de digitos
}
_delay_ms(1);
}
}
//Funciones del LCD
❖ Simulación:
❖ Cuestionario:
• Explicar el proceso de cuantificación del ADC. ¿Cuál es el rango de valores del ADC del
microcontrolador?
R.- El proceso de cuantificación digital es posterior a la etapa de muestreo que es toman valores de
amplitud de una determinada señal analógica, un ADC maneja una entrada analógica un numero
binario de 10bits, es decir los valores que puede llegar a operar son de 0 a 1023.
❖ Conclusiones:
En este laboratorio se realizó con éxito para el ADC, ya que fue un programa algo largo pero con una
lógica algo sencilla.
❖ Bibliografía:
https://www.rinconingenieril.es/ajustar-senal-adc/
https://es.wikipedia.org/wiki/Cuantificaci%C3%B3n_digital#:~:text=El%20proceso%20de%20cuantifica
ci%C3%B3n%20digital,muestra%20pero%20no%20es%20digital.