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

Temas similares

19/08/2012 #1

Avatar de superdog13

Memoria GGRam LCD alfanumérica
Bueno, leyendo en internet me he econtrado que la LCD cuenta con 8 espacios de memoria libres para que uno pueda mostrar 8 caractéres especiales, por decirlo de alguna forma permite crear a uno 8 caracteres en la matriz de 5x8 leds con la que cuenta cada posición de la LCD.
Esto para crear, por ejemplo, la letra "ñ", ya que el código ASCII no la tiene en cuenta; y muchos otros más.
Ahora, he visto varias formas de hacerlo, pero no se si es que son en otra forma de programar (yo utiliza MPlab, con el compilador C18 y lenguaje en C) o qué, pero no entiendo realmente cómo programar cada uno de los espacios disponibles.
Se que cada caracter cuenta con 5 bits (de las 5 columnas) por cada uno de las 8 filas (y que cada una de ellas cuenta con una posición en hexadecimal) a la que se le asigna un valor dependiendo de qué bits (osea, de qué columna) queremos activar por fila.
Eso lo entiendo, ahora lo no se es cómo hacerlo dentro del programa.
Alguien puede ayudarme ???
21/08/2012 #2

Avatar de ByAxel

Hola:

Para crear un nuevo simbolo es necesario cargar 8 datos por cada símbolo de esta manera.

- Creas un array con los datos... que para uno solo serian 8.

char NUEVO[8] = {0b00011111, 0b00011111, 0b00011111, 0b00011111,
0b00011111, 0b00011111, 0b00011111, 0b00011111};

- el primer dato del array es la parte de arriba del caracter
- los '1' unos, son los 5 bits que representan a un caracter del display, se confecciona el caracteter modificando estos bits con '0' y '1'.

- Usas un bucle para cargar el dato en la CGRAM del LCD

// Indicas al LCD que vas a escribir en la CGRAM (ver cualquier datasheet de LCD)
for(1=0 ; i<8 ; i++)
{
WriteCGRAM(Direccion, NUEVO[i]);
}

- Para usar el nuevo caracter escribes normalmente en el LCD pero
con con valores en decimal entre 0-7 que representan los 8 caracteres disponibles.
- Para este ejemplo escribes '0' en decimal en el LCD para que aparesca el caracter.

Espero te ayude.

Saludos
27/08/2012 #3

Avatar de superdog13

Gracias (y)

Y, ahora tengo otro problema:

Se supone que con el comando WriteCmdXLCD(SHIFT_DISP_*) (donde * puede ser LEFT o RIGHT) el texto que está en la pantalla debería desplazarse lateralmente, pero al simularlo en ISIS no hace nada.
Esto es problema del programa, de la librería, o de qué ???
27/08/2012 #4

Avatar de ByAxel

superdog13 dijo: Ver Mensaje
Gracias (y)

Y, ahora tengo otro problema:

Se supone que con el comando WriteCmdXLCD(SHIFT_DISP_*) (donde * puede ser LEFT o RIGHT) el texto que está en la pantalla debería desplazarse lateralmente, pero al simularlo en ISIS no hace nada.
Esto es problema del programa, de la librería, o de qué ???
Igual, ese efecto no me funciona bien en el ISIS, pero si va bien en un LCD real... sugiero que pruebes en un LCD real...
27/08/2012 #5

Avatar de superdog13

Bien, lo probaré cuando pueda (ya que desmonté el circuito el viernes :( :( :(
31/08/2012 #6

Avatar de superdog13

Antes de probarlo tengo una duda: esto hace mover toda la "LCD" o se puede diferenciar para que una líena se mueva y la otra no o cada una para un lado diferente, etc. ???
31/08/2012 #7

Avatar de ByAxel

Según la hoja de datos del controlador HD44780 que hay en la mayoria de LCD alphanumericos, el efecto hace dezplazar a toda la memoria ROM a la izquierda o derecha y no línea por línea.

http://www.stanford.edu/class/ee281/..._datasheet.pdf

En un ejemplo de LCD16x2
shiftLCD.jpg
Respuesta
¿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.