Autor Tema: Inicialización del LCD en modo 4bits  (Leído 19028 veces)

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

Desconectado yiokum

  • PIC10
  • *
  • Mensajes: 17
Inicialización del LCD en modo 4bits
« en: 09 de Marzo de 2007, 08:31:42 »

    Hola a todos:

    Llevo un buen rato buscando información acerca de como inicializar un LCD en modo 4 bits en asm y no soy capaz de encontrar nada. Se como inicializarlo en el modo 8 bits pero al hacerlo para 4 bits me da problemas. He encontrado un montón de información acerca del conexionado pero ningún programa que explique como hacer la subrutina de inicialización. Podría alguien darme alguna información acerca de como se hace o donde puedo encontrarla.

    Muchas gracias


Desconectado djpalas

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 595
    • Microtronic
Re: Inicialización del LCD en modo 4bits
« Respuesta #1 en: 09 de Marzo de 2007, 08:52:02 »
hola yiokum!

aqui tienes el datasheet del display alfanumerico hitachi HD44780 16x2

http://www.alldatasheet.com/datasheet-pdf/pdf/63673/HITACHI/HD44780.html?

En la página 46 te viene la rutina de inicialización que debes de realizar para que ponerlo en modo 4bits.

saludos!!
Diego J.

Saludos desde Cádiz, España
Web personal: http://www.microtronic.es

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: Inicialización del LCD en modo 4bits
« Respuesta #2 en: 09 de Marzo de 2007, 09:32:10 »
Aqui dejo el fragmento de código para manejar el lcd en modo 4 bits.

Código: ASM
  1. ;Datos del LCD en los 4 bits menos significativos del puerto b
  2.  
  3. #define LCD_E   PORTA,0         ;pin de enable 
  4. #define LCD_RS  PORTA,1         ;pin de selección de comando o caracter
  5.  
  6.  
  7. ;Configuración incial del LCD.
  8. IniLcd  bcf     LCD_RS 
  9.         bcf     LCD_E
  10.         call    Delay
  11.         movlw   b'00000011'     ;se envia 4 veces configuracion para 8 bits
  12.         call    EnvLcd          ;EnvLcd envia solo el nibble bajo.
  13.         movlw   b'00000011'
  14.         call    EnvLcd
  15.         movlw   b'00000011'
  16.         call    EnvLcd
  17.         movlw   b'00000011'
  18.         call    EnvLcd
  19.         movlw   b'00000010'     ;LCD en modo 4 bits
  20.         call    EnvLcd
  21.         movlw   b'00101000'     ;4 bits y dos lineas
  22.         call    Lcd_Com         ;Lcd_com envia 8 bits en 2 paquetes de 4 bits
  23.         movlw   b'00000110'     ;LCD: Informacion no se desplaza, incremento del cursor
  24.         call    Lcd_Com
  25.         movlw   b'00001111'     ;Cursor visible e intermitente
  26.         call    Lcd_Com
  27.         movlw   b'00000001'     ;Borra pantalla y va home
  28.         call    Lcd_Com
  29.         return
  30.  
  31. ;Envia caracter al LCD en modo 4 bits: se envía primero el nibble mas significativo.
  32. Lcd_Char        bsf     LCD_RS          ;RS = 1 caracter
  33. Lcd_Com movwf   Nibble         
  34.         swapf   Nibble,w                ;intercambia nibbles y guarda en w
  35.         andlw   0x0f
  36.         call    EnvLcd 
  37.         movf    Nibble,w
  38.         andlw   0x0f
  39.         call    EnvLcd
  40.         bcf     LCD_RS
  41.         return
  42. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  43. EnvLcd  clrwdt
  44.         movwf   PORTB
  45.         bsf     LCD_E
  46.         call    Del_40us
  47.         bcf     LCD_E
  48.         btfss   LCD_RS
  49.         call    Delay           ;si es comando-> 5 mS

saludos
Pereira - Colombia

Desconectado yiokum

  • PIC10
  • *
  • Mensajes: 17
Re: Inicialización del LCD en modo 4bits
« Respuesta #3 en: 13 de Marzo de 2007, 05:55:22 »

    Muchas gracias por vuestra ayuda.

    El programa que yo había diseñado me sigue dando errores, pero eso supongo que podré solucionarlo. He probado el programa de dhmejia y me funciona prfectamente y me ha servido para ver que por lo menos no es fallo del LCD. El problema es que no puedo escribir en la segunda línea del LCD. Escriba el mensaje que escriba se ve al cursor saltar a la segnda fila y avanzar a lo largo de ésta pero no me escribe ningúno de los caracteres del mensaje. Alguien sabe a que se puede deber esto.

Desconectado yiokum

  • PIC10
  • *
  • Mensajes: 17
Re: Inicialización del LCD en modo 4bits
« Respuesta #4 en: 13 de Marzo de 2007, 08:03:42 »
    Hola de nuevo:

    Ya he conseguido escribir en la segunda línea con el programa que yo hice. El problema estaba en un registro. Tengo problemas con busy flag y tengo que usar delays pero eso será también fallo mio.

    Muchas gracias por todo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Inicialización del LCD en modo 4bits
« Respuesta #5 en: 13 de Marzo de 2007, 18:51:50 »
fijate q en la rutina del amigo dhmejia hay 2 subritunas de retardo:

del_40uS  : q dura 40 microseg (useg)
delay       : q dura 5 miliseg  (mseg)

asi q tienes q respetar estos valores, sino te va a salir ese error de busy.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com