maybe the chip?
for my part I used
12F683, 16F690 old regular Pic.
I tried richard code, and it's impressive asm code, that I can't do for sure.
so I stick to basic.
when you're back on this LCD, try this 'self text' backpack for 16F690 maybe it will give a hint.
Code:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Name : 16F690 LCD BACKPACK Self Text ' File : "D:\PIC\PBP3\16F690\LCD BACKPACK\16F690 LCD BACKPACK Self Text.pbp" ' Date : Oct 4-2025 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Serin2 '#CONFIG ' __config _INTRC_OSC_CLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _IESO_OFF & _FCMEN_OFF '#ENDCONFIG ' HSERIN #CONFIG __config _HS_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _IESO_OFF & _FCMEN_OFF #ENDCONFIG DEFINE OSC 20 ' Core is running at EXT-CRYSTAL 20MHz PBP 33,217 'DEFINE OSC 8 ANSEL = 0 ' Set all pins digital ANSELH = 0 ' Set all pins digital OPTION_REG.7 = 0 ' PORTA/PORTB pull-ups are enabled by individual port latch values CM1CON0 = 0 ' Analog comparators off En var Portb.4 : low en RS var Portb.6 : low rs B1 var byte : b1 = 0 C VAR BYTE : C = 100 I VAR BYTE ' 1602 ArrayA var Byte [16] : ARRAYWRITE ArrayA,["ABCDEF1234567890"] ' Line 1 ArrayB var Byte [16] : ARRAYWRITE ArrayB,["1234567890!@#$%^"] ' Line 2 ' 2004 'ArrayC var Byte [20] : ARRAYWRITE ArrayC,["ABCDEF1234567890!@#$"] ' Line 1 'ArrayD var Byte [20] : ARRAYWRITE ArrayD,["1234567890!@#$%^!@#$"] ' Line 2 'ArrayE var Byte [20] : ARRAYWRITE ArrayE,["ABCDEF1234567890!@#$"] ' Line 3 'ArrayF var Byte [20] : ARRAYWRITE ArrayF,["1234567890!@#$%^!@#$"] ' Line 4 TRISA = 0 : TRISB = %00100000 : TRISC = 0 PORTA = 0 : PORTB = 0 : PORTC = 0 OSCCON = $70 pause 100 high Porta.0 ' Backlight ON gosub LCDinit ' initialise LCD pause 100 main: ' 1602 Low RS : PORTC = 128 : High En : PauseUS 1 : Low En : High RS : Pause 3 ' Line 1 For I = 0 To 15 PORTC = ArrayA[I] High En : PauseUS 1 : Low En Pause C Next I Low RS : PORTC = 192 : High En : PauseUS 1 : Low En : High RS : Pause 3 ' Line 2 For I = 0 To 15 PORTC = ArrayB[I] High En : PauseUS 1 : Low En Pause C Next I ' 2004 'Low RS : PORTC = 128 : High En : PauseUS 1 : Low En : High RS : Pause 3 ' Line 1 'For I = 0 To 19 ' PORTC = ArrayC[I] ' High En : PauseUS 1 : Low En ' Pause C 'Next I 'Low RS : PORTC = 192 : High En : PauseUS 1 : Low En : High RS : Pause 3 ' Line 2 'For I = 0 To 19 ' PORTC = ArrayD[I] ' High En : PauseUS 1 : Low En ' Pause C 'Next I 'Low RS : PORTC = 148 : High En : PauseUS 1 : Low En : High RS : Pause 3 ' Line 3 'For I = 0 To 19 ' PORTC = ArrayE[I] ' High En : PauseUS 1 : Low En ' Pause C 'Next I 'Low RS : PORTC = 212 : High En : PauseUS 1 : Low En : High RS : Pause 3 ' Line 4 'For I = 0 To 19 ' PORTC = ArrayF[I] ' High En : PauseUS 1 : Low En ' Pause C 'Next I Pause 1000 Low RS : PORTC = 1 : High En : PauseUS 1 : Low En : High RS : PauseUS 4 ' Clear display Pause 500 'Low PORTA.0 ' Bacck Light off Pause 200 High PORTA.0 ' Bacck Light on Pause 200 C = C - 20 If C < 20 Then C = 100 EndIf GoTo main LCDINIT: ' Standard LCD Module Initialisation PORTC = %00000001 : HIGH EN : PAUSEus 1 : LOW EN : pause 4 ' Clear Display PORTC = %00000010 : HIGH EN : PAUSEus 1 : LOW EN : pause 2 ' Return Home PORTC = %00111000 : HIGH EN : PAUSEus 1 : LOW EN : Pause 2 ' 8 bit, 2 line, 5x8 Characters PORTC = %00000110 : HIGH EN : PAUSEus 1 : LOW EN : Pause 2 ' Entry mode PORTC = %00001100 : HIGH EN : PAUSEus 1 : LOW EN : Pause 2 ' %00001DCB Display on/off, Cursor on/off, Blink y/n RETURN


Reply With Quote

Bookmarks