0
Καλησπέρα, προσπαθώ να αρχικοποιήσω μια lcd χρησιμοποιώντας ένα pic.
O κώδικας που έχω γράψει υποτίθεται πως πρέπει να αρχικοποιήσει την lcd,
βασικά την αρχικοποιεί και έπειτα να φέρει τoν κερσορα στην πρώτη γραμμή.
Εκεί αρχίζει το πρόβλημα καθώς μετά την αρχικοποίηση μου εμφανίζει όλα τα κουτάκια άσπρα(η οθόνη είναι μπλε φόντο-άσπρα γράμματα). Το περίεργο είναι
πως αν την σβήσω και την ανάψω μου δείχνει τον κερσορα κανονικά.
Στον παρακάτω κώδικα έχω γράψει μία μόνο καθυστέρηση των 5ms που είναι
αρκετό για οποιαδήποτε καθυστέρηση υπάρχει, RC0 είναι το RS και RC1 είναι
το pin Enable.
Κώδικας:include <p16f887.inc> temp1 equ h'20' temp2 equ h'21' temp3 equ h'22' org h'0000' nop bsf STATUS,RP0 bcf TRISD,0 bcf STATUS,RP0 bcf PORTD,0 ;stelnei 0 bsf STATUS,RP0 bcf TRISD,1 bcf STATUS,RP0 bcf PORTD,1 bsf STATUS,RP0 bcf TRISD,2 bcf STATUS,RP0 bcf PORTD,2 bsf STATUS,RP0 bcf TRISD,3 bcf STATUS,RP0 bcf PORTD,3 bsf STATUS,RP0 bcf TRISD,4 bcf STATUS,RP0 bcf PORTD,4 bsf STATUS,RP0 bcf TRISD,5 bcf STATUS,RP0 bcf PORTD,5 bsf STATUS,RP0 bcf TRISD,6 bcf STATUS,RP0 bcf PORTD,6 bsf STATUS,RP0 bcf TRISD,7 bcf STATUS,RP0 bcf PORTD,7 bsf STATUS,RP0 bcf TRISC,0 bcf STATUS,RP0 bcf PORTC,0 bsf STATUS,RP0 bcf TRISC,1 bcf STATUS,RP0 bcf PORTC,1 ;delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_4 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_4 decfsz temp3,f goto LABEL_4 ;Delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_6 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_6 decfsz temp3,f goto LABEL_6 nop ;Delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_1 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_1 decfsz temp3,f goto LABEL_1 nop ;********************Initializing************************ bcf PORTD,0 bcf PORTD,1 bsf PORTD,2 bsf PORTD,3 bsf PORTD,4 bsf PORTD,5 bcf PORTD,6 bcf PORTD,7 ;delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_2 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_2 decfsz temp3,f goto LABEL_2 nop bsf PORTC,1 ;delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_3 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_3 decfsz temp3,f goto LABEL_3 nop bcf PORTC,1 ;delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_5 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_5 decfsz temp3,f goto LABEL_5 nop ;********************Set cursor************************* bsf PORTD,0 bsf PORTD,1 bsf PORTD,2 bsf PORTD,3 bcf PORTD,4 bcf PORTD,5 bcf PORTD,6 bcf PORTD,7 ;delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_7 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_7 decfsz temp3,f goto LABEL_7 nop bsf PORTC,1 ;delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_8 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_8 decfsz temp3,f goto LABEL_8 nop bcf PORTC,1 ;delay(5ms) movlw d'5' movwf temp2 movlw d'15' movwf temp3 LABEL_9 movlw d'1' movwf temp1 decfsz temp1,f goto $-1 decfsz temp2,f goto LABEL_9 decfsz temp3,f goto LABEL_9 nop end