TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: GRUTTIS en 26 de Octubre de 2013, 14:24:41

Título: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: GRUTTIS en 26 de Octubre de 2013, 14:24:41
Hola de nuevo, estoy tratando de generar caracteres especiales en una pantalla de 2 lineas x 20 caracteres, pero no entiendo bien el concepto. Programo en assembler, ¿algún ejemplo simple para arrancar?, saludos a todos. 
Título: Re: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: fabianjsm en 29 de Octubre de 2013, 10:42:31
Te refieres al controlador HD44780 (o compatible)? Para crear tus propios caracteres escribes el bitmap byte a byte en la RAM de caracteres luego del comando 0x40 (0x40 + direccion):

Código: ASM
  1. ; Flecha
  2.     enviar_cmd     0x40
  3.     enviar_dato    b'00000'
  4.     enviar_dato    b'00100'
  5.     enviar_dato    b'00010'
  6.     enviar_dato    b'11111'
  7.     enviar_dato    b'00010'
  8.     enviar_dato    b'00100'
  9.     enviar_dato    b'00000'
  10.     enviar_dato    b'00000'

Espero que te sirva.
Título: Re: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: GRUTTIS en 29 de Octubre de 2013, 11:03:20
Hola, gracias por contestar, estoy usando una pantalla de una marca genérica, creo que debe ser compatible con el controlador que mencionas, probé el mismo programa con varias pantallas y de distintas marcas y siempre me dio resultado.

dejo acá un ejemplo de como muestro un carácter:

* le doy inicio a la pantalla.

*por las dudas, borro la pantalla:

movlw 0x01
call      LCD_REG: ¿esto seria igual a "enviar_cmd"?

*fijo la posición de inicio del mensaje

movlw 0x80 
call      LCD_REG: el primer carácter del mensaje va a aparecer en la primera posición de la linea superior.

movlw  'A'
call      LCD_DAT: muestro el caracter ,¿esto sería igual a "enviar_dato"?
   
Título: Re: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: fabianjsm en 29 de Octubre de 2013, 16:41:43
Como envías 0x01 para borrar y 0x80 para posicionarte al inicio te diría que son los mismos, o compatibles. Después del comando 0x80, para dibujar tu primer carácter debes escribir un cero, para el segundo un uno y así sucesivamente:

Código: ASM
  1. movlw 0x40
  2.     call LCD_REG
  3.     movlw  primer_byte_del_bitmap
  4.     call LCD_DAT
  5.     ; ... así sucesivamente para todo el bitmap ...
  6.  
  7.     movlw 0x80
  8.     call LCD_REG
  9.     movlw  'A'  ; Letra A
  10.     call LCD_DAT
  11.     movlw  0   ; Primer caracter definido por usuario
  12.     call LCD_DAT
  13.     movlw  1   ; Segundo caracter definido por usuario
  14.     call LCD_DAT
Título: Re: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: GRUTTIS en 29 de Octubre de 2013, 18:05:06
Hola de nuevo, entiendo que la instrucción: "movlw  0   ; Primer caracter definido por usuario", sería enviar el valor 0x00, no el caracter "0", ¿verdad?, saludos. 
Título: Re: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: GRUTTIS en 30 de Octubre de 2013, 00:44:14
Hola, logré crear un par de caracteres y mostrarlos, pero cuando le quito la alimentación a la pantalla y vuelvo a hacer correr el programa, aparece cualquier cosa, el lugar de los caracteres que creé, ¿en que estoy fallando? 
Título: Re: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: fabianjsm en 01 de Noviembre de 2013, 23:40:07
Es el funcionamiento normal, ya que los caracteres permanecen en una RAM, tendrás que dibujarlos como parte de la rutina de inicialización de tu display.
Título: Re: Generación de nuevos caracteres en pantalla de 2x20
Publicado por: GRUTTIS en 02 de Noviembre de 2013, 09:50:15
Hola, cierto que es memoria RAM y no quedan grabados, debo hacer el proceso de grabar los caracteres cada vez que haga la rutina de inicialización. Después puedo usarlos cuando quiera, ¿es así?