Mostrando entradas con la etiqueta microcontrolador minirobotica minirobot adc dac leds microcontroladores 16f877 16f876 16f873 16f lm35 sensor lcd 16x2. Mostrar todas las entradas
Mostrando entradas con la etiqueta microcontrolador minirobotica minirobot adc dac leds microcontroladores 16f877 16f876 16f873 16f lm35 sensor lcd 16x2. Mostrar todas las entradas

martes, 20 de octubre de 2009

lunes, 10 de agosto de 2009

Codigo para manejar una pantalla LCD 16x2 con PIC

;este es un codigo para manejar una pantalla LCD 16x2 de las que usan un chip HITACHI ;HD44780U como driver las subrutinas seran manejadas con algunas definiciones para
;que sea facil ocuparlas en diferentes modelos de la familia de pic16
;no me enfoco mucho en la teoria ya que en la red hay una gran cantidad de paginas con ella
;y me limito a poner codigos funcionales


;defino los pines que ocuparemos para conectar a EN y RS, R/W lo pongo a tierra

;en este caso ocupo pines del puerto a para poner los pines de control de la pantalla
;recuerda revisar que los pines de tu microcontrolador, no tengan algun periferico
;adicional que tengas que desabilitar ANTES de poder ocuparlo


;declaraciones necesarias para las subrutinas de manejo de la LCD
#DEFINE EN PORTA,0 ;defino al pin EN en el PORTA,0
#DEFINE RS PORTA,1 ;defino al pin RS en el PORTA,1

PORTLCD EQU PORTB ;si, si se puede declarar asi un registro
; en casi de que quieras poner otro puerto simplemente ponlo en
;lugar de PORTB

;declaro un par de comandos que ocupare despues
RENGLON1 EQU B'10000000' ;este comando posiciona el cursor en el renglon1
RENGLON2 EQU B'11000000' ;este comando posiciona el cursor en el renglon2

;habiendo declarado lo necesario procedemos a las subrutinas

;subrutina de inicializacion de la LCD 16x2

INIT_LCD:

MOVLW B'00110000'
CALL COMANDO

MOVLW B'00110000'
CALL COMANDO

MOVLW B'00110000'
CALL COMANDO


MOVLW B'00111100'
CALL COMANDO


MOVLW B'00001000'
CALL COMANDO

MOVLW B'00000001'
CALL COMANDO

MOVLW B'00000110'
CALL COMANDO

MOVLW B'00001111';
CALL COMANDO ;
RETURN


COMANDO MOVWF PORTLCD
BCF RS
BSF EN
CALL RETARDO5
BCF EN
RETURN

DATO MOVWF PORTLCD
BSF RS
CALL RETARDO5
BSF EN
CALL RETARDO5
BCF EN
RETURN

RETARDO5mS: movlw d'1' ; d significa que es decimal. Mueve l a w, l = 10
movwf num3 ;mueve w = 10 al registro num3
otra2 movlw d'8' ; mueve l = 203 a w
movwf num2 ; mueve w = 203 al registro num2
otra1 movlw d'207'
movwf num1

otra decfsz num1,1 ; decrementa num1 de 1 en 1 hasta llegar a cero.
goto otra ;El # 1 del destino es para que relice la instruccion
decfsz num2,1 ;dentro del registro f
goto otra1
decfsz num3,1
goto otra2
Return

; en breve pondre un codigo funcional que ocupe estas subrutinas,
;saludos!!!