Eraser
Member level 3
- Joined
- Nov 2, 2007
- Messages
- 63
- Helped
- 1
- Reputation
- 2
- Reaction score
- 1
- Trophy points
- 1,288
- Location
- Braga,Portugal
- Activity points
- 1,717
3310 +vop
i wrote a program to apear in position (0,0) a message in the lcd, the message shows up,but other pixels turns on too, all around the display and i dont know why.
All help is welcome.
this is the program:
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_ON & _WRT_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
W EQU 0
F EQU 1
#DEFINE RESET PORTD,3
#DEFINE SCE PORTD,2
#DEFINE D_C PORTD,1
TEMP EQU 0x21
CBLOCK 0X20
ENDC
ORG 0x00
GOTO INICIO
INICIO
;INICIA_PORTOS
BCF STATUS,RP0
BCF STATUS,RP1
BSF STATUS,RP0
CLRF TRISD
CLRF TRISC
;INICIA_SPI
CLRF SSPSTAT
BCF STATUS,RP0
MOVLW 0x32
MOVWF SSPCON
;INICIA_LCD
BCF RESET
CALL DELAY
BSF RESET
BCF SCE
BCF D_C
MOVLW B'00100001' ;function setPD = 0 and V = 0, select extended instruction, set(H = 1 mode)
MOVWF SSPBUF
CALL DELAY
MOVLW B'10010000' ;set VOP, VOP is set to a+16 X b [V]
MOVWF SSPBUF
CALL DELAY
MOVLW B'00100000' ;function set ,PD = 0 and V = 0, selectnormal instruction set (H = 0 mode
MOVWF SSPBUF
CALL DELAY
MOVLW B'01000000' ;set y=0
MOVWF SSPBUF
CALL DELAY
MOVLW B'10000000' ;set x=0
MOVWF SSPBUF
CALL DELAY
MOVLW B'00001100' ; NORMAL MODE (D = 1 and E = 0)
MOVWF SSPBUF
CALL DELAY
BSF D_C ;data mode
MOVLW 0x7f ;write the message ("HUGO")
MOVWF SSPBUF
CALL DELAY
MOVLW 0x08
MOVWF SSPBUF
CALL DELAY
MOVLW 0x08
MOVWF SSPBUF
CALL DELAY
MOVLW 0x08
MOVWF SSPBUF
CALL DELAY
MOVLW 0x7f
MOVWF SSPBUF
CALL DELAY
MOVLW 0x00
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3f
MOVWF SSPBUF
CALL DELAY
MOVLW 0x40
MOVWF SSPBUF
CALL DELAY
MOVLW 0x40
MOVWF SSPBUF
CALL DELAY
MOVLW 0x40
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3f
MOVWF SSPBUF
CALL DELAY
MOVLW 0x00
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3E
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x49
MOVWF SSPBUF
CALL DELAY
MOVLW 0x49
MOVWF SSPBUF
CALL DELAY
MOVLW 0x7A
MOVWF SSPBUF
CALL DELAY
MOVLW 0x00
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3E
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3E
MOVWF SSPBUF
CALL DELAY
MAIN GOTO MAIN
DELAY
DECFSZ TEMP,F
GOTO DELAY
RETURN
END
i wrote a program to apear in position (0,0) a message in the lcd, the message shows up,but other pixels turns on too, all around the display and i dont know why.
All help is welcome.
this is the program:
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_ON & _WRT_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
W EQU 0
F EQU 1
#DEFINE RESET PORTD,3
#DEFINE SCE PORTD,2
#DEFINE D_C PORTD,1
TEMP EQU 0x21
CBLOCK 0X20
ENDC
ORG 0x00
GOTO INICIO
INICIO
;INICIA_PORTOS
BCF STATUS,RP0
BCF STATUS,RP1
BSF STATUS,RP0
CLRF TRISD
CLRF TRISC
;INICIA_SPI
CLRF SSPSTAT
BCF STATUS,RP0
MOVLW 0x32
MOVWF SSPCON
;INICIA_LCD
BCF RESET
CALL DELAY
BSF RESET
BCF SCE
BCF D_C
MOVLW B'00100001' ;function setPD = 0 and V = 0, select extended instruction, set(H = 1 mode)
MOVWF SSPBUF
CALL DELAY
MOVLW B'10010000' ;set VOP, VOP is set to a+16 X b [V]
MOVWF SSPBUF
CALL DELAY
MOVLW B'00100000' ;function set ,PD = 0 and V = 0, selectnormal instruction set (H = 0 mode
MOVWF SSPBUF
CALL DELAY
MOVLW B'01000000' ;set y=0
MOVWF SSPBUF
CALL DELAY
MOVLW B'10000000' ;set x=0
MOVWF SSPBUF
CALL DELAY
MOVLW B'00001100' ; NORMAL MODE (D = 1 and E = 0)
MOVWF SSPBUF
CALL DELAY
BSF D_C ;data mode
MOVLW 0x7f ;write the message ("HUGO")
MOVWF SSPBUF
CALL DELAY
MOVLW 0x08
MOVWF SSPBUF
CALL DELAY
MOVLW 0x08
MOVWF SSPBUF
CALL DELAY
MOVLW 0x08
MOVWF SSPBUF
CALL DELAY
MOVLW 0x7f
MOVWF SSPBUF
CALL DELAY
MOVLW 0x00
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3f
MOVWF SSPBUF
CALL DELAY
MOVLW 0x40
MOVWF SSPBUF
CALL DELAY
MOVLW 0x40
MOVWF SSPBUF
CALL DELAY
MOVLW 0x40
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3f
MOVWF SSPBUF
CALL DELAY
MOVLW 0x00
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3E
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x49
MOVWF SSPBUF
CALL DELAY
MOVLW 0x49
MOVWF SSPBUF
CALL DELAY
MOVLW 0x7A
MOVWF SSPBUF
CALL DELAY
MOVLW 0x00
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3E
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x41
MOVWF SSPBUF
CALL DELAY
MOVLW 0x3E
MOVWF SSPBUF
CALL DELAY
MAIN GOTO MAIN
DELAY
DECFSZ TEMP,F
GOTO DELAY
RETURN
END