Autor Tema: ¿Como hacer funcionar LCD 16x2 con cuatro bits?  (Leído 5513 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sha

  • PIC10
  • *
  • Mensajes: 28
¿Como hacer funcionar LCD 16x2 con cuatro bits?
« en: 16 de Enero de 2010, 22:54:55 »
Estoy intentando hace funcionar una pantalla LCD de 16x2 con 4 bits de datos.
En el proteus me funciona y también en el Pic simulator Ide, pero fisicamente no funciona.
El programa es este:

   
   
   __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
   list   P=16F84A
   include   <P16F84A.INC>
;******************************************************************************************************
;
;VARIABLES
;
;******************************************************************************************************
W   EQU   0X00
F   EQU   0X01
Z   EQU   0X02
TMR0_OPT   EQU   0X01
ESTADO   EQU   0X03
INTCON   EQU   0X0B
PUERTAA   EQU   0X05
PUERTAB   EQU   0X06
CONTADOR   equ   0x0c   ;variable del contador,
T1   equ   0x0d   ;variable indica el primer valor del tiempo.
T2   equ   0x0e   ;variable indica el segundo valor del tiempo.
T3   equ   0x0f   ;variable indica el tercer valor del tiempo.
TR   equ   0x10   ;variable indica tiempo de retardo.
TEMPO1   equ   0x11   ;variable de los retardos.
CARAS   equ   0x12   ;variable de caras a insolar
;******************************************************************************************************
;
;VECTORES DE INICIO
;
;******************************************************************************************************

   org   0x00   ;punto del PC al que se va PIC despúes de un reset.
   goto   INICIO   ;ir a INICIO.
   
   

;******************************************************************************************************
;
;INICIALIZACION DEL PIC
;
;******************************************************************************************************
INICIO   bsf   ESTADO,5   ;selección del banco 1.
   movlw   b'00000000'   ;movemos ese dato a W.
   movwf   PUERTAA   ;configuramos PUERTAA como entradas.
   clrf   PUERTAB   ;configuramos PUERTAB como salidas.
   movlw   b'00000111'   ;movemos ese dato a W.
   movwf   TMR0_OPT   ;configuramos el divisor del temporizador.
   bcf   ESTADO,5   ;selección del banco 0.
   
   clrf   PUERTAA   ;ponemos a 0 las entradas.
   clrf   PUERTAB   ;ponemos a 0 las salidas.
   
   call   LCD_Inicializa
   movlw   'H'
   call   LCD_Caracter
p   nop
   nop
   nop
   nop
   goto   p
   
   include   <RETARDOS.INC>
   include   <LCD_4BIT1.INC>   

   END

Como veis es un programa sencillo, solo es un comienzo para ver como funciona.
El archivo RETARDOS es la rutina típica y LCD_4BIT1 es del libro de rama pero cambiados los bits de control y datos.

Puede ser que primeo hay que escribir en el LCD con ocho bits y una vez configurado, comunicarse con el a 4 bits.
racias ha todos por vuestra atención.

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: ¿Como hacer funcionar LCD 16x2 con cuatro bits?
« Respuesta #1 en: 17 de Enero de 2010, 02:26:14 »
.


¿Son compatibles las rutinas de inicialización del programa con el LCD que estás usando?
No es necesario iniciar el LCD en 8 bits para luego trabajar con 4, sino que al realizar la inicialización en 4 bits, el módulo ya entiende a lo que te estás refiriendo.
¡Saludos!
When you see a good move, look for a better one (Emanuel Lasker)

Desconectado sha

  • PIC10
  • *
  • Mensajes: 28
Re: ¿Como hacer funcionar LCD 16x2 con cuatro bits?
« Respuesta #2 en: 18 de Enero de 2010, 14:25:03 »
He estado buscando el LCD y es Ampire AC 162D, por lo que no me funciona esa rutina, asi que me toca hacer una a medida.
Muchas gracias.
Cuando acabe la prueba y funcione lo colgaré por si le sirve a alguien.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: ¿Como hacer funcionar LCD 16x2 con cuatro bits?
« Respuesta #3 en: 18 de Enero de 2010, 19:48:47 »
Revisa por aquí, hay una librería para el manejo de un LCD.


Saludos!
No contesto mensajes privados, las consultas en el foro