; ; ; LIST p=16F628A include "P16F628A.inc" ERRORLEVEL 0, -302 __config 0x3D18 cblock 0x20 count count1 counta countb count2 lcdadat bit_count xpage xpage_count endc Initialise org 0x0000 movlw 0x07 movwf CMCON ; komparátor ki clrf count SetPorts bsf STATUS,RP0 ; bank 1 clrf TRISA clrf TRISB bcf STATUS,RP0 ; bank 0 clrf PORTA clrf PORTB call Delay255 bsf PORTA,7 ; lcd reset call Delay255 LCD_init bcf PORTA,1 ; mindkét chip kiválasztása bcf PORTA,0 movlw 0x3F ; lcd on movwf lcdadat call LCD_com call Delay255 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com movlw b'10111000' ; X kezdőcím: 0 movwf lcdadat call LCD_com movlw b'11000000' ; Z kezdőcím: 0 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com call Delay255 ; movlw 0x08 ; movwf xpage_count ;*******************Függőleges vonal********************************************** LCD_adat bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write movlw b'10111001' ; X cím: 1 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write movlw b'10111010' ; X cím: 2 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write movlw b'10111011' ; X cím: 3 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write movlw b'10111100' ; X cím: 4 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write movlw b'10111101' ; X cím: 5 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write movlw b'10111110' ; X cím: 6 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write movlw b'10111111' ; X cím: 7 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01111111' ; Y kezdőcím: 63 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'00000000' movwf lcdadat call LCD_write ;**************Vízszintes vonal************ movlw b'00111111' movwf xpage_count movlw b'10111011' ; X cím: 3 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000001' ; Y kezdőcím: 1 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'01111111' movwf lcdadat call LCD_write decfsz xpage_count goto $-2 movlw b'00111111' movwf xpage_count movlw b'10111100' ; X cím: 4 movwf lcdadat call LCD_com bsf PORTA,1 ; 1 chip kiválasztása bcf PORTA,0 movlw b'01000000' ; Y kezdőcím: 0 movwf lcdadat call LCD_com bcf PORTA,1 ; 2 chip kiválasztása bsf PORTA,0 movlw b'01000001' ; Y kezdőcím: 1 movwf lcdadat call LCD_com bcf PORTA,1 ; chip kiválasztása bcf PORTA,0 movlw b'11111110' movwf lcdadat call LCD_write decfsz xpage_count goto $-2 goto $ ;Subroutines and text tables ;LCD routines LCD_com bcf PORTA,2 movfw lcdadat movwf PORTB bsf PORTA,3 nop bcf PORTA,3 nop retlw 0x00 LCD_write bsf PORTA,2 movfw lcdadat movwf PORTB bsf PORTA,3 nop bcf PORTA,3 nop retlw 0x00 Delay255 movlw 0xff ;delay 255 mS goto k0 Delay100 movlw d'100' ;delay 100mS goto k0 Delay50 movlw d'50' ;delay 50mS goto k0 Delay20 movlw d'20' ;delay 20mS goto k0 Delay5 movlw 0x05 ;delay 5.000 ms (4 MHz clock) k0 movwf count1 k1 movlw 0xC7 ;delay 1mS movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1 ,f goto k1 retlw 0x00 ;end of LCD routines end