OK. I didnt know what the LCD_LINES define actually did so I took a look in PBPPIC14.LIB and located this section of code.....
Code:
if (LCD_BITS == 8)
if (LCD_LINES == 1)
movlw 30h ; 8-bit mode, 1 line, 5x7 font
else
movlw 38h ; 8-bit mode, 2+ lines, 5x7 font
endif
else
if (LCD_LINES == 1)
movlw 20h ; 4-bit mode, 1 line, 5x7 font
else
movlw 28h ; 4-bit mode, 2+ lines, 5x7 font
endif
endif
The "Function Set" register of the 44780 LCD controller chip has the following bits
D7 = 0
D6 = 0
D5 = 1
D4 = DL
D3 = N
D2 = F
D1 = -
D0 = -
where
DL = DataLength
1 = 8 bits
0 = 4 bits
N = Number of lines
1 = 2(+) lines
0 = 1 line
F = Font
1 = 5x10 dots
0 = 5x8 dots
So looking at the code in the library file, the define is acted upon but is only used to correctly configure the display driver chip for the LCD display connected to it during initialisation.
When you consider that there isnt a define for LCD_CHARS to declare how many characters are on a line then it follows that it cant do anything clever such as work out that you have reached the end of line 1 and move to the start of line 2.
PBP does an awful lot of the hard work for you but there are times when you have to take care of some things yourself.
Bookmarks