Como fazer a interface do teclado com o microcontrolador AVR (ATmega16) – (Parte 11/46)

Cómo conectar el teclado con el microcontrolador AVR (ATmega16) – (Parte 11/46)

El teclado es el dispositivo de entrada más utilizado para proporcionar información del mundo externo al microcontrolador. El teclado hace que la aplicación sea más interactiva para los usuarios. El concepto de interconectar un teclado con el ATmega16 es similar a interconectar con cualquier otro microcontrolador. Se puede consultar el artículo Interfaz de teclado con 8051 para obtener una descripción detallada de la metodología utilizada aquí. Este artículo explica cómo conectar un teclado 4x3 con el microcontrolador AVR (ATmega16) y cómo mostrar la salida en una pantalla LCD.
El algoritmo y la explicación detallada de la interfaz del teclado se proporcionan en el artículo mencionado anteriormente. Los breves pasos para conectar el teclado al AVR se describen a continuación:
1. Configure pines de fila o columna.
dos. Configure todos los pines de salida en nivel bajo y los pines de entrada en nivel alto.
3. Continúe monitoreando el valor del puerto donde está conectado el teclado.


 mientras(1)

{ PUERTO=0xF0; //establece todas las entradas como una valor=PIND; //obtiene el valor PORTD en la variable “valor” if(value!=0xf0) //si se presiona cualquier tecla, el valor cambiará { comprobar1; comprobar2; comprobar3; comprobar4; } }
4. Si hay algún cambio en el valor del puerto, establezca uno de los pines de salida del puerto en cero y déjelo todo en alto.


 verificación nula 1 (nula)
 {
 //DDRD = 0xf0;
 bloque =0b11111110;
 //pad &= (0< 
_delay_us(10);
 si(bit_is_clear(PIND,c1))
 LCD_write('1');
 de lo contrario si (bit_is_clear (PIND, c2))
 LCD_write('2');
 de lo contrario si (bit_is_clear (PIND, c3))
 LCD_write('3');
 }
 
5. Si algún pin de entrada es cero, escriba los datos del pin específico en la pantalla LCD; de lo contrario, continúe con el paso (4).

Código fuente del proyecto

###


 // Programa para tomar la entrada del teclado y mostrarla en la pantalla LCD.
#incluir
#incluir #definir pad PORTD #definir r1 PD0 #definir r2 PD1 #definir r3 PD2 #definir r4 PD3 #definir c1 PD4 #definir c2 PD5 #definir c3 PD6 marque null1 (nulo); marque null2 (nulo); marque null3 (nulo); marque null4 (nulo); #definir PUERTO LCD_DATA //Puerto de datos LCD #definir ctrl PORTAB #definir en PB2 //activar la señal #definir rw PB1 //señal de lectura/escritura #definir jajaja PB0 //señal de selección de resistencia void LCD_cmd (cmd de carácter sin firmar); vacío init_LCD(vacío); void LCD_write (datos de caracteres sin firmar); prensa interna sin firmar; int principal { valor de carácter sin firmar; DDRA=0xff; // Puerto LCD_DATA como puerto de salida DDRB=0x07; //marcar como salida DDRD=0x0F; bloque=0xf0; inicio_LCD; //inicialización LCD LCD_write_string("presione una tecla"); LCD_cmd(0xc0); mientras(1) { PUERTO=0xF0; //establece todas las entradas como una valor=PIND; //obtiene el valor PORTD en la variable “valor” si(valor!=0xf0) //si se presiona alguna tecla el valor cambiará { comprobar1; comprobar2; comprobar3; comprobar4; } } devolver 0; } verificación nula 1 (nula) { //DDRD = 0xf0; bloque =0b11111110; //pad &= (0< _delay_us(10); si(bit_is_clear(PIND,c1)) LCD_write('1'); de lo contrario si (bit_is_clear (PIND, c2)) LCD_write('2'); de lo contrario si (bit_is_clear (PIND, c3)) LCD_write('3'); } cheque nulo 2 (nulo) { bloque = 0b11111101; /pad &= (0< _delay_us(10); si(bit_is_clear(PIND,c1)) LCD_write('4'); de lo contrario si (bit_is_clear (PIND, c2)) LCD_write('5'); de lo contrario si (bit_is_clear (PIND, c3)) LCD_write('6'); } cheque null3 (nulo) { bloque = 0b11111011; //pad &= (0< _delay_us(10); si(bit_is_clear(PIND,c1)) LCD_write('7'); de lo contrario si (bit_is_clear (PIND, c2)) LCD_write('8'); de lo contrario si (bit_is_clear (PIND, c3)) LCD_write('9'); } verificación nula 4 (nula) { bloque =0b11110111; //pad &= (0< _delay_us(10); si(bit_is_clear(PIND,c1)) LCD_write('#'); de lo contrario si (bit_is_clear (PIND, c2)) LCD_write('0'); de lo contrario si (bit_is_clear (PIND, c3)) LCD_write('*'); } init_LCD vacío (vacío) { LCD_cmd(0x38); //inicialización del LCD 16X2 en modo de 8 bits _delay_ms(1); LCD_cmd(0x01); //limpiar la pantalla LCD _delay_ms(1); LCD_cmd(0x0E); //cursor activado _delay_ms(1); LCD_cmd(0x80); // ---8 va a la primera línea y --0 está a la posición 0 _delay_ms(1); volver; } void LCD_cmd (cmd de carácter sin firmar) { LCD_DATA=cmd; Ctrl=(0< //haciendo RS y RW como BAJO y EN como ALTO _delay_ms(1); Ctrl=(0< //haciendo RS, RW, LOW y EN como LOW _delay_ms(50); volver; } void LCD_write (datos de caracteres sin firmar) { LCD_DATA=datos; control = (1< // haciendo RW como BAJO y RS, EN como ALTO _delay_ms(1); control = (1< //haciendo EN y RW como BAJO y RS ALTO _delay_ms(50); // da un retraso de 10 milisegundos para ejecutar cosas volver ; } void LCD_write_string(carácter sin firmar *cadena) // obtenemos el valor de la dirección de cadena en el pioneer *str { int i=0; mientras(cadena(i)!='�') // el bucle continuará hasta que haya caracteres NULL en la cadena { LCD_write(cadena(i)); //enviando datos al CD byte a byte yo++; } volver; }

###

Diagramas de circuito

Diagrama de circuito de cómo conectar el teclado con el microcontrolador AVR-ATmega16

Componentes del proyecto

  • ATmega16
  • LCD
  • Por defecto

Vídeo del proyecto

Conteúdo Relacionado

En cada vehículo hay una red de sensores integrada...
El controlador del motor es uno de los componentes...
ESP32-CAM es un módulo de cámara compacto que combina...
La evolución de los estándares USB ha sido fundamental...
SCHURTER anuncia una mejora de su popular serie SWZ...
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Probablemente se haya encontrado con el término " resistencia...
Probablemente tenga un aislante de soporte si ha notado...
Probablemente haya visto un aislante colocado en postes de...
Probablemente hayas visto aisladores de grillete entronizados en postes...
Probablemente hayas experimentado situaciones en las que controlar un...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.