Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

24/03/2008 #1

Avatar de Meta

Escribir bien en los LCD.
En el LCD 2x16 al escribir palabras con tilde, por ejemplo.

Está, me aparece en el LCS Estä, cosas así.

¿Hay algún método para resolverlo?
25/03/2008 #2


para escribir bien:

lcd_putsf("bien");








crea tu caracter personalizado en la memoria RAM disponible y usalo, si no me equivoco el LCD lo tendras que usar en otro modo. Nunca lo he hecho, pero se que se puede.
25/03/2008 #3

Avatar de Meta

Bueno, me refiero a ASM. Gracias.
25/03/2008 #4


Meta, podrías probar mandando el caracter en ASCII, tal vez tu lo escribes 'á' en mplab, en vez de mandar el caracter mandalo con su equivalente en código ascii

á = 0xE1 = b'11100001'
é = 0xE9 = b'11101001'
í = 0xED = b'11101101'
ó = 0xF3 = b'11110011'
ú = 0xFA = b'11111010'

ahí está el equivalente en hexadecimal y en binario del código ascii, intenta mandando así el dato (en hexadecimal o binario, el que prefieras), debe funcionar porque así aparece en el datasheet del LCD.
25/03/2008 #5

Avatar de Meta

Código:
; En la pantalla se visualizan varios mensajes, uno detrás de otro. Cada mensaje permanece
; durante 2 segundos. Entre mensaje y mensaje la pantalla se apaga durante unos 200 ms.
;
; ZONA DE DATOS **********************************************************************

	LIST		P=16F84A
	INCLUDE		<P16F84A.INC>
	__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

	CBLOCK  0x0C
	ENDC

; ZONA DE CÓDIGOS ********************************************************************

	ORG	0
Inicio
	call	LCD_Inicializa
Principal
	movlw	Mensaje0			; Apunta al mensaje 0.
	call	Visualiza
	movlw	Mensaje1			; Apunta al mensaje 1.
	call	Visualiza
	movlw	Mensaje2			; Apunta al mensaje 2.
	call	Visualiza
	movlw	Mensaje3			; Apunta a Menajazo número 3.
	call	Visualiza
	movlw	Mensaje4			; Apunta al mensaje 4.
	call	Visualiza
	movlw	Mensaje5			; Apunta al mensaje 5.
	call	Visualiza
	movlw	Mensaje6			; Apunta al mensaje 6.
	call	Visualiza
	call	Retardo_5s			; Permanece apagada durante este tiempo.
	goto	Principal			; Repite la visualización de todos los mensajes.
;
; Subrutina "Visualiza" -----------------------------------------------------------------
;
Visualiza
	call	LCD_Mensaje
	call	Retardo_2s			; Visualiza el mensaje durante este tiempo.
	call	LCD_Borra			; Borra la pantalla y se mantiene así durante 
	call	Retardo_200ms		; este tiempo.
	return
;
; "Mensajes" ----------------------------------------------------------------------------
;
Mensajes
	addwf	PCL,F
Mensaje0						; Posición inicial del mensaje 0.
	DT "LCD 2x16", 0x00
Mensaje1						; Posición inicial del mensaje 1.
	DT "compatible con", 0x00	
Mensaje2						; Posición inicial del mensaje 2.
	DT "HD44870.", 0x00
Mensaje3
	DT "Este LCD está", 0x00
Mensaje4
	DT "controlado con", 0x00
Mensaje5
	DT "el PIC 16F84A", 0x00
Mensaje6
	DT "25-03-2008", 0x00

	INCLUDE  <LCD_4BIT.INC>
	INCLUDE  <LCD_MENS.INC>
	INCLUDE  <RETARDOS.INC>
	END
¿Exactamente dónde pongo eso con la directiva DT?

Código:
; Voy a cambiar la á por el 0xE1.
Mensaje3
	DT "Este LCD está", 0x00

Mensaje3
	DT "Este LCD est0xE1", 0x00
Lo acaba de comprobar y no funciona, capaz que hay que programarlo con retlw.
25/03/2008 #6


Meta, podrías adjuntar los 3 includes (LCD_4bit.inc, LCD_mens.inc y Retardos.inc el último porque me interesa, los primeros 2 ya que puede haber un error en el programa.

El mplab, solo se encarga de pasar un caracter en ascii, me llama la atención que lo ponga de esa manera en el LCD.

Cuando se utiliza el retlw es porque para mostrar el mensaje, se va a una tabla, pero aquí se utiliza otra tabla. debe ser por eso que está tomando mal la letra.
25/03/2008 #7

Avatar de Meta

Esas librerías me vino en un libro y las puedes descargar directamente en www.pic16f84a.com

Aún así te lo pongo aquí.
Archivos Adjuntos
Tipo de Archivo: rar inc_675.rar (7,1 KB (Kilobytes), 441 visitas)
25/03/2008 #8


Pues, la verdad, es que no entiendo porqué sale de esa manera.

Intenta poner de esta manera:

Mensaje0

DT "á", 0x00


si solo de esta manera lo toma, quiere decir que el MPLAB, está haciendo mal la convesión. Por el contrario, si aún no sale bien, prueba de esta manera

Mansaje0
DT 0xE1, 0x00

si es que 0xE1 corresponde a la letra á, y si aún no anda, intentaremos otra cosa
25/03/2008 #9

Avatar de Meta

Si corresponde la letra á. En el simulador del Proteus también da el mismo error.

25/03/2008 #10

Avatar de Meta

He probado esto aquí abajo con tildes.

Código:
	DT "áÁ éÉ óÓ,etc", 0x00
25/03/2008 #11

Avatar de Meta

Por cierto, me he fijado que en la tabla de CGROM de Hitachi no incluye las letras con tildes.

En otras tabla de ASCII tampoco vale.

http://www.cdrummond.qc.ca/cegep/inf...ges/ascii2.gif

¿Alguien ha probado utilizando palabras con tildes y que funcione?
25/03/2008 #12

Avatar de Meta

pic-man dijo:
Meta, podrías probar mandando el caracter en ASCII, tal vez tu lo escribes 'á' en mplab, en vez de mandar el caracter mandalo con su equivalente en código ascii

á = 0xE1 = b'11100001'
é = 0xE9 = b'11101001'
í = 0xED = b'11101101'
ó = 0xF3 = b'11110011'
ú = 0xFA = b'11111010'

ahí está el equivalente en hexadecimal y en binario del código ascii, intenta mandando así el dato (en hexadecimal o binario, el que prefieras), debe funcionar porque así aparece en el datasheet del LCD.
Tampoco funciona.

Código:
; ZONA DE DATOS **********************************************************************

	LIST		P=16F84A
	INCLUDE		<P16F84A.INC>
	__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

	CBLOCK 0x0C
	ENDC

; ZONA DE CÓDIGOS ********************************************************************

	ORG	0
Inicio
	call	LCD_Inicializa
	movlw	'E'
	call	LCD_Caracter
	movlw	's'
	call	LCD_Caracter
	movlw	't'
	call	LCD_Caracter
	movlw	b'11100001'      ; Letra á.
	call	LCD_Caracter
	sleep							; Entra en modo de bajo consumo.

	INCLUDE  <LCD_4BIT.INC>			; Subrutinas de control del módulo LCD.
	INCLUDE  <RETARDOS.INC>			; Subrutinas de retardo.
	END								; Fin del programa.
Archivos Adjuntos
Tipo de Archivo: pdf lm016l_256.pdf (350,7 KB (Kilobytes), 113 visitas)
25/03/2008 #13


Si te fijas en la página 6 del datasheet aparecen los caractéres que puede desplegar el LCD, en ningún lado aparecen las letras con acento pero si las letras con diéresis

ä = 0xE1

Entonces tu LCD no soporta acentos, no es ningún error, es que así está diseñado el LCD.
25/03/2008 #14

Avatar de Meta

En realidad no es ese mi LCD, es este.

http://www.msebilbao.com/tienda/prod...roducts_id=301

Digo yo que habrá una forma de poner tildes. En caso contrario, fuerte porquería de LCD que compré ahí. Menos mal que no me dio por comprar el del 4x20 que vale más caro.

Aún así voy a consultar al autor del libro a ver que opina.
25/03/2008 #15


Si no es tu LCD al menos debe usar el mismo microcontrolador ya que corresponde el caracter que mandas (0xE1) con el que aparece (ä). Puedes crear tu propio caracter escribiendo en la RAM del LCD, en ese datasheet no parece explicar como. Te adjunto el datasheet del lcd hitachi 44780, ahi viene explicado como crear caractéres.
Archivos Adjuntos
Tipo de Archivo: pdf lcd_hitachi44780_153.pdf (278,4 KB (Kilobytes), 119 visitas)
25/03/2008 #16

Avatar de Meta

Hola:

Según me han dicho ellos, este LCD es un compatible con el Hitachi 44870.

Estoy leyendo el pdf, en la página 15 te dice cosas a base de pixel, en la página 18 se ve otra tabla la letra á con el binario 11100001. Pues no funciona si pongo eso.

Eso si, esta tabla es el ROM code A02, ¿Cómo paso ahí? Quizás sea por eso.

Usar este ejemplo de código.

Código:
; ZONA DE DATOS **********************************************************************

	LIST		P=16F84A
	INCLUDE		<P16F84A.INC>
	__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

	CBLOCK 0x0C
	ENDC

; ZONA DE CÓDIGOS ********************************************************************

	ORG	0
Inicio
	call	LCD_Inicializa
	movlw	'E'
	call	LCD_Caracter
	movlw	's'
	call	LCD_Caracter
	movlw	't'
	call	LCD_Caracter
	movlw	b'11100001'     ; Letra ä, quiero la á.
	call	LCD_Caracter
	sleep							; Entra en modo de bajo consumo.

	INCLUDE  <LCD_4BIT.INC>			; Subrutinas de control del módulo LCD.
	INCLUDE  <RETARDOS.INC>			; Subrutinas de retardo.
	END								; Fin del programa.







¿Funcionaría usando este tipo de cosas? Es decir, creando tus porpios pixeles, pero si podemos acceder a la segunda tabla de la página 18 de este LCD mejor que mejor.

Código:
CGRAM_Escribe
	addwf	PCL,F
	
; Bateria al 0%, byte 0 de la CGRAM.
							;   ________
	retlw	b'00001110'		;  |    xxx |
	retlw	b'00001010'		;  |    x x |
	retlw	b'00010001'		;  |   x   x|
	retlw	b'00010001'		;  |   x   x|
	retlw	b'00010001'		;  |   x   x|
	retlw	b'00010001'		;  |   x   x|
	retlw	b'00010001'		;  |   x   x|
	retlw	b'00011111'		;  |   xxxxx|
							;   --------
25/03/2008 #17


Tienes razón, no me había fijado que era con el ROM code A02. Estuve revisando el datasheet y en ningun lado vi como accesar a esa tabla.
26/03/2008 #18

Avatar de Tomasito

Acá tenés un ejemplo de creación de caracteres especiales en un LCD que funciona (simulado con proteus):
http://personales.ya.com/cepalacios/...eria_carga.htm

La contraseña del ZIP es "D.P.E." (sin las comillas)


Espero que te sirva!



Salu2!
12/05/2010 #19


Respuesta: Escribir bien en los LCD.
Gracias, necesitaba las librerías, lamento no poder ayudarlos con el problema de las letras, pero me resolvieron el mío.
16/10/2010 #20


Respuesta: Escribir bien en los LCD.
hola, yo tengo una duda con respecto a los display lcd, yo programa el at90s2313 de atmel y manejo con el un lcd, teclado, dos reles, un buzzer y nada mas creo....

lo que pasa es lo siguiente sin conectar el bkack light del lcd anda perfecto todo....pero cuando lo conecto por ejemplo cuando deberia sonar el buzzer no suena, como que no le da el cuero o algo

y el regulador 7805 calienta bastante

podria ser falta de corriente?? tanto consume ese back light?

tendre que usar otro metodo de regulacion para el micro?

muchas gracias espero que me ayuden con mi problema.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.