En este proyecto vamos a escribir mensajes de texto en una pantalla Lcd con solo un teclado numérico del 0 a 9. Utilizaremos la misma técnica que utilizaban los primeros celulares para escribir mensajes. Para esto usaremos el PIC 16F84A y un programa en lenguaje ensamblador.
Lista de componentes
- 01 PIC 16F84A
- 01 LCD 16x2
- 01 Cristal de 4MHz
- 11 Pulsadores
- 06 Resistencias de 10K
- 05 Resistencias de 220 ohm
- 01 Potenciomestro de 5K
- 02 Condensadores de 22pF
Esquema
|
Funcionamiento
Cada vez que se presiona una pulsador el primer primer carácter que aparece en el Lcd es el número correspondiente al pulsador; si se vuelve a pulsar antes que pase un segundo, el carácter cambia a una letra, si se presiona otra vez cambiará a la siguiente letra, si se sigue presionando, antes que pase un segundo, el carácter en el Lcd seguirá cambiando, y repitiendo los caracteres que corresponden a ese pulsador; algunos pulsadores pueden cambiar entre tres, cuatro o cinco caracteres diferentes. Si se deja el pulsador sin presionar por más de un segundo, el cursor de la pantalla pasará a la siguiente posición.
Pulsando «CLEAR», se puede retroceder un carácter.
De este modo podemos escribir mensajes de texto sin necesidad de un teclado convencional.
El PIC 16F84A se comunica con el Lcd a través de 4 líneas de datos que comparte con 4 pulsadores del teclado, del 6 al 9, por esa razón se utilizan 4 resistencias de 220 ohms en serie con los pulsadores para evitar que haya un corto circuito.
Para los pulsadores del 0 al 4 se utilizan los pines A0 a A5 del 16F84A como entradas, por eso son necesarias las resistencias de 10K que actúan como pull_up, mientras que el resto de pulsadores, del 5 al 9 y el «CLEAR», utilizan los pines B2 a B7
como entradas, para estos pines se puede activar las resistencias pull_up internas del 16F84A, por lo que no son necesarias resistencias externas.
El programa está en lenguaje ensamblador, también son necesarias las librerías para el Lcd y para los retardos con un cristal de 4MHz.
El programa se encarga de revisar continuamente si alguno de los pulsadores ha sido presionado, de ser así, recurre a una tabla para ver cual es el primer carácter que corresponde a ese pulsador, y lo muestra en el Lcd; al mismo tiempo se inicia un contador que medirá el tiempo desde que se presiona el pulsador, si después de un segundo no se ha presionado el mismo pulsador otra vez, el programa mueve el cursor un espacio, dejando el último carácter seleccionado en la posición anterior, y vuelve a esperar que se presione un pulsador.
Si antes de que se cumpla un segundo se vuelve a presionar el pulsador, el programa recurre a la tabla para ver cuál es el siguiente carácter de ese pulsador, y lo muestra en el Lcd.
Otra condición para cambiar de lugar el cursor, además de que pase un segundo, es que se presione un pulsador diferente, con lo que el programa entiende que se va a escribir una letra que no se encuentra en la posición de ese pulsador.
Consejos de Funky
- En lugar de usar un potenciómetro de 5K, para el contraste del Lcd, puedes colocar una resistencia fija entre el pin 3 y tierra. El valor de la resistencia depende del Lcd, pero puedes probar con valores entre 1K y 4.7K.
- Asegúrate de que las librerías para el Lcd y los retardos se encuentren en la misma carpeta del código principal en ensamblador antes de compilarlo.
No hay comentarios:
Publicar un comentario