0% encontró este documento útil (0 votos)
169 vistas5 páginas

Dummy

El documento contiene el código fuente para configurar y controlar un módulo LCD conectado a un PIC. Incluye definiciones, rutinas para inicializar el LCD, chequear su estado, enviar datos y comandos, y generar pulsos en las líneas de control. La rutina LCD_INI realiza la secuencia de inicialización del LCD según los tiempos especificados por el fabricante.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
169 vistas5 páginas

Dummy

El documento contiene el código fuente para configurar y controlar un módulo LCD conectado a un PIC. Incluye definiciones, rutinas para inicializar el LCD, chequear su estado, enviar datos y comandos, y generar pulsos en las líneas de control. La rutina LCD_INI realiza la secuencia de inicialización del LCD según los tiempos especificados por el fabricante.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

#define ENABLE #define DISABLE #define LEER

bsf PORTA,2 ;Activa E bcf PORTA,2 ;Desactiva bsf PORTA,1 ;Pone LCD en Modo RD

#define ESCRIBIR bcf PORTA,1 ;Pone LCD en Modo WR #define OFF_COMANDO bcf PORTA,0 ;Desactiva RS (modo comando) #define ON_COMANDO CBLOCK LCD_VAR bsf PORTA,0 ;Activa RS (modo datos)

LCD_TEMP_2;Inicio de las variables. Ser la primera direccin libre ; disponible LCD_TEMP_1 ENDC

;RUTINA UP_LCD: Con esta rutina se configura el PIC para que trabaje con el LCD.

UP_LCD clrf clrf bcf

bsf

STATUS,RP0

;Banco 1 ;RB <0-7> salidas digitales ;RA <0-4> salidas digitales ;Banco 0 ;RS=0

PORTB PORTA STATUS,RP0

OFF_COMANDO DISABLE return ;E=0

;RUTINA LCD_BUSY: Con esta rutina se chequea el estado del

;flag BUSY del mdulo LCD, que indica, cuando est activado, que el ;mdulo an no ha terminado el comando anterior. La rutina espera a ;que se complete cualquier comando anterior antes de retornar al ;programa principal, para poder enviar un nuevo comando.

LCD_BUSY

LEER bsf STATUS,RP0 H'FF'

;Pone el LCD en Modo RD

movlw movwf bcf

PORTB

;Puerta B como entrada ;Selecciona el banco 0 ;Activa el LCD

STATUS,RP0

ENABLE nop L_BUSY btfsc PORTB,7 goto L_BUSY DISABLE bsf clrf bcf STATUS,RP0 PORTB STATUS,RP0

;Chequea bit de Busy

;Desactiva LCD

;Puerta B salida

ESCRIB return

;Pone LCD en modo WR

;RUTINA LCD_E: Se trata de una pequea rutina que se encarga de generar ;un impulso de 1 s (para una frecuencia de funcionamiento de 4 Mhz) ;por la patita de salida de la Puerta A RA2, que se halla conectada

;a la seal E (Enable) del mdulo LCD. Con esta rutina se pretende activar ;al mdulo LCD.

LCD_E nop

ENABLE

;Activa E

DISABLE return

;Desactiva E

;RUTINA LCD_DATO: Es una rutina que pasa el contenido cargado en el ;registro W, el cual contiene un car cter ASCII, a la PUERTA B, para ;visualizarlo por el LCD o escribirlo en la CGRAM.

LCD_DATO

OFF_COMANDO movwf call PORTB

;Desactiva RS (modo comando) ;Valor ASCII a sacar por PORTB

LCD_BUSY

;Espera a que se libere el LCD ;Activa RS (modo dato) ;Genera pulso de E

ON_COMANDO call return LCD_E

;RUTINA LCD_REG: Rutina parecida a la anterior, pero el contenido de W ;ahora es el cdigo de un comando para el LCD, que es necesario pasar ;tambin a la PUERTA B para su ejecucin.

LCD_REG

OFF_COMANDO movwf call call return PORTB

;Desactiva RS (modo comando) ;Cdigo de comando

LCD_BUSY LCD_E

;LCD libre?. ;S. Genera pulso de E.

;RUTINA LCD_INI: Esta rutina se encarga de realizar la secuencia de ;inicializacin del mdulo LCD de acuerdo con los tiempos dados por ;el fabricante (15 ms). Se especifican los valores de DL, N y F, ;as como la configuracin de un interfaz de 8 lneas con el bus ;de datos del PIC, y 2 lneas de 16 caracteres de 5 x 7 pixels.

LCD_INI

movlw call call

b'00111000' ;Cdigo de instruccin

LCD_REG

LCD_DELAY ;Temporiza b'00111000' ;Cdigo de instruccin

movlw call call

LCD_REG

LCD_DELAY ;Temporiza b'00111000' ;Cdigo de instruccin

movlw call call

LCD_REG

LCD_DELAY ;Temporiza b'00111000'

movlw

call call

LCD_REG

;Cdigo de instruccin

LCD_DELAY ;Temporiza b'00111000' ;Cdigo de instruccin

movlw call call

LCD_REG

LCD_DELAY ;Temporiza b'00111000' ;Cdigo de instruccin

movlw call call return

LCD_REG

LCD_DELAY ;Temporiza

También podría gustarte