0
Καλησπερα παιδια, έχω αυτή την LCD και εναν 40πινο pic και θέλω να φτιάξω ένα βολτόμετρο. Να μετράει analog, να κάνει ADC και να μου εμφανίζει το αποτέλεσμα στην οθόνη LCD....
Αρχικά δοκιμάζω να φτιάξω κώδικα που να γράφει κατι απλά στην LCD....
D0-D7 = RB0-RB7 και RS=RD4 RW=RD5 EN=RD6
Ο κώδικάς μου ειναι ο εξής:
το αποτέλεσμα ειναι αυτο:Κώδικας:;orismos pic kai kathorismos metavlhton ;***************************************************************** LIST P=16F877A #include <P16F877A.INC> LCD_DATA EQU PORTB LCD_DATA_TRIS EQU TRISB LCD_TEMP EQU 0x020 DELAY EQU 0x023 X_DELAY EQU 0x024 TABLE_INDEX EQU 0x025 #DEFINE LCD_E PORTD,6 #DEFINE LCD_RW PORTD,5 #DEFINE LCD_RS PORTD,4 ;LCD initialize ;*************************************************************** LCDINIT CLRF PORTD MOVLW 0x08D CALL X_DELAY500 MOVLW 0x030 CALL LCDPUTCMD1 MOVLW 0x060 CALL X_DELAY500 MOVLW 0x030 CALL LCDPUTCMD1 MOVLW 0x038 CALL LCDPUTCMD MOVLW 0x009 CALL LCDPUTCMD CALL LCDCLEAR MOVLW 0x006 CALL LCDPUTCMD CALL TABLE_MSG GOTO TELOS ;Elegxos toy Busy-Flag ;*************************************************************** LCDBUSY BSF STATUS,RP0 MOVLW 0x0FF MOVWF LCD_DATA_TRIS BCF STATUS,RP0 BCF LCD_RS BCF LCD_RW BSF LCD_E MOVF LCD_DATA,W BCF LCD_E ANDLW 0x80 BTFSS STATUS,Z GOTO LCDBUSY LCDNOTBUSY BCF LCD_RW BSF STATUS, RP0 MOVLW 0x000 MOVWF LCD_DATA_TRIS BCF STATUS, RP0 RETURN ;katharismos lcd ;********************************************************************* LCDCLEAR MOVLW 0x001 CALL LCDPUTCMD RETURN ; ;********************************************************************* LCDCLEAR1 MOVLW 0x001 CALL LCDPUTCMD RETURN ;epistrofh sto home ;********************************************************************* LCD_HOME MOVLW 0x002 CALL LCDPUTCMD RETURN ;stelnoyme ton xarakthra sthn LCD ;********************************************************************** LCDPUTCHAR MOVWF LCD_TEMP CALL LCDBUSY BCF LCD_RW BSF LCD_RS BSF LCD_E MOVF LCD_TEMP,W MOVWF LCD_DATA BCF LCD_E RETURN ;entoles sthn LCD ;********************************************************************** LCDPUTCMD MOVWF LCD_TEMP CALL LCDBUSY BCF LCD_RW BCF LCD_RS BSF LCD_E MOVF LCD_TEMP,W MOVWF LCD_DATA BCF LCD_E RETURN ;LCDPUTCMD1 ;********************************************************************* LCDPUTCMD1 BCF LCD_RW BCF LCD_RS BSF LCD_E MOVWF LCD_DATA BCF LCD_E RETURN ;Apostolh keimenoy meso pinaka ;********************************************************************** TABLE_MSG MOVLW 0 DISP_MSG MOVWF TABLE_INDEX CALL MSG1 ANDLW 0x0FF BTFSC STATUS,Z GOTO TABLE_MSG_END CALL LCDPUTCHAR MOVF TABLE_INDEX,W ADDLW 1 GOTO DISP_MSG TABLE_MSG_END RETURN ;Munhma ;********************************************************************** MSG1 ADDWF PCL,F RETLW 'A' RETLW 'R' RETLW 'I' RETLW 'S' RETLW 'I' RETLW 'P' MSG1_END RETLW 0 ;delays ;********************************************************************** DELAY500 MOVLW D'165' MOVWF DELAY DELAY500_LOOP DECFSZ DELAY,F GOTO DELAY500_LOOP DELAY500_END RETURN ;delays ;********************************************************************** X_DELAY500 MOVWF X_DELAY X_DELAY500_LOOP CALL DELAY500 DECFSZ X_DELAY,F GOTO X_DELAY500_LOOP X_DELAY500_END RETURN TELOS END
Εικόνα.jpg
ΔΕΝ ΔΟΥΛΕΥΕΕΕΙΙΙΙΙΙ!!!!!!
Όποις εχει όρξη ας ρίξει μια ματια... Είμαι σε αδιέξοδο!!!!