;------------------------------------------------------------------------------- ; FILE: Graphic LCD ; AUTH: Ed's Projects ; DATE: 10/08/2016 ; DESC: Sending an image to a Graphic LCD ;------------------------------------------------------------------------------- LIST P=16F887, R=DEC ; All numbers Decimal format unless otherwise stated. include ; Define configurations, registers, etc. __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOREN_ON & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _HS_OSC ;------------------------------------------------------------------------------- ;----------------------------- Port Definitions ------------------------------ ;------------------------------------------------------------------------------- ; PORTD - Output - RD0 - Pin 19 - DB0 ; PORTD - Output - RD0 - Pin 20 - DB1 ; PORTD - Output - RD0 - Pin 21 - DB2 ; PORTD - Output - RD0 - Pin 22 - DB3 ; PORTD - Output - RD0 - Pin 27 - DB4 ; PORTD - Output - RD0 - Pin 28 - DB5 ; PORTD - Output - RD0 - Pin 29 - DB6 ; PORTD - Output - RD0 - Pin 30 - DB7 ; PORTB - Output - RB0 - Pin 33 - CS1 ; PORTB - Output - RB1 - Pin 34 - CS2 ; PORTB - Output - RB2 - Pin 35 - Reset ; PORTB - Output - RB3 - Pin 36 - RS ; PORTB - Output - RB4 - Pin 37 - E ; PORTB - Output - RB5 - Pin 38 - R/W ;------------------------------------------------------------------------------- ;--------------------------------- Symbols ----------------------------------- ;------------------------------------------------------------------------------- #define BUS PORTD #define CS1 PORTB, 0 #define CS2 PORTB, 1 #define RST PORTB, 2 #define RS PORTB, 3 #define E PORTB, 4 #define RW PORTB, 5 ;------------------------------------------------------------------------------- ;-------------------------------- Variables ---------------------------------- ;------------------------------------------------------------------------------- cblock h'20' offsetL offsetH tmrL delay Rowsel ; Row Select endc ;------------------------------------------------------------------------------- ;------------------------------- Program Code -------------------------------- ;------------------------------------------------------------------------------- ORG 0 ;------------------------------------------------------------------------------- ;-------------------------- Initialisation of Ports -------------------------- ;------------------------------------------------------------------------------- Init bcf STATUS,RP0 bcf STATUS,RP1 ; Bank 0 Selected clrf ADCON0 ; Turn off ADC bsf STATUS,RP0 ; Bank 1 Selected clrf VRCON ; Set Vref to off clrf TRISA ; Set all PortA as Output clrf TRISB ; Set all PortB as Output clrf TRISC ; Set all PortC as Output clrf TRISD ; Set all PortD as Output clrf TRISE ; Set all PortE as Output bsf STATUS,RP1 ; Bank 3 Selected clrf ANSEL ; Set all high analogue inputs to digital clrf ANSELH ; Set all high analogue inputs to digital bcf STATUS,RP0 ; Bank 2 Selected clrf CM1CON0 ; Turn off comparator 1 clrf CM2CON0 ; Turn off comparator 2 bcf STATUS,RP0 bcf STATUS,RP1 ; Bank 0 Selected clrf PORTA clrf PORTB clrf PORTC clrf PORTD clrf PORTE ;------------------------------------------------------------------------------- ;---------------------------- LCD Initialisation ----------------------------- ;------------------------------------------------------------------------------- bsf CS1 bsf CS2 movlw d'255' movwf delay initloop goto $+1 goto $+1 goto $+1 goto $+1 decfsz delay, f goto initloop bsf RST goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 bcf CS2 bcf RS movlw b'00111111' call Send bcf RS bsf CS2 bcf CS1 movlw b'00111111' call Send bcf RS movlw b'01000000' call Send goto Start ;------------------------------------------------------------------------------- ;-------------------------------- Data Send --------------------------------- ;------------------------------------------------------------------------------- Send movwf BUS goto $+1 bsf E goto $+1 goto $+1 bcf E bsf STATUS, RP0 movlw d'255' movwf TRISD bcf STATUS, RP0 bcf RS bsf RW chkagn bsf E goto $+1 goto $+1 bcf E goto $+1 goto $+1 btfsc BUS, 7 goto chkagn bsf STATUS, RP0 clrf TRISD bcf STATUS, RP0 bcf RW bsf RS return ;------------------------------------------------------------------------------- ;------------------------------- Main Program -------------------------------- ;------------------------------------------------------------------------------- Start clrf offsetL clrf offsetH movlw d'64' movwf tmrL bsf CS2 bcf CS1 call rw1to4 incf offsetH, f call rw5to8 incf offsetH, f bsf CS1 bcf CS2 call rw1to4 incf offsetH, f call rw5to8 goto $ rw1to4 movlw d'1' call Rowselect ; Select Row 1 call Sendt movlw d'2' call Rowselect ; Select Row 2 call Sendt movlw d'3' call Rowselect ; Select Row 3 call Sendt movlw d'4' call Rowselect ; Select Row 4 call Sendt return rw5to8 movlw d'5' call Rowselect ; Select Row 5 call Sendt movlw d'6' call Rowselect ; Select Row 6 call Sendt movlw d'7' call Rowselect ; Select Row 7 call Sendt movlw d'8' call Rowselect ; Select Row 8 call Sendt return ;------------------------------------------------------------------------------- ;---------------------------------- LCD Pointer ------------------------------ ;------------------------------------------------------------------------------- Sendt call Pixb call Send incf offsetL, f decfsz tmrL, f goto Sendt movlw d'64' movwf tmrL return Rowselect movwf Rowsel bcf RS movlw b'01000000' call Send bcf RS movlw HIGH Rowpoint movwf PCLATH movlw LOW Rowpoint addwf Rowsel, w movwf PCL Rowpoint nop goto Row1 goto Row2 goto Row3 goto Row4 goto Row5 goto Row6 goto Row7 goto Row8 Row1 movlw b'10111000' call Send return Row2 movlw b'10111001' call Send return Row3 movlw b'10111010' call Send return Row4 movlw b'10111011' call Send return Row5 movlw b'10111100' call Send return Row6 movlw b'10111101' call Send return Row7 movlw b'10111110' call Send return Row8 movlw b'10111111' call Send return ;------------------------------------------------------------------------------- ;------------------------------ Character Storage ---------------------------- ;------------------------------------------------------------------------------- Pixb movlw LOW table ; Get low 8 bits of table address addwf offsetL, w ; Check to see if a carry will occur movlw HIGH table ; Get high 5 bits of address btfsc STATUS, C ; Has page crossed? addlw 1 ; Yes then increment PCLATH - PCH movwf PCLATH ; Load high address into PCLATH - PCH movf offsetH, w addwf PCLATH, f ; Offset PCL by 256 movlw LOW table ; Get low 8 bits of table address again addwf offsetL, w ; Load original PCL offset value movwf PCL ; Jump into table table retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 128 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 129 retlw 231 retlw 254 retlw 252 retlw 248 retlw 248 retlw 248 retlw 248 retlw 248 retlw 252 retlw 254 retlw 255 retlw 255 retlw 252 retlw 192 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 28 retlw 63 retlw 127 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 254 retlw 252 retlw 252 retlw 248 retlw 248 retlw 248 retlw 248 retlw 248 retlw 248 retlw 248 retlw 248 retlw 248 retlw 248 retlw 252 retlw 252 retlw 252 retlw 252 retlw 252 retlw 254 retlw 254 retlw 254 retlw 254 retlw 254 retlw 254 retlw 254 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 1 retlw 7 retlw 63 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 3 retlw 7 retlw 31 retlw 63 retlw 127 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 127 retlw 127 retlw 63 retlw 63 retlw 63 retlw 63 retlw 63 retlw 31 retlw 31 retlw 31 retlw 31 retlw 31 retlw 31 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 3 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 192 retlw 248 retlw 255 retlw 255 retlw 255 retlw 255 retlw 63 retlw 15 retlw 3 retlw 0 retlw 195 retlw 255 retlw 255 retlw 255 retlw 63 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 96 retlw 240 retlw 252 retlw 255 retlw 255 retlw 63 retlw 15 retlw 3 retlw 0 retlw 0 retlw 0 retlw 0 retlw 3 retlw 7 retlw 3 retlw 3 retlw 1 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 192 retlw 224 retlw 240 retlw 248 retlw 252 retlw 254 retlw 254 retlw 127 retlw 63 retlw 31 retlw 31 retlw 14 retlw 6 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 192 retlw 252 retlw 255 retlw 255 retlw 255 retlw 255 retlw 31 retlw 7 retlw 1 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 254 retlw 254 retlw 254 retlw 254 retlw 254 retlw 252 retlw 252 retlw 248 retlw 248 retlw 240 retlw 224 retlw 192 retlw 128 retlw 128 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 128 retlw 192 retlw 224 retlw 240 retlw 248 retlw 254 retlw 255 retlw 255 retlw 127 retlw 31 retlw 7 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 31 retlw 31 retlw 31 retlw 63 retlw 63 retlw 63 retlw 31 retlw 31 retlw 31 retlw 31 retlw 15 retlw 15 retlw 7 retlw 3 retlw 1 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 63 retlw 63 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 240 retlw 192 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 1 retlw 3 retlw 7 retlw 15 retlw 31 retlw 63 retlw 127 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 255 retlw 15 retlw 31 retlw 63 retlw 127 retlw 255 retlw 255 retlw 254 retlw 252 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 128 retlw 225 retlw 255 retlw 255 retlw 255 retlw 255 retlw 127 retlw 63 retlw 15 retlw 99 retlw 112 retlw 120 retlw 124 retlw 127 retlw 63 retlw 7 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 4 retlw 14 retlw 15 retlw 15 retlw 15 retlw 15 retlw 7 retlw 3 retlw 3 retlw 1 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 retlw 0 end