TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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.
-
Porque no pones la rutina SendChar tambien...
-
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 ...
-
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....!!!
-
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
-
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.
-
Acabo de añadir una imagen de los bytes a enviar al LCD para generar el simbolo en la CGRAM del LCD.
Esta Aqui ...


-
Marcos donde se puede consegir el programa que utilizas para diseñarlos ?
-
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,






-
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.
-
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.
-
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
-
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???

-
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.
-
Debemos tener un Datasheet diferente, yo no lo encontre.
Cual es byte de las filas y cual el de las columnas??

-
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???


-
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
-
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.

-
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
-
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
-
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...

-
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
-
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 ??
-
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
-

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.
-
Apárcalo por el subforo de C, Pikman a mí también me interesa.
Un saludo
-
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
-
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
-
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.
-
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
-
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]