Autor Tema: LCD con 4 bits  (Leído 1208 veces)

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

Desconectado patolinec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 206
LCD con 4 bits
« en: 15 de Mayo de 2005, 17:09:00 »
Disculpen alguien podra sugerirme un codigo para utilizar el LCD a 4 bits, utilice el que esta en el almacen del asembler pero no funiona

Ayudenme por favor
Casi me maté pero ahora estoy de nuevo vivo

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: LCD con 4 bits
« Respuesta #1 en: 16 de Mayo de 2005, 17:30:00 »
Buenas.

Estas subrrutinas las hice para un 16F876 con un LCD de 4 bits conectado al puerto C y las líneas de control en el puerto A. Hay que reservar desde el registro 0x34 hasta el 0x4b para guardar los caracteres para enviar al LCD:

Codigo:
;UP_LCD:Subrrutina para iniciar el display               ********* COMPROBADA ********
;Continua con la rutina CLEAR para borrar los registros del display

up_lcd   bcf   porta,rs
   movlw   0x02      ;"Funcion set"(4-bit data mode)
   movwf   portc
   bsf   porta,en
   call   retard4
   bcf   porta,en
   call   retard4
   movlw   0x28      ;"Funcion set"(4-bit, 2-line, 5*8-pixels)
   call   display
   movlw   0x0e      ;"Cursor on"
   call   display
   movlw   0x06      ;"Entry mode set"(cursor a izquierdas, cursor shift)
   call   display
   bcf   porta,rs   

;CLEAR:Borra el display.                     ********* COMPROBADA ********

clear   movlw   0x34
   movwf   fsr
bucle20   movf   fsr,w
   sublw   0x4c
   btfsc   status,2
   return
   movlw   " "
   movwf   indf
   incf   fsr,f
   goto   bucle20

;DISPLAY: Manda al display el dato que se encuentra en w         ********* COMPROBADA ********

display   movwf   temp
   swapf   temp,w
   andlw   0x0f
   movwf   portc
   bsf   porta,en
   call   retardo
   bcf   porta,en
   call   retardo
   movf   temp,w
   andlw   0x0f
   movwf   portc
   bsf   porta,en
   call   retardo
   bcf   porta,en
   call   retardo
   return

;SHOW:Muestra por el display los carácteres previamente
;definidos con los registros especiales                  ********* COMPROBADA ********

show   bcf   porta,rs
   movlw   0x80      ;"Set DDRAM address"(Primera linea "80")
   call   display
   bsf   porta,rs
   movlw   0x34
   movwf   fsr
show2   movf   indf,w
   call   display
   incf   fsr,f
   movf   fsr,w
   sublw   0x40
   btfss   status,2
   goto   show2
   bcf   porta,rs
   movlw   0xc0      ;"Set DDRAM address"(Segunda linea "C0")
   call   display
   bsf   porta,rs
show3   movf   indf,w
   call   display
   incf   fsr,f
   movf   fsr,w
   sublw   0x4c
   btfss   status,2
   goto   show3
   bcf   porta,rs
   movlw   0x80      ;"Set DDRAM address"(0)
   call   display
   return

;RETARDO: Retardo muy corto = 3*96*1us = 0.288ms            ********* COMPROBADA ********

retardo   movlw   0x60
   movwf   contador1
b1   decfsz   contador1,f
   goto   b1
   return

;RETARD4 Retardo medio = (255*3+3)*32 = 24.57ms               ********* COMPROBADA ********

retard4   clrf   contador1
   movlw   0x20
   movwf   contador2
b4   decfsz   contador1,f
   goto   b4
   decfsz   contador2,f
   goto   b4
   return