hola este es mi primer post y publico el programa que hice para controlar un LCD, de AND (16x4), un excelente display por su precio y calidad.
Que lo disfruten, posteriormente publicare el circuito de aplicacion, tambien me gustaria portarlo en lenguaje c
;programa que maneja un display de 16 caracteres X 4 lineas
;modelo ("fusil") AND731GST/GST-LED emplea el controlador HD44780 o equivalente
#include p16f628a.inc
org 00h
MOVLW 07H;desactiva comparadores
MOVWF CMCON
;---CONFIGURACION DE PUERTOS---
bsf STATUS,RP0;accendiendo al banco 1
clrf TRISB;Puerto B como salida
movlw 0f0h;configuracion de los pines menos significativos del puerto A como salida
movwf TRISA;
bcf STATUS,RP0;regreso al banco 0
;---INICIALIZACION DEL DISPLAY---
call r_18ms; tiempo necesario para inicializar el display
clrf PORTA
movlw b'00111000';FUNCTION SET
call manda_com
movlw b'0011000';FUNCTION SET
call manda_com
;(4)
;***FUNCTION SET CONFIGURACION DEL LCD***
;Indicar la longitud del bus (8 bits en este caso)
;Function Set (*DL=1 8 bits) DL se encuentra en DB4 y esta conectado con RB4
;DB3===>RB3 N=0:1 lineas,DB2===>RB2 F=0:5x7
movlw b'00111000'
call manda_com
;***DISPLAY Off***
movlw b'00001000'
call manda_com
;***DISPLAY CLEAR
call limpia_lcd
;***MODO DE ENTRADA***
movlw b'00000111'
call manda_com
;---FIN DE INICIALIZACION
;***DISPLAY ON***
movlw b'00001111'
call manda_com
;***CURSOR O DISPLAY SHIFT
movlw b'00010100'
call manda_com
;***SET DD RAM Adress
movlw b'10000011'
call manda_com
;***MENSAJE
call escribe
;***SET DD RAM Adress (2)
movlw b'11000010'
call manda_com
;***MODO DE ENTRADA*** (2)
movlw b'00000111'
call manda_com
;***CURSOR O DISPLAY SHIFT (2)
movlw b'00010100'
call manda_com
;MENSAJE 2
call escribe2
;***RETURN HOME***
movlw b'00000010'
call manda_com
acaba:
goto acaba
;***LIMPIAR DISPLAY***
limpia_lcd:
movlw b'00000001'
call manda_com
;***retardo de 18ms.***
r_18ms:
movlw .17
movwf 40h
v1: movlw .17
movwf 41h
v2: movlw .17
movwf 42h
v3: decfsz 42h,1
goto v3
decfsz 41h,1
goto v2
decfsz 40h,1
goto v1
return
escribe:
movlw .11
movwf 30h
clrf 20h
bsf PORTA,0
letra:
movf 20h,0
call mensaje
call manda_com
incf 20h,1
decfsz 30h,1
goto letra
bcf PORTA,0
return
escribe2:
movlw .13
movwf 30h
clrf 20h
bsf PORTA,0
letra2:
movf 20h,0
call mensaje2
call manda_com
incf 20h,1
decfsz 30h,1
goto letra2
bcf PORTA,0
return
manda_com:
movwf PORTB
bsf PORTA,2
call r_18ms
bcf PORTA,2
return
mensaje:
addwf PCL,1
dt 'L','O','R','D',' ','K','R','A','K','E','N'
mensaje2:
addwf PCL,1
dt 'T','O','D','O',' ','P','I','C'
end