Autor Tema: Como hacer la inicializacion de un lcd en 4 bits en ensamblador  (Leído 2981 veces)

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

Desconectado Eduardo_0894

  • PIC10
  • *
  • Mensajes: 4
Como hacer la inicializacion de un lcd en 4 bits en ensamblador
« en: 28 de Septiembre de 2016, 16:15:42 »
He estado intentando hacer la inicialización del lcd en 4 bits para un pic18f4550, pero al momento de simularlo no enciende la pantalla, estoy usando RS, E, R/W y D4 a D7 en el puerto D.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Como hacer la inicializacion de un lcd en 4 bits en ensamblador
« Respuesta #1 en: 28 de Septiembre de 2016, 16:37:34 »
En este hilo hay algunos archivos que son la libreria de LCD.

Solo deberias cambiar algunos NOP y/o delays, al usar otra frecuencia. Pero lo demas sigue igual.

Y si no en el datasheet del LCD indica claramente como inicializarlo, con el tiempo necesario de demora indicado.

Desconectado Eduardo_0894

  • PIC10
  • *
  • Mensajes: 4
Re:Como hacer la inicializacion de un lcd en 4 bits en ensamblador
« Respuesta #2 en: 28 de Septiembre de 2016, 18:31:37 »
Ya he echo eso, de echo asi escribi mi código

call   Retardo_15ms
   movlw   b'00110000'
   call   EnviarLCD
   movlw   b'00110000'
   call   EnviarLCD
   movlw   b'00110000'
   call   EnviarLCD
   movlw   b'00100000'      ;LCD 4 bits
   call   EnviarLCD
   movlw   b'00101000'      ;N = 0 -> 2 linea, F = 0 -> tamaño
   call   LCD_Inst
   movlw   b'00000001'      ;Limpiar el display
   call   LCD_Inst
   movlw   b'00000110'      ;modo entrada (incrementeo sin desplazamiento
   call   LCD_Inst
   movlw   b'00001111'      ;Encender display, cursor visible e intermitente
   call   LCD_Inst
   movlw   b'00000001'      ;limpia pantalla y va a home
   call   LCD_Inst

EnviarLCD
   bcf      PORTD, 0
   bcf      PORTD, 1
   movwf   PORTD
   bsf      PORTD, 0      ;LCD_E
   call   Retardo_5ms
   bcf      PORTD, 0      ;LCD_E
   call   Retardo_5ms
   return
   
LCD_Inst

   bcf      PORTD, 1
   movwf   aux            ;Movemos a aux para guardar el dato
   andlw   b'11110000'      ;Se guardan en W los primeros bits que enviaremos al lcd
   movwf   PORTD
   bsf      PORTD, 0      ;LCD_E
   call   Retardo_5ms
   bcf      PORTD, 0      ;LCD_E      
   swapf   aux, W         ;Intercambiamos los bits ej. si tenemos "10101100" lo cambia a "11001010" y guarda en W
   andlw   b'11110000'      ;Se guardan en W los ultimos 4 bits que enviaremos al lcd
   bsf      PORTD, 0      ;LCD_E
   call   Retardo_5ms
   bcf      PORTD, 0      ;LCD_E
   return
« Última modificación: 28 de Septiembre de 2016, 18:44:19 por Eduardo_0894 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Como hacer la inicializacion de un lcd en 4 bits en ensamblador
« Respuesta #3 en: 28 de Septiembre de 2016, 18:58:24 »
Probaste aumentandole los tiempos? , agregale varias llamadas mas a los delays, ejemplo:


Código: ASM
  1. EnviarLCD
  2.    bcf      PORTD, 0
  3.    bcf      PORTD, 1
  4.    movwf   PORTD
  5.    call   Retardo_5ms
  6.    bsf      PORTD, 0      ;LCD_E
  7.    call   Retardo_5ms
  8.    call   Retardo_5ms
  9.    bcf      PORTD, 0      ;LCD_E
  10.    call   Retardo_5ms
  11.    call   Retardo_5ms
  12.    return

Me paso que una ves intentando seguir los tiempo del datasheet no me funcionaba, pero con mas tiempo si. Si es eso luego podes ir probando de disminuir el tiempo poco a poco hasta llegar a lo que tu LCD funcione sin problemas.


 

anything