LCD y TECLADO en Atmel Studio
LCD y TECLADO en Atmel Studio
LCD y TECLADO en Atmel Studio
Librerías:
Para empezar es importante tener primero que todo las siguientes librerías:
estas librerías deben estar guardas en la misma carpeta donde se encuentra el main.c de nuestro
proyecto:
Luego de esto se procede a agregar las librerías en atmel studio, para ello se crea un nuevo proyecto,
y después le damos clic derecho sobre el icono amarillo, el nombre corresponde al nombre que el
usuario haya asignado al proyecto, después damos clic en add y existing ítem, como se muestra en las
siguientes imágenes:
Ahora buscamos las 4 librerias donde ya las habiamos guardado, es decir donde se encuentra el
proyecto:
Se selecciona y se agrega las 4 librerias ya
mencionadas
Aquí buscamos la parte en la que se le define el puerto a usar para las conexiones, en esto caso está
en el puerto D, lo podemos cambiar al puerto que necesitemos, además en las líneas de código hay
comentarios que nos da información de que es cada pin. Estos números corresponden al número del pin
del puerto que estemos usando.
la simulacion de proteus.
Simulación en Proteus:
Primero buscamos las tres cosas que se necesita, en este caso se usó el atmega16, el LCD, y el
teclado:
Procedemos hacer las respectivas conexiones, esto teniendo en cuenta los puertos que se les asignaron
a cada dispositivo en atmel
Para ello miramos las conexiones primero para el lCD haciendo clic en lcd.h y hacemos las respectivas
conexiones:
Ahora abrimos los
archivos mat_kbrd.c y mat_kbrd.h y miramos las conexiones del
teclado:
desde el PINC0 hasta el PINC7 respectivamente, por lo tanto las conexiones quedarán
así:
Programa en Atmel
Los comandos básicos para el funcionamiento del LCD y teclado son:
Ejemplo programa en atmel:
/*
* Author : Jjat_Jjat
*/
int main(void)
{
char key;
int i ;
lcd_init(LCD_DISP_ON); //INICIALIZA LA LDC, EL PUERTO AL QUE ESTÕ CONECTADO PUERTO D
kbrd_init(); //INICIA TECLADO
lcd_home(); //ENVIAR EL PUNTERO A LA POSICION INICIAL
lcd_puts(" PRUEBA"); //IMPRIME EL CARACTER
_delay_ms(50);
lcd_clrscr(); //LIMPIAR LA PANTALLA (CLEAR SCREEN)
while (1)
{
key = kbrd_read(); //LEE EL TECLADO
if (key != 0){
lcd_gotoxy(i,0); //MUEVE EL CURSOR A LA POSICIÓN X=i,Y=0
lcd_putc(key); //IMPRIME EL CARACTER
i++;
}
}
Resultado:
ADJUNTO LINK VIDEO EN EL CUAL SE EXPLICA LA CONFIGURACION DEL LCD Y TECLADO
ANTERIORMENTE VISTA, EN LA DESCRIPCIÓN DEL VIDEO TAMBIÉN SE ENCUENTRAN LAS
LIBRERIAS:
Librerías:
https://drive.google.com/open?id=1MtY01k_nbq7YpKUlMS71EjD3PvGPX_HA
Link Video:
https://www.youtube.com/watch?v=KHeUGyIqHjo
CONFIGURACIÓN REGISTROS PARA EL USO DE LOS ADC (ANALOG TO DIGITAL CONVERTER)
En este caso se van a configurar los ADC del uC atmega 32 es lo mismo para otros
atmega, basta con mirar el datasheet de cada atmega e ir a la sección de Analog
to Digital Converter:
En esta sección lo primero que hay que hacer es poner un voltaje de referencia
que me sirva para hacer la conversión, este voltaje puede ser externo como puede
ser interno, para escoger hay que poner en 1 o 0 a los bits 6 y 7 del ADMUX es
decir a REF1 y a REF0, como muestra la anterior tabla, en este caso se usará el
voltaje de referencia interno que tiene el uC, por lo tanto dejamos ponemos
ceros tanto en REF1 como en REF0:
void Init( void )
{
//referencia Vcc
ADMUX &= ~(1 << REFS0);
ADMUX &= ~(1 << REFS1);
}
Luego vamos a escoger que canal queremos usar para recibir nuestra señal
análoga:
Los bits de este registro son muy importantes, empezando con el bit 7 ADEN,
hay que poner en 1 al bit 7 para habilitar el ADC y hay que poner el bit 6 ADSC
en 1 para empezar la conversión, así mismo para ADATE que habilita un disparo
automático (auto-trigger) ADIE para habilitar una interrupción, ADPS2, ADPS1,
ADPS0, para seleccionar el preescaler:
Del preescaler y del reloj que estemos usando depende la frecuencia de muestreo
de nuestra señal, por ejemplo si estamos usando un reloj de 8Mhz y escogemos un
preescaler de 64, nuestra frecuencia de muestreo será:
1
∗ 8000000 = 125𝐾ℎ𝑧
64
Aquí se tiene dos opciones que son poner el ADLAR en uno o poner el ADLAR en
cero, esto implica trabajar con una resolución (que tan preciso se quiere el
dato) de 10 bit o de 8 bits respectivamente, en este registro es donde se van
almacenar los datos que se reciben por las entradas del ADC.
PUERTO C:
PUERTO D:
REGISTRO PARA