Author | Rob Hamerling, Copyright © 2008..2009, all rights reserved. |
Adapted-by | Eur van Andel, Joep Suijs (refactoring),Richard Zengerink (lcd_init) |
Compiler | 2.4p |
Nibble interface for HD44780 compatible alphanumeric LCD screens. Uses 4 bits wide datapath + 2 handshake lines (total 6 PIC pins). Expects: 2 pins for handshake: 'lcd_rs' and 'lcd_en' and 1 port nibble for data: 'lcd_dataport' or 4 individual pins for data: 'lcd_d4' .. 'lcd_d7' . Note: a 'port nibble' (the lower or higher 4 bits of a port) gives faster and more compact code than 4 individual pins. . Directions for use of this library in application programs (in this sequence): 1. Declare the following constants: const byte LCD_ROWS = 2 -- 1, 2 or 4 lines const byte LCD_CHARS = 16 -- 8, 16 or 20 chars per line and aliases for handshake lines: alias lcd_rs is pin_A5 -- cmd/data select alias lcd_en is pin_A4 -- trigger and aliases for 4 data lines: alias lcd_dataport is portA_low -- 4 databits or alias lcd_d4 is pin_A3 -- lcd databit d4 alias lcd_d5 is pin_A1 -- lcd databit d5 alias lcd_d6 is pin_C0 -- lcd databit d6 alias lcd_d7 is pin_C2 -- lcd databit d7 . 2. Set the chosen LCD dataport and handshake pins to output: pin_A4_direction = output pin_A5_direction = output and the data port nibble to output: portA_low_direction = all_output or the 4 individual datapins to output: pin_A3_direction = output pin_A1_direction = output pin_C0_direction = output pin_C2_direction = output . 3. Include this library. . 4. Call lcd_init() to initialize the lcd controller. . Above is an example for a 2x16 LCD. . See hd_44780_common for the LCD API.
__lcd_write_nibble(byte in value)
_lcd_write_data(byte in value)
__lcd_write(byte in value)
_lcd_write_command(byte in value)
lcd_init()
Initialize LCD controller to 4-bits mode and default operational settings
__lcd_write_nibble(byte in value)
Sends low nibble into LCD Can be used for both commands and data (nibbles).
_lcd_write_data(byte in value)
Sends data byte into LCD
__lcd_write(byte in value)
Sends byte into LCD Wait cycle only required after lower nibble (not between nibbles).
_lcd_write_command(byte in value)
Sends command byte into LCD For slow commands an extra delay should be added.