TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: karlosguay en 03 de Septiembre de 2003, 12:04:00

Título: Caracteres en CGRam de LCD
Publicado por: karlosguay en 03 de Septiembre de 2003, 12:04:00
Hola a todos:
Estoy intentando añadir caracteres especiales a un LCD de 16x2. Lo consigo utilizando el ejemplo del programa grandes.bas que he encontrado por aquí (gracias a sus autores). Pero en cada caracter que defino, me deja una línea en blanco entre cada línea que escribo.
Alguna sugerencia?

Os incluyo mi versión de grandes.bas
Título: RE: Caracteres en CGRam de LCD
Publicado por: MGLSOFT en 03 de Septiembre de 2003, 12:22:00
Hola, Karlosguay!!
El programa que adjuntaste no hace mas que guardar dos caracteres en la CGRAM, pero despues no los muestra.
Solo muestra Hola 012345, o algo asi, deberia posicionarse en la primera linea del display, mostrar ese mensaje y terminar, nada mas.
Te pido perdon por no probarlo, pero solo de leerlo creo que es asi.
En cuanto a otras pruebas que hayas hecho, seguramente te separa un caracter porque hay una instruccion especifica que deja un espacio entre caracteres, para separar un numero grande del otro, y es a proposito, para permitir una buena visualizacion.
Si comentas esa linea del programa veras que no lo hace mas.
Suerte
Título: RE: Caracteres en CGRam de LCD
Publicado por: karlosguay en 04 de Septiembre de 2003, 06:48:00
Si que los muestra, los deja en esas direcciones del lcd. Pero los muestra mal, claro. He hecho un montón de pruebas y no consigo eliminar la línea en blanco.
El último código que tengo es este:

" Definicion de constantes
I       con $FE     " Prefijo para comando LCD.
ClrLCD  con 1       " Instruccion  para borrar el display LCD.
cgRAM   con 64      " Direccion 0 de CG RAM del LCD.
" Grupo de variables tipo Word
PuntEE  var byte    " Puntero para la EEPROM.
" Grupo de variables tipo Byte
temp    var byte    " Variable temporal.

" Guardado de los patrones de bits en EEPROM en el momento de la
" grabacion del micro.
PatBits0 DATA 4,10,21,4,4,4,4,0    " flecha arriba
PatBits1 DATA 12,18,18,12,0,0,0,0    " grados
PatBits2 DATA 4,4,4,4,21,10,4,0    " flecha abajo

clear
"ValDisp = 1234     "Usado para pruebas...

pause 1000          " espera la normalizacion del LCD al arranque.
lcdout I,ClrLCD     " Borrar el LCD.
lcdout "Inicializando.."
pause 500

"-------------------------------------------------------------------------
" Grabar los patrones de bits en la CG Ram para luego ser utilizados
"-------------------------------------------------------------------------
lcdout I,cgRAM      " Entrar en la CG RAM.
for PuntEE = 0 to 23 " guardar los patrones de bits en el LCD
    Read PuntEE,temp
    lcdout temp
next PuntEE
" una vez guardados los datos en la CGRam hay que borrar el LCD
lcdout I,ClrLCD     " Borrar el LCD.
pause 100

" ------------------------------------------------------------------------
" Demo: muestra el numero puesto en ValDisp en Numeros Grandes
" ------------------------------------------------------------------------
Demo:
    "gosub MiGranNum         " con esta linea muestro el numero en grande
    lcdout $fe,1,$00,$01

Lo único que observo es que la flecha arriba me la ha grabado en dos direcciones del lcd.
Título: RE: Caracteres en CGRam de LCD
Publicado por: MGLSOFT en 04 de Septiembre de 2003, 09:07:00
Antes de enviar caracteres recien creados al LCD hay que borrarlo, no se porque.
Vos lo estas haciendo, pero te sugiero que separes el comando de borrado en una linea y el de escritura en la siguiente, para ver que pasa....
Título: RE: Caracteres en CGRam de LCD
Publicado por: karlosguay en 17 de Septiembre de 2003, 03:27:00
Eureka: lo encontré.

El problema era que la grabación en el LCD estaba ok, pero el DATA me almacena los datos en memoria dejando un byte a 0 intercalado. Al final he pasado del DATA y he metido los valores a pelo. No se porque me hace eso el DATA, pero el problema está solucionado.

Para quien pueda interesarle
Título: RE: Caracteres en CGRam de LCD
Publicado por: MGLSOFT en 18 de Septiembre de 2003, 06:11:00
Me alegro mucho que encntraras la solucion!!

Pero me extraña que el comando DATA te metiera datos espureos entre medio...
Preguntas:
Que micro usaste??
Dejaste espacios entre medio de las comas de separacion de datos a enviar??
Si los dejaste, probaste de dejar todo sin espacios libres al escribir el comando??

Suerte!!
Título: RE: Caracteres en CGRam de LCD
Publicado por: karlosguay en 19 de Septiembre de 2003, 03:16:00
El micro es el 18F8720, y en el data todos los valores estaban seguidos, separados por comas, sin espacios ni nada.