Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
mira si los cuadros negros te aparecen en las dos filas o en una sola; si es en las dos filas quiere decir que si configuraste en display por medio del micro pero te esta fallando el contraste o la logica pero ya esta listo para recibier información y lo mejor no esta danado, si solo es la linea de arriba quiere decir que el micro no esta configurando y tienes error en el cableado y en la rutina de inicializacion del display en el micro suerte
Ya vieron de cuando es la ultima respuesta???? De hace casi dos anios!!! Aporte cierto, pero poco util al dia de hoy... Ha y tambien habia quedado claro que el contraste no fue el problema.
antiworldx: urgente necesito ayuda con mi LCD solo me muestra los cuadritos negros que comentan, estoy haciendo un sensor de temperatura con el lm35 y un pic16f877a y ya lo programe y todo pero la LCD no me muestra letras solamente los cuadros negros
Publica tu montaje.
¿Has leido los comentarios anteriores?
;;*********************************************Programa 6*********************************************************
;Programa: Sensor de Temperatura con una LCD.
;Materia: Microprocesadores y Microcontroladores
;Catedrático: Dr. Alexandro Castellanos Mier
;Escuela: Universidad Veracruzana
;Integrantes: -Luis Felipe Landa Perea
; -Alejandro Ortega Trejo
; -Gustavo Pedro Sánchez Guillen
; -Daniel Alberto Vazquez Lorenzana
;*******************************************************************************************************************
list p=18f4550; Selección de lo que serían las librerías
#include <P18F4550.INC>
CONFIG FOSC=HS
CONFIG PWRT=ON
CONFIG BOR=OFF
CONFIG WDT= OFF
CONFIG MCLRE=OFF
CONFIG PBADEN=OFF
CONFIG LVP=OFF
CONFIG DEBUG=OFF
CONFIG XINST=OFF
#define LCD_RS PORTB,0; Se están poniendo los siguientes nombrs con la finalidad de que a la
#define LCD_RW PORTB,1; a la hora de escribir el codigo, sea mucho mas facil saber en que parte
#define LCD_E PORTB,2; podría estar el error, si es que lo hay.
CBLOCK 0x00
Centenas
Decenas
Unidades
ENDC
BCD equ 0x20
ASCIIH equ 0x21
ASCIIL equ 0x22
Inicio org 0
bsf TRISA,0; Se configura el pin 0 de puerto A como entrada
clrf TRISD; Se configuran todos los pines del puerto D como salidas
clrf PORTD; Nos aseguramos de que los datos del puerto D sean 0
clrf TRISB
clrf PORTB
movlw 0x0E; Se carga en el registro w una literal
movwf ADCON1; Se pasa la literal cargada en w a lo que sería ADCON1
movlw 0x31; Se carga una literal a w
movwf ADCON2; Se carga en ADCON2 la configuración guardada en w
movlw 0x01; Se carga la literal a w
movwf ADCON0; Se hace la configuración de ADCON0
call LCD_Inicializada
bcf LCD_E
;**************************Programa Principal********************************************************************
Programa
clrf ADRESH; Se limpia lo que es ADRESH
bsf ADCON0,1; Se busca poner en alto el bit Go/Done
Conversor btfsc ADCON0,1; Si el bit Go/Done se vuelver 0 se salta la instrucción
goto Conversor; El programa se regresa a la etiqueta Conversor
movf ADRESH, w;
addwf ADRESH
call BINaBCD
call BCDaASCII
call Temperatura
goto Programa; El programa se regresa a la etiqueta Programa
;************************************Binario a BCD***************************************************************
BINaBCD
clrf Centenas
clrf Decenas
movf ADRESH, w
movwf Unidades
BCD_Resta
movlw d'10'
subwf Unidades, w
btfss STATUS, C
goto BIN_BCD_FIN
Incremento_Dec
movwf Unidades
incf Decenas, F
movlw d'10'
subwf Decenas, w
btfss STATUS, C
goto BCD_Resta
Incremento_Cen
clrf Decenas
incf Centenas, F
goto BCD_Resta
BIN_BCD_FIN
swapf Decenas, w
addwf Unidades, w
movwf BCD
return
;****************************************BCD a ASCII*************************************************************
BCDaASCII
movlw b'00001111'
andwf BCD, f
movff BCD, ASCIIL
movlw d'48'
addwf ASCIIL, f
movff ASCIIL, PORTB
call BINaBCD
movlw b'00001111'
swapf BCD
andwf BCD, f
movff BCD, ASCIIH
movlw d'48'
addwf ASCIIH,f
movff ASCIIH, PORTD
return
;**************************************Temperatura***************************************************************
Temperatura
call Retardo1
movlw 'L'
call LCD_Caracter
movlw 'a'
call LCD_Caracter
movlw ' '
call LCD_Caracter
movlw 'T'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 'm'
call LCD_Caracter
movlw 'p'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 'r'
call LCD_Caracter
movlw 'a'
call LCD_Caracter
movlw 't'
call LCD_Caracter
movlw 'u'
call LCD_Caracter
movlw 'r'
call LCD_Caracter
movlw 'a'
call LCD_Caracter
call Retardo1
call LCD_Borrar
call Retardo1
movlw 'd'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 'l'
call LCD_Caracter
movlw ' '
call LCD_Caracter
movlw 'S'
call LCD_Caracter
movlw 'a'
call LCD_Caracter
movlw 'l'
call LCD_Caracter
movlw 'o'
call LCD_Caracter
movlw 'n'
call LCD_Caracter
movlw ' '
call LCD_Caracter
movlw 'F'
call LCD_Caracter
movlw '-'
call LCD_Caracter
movlw '1'
call LCD_Caracter
movlw '4'
call LCD_Caracter
call Retardo1
call LCD_Borrar
call Retardo1
movlw 'e'
call LCD_Caracter
movlw 's'
call LCD_Caracter
movlw ':'
call LCD_Caracter
movlw ' '
call LCD_Caracter
movf ASCIIH, w
call LCD_Caracter
movf ASCIIL, w
call LCD_Caracter
movlw 0xA7
call LCD_Caracter
movlw 'C'
call LCD_Caracter
call Retardo1
call LCD_Borrar
return
;*****************************LCD Inicio***************************************************************************
LCD_Inicializada
call Retardo_20ms
bsf LCD_E
bcf LCD_RS
movlw 0x38
movwf PORTD
bcf LCD_E
call Retardo_5ms
bsf LCD_E
bcf LCD_RS
movlw 0x0F
movwf PORTD
bcf LCD_E
call Retardo_50us
call Retardo_50us
bsf LCD_E
bcf LCD_RS
movlw 0x02
movlw PORTD
bcf LCD_E
call Retardo_5ms
call Bienvenida
return
Bienvenida
call Retardo1
movlw 'B'
call LCD_Caracter
movlw 'u'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 'n'
call LCD_Caracter
movlw 'a'
call LCD_Caracter
movlw 's'
call LCD_Caracter
movlw ' '
call LCD_Caracter
movlw 'N'
call LCD_Caracter
movlw 'o'
call LCD_Caracter
movlw 'c'
call LCD_Caracter
movlw 'h'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 's'
call LCD_Caracter
call Retardo1
call LCD_Borrar
call Retardo1
movlw 'D'
call LCD_Caracter
movlw 'r'
call LCD_Caracter
movlw '.'
call LCD_Caracter
movlw ' '
call LCD_Caracter
movlw 'C'
call LCD_Caracter
movlw 'a'
call LCD_Caracter
movlw 's'
call LCD_Caracter
movlw 't'
call LCD_Caracter
movlw 'e'
call LCD_Caracter
movlw 'l'
call LCD_Caracter
movlw 'l'
call LCD_Caracter
movlw 'a'
call LCD_Caracter
movlw 'n'
call LCD_Caracter
movlw 'o'
call LCD_Caracter
movlw 's'
call LCD_Caracter
call Retardo1
call LCD_Borrar
return
LCD_Caracter
bsf LCD_RS
bsf LCD_E
movwf PORTD
call Retardo_50us
bcf LCD_E
call Retardo1
return
LCD_Borrar
movlw 0x01
call LCD_Comando
LCD_Comando
bsf LCD_E
bcf LCD_RS
movwf PORTD
bcf LCD_E
call Retardo_50us
return
CBLOCK
Conta1
Conta2
Conta3
ENDC
;******************************Creación del retardo de 20ms***************************************************
Retardo_20ms
movlw .247
movwf Conta1
movlw .26
movwf Conta2
Re_20ms
decfsz Conta1, F
bra Re_20ms
decfsz Conta2, F
bra Re_20ms
return
;*****************************Creación del retardo de 5ms*******************************************************
Retardo_5ms
movlw .146
movwf Conta1
movlw .7
movwf Conta2
Re_5ms
decfsz Conta1, F
bra Re_5ms
decfsz Conta2, F
decfsz Conta1, F ;Salta cuando Conta1 llega a 0
Return
;Retardo_200us *********************
Retardo_200us
movlw .65
movwf Conta1
Re_200us
decfsz Conta1, F ;Salta cuando Conta1 llega a 0
bra Re_200us ;Salta a Repeat para Decrementar Conta1
Return
;Retardo_2ms *********************
Retardo_2ms
movlw .151
movwf Conta1
movlw .3
movwf Conta2
Re_2ms
decfsz Conta1, F ;Salta cuando Conta1 llega a 0
bra Re_2ms ;Salta a Repeat para Decrementar Conta1
decfsz Conta2, F ;Salta cuando Conta2 llega a 0
bra Re_2ms ;Salta a Repeat
Return
;Retardo_50us *********************
Retardo_50us
movlw .15
movwf Conta1
Re_50us
decfsz Conta1, F ;Salta cuando Conta1 llega a 0
bra Re_50us ;Salta a Repeat para Decrementar Conta1
Return
Retardo1
clrf Conta1
clrf Conta2
movlw .3
movwf Conta3
Re_Delay
decfsz Conta1, F ;Salta cuando Conta1 llega a 0
bra Re_Delay ;Salta a Repeat para Decrementar Conta1
decfsz Conta2, F ;Salta cuando Conta2 llega a 0
bra Re_Delay ;Salta a Repeat
decfsz Conta3, F
bra Re_Delay
Return
end