Está en la página 1de 5

MICROCONTROLADORES

UNIVERSIDAD NACIONAL DEL CALLAO

Alumno:

Cdigo:

Cuellar Ventura Esttyward Briaam

1223210038

Curso: Microcontroladores
Facultad: Ingeniera elctrica y electrnica.
Escuela: Ingeniera electrnica.

2015 B

PROBLEMA N1
1

MICROCONTROLADORES

#include "avr_compiler.h"
#include "lcd.h"
void delay_ms(unsigned int t)
{
while (t--)
delay_us(1000);
}
int main(void)
{
lcd_init(); // Inicializar LCD
while(1){
if(!(PIND&(1<<PIND0)))// solo mostrara el letrero cuando PD0 sea 0
{
lcd_gotorc(1,5); // Cursor a fila 1 columna 5
lcd_puts("UNAC-FIEE"); // Muestra Mensaje
lcd_gotorc(2,5); // Cursor a fila 2 columna 5
lcd_puts("MICRO-ATMEGA8"); // Muestra mensaje

}
}

}
else // caso contrario en ellcd no habra nada
{
lcd_clear(); // limpiar el lcd
}

Pines de control del lcd:


RS: Corresponde al pin de seleccin de registro de control de datos (0) o registro de
datos(1). Es decir el pin RS funciona paralelamente a los pines del bus de datos.
Cuando RS es 0 el dato presente en el bus pertenece a un registro de
2

MICROCONTROLADORES

control/instruccin. y cuando RS es 1 el dato presente en el bus de datos pertenece a


un registro de datos o un carcter.
RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato
en la pantalla o leer un dato desde la pantalla.
E: Corresponde al pin Enable o de habilitacin. Si E(0) esto quiere decir que el LCD no
esta activado para recibir datos, pero si E(1) se encuentra activo y podemos escribir o
leer desde el LCD

PROBLEMA N2
a)
#include "avr_compiler.h"
#include "lcd.h"
void adc_setup(void);
unsigned int adc_read(char channel2);
int main(void)
{
char cadena[14], cadena2[14]; //usamos 2 cadenas
int n,vol1,vol2; // n , vol1 y vol2 son enteros
float vol; // vol es
lcd_init(); //iniciamos el lcd
adc_setup(); // llamamos adc_setup
lcd_gotorc(1,1); //seleccionamos la posicion en el lcd (fila 1 columna1)
lcd_puts("ADC:"); // escribimos ADC
lcd_gotorc(2,1); //seleccionamos la posicion en el lcd (fila 2 columna1)
lcd_puts("voltaje:"); // escribimos voltaje
while(1) //bucle infinito
{
n=adc_read(0); // tomamos el valor digital
vol=n*5.0/1023;
vol1=vol;
vol2=(vol-vol1)*100;
sprintf(cadena,"%0004u",n);
lcd_gotorc(1,11);
lcd_puts(cadena);
sprintf(cadena2,"%d.%02d v.",vol1,vol2);
lcd_gotorc(2,11);
lcd_puts(cadena2);
}
}
void adc_setup(void)
{
ADMUX=(1<<REFS0); //ASIGNAMOS EL VOLTAJE DE REFERENCIA
ADCSRA=(1<<ADEN)|(1<<ADPS0)|(ADPS1)|(ADPS2); //
HABILITAMOS EL MODULO ADC Y LA PRESCALA=128
}
unsigned int adc_read(char channel2)
{
channel2=2; // usaremos el canal 2 del adc
ADMUX|=channel2;
ADCSRA|=(1<<ADSC); // conversion simple
while(!(ADCSRA&(1<<ADSC))); //espera que termine la conversion
return (ADC);
}

b)

MICROCONTROLADORES

c)

ADC =

V Vref
10241

d)
ADCSRA. Es el principal registro de control y estado del ADC. Manipulando
los bits de este registro iniciamos la conversin, establecemos la velocidad
de conversin o elegimos el formato del resultado de la conversin.
Veremos los detalles en adelante.

e)
Se selecciona el reloj del conversor ADC, con los bits ADPS2:ADPS0.
f)
Se selecciona el canal o los canales de entrada del ADC, con los bits
MUX4:MUX0.
g)
Se encendie el mdulo ADC, seteando el bit ADEN.
h)
Se inicia la conversin, seteando el bit ADSC.

MICROCONTROLADORES