Display LCD con Basic Stamp
Bruno Barangé (bruno.akun@gmail.com)
Para poder monitorizar los datos de cualquier proyecto mientras el micro está conectado al PC, no existe mayór problema, pues con el comando DEBUG del BS2, podemos enviar la información via serie al PC. El problema, viene cuando el proyecto es ya autónomo y no está fisicamente conectado... solución, un display LCD con el que poder ver que es lo que está pasando dentro del micro.
 |
La conexión del módulo LCD es muy sencilla, solo al alimentación, desde el Vdd (+5V) del BS2 y un pin de comunicación serie. |
Yo me he decidido por uno serie, concretamente un ILM-216, es mucho más
sencillo de conectar que uno paralelo, pues solo necesita 3 pins (GND, +5v y datos).
Este LCD, está controlado por un micro... si, un PIC, lo has acertado,
concretamente un PIC16F84, al cual le puedes enviar comandos y acceder a la
EPROM, donde entre otras cosas puedes almacenar GDU (caracteres gráficos
definidos por el usuario), que tan bien nos van para mostrar a nuestra querida
"ñ", u otros caracteres gráficos como barras, etc...
La comunicación con el BS2 no puede ser más sencilla, lo mejór
es trabajar con constantes, donde definir los valores de control, he ahí
la lista:
| Función |
Valor
ASCII |
| Limpiar
display |
1 |
| cursor
en inicio |
2 |
| Ocultar
cursor |
12 |
| Mostrar
el cursor underline |
14 |
| Mueve
el cursor un caracter a la IZQUIERDA |
16 |
| Mueve
el cursor un caracter a la DERECHA |
20 |
| Scroll
1 caracter Izquierda |
24 |
| Scroll
1 caracter Derecha |
28 |
| Posiciona
el cursor en |
128
+ posición |
| Mover
al primer caracter de la primera línea |
128 |
| Mover
el cursor al n caracter de la PRIMERA línea |
128
+ n |
| Mover
el cursor al n caracter de la SEGUNDA línea |
192
+ n |
| Declara
la dirección del GDU |
64
+ dirección |
Desde el BS2, enviamos los datos al LCD, según velocidad y protocolo especificado, por defecto 2400bps, 8 bits de datos y sin paridad.
LISTADO DEL CÓDIGO
'{$STAMP BS2}
' *********************************************************************
' HARD:
' Test de LCD Serie ILM-216
' LCD => BS2
' pin1 => GND(Vss)
' pin2 => +5(Vdd)
' pin3 => Pin0
'**********************************************************************
N2400 CON $418D ' Comunicación 2400 Bps. Sin bit de Paridad
LCD_pin CON 0 ' PIN en el que está conectado el LCD
LCD_Pos CON 16 ' Acepta posición en LCD
LCD_Car CON 64 ' Posición del carácter en el LCD
LCD_limpia CON 12 ' Limpia LCD
LCD_on CON 14 ' Back light ON
LCD_off CON 15 ' Back light OFF
x VAR Word ' Variable Auxiliar
'**********************************************************************
PAUSE 1000
SEROUT LCD_pin,N2400,[LCD_limpia,LCD_on, "hola mundo"]
FOR x=0 TO 15
SEROUT LCD_pin,N2400,[LCD_Pos,LCD_Car+x,"."]
SEROUT LCD_pin,N2400,[LCD_Pos,LCD_Car+31-x,"."]
PAUSE 100
NEXT
FOR x=0 TO 15
SEROUT LCD_pin,N2400,[LCD_Pos,LCD_Car+x," "]
SEROUT LCD_pin,N2400,[LCD_Pos,LCD_Car+31-x," "]
PAUSE 100
NEXT
SEROUT LCD_pin,N2400,[LCD_limpia] 'Limpia pantalla
SEROUT LCD_pin,N2400,["Valor...= "] 'Literales
SEROUT LCD_pin,N2400,[LCD_Pos,LCD_car+16,"Caracter= "] 'En la posición
16
FOR x= 28 TO 255
SEROUT LCD_pin,N2400,[LCD_Pos,LCD_car+10,DEC x] ' Muestra valores en la posición
11
SEROUT LCD_pin,N2400,[LCD_Pos,LCD_car+26, x] ' Muestra caracteres en a posición
26
PAUSE 250
NEXT
SEROUT LCD_pin,N2400,[LCD_limpia,LCD_off, "ADIOS!"]
|