Parameter / feature |
$DEFINE format |
Default |
Example |
Width |
LCD_WIDTH N |
N = 16 characters. |
{$DEFINE LCD_WIDTH 20} |
Number of lines |
LCD_LINES N |
N = 2 lines. |
{$DEFINE LCD_LINES 4} |
Data bus width |
LCD_BITS N |
N = 4-bit. |
{$DEFINE LCD_BITS 8} |
4-bit mode bus position |
LCD_4BIT_UPPER |
Lower bits. |
{$DEFINE LCD_4BIT_UPPER} |
Read mode is possible (LCD's WR pin not permanently grounded) |
LCD_READ |
NO. Forced as NO if PIC10/PIC12. |
{$DEFINE LCD_READ} |
Use of character generator routine (possible values are 0, 8, 10 for the nb of pixels height 5x8 or 5x10) |
LCD_GEN N |
N = 0, no generator. |
{$DEFINE LCD_GEN 10} |
Control port to use |
LCD_CNTRL 'PORTx' |
GPIO for PIC10/12 and PORTB otherwise. |
{$DEFINE LCD_CNTRL 'LATC'} |
Data port to use |
LCD_DATA 'PORTx' |
GPIO for PIC10/12, otherwise it is PORTB if 4-bit mode, PORTC otherwise. |
{$DEFINE LCD_DATA 'LATB'} |
Register select pin bit to use (1) |
LCD_BIT_RS |
4 if data bits in lower bits of same port, 0 otherwise. |
{$DEFINE LCD_BIT_RS 4} |
Enable pulse pin bit to use (1) |
LCD_BIT_E |
5 if data bits in lower bits of same port, 1 otherwise. |
{$DEFINE LCD_BIT_E 5} |
Write mode pin bit to use (1) (2) |
LCD_BIT_WR |
6 if data bits in lower bits of same port, 2 otherwise. |
{$DEFINE LCD_BIT_WR 6} |
Data settle time before enable pulse (writing) and settle time after start of enable pulse before data latch (reading) (µs) |
LCD_DELAY_DATA |
2 |
{$DEFINE LCD_DELAY_DATA 5} |
Enable pulse duration (µs) |
LCD_DELAY_ENABLE |
5 |
{$DEFINE LCD_DELAY_ENABLE 10} |
Basic wait for end of operation delay, used only if LCD_READ is not defined (µs) |
LCD_DELAY_WAIT |
37 |
{$DEFINE LCD_DELAY_WAIT 50} |
Long operation (CLEAR / HOME) wait for end of operation delay, used only if LCD_READ is not defined (µs) |
LCD_DELAY_HOME |
1520 |
{$DEFINE LCD_DELAY_HOME 2000} |
Minimize HW stack use by using include and unrolled code. This takes more code but limits stack depth. |
LCD_MINIMIZE_STACK_USE |
Normal calls / HW stack use. |
{$DEFINE LCD_MINIMIZE_STACK_USE} |
(1): If one is user-defined, all must be defined to avoid conflicts with defaults.
(2): Only if LCD_READ is defined.