Conexionado del módulo LCD para ser controlado por conexión serie: El PICAXE-18 puede ser el entrenador de sistemas PICAXE-18x. La conexión de salida del PICAXE-18 (output7) tiene que ser directa sin pasar por el Darligton ULN2803. Instrucciones para el control del LCD(comandos de control): A continuación se describen las instrucciones de control del módulo LCD. Cada código deberá ser enviado al módulo usando la subrutina wrins. Estas instrucciones se pueden usar para hacer los mensajes más interesantes: scroll, parpadeo, etc. Los comandos de control tienen prefijado el código (254). Código Instrucción 1 Borrar display y poner cursor al principio de la primera línea 2 Mueve el cursor y muestra la ventana en principio de primera línea 4 Modo de escritura de derecha a izquierda 5 Escritura en modo scroll hacia la izquierda 6 Modo de escritura de izquierda a derecha 7 Escritura en modo scroll hacia la derecha 10 Apaga el display del LCD 12 Oculta el cursor 13 Cursor parpadea intermitentemente 14 Encie el display y el cursor 16 Mueve el cursor una posición a la izquierda 20 Mueve el cursor una posición a la derecha 24 Scroll de la ventana una posición a la izquierda 28 Scroll de la ventana una posición a la derecha 128 Mueve el cursor al principio de la primera línea 192 Mueve el cursor al principio de la segunda línea y Mueve en la línea 1, posición x (y = 128+x) y Mueve en la línea 2, posición x (y = 192+x) Nota: ventana es la posición donde se mostrará el carácter Caracteres: Código Instrucción 0 Time (fecha/hora) 1-7 Mensajes predefinidos 8-128 ASCII caracteres (ver anexo A) 129-252 Caracteres varios (depen del tipo de LCD) 253 Comando especial: escritura en memoria 254 Comando especial: comando carácter 255 Reservado para futuros usos 1/10
Comandos de escritura: Los comandos de escritura en el módulo LCD tienen prefijado el código (253). Se debe dejar un período de espera de 1000 ms () entre comandos de escritura. Código Instrucción 0 Set clock time 1-7 Set mensajes predefinidos 1-7 8 Set alarma (date/time) 9 Set alarma (intervalo) 10 Turn alarma off Programa TEST del Módulo LCD: bucle: serout 7,N2400, (254,128) serout 7,N2400, ( Hola ) espera para la inicialización del LCD mueve cursor al principio de la primera línea presenta texto en pantalla LCD Programación de mensajes predefinidos dentro del módulo LCD: El módulo admite la programación de hasta 7 mensajes (1..7) de 16 caracteres cada uno. Estos mensajes quedarán almacenados aunque se desconecte el módulo LCD. Los mensajes se defines de la forma (1), (2), (7). Los mensajes 1, 3, 5 y 7 se muestran en la línea 1 del display. Los mensajes 2, 4 y 6 s muestran en la línea 2 del display. La carga del mensaje en el módulo se realiza mediante el comando (253), seguido de la dirección de memoria y el propio mensaje. Ejemplo: bucle: serout 7,N2400, (253,1, Jugador1= ) serout 7,N2400, (253,1, Jugador2= ) goto bucle Visualización de mensajes predefinidos: Se pueden visualizar los mensajes que previamente fueron definidos solo basta con enviar su código del mensaje (1)..(7). Si se van a visualizar más de un mensaje es necesario hacer una pausa de 10ms (pause 10) entre mensaje y mensaje con el fin de poder hacer la carga de la memoria interna del LCD. 2/10
Ejemplo: bucle: serout 7,N2400, (1) pause 10 serout 7,N2400, (2) goto bucle Visualización de mensajes predefinidos combinado con variables: Es posible la combinación de la visualización de mensajes predefinidos con textos alfanuméricos almacenados en variables. Las variables se declaran precedidas del símbolo #, por ejemplo: #b1. Veamos un ejemplo de combinación de ambos métodos de visualización. Visualizaremos el resultado alcanzado por dos jugadores de los que se les ha definido un mensaje previo player1= como mensaje (1) y player2= como mensaje (2). Las variables que indican la puntuación alcanzada por cada jugador se almacenarán en b1 y b2 respectivamente. El código del programa quedaría de la siguiente forma: bucle: serout 7,N2400, (1) pause 10 serout 7,N2400, (254,137,#b1, ) serout 7,N2400, (2) pause 10 serout 7,N2400, (254,201,#b2, ) let b1 = b1 + 1 let b2 = b2 + 1 goto bucle Nota: Notar que los mensajes con código (1 o 2) son los primero que se visualizan. Posteriormente se produce un retardo de 10 ms (pause 10). Por último se visualizará el resultado almacenado en las variables (#b1 o #b2). El valor a visualizar, almacenado en las variables, deberá hacerse en una posición determinada (posterior al mensaje, 9 caracteres). Para #b1 será: (254,137) o sea 128+9 y para #b2: (254,201) resultado de 192+9. También se le añaden dos espacios con el fin de que en la siguiente escritura sobrescriba la cifra antior con espacios para no ser visualizados (caso de que la cifra anterior tenga más dígitos que la actual). 3/10
Visualización de caracteres especiales: La aplicación Programming Editor contiene un wizard (asistente) que permite la creación de caracteres definidos por el propio usuario. Veamos como se utiliza: 1. Seleccionar el wizard en el menú: PICAXE Wizards Axe033 Serial LCD. 2. Aparecerá un editor de caracteres de forma que se dibujará el carácter a crear mediante el clic en la casilla correspondiente. También deberemos indicarle el pin de salida (en este módulo es el 7) y la dirección de la CGRAM. 3. Por último hacer clic en Copy preload data para copiar el código generado en el portapapeles de Windows (también lo pega directamente sobre la pantalla de edición del código). Funcionamiento del reloj/alarma: El módulo LCD controlado por i2c se puede utilizar como reloj/alarma pero deberemos añadirle: Una pila de Litio de 3V. DS1307 (C.I. reloj en tiempo real). Instrucciones de montaje: 1. Colocar el DS1307 en el zócalo de 8 pines destinado para su conexión. Tener cuidado con la disposición del mismo. 2. Colocar la pila de litio de 3V en su alojamiento con la cara positiva hacia arriba. Nota: La pila de litio conserva el reloj DS1307 funcionando cuando el suministro de energía principal no está conectado. Esto garantiza el tiempo preciso dentro del módulo. La pila de litio no da energía a la pantalla de cristal líquido o a la salida de pulsos. La duración de la pila está estimada en 10 años. 4/10
Input/output Power conexiones: Main header (V+, 0V): Se conectará la alimentación principal del módulo (5-6V DC). Si se desea conectarlo a 4,5V se debe colocar un puente en J2 (power). Este puente cortocircuita el diodo de protección de tensión D1, dado que como tiene una caída de tensión de 0,7V que podría poner la pantalla muy oscura con una tensión inferior a 4,5V. Main header (SDA and SCL): Éstas son las conexiones del modo de trabajo del i2c. Solo pueden usarse cuando un puente ha sido soldado en J1 para colocar el módulo en modo i2c. Main header (OUT): Salida de la alarma. Cuando se acciona pone a nivel alto la salida OUT durante 5 segundos. Puede conectarse cualquier dispositivo cuyo consumo no supere los 20mA. Pulse Output (PLS): La salida PLS entrega una onda cuadrada de 1 Hz (1 pulso por segundo) cuando el reloj opcional DS1307 está conectado. Unas resistencias de 330 Ω están conectados en la placa para permitir a un LED conectarlo directamente y producir una señal intermitente. La corriente de salida máxima es de 20 ma. Clock Jumper (CLK): Si se elige esta opción el módulo se pone en funcionamiento como reloj (CLK). Durante este modo las instrucciones no pueden ser enviadas por conexión serie. La salidad de pulsos y alarma funcionan con noralidad. En la pantalla del LCD se mostrará en tiempo en todo momento, cuando la alimentación principal está conectada. LCD Backlight (LCD) (El LCD del modulo no tiene luz de fondo): Si el LCD dispone de luz de fondo se puede ajustar la iluminación. Se debe soldar los conexiones A y K del LCD a la placa y añadir una resistencia en RB del valor indicado en el Datasheet del fabricante del LCD. Resonador Tuning (RST): Entrada para calibración del oscilador interno. 5/10
Programación de la hora del módulo LCD: Para configurar la hora del reloj del módulo se deberá utilizar un pequeño programa que se cargará a un PICAXE. A continuación se muestra la estructura del programa. Una vez se envié el programa al módulo la pila de litio mantrá la hora exacta durante 10 años. En el ejemplo se configurará el reloj para las 22:00 del 25/11/01. La carga se efectuará con la instrucción de escritura (253), seguida por la dirección de memoria del reloj (0), la fecha y la hora ( 25/11/01 22.00 ): Nota: serout 7,N2400, (253,0, 25/11/01 22:00 ) La fecha y la hora se deben configurar exactamente como se muestra, usando el formato de hora de 24 horas: dd/mm/aa hh:mm. Los mensajes de escritura siempre deben ser de 16 caracteres de longitud, por ello se le debe agregar a la configuración dos espacios en blanco para llegar a los 16 caracteres. Tener en cuenta que después de cada orden de escritura se debe producir un lapsus muerto de 1000 ms (). El último serout muestra la fecha y hora para comprobar que se ha configurado correctamente. Para configurar la fecha y hora de forma exacta hacer la carga del proigrama con un minuto de anterioridad y posteriormente resetear el PICAXE justo en el momento que se cumpla el minuto. Visualización de la hora: El mensaje de Time será actualizado con la fecha/hora cada vez que se use. El mensaje se visualizará usando el código de caracteres 0. La fecha/hora se visualizará en la segunda línea del LCD. El siguiente programa visualiza el mensaje 1 en la primera línea y la fecha/hora en la segunda línea. La pantalla se actualizará cada 0,5 segundos. serout 7,N2400, (1) pause 10 serout 7,N2400, (0) goto ajuste 6/10
Programación de la alarma: El pin de salida de la alarma se acciona (nivel alto durante 5 segundos) cuando se alcanzo el tiempo prefijado para el disparo de la misma. La alarma puede estar configurada para mostrar continuamente fecha/hora (código de escritura 8), o bien puede repetir la presentación fecha/hora cada cierto tiempo (código de escritura 9). La duración de la alarma debe estar programado en el módulo usando un pequeño programa corrio en un PICAXE-18 con el programa que se especifica mas adelante en el ejemplo. Ajuste de la alarma a un tiempo específico: Para programar el reloj registro de la alarma para las 07:30 de cada día (código de escritura 8), usar el siguiente programa. Este programa carga la instrucción de escritura (253), seguida par la dirección de la alarma (8) y del tiempo ( 00/00/00 07:30 ) Nota: serout 7,N2400, (253,8, 00/00/00 07:30 ) La fecha y la hora deben configurarse exactamente como se muestra. Se le deben añadir dos espacios al final del texto para garantizar que el mensaje tiene 16 caracteres. También debe tenerse en cuenta que se debe añadir un tiempo de retardo después de una orden de escritura de 1000 ms (). Ejemplo: Para activar el despertador el primer día de todos los meses de todos los meses a medianoche serout 7,N2400, (253,8, 01/00/00 00:00 ) 7/10
Ajuste de la alarma en un intervalo de tiempo: Para configurar la alarma para accionarse durante un intervalo de tiempo, en lugar de un tiempo exacto, usar el código de escritura 9 en lugar de 9. Por ejemplo, para disparar la alarma cada diez minutos (usando código de escritura 9): serout 7,N2400, (253,9, 00:10:00 ) Para configurar la alarma cada 30 segundos: serout 7,N2400, (253,9, 00:00:30 ) Para configurar la alarma cada 2 horas: serout 7,N2400, (253,9, 02:00:00 ) Nota: El intervalo de disparo de la alarma es configurado por el número de horas (00 a 23), minutos (00 a 59) y segundos (00 a 59). El intervalo práctico menor es de 10 segundos, debido a los 5 segundos de duración de la salida de la alarma. Comprobar que la longitud de los textos debe ser de 16 caracteres por lo que se le agregarán 8 espacios en blanco. Ajuste del paro de la alarma: Para desactivar cualquier tipo de alarma enviar el comando 10. Este comando no requiere rellenar de espacios en blanco hasta los 16 caracteres. serout 7,N2400, (253,10) 8/10
Anexo A: Cuadro de caracteres memorizados en la CGRAM del módulo LCD 9/10
Anexo B: Prácticas para el manejo del módulo LCD Práctica 1: Crear un programa para poner en hora el reloj y que muestre la hora. Práctica 2: Crear un programa que visualice la temperatura en el LCD ************************** ***** Termómetro ********** ************************** readtemp 1,b1 serout 7,N2400, (254,128) serout 7,N2400, ("Temperatura:",#b1," C") goto inicio 10/10