UTNianos

Versión completa: Duda con crear caracter display 16x2
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola, estoy intentando crear un caracter nuevo en un display de 16x2... me imprime cualquier cosa, como que no me toma la creacion que hago. Les paso el codigo que hice a ver si me pueden decir que estoy haciendo mal:

La funcion "escribir_lcd" Recibe los valores a enviar por el bus de datos y el segundo parametro le indico con 1 que el bit de RS va a estar en uno y con un 0 le indico que va a estar en cero


//Mando uno para setear cgram (01000000) y la direccion de memoria a almacenar nuevo caracter (000000000 = 0x00)
escribir_lcd(0x40,0);
//Seteo los leds a prender en el nuevo caracter
escribir_lcd(0x00,1);
escribir_lcd(0x04,1);
escribir_lcd(0x0E,1);
escribir_lcd(0x0E,1);
escribir_lcd(0x1F,1);
escribir_lcd(0x1F,1);
escribir_lcd(0x00,1);
escribir_lcd(0x00,1);
//seteo valor de la ddram para indicar finalizacion
escribir_lcd(0x80,0);



Luego para imprimir mi nuevo caracter hago lo siguiente:



escribir_lcd(0x00, 1);//Simbolo creado



Saludos y gracias!
no entiendo bien que estas haciendo.

pero por que para prender un caracter mandas 7 datos en vez de 1?

por otro lado, el 2do parametro de la funcion escribir-lcd recibe 0 como segundo parametro cuando esta en modo de datos. vos le envias 1 para modo de datos (segun lo que entendi por la descripcion que hiciste).
(28-09-2014 12:07)Maik escribió: [ -> ]no entiendo bien que estas haciendo.

pero por que para prender un caracter mandas 7 datos en vez de 1?

Son 8... es uno por cada linea. Cada caracter tiene 8 filas y le mandas el binario por cada fila para indicar cual columna tiene el led prendido en esa fila.
Para mí tenés que indicar la fila y luego el dato. Ahora estás asumiendo que los toma de forma secuencial. Lo primero que mandás para la primera fila, lo segundo... etc.

Así como está, ¿imprime algo? Si sí, ¿qué exactamente?
(28-09-2014 12:23)luchovl2 escribió: [ -> ]Para mí tenés que indicar la fila y luego el dato. Ahora estás asumiendo que los toma de forma secuencial. Lo primero que mandás para la primera fila, lo segundo... etc.

Así como está, ¿imprime algo? Si sí, ¿qué exactamente?

Si, asumo que va secuencial, lo raro es que ayer me imprimia el caracter correctamente, luego agregue codigo (en otra parte del programa que nada que ver con la parte del display) y dejo de imprimirme el caracter... actualmente me imprime casi todos los pixeles en negro.
eso que le mandas deberia ser algo asi:

- - X - -
- X X X -
- X X X -
X X X X X
X X X X X
- - - - -
- - - - -
- - - - -

(ene l block de notas se veia mejor xD)

no me parece que sea ninguna letra. si es que los valores que le mandas son bloques negros del display.

http://electgpl.blogspot.com.ar/2013/06/...cgram.html
(28-09-2014 12:43)Maik escribió: [ -> ]eso que le mandas deberia ser algo asi:

- - X - -
- X X X -
- X X X -
X X X X X
X X X X X
- - - - -
- - - - -
- - - - -

(ene l block de notas se veia mejor xD)

no me parece que sea ninguna letra. si es que los valores que le mandas son bloques negros del display.

http://electgpl.blogspot.com.ar/2013/06/...cgram.html

Claro, no es una letra lo que uqiero, esas ya estan en el ascii del display xD lo que queria era una flecha =P fijate que es como una flecha para arriba.
ls que pones en cero tienen que ser

escribir_lcd(0x00,1);


ese es el primer error.
Creo que el problema esta en algo que me menciono luchovl2 ... no se desplaza sola la direccion de memoria donde guardo las filas en cgram... las estoy moviendo a mano y pinta que va bien por ahora. Cuando termine les comento como me fue =D
si explicas bien que tenes y que queres hacer es mas facil. sino ponete a ver que es lo que estas haciendo, los errores se ven en 5 lineas de codigo , y eso que es la misma linea 8 veces Confused
Ahi lo pude solucionar! muchas gracias a los 2 por la ayuda!

El problema era como indico luchovl2 ... no se desplaza sola la posicion de memoria, por cada fila que seteo tengo que setear nuevamente la posicion en CGRAM.

Muchas gracias!!
URLs de referencia