TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: litris en 02 de Diciembre de 2003, 14:58:00

Título: Simbolo grados LCD
Publicado por: litris en 02 de Diciembre de 2003, 14:58:00
En un ciercuito que he realizado que ademas funciona muy bien el simbolo de gardos no sale en su lugar me sale un especie de T doblada, os dejo un trozo de ASM donde el autor comenta el cambio pero no consigo que salga:




;ATTENZIONE IL SIMBOLO GRADI POTREBBE NON ESSERE CORRETTO PER IL VOSTRO DISPLAY
;QUINDI SARA" NECESSARIO CAMBIARE IL VALORE B2H.

      movlw   0xB2         ;Simbolo gradi
      call   Send_Char

      movlw   "C"
      call   Send_Char

      movlw   " "
      call   Send_Char

      return



Saludos.
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 02 de Diciembre de 2003, 15:07:00
Porque no pones la rutina SendChar tambien...
Título: RE: Simbolo grados LCD
Publicado por: Sispic en 02 de Diciembre de 2003, 15:28:00
hola litri .
El que mas se le parece es  0xDF .
Tambien quedaria muy profesional que tu mismo te diseñases el caracter .
He estado ojeando tu pagina , está espectacular ...
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 02 de Diciembre de 2003, 15:29:00
Para el valor B2H el Ascci es 178, por lo cual y como los display trabajan con 7 bits ven hasta el 128.
Como lo ve cada uno es una loteria en realidad.

Para hacer algo mas profesional podrias "crear" un caracter con el simbolo de Grados y ponerlo en la CGRAM del LCD al iniciar el programa, luego cuando lo necesitas mostrar le dices que lo tome y lo muestre donde tu quieres.

Creo que es mejor solucion y una vez hecho funciona en todos los LCD....

Ya se la proxima pregunta, como se hace??
Vas a encontrar varios post con el tema, algunos con ejemplos en PBP y otros aqui tambien.
Busca, busca pichicho....!!!
Título: RE: Simbolo grados LCD
Publicado por: todopic en 02 de Diciembre de 2003, 15:37:00
Hola, esta correcto, ese simbolo parece una letra T inclinada, recien mire un data sheet de LCD que ahora lo subo al almacen..

lo mas practico es escribir el numero en binario para que (a mi modo) se entienda...

el numero hex  B2 corresponde al binario 10110010
donde 1011 lo miras en las filas (high order bit)  y el 0010 en las columnas (low order bit), y justamente da tu letra rara...
creo que podras emplear el 11101011  (eb)

ahora cargo en www.todopic1.foro.st  en el almacen de libros un manual de lcd ok?

ya esta aqui
http://miarroba.com/foros/ver.php?foroid=173417&temaid=1272103  

Suerte!

Norberto
Título: RE: Simbolo grados LCD
Publicado por: litris en 02 de Diciembre de 2003, 15:45:00
Si, si  ya se que es muy comodo preguntar y que la gente me lo de todo echo pero no hay algun caracter que se le parezca por que en el datashet hay uno igual pero no se como meterlo, os dejo el enlace al fichero entero.

http://perso.wanadoo.es/litriss/ficheros/Duacat.asm

Saludos.
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 02 de Diciembre de 2003, 15:52:00
Acabo de añadir una imagen de los bytes a enviar al LCD para generar el simbolo en la CGRAM del LCD.
Esta Aqui ...
Título: RE: Simbolo grados LCD
Publicado por: Sispic en 03 de Diciembre de 2003, 00:27:00
Marcos donde se puede consegir el programa que utilizas para diseñarlos ?
Título: RE: Simbolo grados LCD
Publicado por: karlosguay en 03 de Diciembre de 2003, 03:32:00
Si te sirve aquí va un ejemplo en PBP:

InicializaLcd:
lcdout $fe,1     " Borrar el LCD.
lcdout $fe,64      " Entrar en la CG RAM.
"flecha arriba = 0
lcdout 4
lcdout 14
lcdout 31
lcdout 4
lcdout 4
lcdout 4
lcdout 4
lcdout 0
"flecha abajo = 1
lcdout 0
lcdout 4
lcdout 4
lcdout 4
lcdout 4
lcdout 31
lcdout 14
lcdout 4
"grados = 2
lcdout 12
lcdout 18
lcdout 18
lcdout 12
lcdout 0
lcdout 0
lcdout 0
lcdout 0


lcdout $fe,1     " Borrar el LCD.
return

Aquí defino 3 caracteres en la CGRam, una flecha hacia arriba, otra hacia abajo y el símbolo grados. Si quieres ver como quedan, solo tienes que pasar los números a binario y verás como queda cada matriz.

Salud,
Título: RE: Simbolo grados LCD
Publicado por: litris en 03 de Diciembre de 2003, 03:52:00
Voy a intentar hacer lo que comentáis todos, pero lo que voy hacer primero buscar un símbolo que se le parezca y solo cambio esa línea por que de las formas que decís tendría que rescribir medio código y asta ahí no llego tanto, ya que en los robot que tengo los he echo desde el principio pero solo son comandos que si gira el motor que si detente pero nada de nada de lcd y encima es el HC11 de motorola y BasicStamp el que programa en mis proyectos.

Saludos y gracias a todos.

Ah!! Ya comentare como va el proyecto que tengo en mis manos ahora mismo a medias, va sobre que cuando alguien llegue a la puerta de mi casa en la entrada hay un LCD grande y saldrá un mensaje que diga espere y a mi en el interior me sonar el timbre si se queda en la puerta mas de 10 segundos, si no solo me sonara un pi... de aviso de que alguien ronda mi puerta, a parte de ponerle voz etc.
Por eso pedía algo por otro pos para comunicarme con el interior con Ic2 u otro sistema y así no tengo que cablear toda la casa.
Título: RE: Simbolo grados LCD
Publicado por: litris en 03 de Diciembre de 2003, 08:12:00
YA!!!!!!!.... simplemente he echo esto y ya se ve:


;ATTENZIONE IL SIMBOLO GRADI POTREBBE NON ESSERE CORRETTO PER IL VOSTRO DISPLAY
;QUINDI SARA" NECESSARIO CAMBIARE IL VALORE B2H.

      movlw   B"11011111"         ;Simbolo gradi
      call   Send_Char

      movlw   "C"
      call   Send_Char

      movlw   " "
      call   Send_Char

      return

Lo que no se como lo he echo he estado mirando por ahí en otros programas y como dice Norberto meter el numero directamente y así lo he echo lo que no savia es como hacerlo de todas formas la b y las comitas ¿que significan? que el siguiente numero esta en binario o que lea binario.


Gracias a todos.
Título: RE: Simbolo grados LCD
Publicado por: todopic en 03 de Diciembre de 2003, 09:14:00
Hola, justamente MOVLW significa
MOVer el Literal al registro de trabajo W  
y un literal, puede ser una letra o un numero
el numero se puede expresar en decimal, hexadecimal, binario... colocando la indicacion de la base en que lo expresamos
a mi me agrada expresar entradas o salidas en binario... y los numeros en decimal, simplemente colocando un punto delante

ejemplo   b"00001111" = .15

me alegro que solucionaste lo del simbolo!

Norberto
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 03 de Diciembre de 2003, 12:41:00
Tambien funcionaria con:
movlw DFH
o
movlw .223

Pero no me convence, porque no figura en la tabla de los LCD, por lo tanto sigo creyendo mas en la solucion de crear el simbolo guardandolo en la CGRAM del LCD y luego utilizarlo, eso compatibiliza para cualquier marca.
Sino porque el Tano puso que pruebes de poner otro caracter alli???
Título: RE: Simbolo grados LCD
Publicado por: litris en 03 de Diciembre de 2003, 16:35:00
Hombre si lo creas mejor que mejor ya no hay problemas pero resulta que en datasheet del LCD esta ya echo el simbolo de grados y es el numero ese que puse, por eso no entiendo como no lo puso desde el principio el italiano.
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 04 de Diciembre de 2003, 05:52:00
Debemos tener un Datasheet diferente, yo no lo encontre.
Cual es byte de las filas y cual el de las columnas??
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 04 de Diciembre de 2003, 05:58:00
Perdon , ya lo encontre, va el segundo byte en las filas, pero en el datasheet no tiene el numero...je..je..
De cualquier forma me gusta mas el que yo dibuje...., orgullo yooo???
Título: RE: Simbolo grados LCD
Publicado por: pikman en 04 de Enero de 2004, 11:25:00
Hola MARCOS;  
                       Bueno, es que no entiendo como hago para crear el caracter, ademas entiendo que puedo degarlo en la ram del lcd y copiarlo cuando lo necesite pero por mas que miro no lo veo, je,
trabajo  con CCS, podrias darme un ejemplo, gracias y feliz año 2004.

Ariel
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 05 de Enero de 2004, 05:38:00
Mira, me pides mucho, se muy poco de C, y no tengo rutinas para mostrarte como hacer esto en C, pero en el subforo de C seguramente alguno de los maestros de C te va a poder ayudar.

Si quieres ver como se hace, pero en Basic, podes entrar en http://miarroba.com/foros/ver.php?temaid=621018&foroid=8826 , alli yo puse un post llamado LCD con numeros grandes , alli edito los 8 bytes de la CGRAM y luego los utilizo.

Mas adelante hay un manejador de display serial y luego un programa que hace la representacion numerica necesaria para introducir en la CGRAM, todo del mismo autor, Esteban Arias de Chile.

Con ese programa edite lo que luego puse como imagen en la respuesta en este POST, tema de tu consulta.
Con el programa pinchas en cada posicion y activas y desactivas cada celda de la matriz de 5 columnas por 7 filas (la octava fila es mejor no usarla, porque si en el futuro usas el subrayado del display produce efectos raros en el display), y mientras ves como queda a la par de cada fila tienes el numero a escribir en la CGRAM.

Bueno no quiero romperte el coco con mas perorata, mira y comenta luego.
Título: RE: Simbolo grados LCD
Publicado por: pikman en 09 de Enero de 2004, 11:53:00
Hola MARCOS, no perdon no quiero que te pongas a programar, lo que neceisto es saber como es que funciona, lo que entiendo es lo siguiente,

primero se envia 64, que es el comando de acceso a la CGRAM y la direccion es la primera

segundo; se envian los 8 bytes de caracter generado,

hasta aca tengo todo entendido y hecho el programa en C, ahora como hago para mostra el caracter, como ?, hice andar tu progama en basic pero no lo veo y en el de esteban tampoco, me podes mostrar como lo harias en asm, o que comando tengo que usar para mostrar lo que hay en la CGRAM?, bueno espero no molestarte con este bardo pero realmente me tiene loco, porque lo que entiendo que cuando el LCD recibe un dato en ascci busca el patrom en su rom y lo muestra, lo que no se es como hacer para decirle que por ejemplo en la posicion DDRAM 0x80 me muestre lo que hay en la posiscion 0 de la CGRAM, cual seria la seria la secuencia para mostrar?, para gererarlo esta mas que claro inclusive en el ejemplo que hay ams arriba, pero para presentarlo es mi problema, espero no te moleste mi consulta.

saludos

Ariel
Pikman
 

Título: RE: Simbolo grados LCD
Publicado por: pikman en 09 de Enero de 2004, 13:14:00
OK, gracias, Je je, este me tiene tan mal el hecho de no poder descubrir como funciona que me parece caer pesado preguntando lo mismo, pero esta mas que clara tu voluntad de ayudarme, entiendo todo lo que me explicas pero,  si tengo que enviar el comando de borrar todo lo que made antes se borra, ademas no entiendo definitivamente como hago para posicionar el caracter generado, si yo tengo un caracter en la CGRAM posicion 0 y quiero mostrarlo en la DDRAM ( memoria de display ) 0x81 que es el 2º digito como lo copio desde la CGRAM?,  si yo pongo en en la posicion 0x80 el caracter A, cuando hago lo que me decis se borra la A?,  en mi trabajo debo mostrar presion y expresar kg/cm, entonces mi LCD muestra 25,00 Kg/Cm y quiero generar el 2 para que vea al cuadrado, cuando pongo el caracter generado que es el ultimo se borra todo lo demas?, que tengo que empezar mostrando  por el generado? primero o el comando de borrar no afecta el resto del display cuando precede el comando 64¿?, en fin realmente me da verguenza esto. je je  
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 09 de Enero de 2004, 13:41:00
Por lo que veo entendiste mal porque me exprese mal...

La generacion de caracteres en la CGRAM se hace al iniciar el programa y por unica vez, conviene hacerlo inmediatamente despues de arrancado el display (dale unos 150 mseg para que inicie OK primero), cuando tienes cargado los bytes en la CGRAM, alli borras el display.

Para esto no habias enviado antes ningun dato, por lo tanto el borrado de display lo unico que hace es normalizarlo.

Luego durante la ejecucion de tu programa envias el valor de la presion, el texto KG/Cm, y seguidamente vuelves a direccionar a la CGRAM y despues envias el caracter con el 2 sobreelevado que previamente habras creado.

Alli termina todo el rollo...
Título: RE: Simbolo grados LCD
Publicado por: pikman en 09 de Enero de 2004, 15:20:00
OK, entonces para escribirlo el comando seria en basic

LCDOUT $FE,64,0

y en asm

movlw 0x40
call      sendcmd

movlw 0x00
call      senddato

claro que antes enviando la posicion de DDRAM, osea que cuando uno direcciona a la CGRAM y hay algo te lo trae al DDRAM? sin mas tramite no hay un comando que indique escribir a la CGRAM o leer la CGRAM?,  ya me da menos verguenza, je je gracias por tu ayuda.



Ariel
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 09 de Enero de 2004, 15:57:00
Obviamente, agarraste la onda.
Aunque el que te intente explicar sea medio nabo para hacerlo, me entendiste igual, lo cual dice que pronto vas a estar mostrando varios simpbolos raros en la LCD.


En cuanto a verguenza, no es vergonsozo  para nada preguntar para saber, sino saber y no contestar... me entendes, no ??
Título: RE: Simbolo grados LCD
Publicado por: pikman en 09 de Enero de 2004, 18:13:00
Bueno, si estoy de acuerdo con tus dichos, bueno es que yo leia en el manual eso y por eso no lo entendia, no hay comando de lectura escritura de la CGRAM, lo que pienso es que si en un determinado proceso uno pretende cargar otro juego de caracteres como se hace, ah! ya se le escribis encima el juego nuevo sera asi?.

bueno ni bien termine la rutina que la voy a incluir en la libreria del lcd, te la envio por si algun dia usas CCS, que por cierto me parece ser mas facil programar en C que en PBASIC, un saludo.

ARIEL
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 10 de Enero de 2004, 05:33:00
Se que puedes pedir los LCD con juegos de caracteres en Chino, Japones, etc.
pero no tengo Info al respecto.
Enviame tu experimento primero, por el privado, asi yo tambien voy probandolo.
Quiero aprender C.
Título: RE: Simbolo grados LCD
Publicado por: pocher en 10 de Enero de 2004, 10:23:00
Apárcalo por el subforo de C, Pikman a mí también me interesa.

Un saludo
Título: RE: Simbolo grados LCD
Publicado por: pikman en 10 de Enero de 2004, 18:57:00
Hola MARCOS;
                      Finalmente acudi a leerme el DATASHEET del HD47780 ( siguiendo el consejo famoso yankee R.F.M. {Read the Fucking Manual ) de donde pude deducir el error que cometia, y es que direccionaba la DDRAM antes de entrar a la CGRAM, despues que me di cuenta de esto, pude hacer que aparezca la carita feliz, ya tengo el 2 sobreelevado y bueno en asm la secuencia ahora voya cambiar en C y te cuento como fue, igual la rutina que te mande de manejo de LCD es muy buena, pues verifica si el modulo esta libre antes de mandarle de nuevo y dato, sin teen que incluir retardos para distintas pantallas, con respecto a mandar el comando 0x01 despues de escribir la CGRAM el manual dice que es para salir de ella, tambien encontre que hay posiciones de la DDRAM que no estan usadas ( dependiendo del display) que se pueden usar para guardar datos, y despues leerlos, claro hay que usar la linea r/w del modulo para esto.

Un saludo cordial

ARIEL
Título: RE: Simbolo grados LCD
Publicado por: lafe en 10 de Enero de 2004, 19:06:00
Hola gracias POCHER por subir el manual bueno hay puse una calculadora para obtener el valor de nuestro caracter en binario,decimal,hex.
espero que lo puedan bajar yo no pude no se porque?
S@lu2
http://miarroba.com/foros/ver.php?temaid=1324787&foroid=256746
Título: RE: Simbolo grados LCD
Publicado por: pocher en 11 de Enero de 2004, 02:04:00
Yo támpoco pude.

Llevo dando el "coñazo" con esto de que no puedo bajar archivos de los dos almacenes, desde tiempos inmemoriables y voy a seguir dando la "vara" a ver si alguién dá una solución.

Hacer el favor, si vosotros támpoco podeís bajar archivos de los almacenes poner un mensaje y comentarlo.
Título: RE: Simbolo grados LCD
Publicado por: lafe en 11 de Enero de 2004, 14:54:00
Hola Gente
bueno les dejo el link donde esta la calculadora y otro programa
mas que esta relacionado con lcd manejado por el puerto paralelo

www.geocities.com/SiliconValley/Park/2248/index.htm

S@LU2
Título: RE: Simbolo grados LCD
Publicado por: MGLSOFT en 12 de Enero de 2004, 05:20:00
Hola, Pocher!!
Yo pude bajar sin problemas el archivo desde el link...
No tendras algun problema en la configuracion del navegador??

Ohh!, mil disculpas, busque y no encuentro el archivo bajado...

Voy a intentar de otra forma y les cuento...Tampoco !!

Intente con el menu contextual, boton derecho, guardar destino como... y no anda tampoco!!!

Interveni, Norberto !![/b]