Autor Tema: Tutorial basico de control de LCD y mini GLCD  (Leído 22979 veces)

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Tutorial basico de control de LCD y mini GLCD
« en: Junio 24, 2010, 03:23:27 pm »
Es sabido que un proyecto, tiene una mayor atracción, cuando más funcionalidades le incorporamos; Esta de más decir, que el empleo de un display de cristal de cuarzo en nuestros proyectos, además de darnos una terminación atractiva, nos presenta muchas ventajas y utilidades que podemos anexar.
Bien, de seguro, ya muchos han estado siguiendo el artículo de Ariel sobre control de LCD en PicBasic, o bien, han estado siguiendo atentamente los ejemplos de Picaxe citados en el foro de Ucontrol donde destaque algunos proyectos básicos con empleo de LCD y GLCD (que podemos recuperar de un Nokia 3310 o un Siemens 5X), para poder comprender como se manejan estos sin la necesidad de comprar un kit LCD-Serial de la empresa Revolution Action (Picaxe), o bien, algun otro kit para pic de display seriales.
En esta ocasión, trataremos de introducirlos brevemente un poco mas en el manejo y empleo de los LCD, pero arrancando desde cero, tratando de comprender primero como funcionan estos display, y luego, como tenemos que condicionar nuestro microcontrolador para poder controlarlo a nuestro gusto.
 Para arrancar, es necesario comprender que el siguiente articulo, además de ser aplicable a varios tipos de lenguajes (en este articulo, solo veremos cuatro), por que el principio de funcionamiento del display es uno solo; En este caso en especial, solo nos abocaremos a los display de 2 líneas por 16 caracteres (LCD 16x2) - los mini GLCD del nokia 3310, y a futuro, veremos otros tipos de display hasta llegar a los GLCD como los que maneja el mostro de Suky y demas colegas del foro…

1_Introduccion al control del LCD (HD44780)
1a_Control LCD en Lenguaje Basic Picaxe
1b_Control LCD en Lenguaje Pic Basic
1c_Control LCD en Lenguaje ASM
1d_Control LCD en Lenguaje C

Introduccion al control de Mini GLCD (Nokia 3310 - pcd8544 )
2a_Control MiniGLCD en Lenguaje Basic Picaxe
2b_Ejemplos de control para variosdisplay segun marca de telefono


-En construccion-
« Última modificación: Agosto 04, 2010, 12:17:11 am por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Tutorial basico de control de LCD y mini GLCD
« Respuesta #1 en: Junio 24, 2010, 03:26:51 pm »
INTRODUCCIÓN al control del LCD (HD44780)

El control de un mensaje, la impresión de una frase en un display, puede realizarse de varias maneras, las cuales, se diferencian no solo en la técnica de impresión del dato a visualizar, si no que también en el tiempo que radica la función de cada uno de los modos, y el tamaño u espacio de memoria que consumimos.
Sin importar el lenguaje con el cual nosotros controlaremos el driver del display; Uno de los métodos mas destacados para muchos que suelen trabajar con tablas y obtener un tiempo de ejecución un poco más rápido, es la implementación de la técnica de impresión de caracteres ASCII a través de 8 líneas de datos. Esta opción, nos permite crear mensajes dibujados en el display obteniendo así, más espacio o más recursos para mostrar nuestros mensajes (en este caso, no vamos a trabajar en este modo, pero mas adelante, les enseñaremos como hacerlo)…
El otro método, que es el método que noto mas agradable por que no hay manera de tener muchos errores y para mi es el mas practico, es el empleo de impresión de frases alojadas en espacios de memoria. Este método nos limita a la implementación de 255 letras, que por ende, nos reduce la cantidad de palabras….
Las grandes diferencias entre un método y otro, no solo ronda bajo el tiempo y espacio de memoria que requiere el método de ejecución, si no que también hay que destacar que con uno podemos obtener grandes efectos de visualización y el otro no, y que con uno, podemos ver que escribimos en el programa y en el otro no…Muchas vueltas no? veamoslo de la siguiente manera mas grafica

Imágenes superiores método ASCII – Imagen inferior, método de carácter definido en espacio de memoria

El manejo de un LCD, no es nada del otro mundo si comprendemos la base de la arquitectura de un modulo LCD. Al principio puede resultarnos un poco engorroso el tema, por que por ahí no tuvimos la oportunidad de interiorizarnos un poco mas principalmente como funcionan estos y que hacen cada pin de los módulos mas básicos, comunes y o comerciales; En mi opinión, creo que comprendiendo cual es la función de cada pin (patillaje o contacto), cuales son los pasos que se requiere para el control, son los mínimos datos e información, que puede sernos útil para aplicarla en cualquier lenguaje de programación.
En forma muy breve, tratare de explicarles un paso a paso de cómo funcionan estos internamente y como podemos establecer un control sobre el flujo de información que va desde el microcontrolador al LCD.

1_ Síntesis de Arquitectura del LCD
Los módulos LCD, llevan integrado a sus circuitos, 3 espacios de memorias que serán la base fundamental para el funcionamiento del modulo.
Por un lado, tenemos dos locaciones donde albergan datos temporalmente con características RAM. Estos dos espacios, son las llamadas CGRAM y DDRAM, que son en si los espacios donde se almacenan los datos que se van a emplear para mostrar en pantalla. La diferencia entre una y otra, es que la CGRAM (Character Generator RAM), nos permite definir y alojar 8 nuevos caracteres personalizados; Osea, en la CGRAM, es donde se alojan los caracteres creados por el usuario con matrices personalizadas, y la DDRAM (Data Display RAM), es un espacio temporario donde se almacenan los caracteres que se van a mostrar en pantalla.
La DDRAM, tiene una capacidad de 80 bytes, 40 por cada línea, de los cuales sólo 32 se pueden visualizar a la vez (16 bytes por línea).
De las 80 posibles, las dos direcciones más importantes de la DDRAM son:
• Dirección 00h, que es el comienzo de la primera línea
• Dirección 40h, que es el comienzo de la segunda línea
Por otro lado, tenemos un espacio de memoria interna no volátil del tipo ROM, llamada CGROM (Character Generator ROM), que es donde se almacena una tabla con los 192 caracteres que pueden ser visualizados (ver el siguiente cuadro).
Cada uno de los caracteres tiene su representación binaria de 8 bits. Para visualizar un carácter debe recibir por el bus de datos el código correspondiente.

Configuración de las direcciones de la CGRAM
Como ya sabemos, el módulo LCD además de tener definidos todo el conjunto de caracteres ASCII, permite al usuario definir 4 u 8 caracteres gráficos. La composición de estos caracteres se va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cada carácter gráfico definido por el usuario se compone de 16 u 8 bytes que se almacenan en sucesivas posiciones de la CGRAM.
Mediante esta instrucción se establece la dirección de la memoria CGRAM a partir de la cual se irán almacenando los bytes que definen un carácter gráfico. Ejecutado este comando todos los datos que se escriban

Ahora, vallamos a un ejemplo práctico suponiendo que queremos representar el nombre o la palabra Ucontrol implementando la CGRAM… Veamos un sencillo ejemplo de cómo implementar el método de una matriz:

La implementación de la matriz, es mucho mas que sencilla, pues como verán, el método es valido tanto para el empleo de rutinas en ASM, como para rutinas en Basic para Picaxe.
Tan solo debemos colocar los valores en forma de 1´s y 0´s; Donde el cero son los espacios libres, y 1 el espacio marcado en negro…
Un efecto visual atractivo, podría hacerse con la inversa de esta regla para obtener un fondo oscuro y un carácter claro…

El resultado por ejemplo para poder definir un carácter CGRAM en un microcontrolador PICAXE, estaría dada por ejemplo, como lo indico en esta sencilla tabla:
Si les interesa mucho esta parte de cómo generar caracteres propios, les recomiendo el siguiente articulo presentado en Ucontrol por el Sr Pedro (PalitroqueZ) “Generador de Caracteres CG-RAM, el aliado perfecto para programar LCDs.

Configuración de las direcciones DD
Los caracteres o datos que se van visualizando, se van almacenando previamente en una memoria llamada DD RAM para de aquí pasar a la pantalla.
Mediante esta instrucción se establece la dirección de memoria DD RAM a partir de la cual se irán almacenando los datos a visualizar. Ejecutado este comando, todos los datos que se escriban o lean posteriormente los hacen desde esta memoria DD RAM. Las direcciones de la 80h a la 8Fh corresponden con los 16 caracteres del primer renglón y de la C0h a la CFh con los 16 caracteres del segundo renglón, para el modelo 44780.

Lectura de Flag BUSY en la dirección…
Cuando el módulo LCD está ejecutando cualquiera de estas instrucciones, tarda un cierto tiempo de ejecución en el que no se le debe mandar ninguna otra instrucción. Para ello dispone de un flag llamado BUSY (BF) que indica que se está ejecutando una instrucción previa.
Esta instrucción de lectura informa del estado de dicho flag además de proporcionar el valor del contador de direcciones de la CG RAM o de la DD RAM según la última que se haya empleado.

Escritura de datos en CG o DD RAM
Mediante este comando se escribe en la memoria DDRAM los datos que se quieren presentar en pantalla y que serán los diferentes códigos ASCII de los caracteres a visualizar.
Igualmente se escribe en la memoria CGRAM los diferentes bytes que permiten confeccionar caracteres gráficos a gusto del usuario.
El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instrucción de direccionamiento DD RAM o la de direccionamiento CG RAM.

Lectura de dato desde CGRAM o DDRAM
Mediante este comando se lee de la memoria DD RAM los datos que haya almacenados y que serán los códigos ASCII de los caracteres visualizados.
Igualmente se lee de la memoria CG RAM los diferentes bytes con los que se ha confeccionado un determinado carácter gráfico.
El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instrucción de direccionamiento de la DD RAM o la de direccionamiento CG RAM.
« Última modificación: Junio 29, 2010, 06:25:05 pm por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Tutorial basico de control de LCD y mini GLCD
« Respuesta #2 en: Junio 24, 2010, 03:49:26 pm »
-En construcción-
« Última modificación: Agosto 04, 2010, 12:16:25 am por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Tutorial basico de control de LCD y mini GLCD
« Respuesta #3 en: Junio 24, 2010, 03:52:30 pm »
2_Hardware para control del LCD en modo 4bits

Ahora básicamente, trataremos de ver que función cumple cada pin en el patillaje de un modulo LCD 16x2 , y las conexiones básicas para el control de estos con un microcontrolador PICAXE en modo 4 bits (atentos a esto ultimo, ya que en modo 4 bits, no funcionan los caracteres CGRAM, estos últimos solo funcionan en modo 8 con un picaxe 18).


2A_ Conexión – Interface Microcontroladores PIC
RBO-RB7 Están conectadas a las líneas de datos DO-D7 del módulo. A través de los puerto B, se envían códigos ASCII o de control al módulo o, se recibe por parte de este, el estado interno del mismo.
EL Port B habrá que programarlo como salida cuando se vayan a enviar códigos ASCII o de control y como entrada cuando se desee conocer el estado interno del módulo.
RA0: Se conecta con la señal de control R/S. Sacando un nivel lógico "0" por esta línea se selecciona el registro de control del módulo. Sacando un nivel lógico " 1 " se selecciona el registro de datos. Esta línea debe programarse como salida.
RA1: Se conecta con la señal R/W. Sacando un nivel lógico "0" por ella, el módulo es escrito con la información presente en ese momento en el Port B que deberá actuar como salida. Sacando un " 1 " se lee el estado interno del módulo LCD.
Dicho estado se recibe a través del Port B que deberá estar programado como entrada. La línea RA1 debe programarse como salida.
RA2: Se conecta con la señal E. Cuando se aplica un nivel "1" el módulo queda habilitado y es posible por tanto la transferencia de información entre el Port B y las líneas de datos DO-D7. Aplicando un "0" el módulo queda desconectado y sus líneas de datos DO-D7 en alta impedancia. RA2 debe programarse también como salida.

2B_ Conexión – Interface Microcontroladores PICAXE
Out4-5-6-7 Están conectadas a las líneas de datos D4-D5-D6-D7 del módulo. A través por tanto, de la puerta B, se envían códigos ASCII o de control al módulo o, se recibe por parte de este, el estado interno del mismo.
En el sistema de Picaxe, si bien podemos reconfigurar nuestros puertos para transformarlos en entradas u salidas, en este caso solo emplearemos estos puertos como salidas para enviar códigos ASCII o de control interno del modulo.
Out2: Se conecta con la señal de control R/S. Sacando un nivel lógico "0" por esta línea se selecciona el registro de control del módulo. Sacando un nivel lógico " 1 " se selecciona el registro de datos.
RW  En el caso de los microcontroladores Picaxe, RW no va conectado a ningún puerto del microcontrolador y se conecta directamente a GND para darle así un nivel lógico "0", el cual configura al modulo LCD para trabajar en modo de impresión de dato presente en el momento.
Out3: Se conecta con la señal E. Cuando se aplica un nivel "1" el módulo queda habilitado y es posible por tanto la transferencia de información entre los puertos del Picaxe (Out4-5-6-7) y las líneas de datos D4-D5-D6 y D7. Aplicando un "0" el módulo queda desconectado y sus líneas de datos D4-5-6-7 en alta impedancia no permitiendo entrar ningún dato.



-En construccion-

« Última modificación: Junio 25, 2010, 02:41:16 pm por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Tutorial basico de control de LCD y mini GLCD
« Respuesta #4 en: Junio 24, 2010, 04:50:51 pm »
3_ Rutinas para el control estándar de un modulo LCD 16x2 con PICAXE
El módulo LCD ejecuta automáticamente una secuencia de inicio interna en el instante de aplicarle la tensión de alimentación si se cumplen los requisitos de alimentación expuestos en el siguiente cronograma.
Dichos requisitos consisten en que el tiempo que tarde en estabilizarse la tensión desde 0.2 V hasta los 4.5V mínimos necesarios sea entre 0.1 mS y 10 mS. Igualmente el tiempo de desconexión debe ser como mínimo de 1 mS antes de volver a conectar.

La secuencia de inicio ejecutada es la siguiente:

Si la conexión de la alimentación no reúne las condiciones que exige el módulo LCD, habría que realizar la secuencia de inicialización por software. En cualquier caso, es importante enviar al LCD la primera instrucción de trabajo después de que hayan transcurrido 15 ms, para completar dicha secuencia de inicialización.

Ahora, veamos las distintas rutinas en un microcontrolador PICAXE, para  el control de un LCD…

Definiendo variables de control para el LCD
Antes de comenzar todo programa de control e impresión de pantalla, las siguientes variables deben definirse
  
Código: [Seleccionar]
SYMBOL  RS        = 2     ; 0 = Comando   1 = Dato
  SYMBOL  E          = 3     ; 0 = Idle      1 = Activa
  SYMBOL  DB4       = 4     ; LCD Línea Dato 4
  SYMBOL  DB5       = 5     ; LCD Línea Dato 5
  SYMBOL  DB6       = 6     ; LCD Línea Dato 6
  SYMBOL  DB7       = 7     ; LCD Línea Dato 7
  SYMBOL  RSCMDmask = %00000000  ; Selección registro de Comando
  SYMBOL  RSDATmask = %00000100  ; Selección registro de Dato
  SYMBOL  get   = b11
  SYMBOL  byte  = b12
  SYMBOL  rsbit = b13

La variable "byte" sólo se utiliza en la rutina para especificar los datos que se envían utilizando los comandos SendDataByte y SendCommandByte.
 Los espacios b11 y b12, si bien se implementan al inicio del programa para definir unas variables, luego de estar ya corriendo el programa, estas pueden ser implementadas para otras funciones, pero tenga en cuenta, que cuando este el llamado al comando InitialiseLcd, estas volverán a tomar el valor predefinido al principio perdiendo el nuevo valor asignado
La variable “rsbit” debe preservarse intacta durante la operación del programa. Tanto b13 y en consecuencia w6, no deben ser utilizadas u modificadas para otros usos que no sean expresamente para el control estándar del LCD.

NOTA: En algunos compiladores, la palabra BYTE, nos puede generar un error que de seguro, en algún momento lo solucionara la empresa Revolutions Actions (Yo por mi parte, ya contribuí para con ellos presentándoles el error),asi que por el momento quienes tengan este error al momento de compilar, podemos solucionarlo con tan solo cambiar una letra dejándolo como BITE  (ejemplo: SendDataByte por SendDataBite)

Control del LCD
Hay tres rutinas que se utilizan para inicializar el LCD y el control ...

        GOSUB InitialiseLcd     ; Inicializar LCD

        byte = ...    ; Enviar byte al registro de datos del LCD
        GOSUB SendDataByte


        byte = ... ; Enviar byte al registro de comandos del LCD
        GOSUB SendCmdByte


 La rutina InitialiseLcd debe ser siempre llamada una vez al comienzo del programa.
Los comandos SendDataByte y SendCmdByte, se utilizan para enviar bytes de datos a los registros de comandos y datos del LCD. Esto permite que los datos, el cursor y otros atributos que se visualizan en la pantalla del LCD pueda ser alterado a gusto propio de nuestro programa.
Antes de llamar a cualquiera de las dos rutinas para imprimir el mensaje, el byte de datos que se quiera enviar, debe ser introducido en una variable.

Iniciación de LCD
  
 
Código: [Seleccionar]
InitialiseLcd:
        FOR get = 0 TO 5
        READ get,byte
        GOSUB SendInitCmdByte
        NEXT

        ' Nibble commands – Para inicializar en modo 4-bit

        EEPROM 0,( $33 )  ; %0011---- %0011----   8-bit / 8-bit
        EEPROM 1,( $32 )  ; %0011---- %0010----   8-bit / 4-bit

        ' Byte comando para configuración del LCD

        EEPROM 2,( $28 )  ; %00101000 %001LNF00  Formato Display
        EEPROM 3,( $0C )  ; %00001100 %00001DCB  Display On
        EEPROM 4,( $06 )  ; %00000110 %000001IS  Mueve Cursor
                      ; L : 0 = 4-bit Mode    1 = Modo 8-bit
                      ; N : 0 = 1 Linea       1 = 2 Lineas
                      ; F : 0 = 5x7 Pixels    1 = N/A
                      ; D : 0 = Display Off   1 = Display On
                      ; C : 0 = Cursor Off    1 = Cursor On
                      ; B : 0 = Cursor Steady 1 = Cursor Flash
                      ; I : 0 = Dec Cursor    1 = Inc Cursor
                      ; S : 0 = Mueve Cursor  1 = Display Shift
        EEPROM 5,( $01 )    ; Limpia pantalla
        RETURN

Rutinas de la interface del LCD
    
Código: [Seleccionar]
SendInitCmdByte:
    PAUSE 15                   ; Delay 15mS at 4MHz
    SendCmdByte:
    rsbit = RSCMDmask      ; Send to Command register
    SendDataByte:
    pins = byte & %11110000 | rsbit ; Put MSB out first
    PULSOUT E,1                     ; Give a 10uS pulse on E
    pins = byte * %00010000 | rsbit ; Put LSB out second
    PULSOUT E,1                     ; Give a 10uS pulse on E
    rsbit = RSDATmask               ; Send to Data register  
    next
    RETURN

Como puede verse, las tres rutinas (SendInitCmdByte – SendCmdByte - SendDataByte) están estrechamente integradas, que es la clave para la compacidad del código del programa.
La variable "rsbit” 'se utiliza para guardar y no perder de vista los registros escritos con los comandos del LCD o registro de datos, y debe ser preservado sin otro tipo de uso, entre las llamadas de las rutina "SendDataByte”.
La rutina “SendCmdByte”, simplemente establece que en la variable “rsbit”, se alojen los datos de los comandos o registros y vallan al LCD.
 La rutina de 'SendDataByte" se basa en el momento en que se llama a la variable “rsbit” y se envía este dato al LCD.
La rutina de “SendInitCmdByte" se utiliza exclusivamente para enviar los bytes empleados en los comandos para el registro del control LCD durante la inicialización de la pantalla LCD
Las rutinas de inicialización de un LCD están muy claramente definidas, y los que están familiarizados con ellos en otros lenguajes, podrán observar que esta iniciación del LCD que se implementada en el código no se ajusta enteramente a la secuencia y las temporizaciones especificadas anteriormente en el principio del artículo.
Bien, digamos que tenemos en mano, una excepción y en la practica, esto no presenta problemas en algunos display LCD, como por ejemplo el HD44780 y los procesadores LCD 100% compatibles (Sharp – Phillips – LG  entre otros).
 Si puedo mencionar, que hay algunos módulos comerciales que son muy celosos con el orden de ejecución en las secuencias y los tiempos de ejecución. Siempre, antes de comprar o implementar un modulo, traten de ver la hoja de datos de este, y comparen esta con la hoja de datos del HD44780;  Por lo general, solo los GLCD son los que presentan mas conflictos, y abordaremos ese tema en nuestro próximo articulo, ya que tiene solución y no escapa de nuestras manos.
Volviendo al tema, en gran parte del código o rutina de iniciación del LCD, podrán ver una serie de retrasos implementados a medida que progresa la iniciación. Este código utiliza un retraso fijo de 15ms entre cada byte enviado.
A esto, se le suma un par de demoras mas en la iniciación, que equivalen a menos de 100mS en total, pero es el resultado que se obtiene por la gran reducción del código del programa, comparándolo con la rutina implementada en ASM (al final del articulo, les citare un ejemplo de estas rutinas).
El retraso de 15ms, osea PAUSE 15, se emplea en 4 MHz; Para empleos en modo 8MHz, se extiende la demora a 30ms, osea PAUSE 30; Y cuando se opera en 16MHz el retraso se extiende a 60ms, osea PAUSE 60.
 Las dos instrucciones  “PULSOUT  E, 1”, se adaptan a cualquier velocidad de operación sin ocasionar ningún tipo de problemas.
Las rutinas, deben de tener tiempos de ejecución propias y no externas alojadas en variables, por dos motivos... Uno, por que ocupamos espacios innecesarios, y la otra, para asegurar que los datos no son enviados al LCD hasta que el LCD este listo para enviar los siguientes datos.
 Por lo general, estas velocidades implementadas en las ejecuciones de las rutinas en el microcontrolador PICAXE, como mencione anteriormente no deberían presentar ningún problema, incluso en 16MHZ; Pero puede pasar que al experimentar sus propias rutinas de iniciación mas acortadas, estos comandos puede que presenten algún error; Pero nada de otro mundo, ya que añadiendo unos retrasos de 2ms después de la ejecución de cada uno de estos, logramos corregir el conflicto.
Hay otro método de iniciación de LCD mucho mas corto que no voy a mostrarla, por que eso los llevaría a confusiones y o errores en sus practicas; solo lo menciono, por que de seguro ustedes rápidamente las verán al cabo de un par de pruebas y compresión del funcionamiento de un LCD....
El comando que implementamos para regresar a la rutina ($ 02 y $ 03), puede ser reemplazado por una instrucción que establezca explícitamente la posición del carácter siguiente a escribir y luego pegue el salto; exceptuando obviamente los momentos donde implementamos scrooll u otros tipos de desplazamientos de pantallas…
 
Los comandos más comunes que se enviaras al LCD son los siguientes:

Borrado de pantalla:
Código: [Seleccionar]
 byte = $01 : GOSUB SendCmdByte  ; limpiar Display
  PAUSE 2                                     ; retardo

Programación de caracteres definidos por el usuario (8bits):
  
Código: [Seleccionar]
byte = $40 : GOSUB SendCmdByte  ; Carácter definido por usuario 0
   byte = $48 : GOSUB SendCmdByte  ; Carácter definido por usuario 1
   byte = $50 : GOSUB SendCmdByte  ; Carácter definido por usuario 2
   byte = $58 : GOSUB SendCmdByte  ; Carácter definido por usuario 3
   byte = $60 : GOSUB SendCmdByte  ; Carácter definido por usuario 4
   byte = $68 : GOSUB SendCmdByte  ; Carácter definido por usuario 5
   byte = $70 : GOSUB SendCmdByte  ; Carácter definido por usuario 6
   byte = $78 : GOSUB SendCmdByte  ; Carácter definido por usuario 7

Especificación de dónde escribir:
  
Código: [Seleccionar]
byte = $80 : GOSUB SendCmdByte  ; comienzo en la linea 1
  byte = $C0 : GOSUB SendCmdByte  ; comienzo en la linea 2
  byte = $A0 : GOSUB SendCmdByte  ; comienzo en la linea 3
  byte = $E0 : GOSUB SendCmdByte  ; comienzo en la linea 4

Asi como podemos especificar donde escribir, podemos situar el cursor donde escribira el siguiente carácter, es decir, podemos seleccionar la posición en el LCD deseada. Cada posición del LCD tiene asociada una dirección concreta en la memoria de texto, de forma que para mostrar un carácter en esa posición concreta hay que escribir sobre su dirección de memoria asociada.
Por lo general en los display LCD que solo hacen uso de una línea, esta comienza en la dirección 00h de la memoria de texto. En cambio, en los LCDs que hacen uso de dos líneas, la primera línea también comienza en la dirección 00h, mientras que la segunda línea comienza en la dirección 40h.
Veamos el siguiente esquema:

« Última modificación: Junio 30, 2010, 06:11:48 pm por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Tutorial basico de control de LCD y mini GLCD
« Respuesta #5 en: Junio 24, 2010, 04:52:04 pm »
Introduccion al control de Mini GLCD (Nokia 3310 - pcd8544 )
-En Construccion-
« Última modificación: Junio 25, 2010, 02:44:00 pm por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Tutorial basico de control de LCD y mini GLCD
« Respuesta #6 en: Agosto 04, 2010, 12:08:19 am »
Perdon por el cuelgue  :baba , pero como tengo poca RAM en la sabiola ultimamente, no puedo hacer mas de una cosa a la ves y se me complica el tema de querer hacer todo de una :pared
Bueno, aca les dejo una linda compilacion de varios display de telefonos celulares, citada en la pagina de Berty's
Lo bueno, es que ademas de darte un ejemplo basico de control para varios modelos, te muestra los esquematicos de conexiones....

Display Alcatel
Display motorolla
Display Nokia
Display Siemens
Display Sony ericsson
Display Varios

PD: Si alguien quiere compartir info para armar esta biblia, no em ofendo ;D ;D ;D ;D
Aclaro que guarde la pagina por si algun dia deja de existir y se pierde esta valiosa informacion...Si llegan a tener drama con la descarga, chiflen... Ahora si, a sacarle polvco a esos telefonos que tenmos tirados :bang:
« Última modificación: Agosto 04, 2010, 12:12:30 am por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

teyco06

  • PIC10F
  • *
  • Mensajes: 1
Re: Tutorial basico de control de LCD y mini GLCD
« Respuesta #7 en: Mayo 21, 2013, 07:14:45 pm »
Hola Ing. no se pueden descargar los archivos de controles de displays, solicita contraseña para poder hacerlos. gracias