Para establecer una buena comunicación entre el mundo humano y el mundo de las máquinas, las unidades de visualización juegan un papel importante. Por tanto, son una parte importante de los sistemas integrados. Las unidades de visualización, grandes o pequeñas, funcionan según el mismo principio básico. Además de unidades de visualización complejas como pantallas gráficas y pantallas 3D, uno debe saber trabajar con pantallas simples como unidades de 16x1 y 16x2. La unidad de visualización de 16x1 tendrá 16 caracteres y estará en una línea. La pantalla LCD de 16x2 tendrá 32 caracteres en total 16 en la 1ª línea y otros 16 en la 2ª.línea. Aquí uno debe entender que en cada carácter hay 5x10 = 50 píxeles, por lo que para mostrar un carácter, los 50 píxeles deben trabajar juntos. Pero no debemos preocuparnos por eso porque hay otro controlador (HD44780) en la unidad de visualización que hace el trabajo de controlar los píxeles. (puede verlo en la unidad LCD, es el ojo negro en la parte posterior).
Componentes requeridos
Hardware:
Microcontrolador ATmega32
Fuente de alimentación (5v)
Programador AVR-ISP
JHD_162ALCD (LCD de 16x2)
Condensador 100uF.
Software:
Estudio Atmel 6.1
Progisp o magia flash
Diagrama de circuito y explicación
Como se muestra en la interfaz LCD con el circuito ATmega32, puede ver que el PORTA de ATMEGA32 está conectado al puerto de datos LCD. Aquí uno debe recordar deshabilitar la comunicación JTAG en PORTC de ATMEGA cambiando los bytes del fusible, si se quiere usar el PORTC como un puerto de comunicación normal. En LCD de 16x2 hay 16 pines en total, si hay luz de fondo, si no hay luz de fondo, habrá 14 pines. Uno puede encender o dejar los pines de luz de fondo. Ahora en los 14 pines hay 8 pines de datos (7-14 o D0-D7), 2 clavijas de alimentación de alimentación (1 y 2 o VSS y VDD o GND y + 5V), 3 rd pin para el control de contraste (Vee-controla cómo de espesor los caracteres deben estar mostrado), 3 pines de control (RS & RW & E)
En el circuito anterior para interconectar LCD 16x2 con microcontrolador AVR, puede observar que solo he tomado dos pines de control. Esto le da la flexibilidad de una mejor comprensión. El bit de contraste y READ / WRITE no se utilizan con frecuencia, por lo que pueden cortocircuitarse a tierra. Esto coloca a la pantalla LCD en el modo de mayor contraste y lectura. Solo necesitamos controlar los pines ENABLE y RS para enviar caracteres y datos en consecuencia.
Las conexiones entre el microcontrolador ATmega32 y la pantalla LCD 16x2 se indican a continuación:
PIN1 o VSS - tierra
PIN2 o VDD o VCC - + 5v de potencia
PIN3 o VEE - tierra (brinda el mejor contraste máximo para un principiante)
PIN4 o RS (Selección de registro) - PD6 del microcontrolador
PIN5 o RW (lectura / escritura) - tierra (pone la pantalla LCD en modo lectura facilita la comunicación para el usuario)
PIN6 o E (Habilitar) - PD5 del microcontrolador
PIN7 o D0 - PA0 del microcontrolador
PIN8 o D1 - PA1
PIN9 o D2 - PA2
PIN10 o D3 - PA3
PIN11 o D4 - PA4
PIN12 o D5 - PA5
PIN13 o D6 - PA6
PIN14 o D7 - PA7
En el circuito puede ver que hemos usado comunicación de 8 bits (D0-D7) sin embargo, esto no es obligatorio y también podemos usar comunicación de 4 bits (D4-D7), pero con la comunicación de 4 bits el programa se vuelve un poco complejo para los principiantes, así que solo fuimos con Comunicación de 8 bits.
Entonces, a partir de la mera observación de la tabla anterior, estamos conectando 10 pines de LCD al controlador en el que 8 pines son pines de datos y 2 pines para control.
Trabajando
Ahora para empezar debes conocer las funciones de 10 pines de LCD 16x2 (8 pines de datos + 2 pines de control). Los 8 pines de datos son para enviar datos o comandos a la pantalla LCD. En dos pines de control:
1. El pin RS (selección de registro) es para decirle a la pantalla LCD si le estamos enviando datos o comandos.
Por ejemplo:
En la tabla anterior uno para un puerto de datos (D7-D0) valor de "0b0010 1000 o 0x28" le dice a la pantalla LCD que muestre el símbolo "(". En la tabla dos, el mismo valor de 0x28 le dice a la pantalla LCD "usted es una pantalla LCD de 5x7 puntos y comportarse como uno ”, por lo que por el mismo valor el usuario puede definir dos cosas, ahora esta situación se neutraliza con el pin de selección de registro, si el pin RS se establece en bajo, entonces LCD entiende que estamos enviando el comando. La pantalla LCD entiende que estamos enviando los datos, por lo que en ambos casos la pantalla LCD respeta el valor del puerto de datos de acuerdo con el valor del pin RS.
2. El pin E (Habilitar) es simplemente para decirle al "LED indicador de energía de una PC", este pin está configurado en alto para decirle a la pantalla LCD "que reciba datos del puerto de datos del controlador". Una vez que este pin pasa de nivel bajo a alto, la pantalla LCD procesa los datos recibidos y muestra el resultado correspondiente. Entonces, este pin se establece en alto antes de enviar datos y se baja al suelo después de enviar datos.
Ahora, después de conectar el hardware, inicie Atmel Studio y comience un nuevo proyecto para escribir el programa, ahora abra la pantalla de programación y comience a escribir el programa. El programa debe seguir como se muestra a continuación.
Primero le decimos al controlador qué puertos estamos usando para datos y control de LCD. Luego dígale al controlador cuándo enviar datos o un comando en consecuencia jugando con los pines RS y E.
Breve explicación de los conceptos utilizados en el programa:
1. E se establece en alto (indicando a LCD que reciba datos) y RS en bajo (indicando a LCD que estamos dando el comando)
2. Dar valor 0x01 al puerto de datos como comando para borrar la pantalla
3. E se establece en alto (indicando a LCD que reciba datos) y RS en alto (indicando a LCD que estamos dando datos)
4. Tomando una cadena de caracteres enviando cada carácter en una cadena uno por uno.
5. E se establece bajo (le dice a LCD que hemos terminado de enviar datos)
6. Después del último comando, la pantalla LCD finaliza la comunicación y procesa los datos y muestra la cadena de caracteres en la pantalla.
En este escenario vamos a enviar los personajes uno tras otro. Los caracteres se dan a la pantalla LCD mediante códigos ASCII (Código estándar americano para el intercambio de información).
La tabla de códigos ASCII se muestra arriba. Aquí para que la pantalla LCD muestre un carácter "@", necesitamos enviar un código hexadecimal "64". Si enviamos '0x62' a la pantalla LCD, mostrará el símbolo '>'. De esta manera vamos a enviar los códigos apropiados a la pantalla LCD para mostrar un nombre.
La forma de comunicación entre el LCD y el microcontrolador ATmega32 AVR se explica mejor en el paso a paso del código C a continuación,