• Sábado 16 de Noviembre de 2024, 23:41

Autor Tema:  Rutinas Lcd  (Leído 5725 veces)

iyan

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Rutinas Lcd
« en: Martes 17 de Febrero de 2004, 16:16 »
0
hola k tal tengo una duda acerca del lcd .Yo he realizado un programa con el lcd para el pic 16f84  y sale a la perfeccion pero el caso es que he realizado otro diferente con el 16f876 y canbiando un poco las rutinas de control del lcd pero de igual manera (datos los saco por portc y control por portb).
Haber si alguien tiene algun programa sencillo con el pic 16f876 para probarlo y ver el fallo que tengo con el lcd.Un saludo y gracias.

berretta

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Rutinas Lcd
« Respuesta #1 en: Domingo 22 de Febrero de 2004, 22:25 »
0
Hola iyan

Normalmente no deberia haber problemas en cambiar de micro, si se mantiene todo igual.
La frecuencia del cristal es la misma no?
Te busca una rutina mia y te la mando.

Saludos

iyan

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Rutinas Lcd
« Respuesta #2 en: Miércoles 25 de Febrero de 2004, 16:12 »
0
si es con un cristal a 4 MHz(XT) .

angeliz_dan

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Rutinas Lcd
« Respuesta #3 en: Domingo 7 de Marzo de 2004, 14:42 »
0
hola

para los Lcd in idioma C pic 16F876 ver mi pagina web
http://angeliz.free.fr

Saludos

Alternative

  • Miembro MUY activo
  • ***
  • Mensajes: 176
    • Ver Perfil
Re: Rutinas Lcd
« Respuesta #4 en: Sábado 22 de Octubre de 2005, 01:44 »
0
Que hayyy
Saludos, mira trabaje con el PIC16F877
te pongo el codigo fuente, trabaje con 8 bits, y el LCD es de 2x16
Por el PORTD, saco los datos y por el PORTE,0 y PORTE,1 son los controles
si quieres cambiar el puerto, en las subrrutinas de dato y commando, cambialas por el puerto que desees utilizar

Saludos
Bye




          list       P=16F877A
         INCLUDE<P16F877A.INC>

   __CONFIG _CP_ALL & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _XT_OSC & _LVP_OFF & _CPD_OFF & _WRT_OFF

cont1         EQU   20
cont2         EQU   21
cont3         EQU   22
DD_ram_LCD1      EQU   23
DD_ram_LCD2      EQU   24

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@       COMANDOS DEL LCD      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

LCD_clear      EQU   0X01   ;Clear Display de el LCD
LCD_home      EQU   0X02   ;Display y cursor en home
;------------------------
Entry_mode_set_1   EQU   0x04   ;Decrementa(escribe al reves) y Display shift Off
Entry_mode_set_2   EQU   0x05   ;Decrementa(escribe al reves) y Display shift On
Entry_mode_set_3   EQU   0x06   ;Incrementa(escribe bien)     y Display shift off
Entry_mode_set_4   EQU   0x07   ;Incrementa(escribe bien)     y Display shift On
;------------------------
Display_OnOff_control_1   EQU   0x08   ;Display Off,  Underline Off  y Cursor blink Off
Display_OnOff_control_2   EQU   0x09   ;Display Off,  Underline Off  y Cursor blink On
Display_OnOff_control_3   EQU   0x0A   ;Display Off,  Underline On   y Cursor blink Off
Display_OnOff_control_4   EQU   0x0B   ;Display Off,  Underline On   y Cursor blink On
Display_OnOff_control_5   EQU   0x0C   ;Display On,   Underline Off  y Cursor blink Off
Display_OnOff_control_6   EQU   0x0D   ;Display On,   Underline Off  y Cursor blink On
Display_OnOff_control_7   EQU   0x0E   ;Display On,   Underline On   y Cursor blink Off
Display_OnOff_control_8   EQU   0x0F   ;Display On,   Underline On   y Cursor blink On
;------------------------
Display_cursor_shitf_1   EQU   0x10   ;Cursor Move(salta una posicion)   y    Left  shift
Display_cursor_shitf_2   EQU   0x14   ;Cursor Move(salta una posicion)   y    Right shift
Display_cursor_shitf_3   EQU   0x18   ;(Desplaza todo a la izq)               Display shift(LCD+1)     y       Left  shift
Display_cursor_shitf_4   EQU   0x1C   ;(Desplaza todo a la izq)               Display shift(LCD+1)     y       Right shift
;------------------------
Funtion_set_1      EQU   0X20   ;4 Bits,     1 Linea,     5x7  dots
Funtion_set_2      EQU   0X24   ;4 Bits,     1 Linea,     5x10 dots
Funtion_set_3      EQU   0X28   ;4 Bits,     2 Linea,     5x7  dots
Funtion_set_4      EQU   0X2C   ;4 Bits,     2 Linea,     5x10 dots
Funtion_set_5      EQU   0X30   ;8 Bits,     1 Linea,     5x7  dots
Funtion_set_6      EQU   0X34   ;8 Bits,     1 Linea,     5x10 dots
Funtion_set_7      EQU   0X38   ;8 Bits,     2 Linea,     5x7  dots
Funtion_set_8      EQU   0X3C   ;8 Bits,     2 Linea,     5x10 dots
;--------------------------
CGRAM_Adress      EQU   0x40
;--------------------------
RS         EQU   0
E         EQU   1

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

         org   0
         goto   start
         org   5


start         bsf   STATUS,RP0
         clrf   TRISD         ;Datos del LCD
         clrf   TRISE         ;Coltrol del LCD
         movlw   0x07
         movwf   ADCON1
         bcf   STATUS,RP0

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         call   Display_Init
         movlw   0x80      ;Direccion de Inicio del LCD1 (Primera linea)
         movwf   DD_ram_LCD1
         movlw   0xC0      ;Direccion de Inicio del LCD2 (Segunda linea)
         movwf   DD_ram_LCD2
         
         movf   DD_ram_LCD1,W
         call   comando
         movlw   'P'
         call   dato
         movlw   'R'
         call   dato
         movlw   'O'
         call   dato
         movlw   'G'
         call   dato
         movlw   'R'
         call   dato
         movlw   'A'
         call   dato
         movlw   'M'
         call   dato
         movlw   'A'
         call   dato
         movlw   ' '
         call   dato
         movlw   'B'
         call   dato
         movlw   'A'
         call   dato
         movlw   'S'
         call   dato
         movlw   'E'
         call   dato
         
         movf   DD_ram_LCD2,W
         call   comando
         movlw   'L'
         call   dato
         movlw   'C'
         call   dato
         movlw   'D'
         call   dato
         movlw   ' '
         call   dato
         movlw   'D'
         call   dato
         movlw   'E'
         call   dato
         movlw   ' '
         call   dato
         movlw   '8'
         call   dato
         movlw   '-'
         call   dato
         movlw   'B'
         call   dato
         movlw   'I'
         call   dato
         movlw   'T'
         call   dato
         movlw   'S'
         call   dato
         
nada         goto   nada

;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
;MMM                                                                                MMM
;MMM                   S U B R R U T I N A     D E L     L C D                      MMM
;MMM                                                                                MMM
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

Display_Init      movlw   Funtion_set_7      ;8 bits, Display 2 lineas y 5x7
         call   comando
         movlw   LCD_clear      ;Limpia LCD
         call   comando
         movlw   LCD_home      ;Return cursor to home position
         call   comando
         movlw   Entry_mode_set_3   ;I/D  1:Incrementa   0:Decrementa
         call   comando
         movlw   Display_OnOff_control_5   ;Set ON/OFF entere Display (D)
         call   comando
         return   
;----------------------------
dato         bsf   PORTE,RS
         movwf   PORTD
         bsf   PORTE,E
         nop
         bcf   PORTE,E
         call   espera
         return
;----------------------------
comando         bcf   PORTE,RS
         movwf   PORTD
         bsf   PORTE,E
         nop
         bcf   PORTE,E
         call   espera
         return
;======================================================================================
espera         movlw   0x10
         movwf   cont1
         movlw   0x10
         movwf   cont2
         movlw   0x02
         movwf   cont3
         
decre         decfsz   cont1,1
         goto   decre
         movlw   0x10      
         movwf   cont1
         decfsz   cont2,1
         goto   decre
         movlw   0x10
         movwf   cont2
         decfsz   cont3
         goto   decre
         return
         
         END

Alternative

  • Miembro MUY activo
  • ***
  • Mensajes: 176
    • Ver Perfil
Re: Rutinas Lcd
« Respuesta #5 en: Sábado 22 de Octubre de 2005, 01:47 »
0
Que hayyy
Saludos, mira trabaje con el PIC16F877
te pongo el codigo fuente, trabaje con 8 bits, y el LCD es de 2x16
Por el PORTD, saco los datos y por el PORTE,0 y PORTE,1 son los controles
si quieres cambiar el puerto, en las subrrutinas de dato y commando, cambialas por el puerto que desees utilizar

Saludos
Bye

  Perdon
  parece no tan entendible asi que que les cargo el archivo comprimido
 bye
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Ian...

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Rutinas Lcd
« Respuesta #6 en: Jueves 27 de Octubre de 2005, 17:30 »
0
holas nose en q lenguaje programas pero te comento q en casa tengo rutinas en assembler  cuando llegue me conecto y te las mando espero q te sean de ayuda...
saludos
bye