Sunteți pe pagina 1din 5

TUTORIAL: MANEJO DE LCD MEDIANTE BUS DE 4 BITS AUTOR: ING.

CHRISTIAN VILLARREAL HERNANDEZ COPYRIGHT MXICO 2013 Para este tutorial se utiliza un MCU PIC16F84A (aunque el cdigo se puede adaptar para cualquier MCU, incluso de otra marca). EL bus de datos es de 4 bits: para el LCD son los pines D4-D7, y para el MCU son RB4 RB7. Los pines de control estn conectados al PORTA (en el cdigo se describe). A fin de lograr una mejor comprensin del cdigo se han incluido comentarios en algunas partes, sin embargo, se recomienda un anlisis ms profundo del datasheet del mdulo LCD. Cdigo: ;Manejo de LCD mediante 4 bits ;Autor: Ing. Christian Villarreal Hernndez ;Copyright Mxico 2013 #include "p16F84A.inc" ; CONFIG ;__config 0xFFF9 __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF ;Comienza zona de etiquetas status equ 0x03 porta equ 0x05 portb equ 0x06 trisa equ 0x85 trisb equ 0x86 cont1 equ 0x0C ; registros para subrutinas de retardo cont2 equ 0x0E LCDTemp equ 0x0D ; registro auxiliar antes de enviar al LCD #DEFINE RS porta,0 ; pines de control del LCD #DEFINE RW porta,1 ; en este caso el bit RW siempre est en 0, se puede conectar a GROUND ;en el circuito #DEFINE E porta,2 org 0 ; Contina ..

TUTORIAL: MANEJO DE LCD MEDIANTE BUS DE 4 BITS AUTOR: ING. CHRISTIAN VILLARREAL HERNANDEZ COPYRIGHT MXICO 2013 ; inicia rutina principal ; debe visualizarse CVH (con el cursor encendido) en la LCD comenzando por la lnea 1 Inicio call ver movlw 'C' call caract ; subrutina que enva dato al PORTB call R20ms ; cada caracter se visualiza despus de 20ms, esto se puede omitir movlw 'V' call caract call R20ms movlw 'H' call caract call R20ms sleep Init bcf status,5 clrf trisa ; porta es salida bsf status, 5 bcf RW bcf E ; LCD inhabilitado (an no hemos enviado nada) bcf RS ; LCD en modo comando ; comienza inicializacin del LCD call R20ms movlw b'00110000' call write call R5ms movlw b'00110000' call write call R200us movlw b'00110000' call write call R20us ; damos un tiempo pequeo para que el LCD reciba el dato movlw b'00100000' ; configuramos bus de 4 bits call write call R20us ;contina Init ; Init es la subrutina de inicializacin del LCD (ver datasheet)

TUTORIAL: MANEJO DE LCD MEDIANTE BUS DE 4 BITS AUTOR: ING. CHRISTIAN VILLARREAL HERNANDEZ COPYRIGHT MXICO 2013

; falta configurar las caractersticas del LCD ; ConfigA: en este caso es de 16x2 y de 5x7 pixeles ; ConfigB: debemos borrar el LCD. ConfigC: Cursor ON. ConfigD: incrementar el cursor cada vez que ;enviemos un caracter ; llamamos a las subrutinas call configA call configB call configC call configD return ; fin de rutina de configuracin e inicializacin configA movlw b'00101000' comando ; subrutina para enviar comando al LCD bcf RS ; modo comando goto send caract bsf RS ; modo caracter o dato send movwf LCDTemp ;primero enviamos los bits de mayor peso (recordar que el bus es de 4bits) call write swapf LCDTemp, w ; se intercambian los nibbles del registro, es decir, los bits de menor peso call write ; ahora son de mayor peso y son enviados btfss RS ; verificamos este bit para dar el tiempo apropiado call R2ms ; si RS = 0, modo comando, le damos 2ms, tiempo para el BUSY FLAG call R50us ; si RS = 1, modo caracter, le damos 50us, tiempo para el BUSY FLAG return configB movlw b'00000001' goto comando configC movlw b'00001110' goto comando configD movlw b'00000110' goto comando ; contina .

TUTORIAL: MANEJO DE LCD MEDIANTE BUS DE 4 BITS AUTOR: ING. CHRISTIAN VILLARREAL HERNANDEZ COPYRIGHT MXICO 2013 write bsf status,5 clrf trisb ;configuramos el portb como salida, las lneas RB4-RB7 se conectan al bus del LCD bcf status,5 andlw b'11110000' ; nos quedamos con los bits de mayor peso movwf portb ; el dato es enviado por el bus de salida bsf E ;habilitamos el LCD call R20us ;le damos un pequeo tiempo bcf E ; inhabilitamos el LCD (ver datasheet) return ; cada vez que se enva un dato debe haber una transicin de nivel alto a bajo en E ; segn indica el datasheet ;inician los bloques de subrutinas de retardo utilizadas en este cdigo R200us nop movlw d'64' goto ret_us R20ms movlw d'20' goto ret_ms R5ms movlw d'5' goto ret_ms R50us nop movlw d'14' goto ret_us R20us movlw d'5' ret_us movwf cont1 ret_us1 decfsz cont1,F goto ret_us1 return R2ms movlw d'2' goto ret_ms R1ms movlw d'1' ret_ms

TUTORIAL: MANEJO DE LCD MEDIANTE BUS DE 4 BITS AUTOR: ING. CHRISTIAN VILLARREAL HERNANDEZ COPYRIGHT MXICO 2013 movwf cont2 ; contina.. ret_ms1 movlw movwf ret_ms2 nop decfsz goto decfsz goto return END SIMULACION EN PROTEUS

d'249' cont1

cont1,F ret_ms2 cont2,F ret_ms1

S-ar putea să vă placă și