Author | Rob Hamerling, Copyright © 2008..2009, all rights reserved. |
Adapted-by | Eur van Andel, Joep Suijs (refactoring),Richard Zengerink (lcd_init) |
Compiler | 2.4p |
Port interface for HD44780 compatible alphanumeric LCD screens. Uses 8 bits wide datapath + 2 handshake lines (total 10 PIC pins). Expects: 2 pins for handshake: 'lcd_rs' and 'lcd_en' and: 1 complete port for data: 'lcd_dataport' or 2 nibbles for data: 'lcd_dataport_low' and 'lcd_dataport_high' or 8 individual pins for data: lcd_dataline_d0 .. _d7 . note: a complete ports gives faster and more compact code then two port 'nibble'' (the lower or higher 4 bits of a port) which is on its turn faster than 8 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_D2 -- cmd/data select alias lcd_en is pin_D3 -- trigger and aliases for 8 data lines: alias lcd_dataport is portF -- 8 databits or alias lcd_dataport_low is portD_high -- 4 low order databits alias lcd_dataport_high is portC_high -- 4 high order databits or alias lcd_d0 is pin_D0 -- lcd databit d0 alias lcd_d1 is pin_D1 -- lcd databit d1 alias lcd_d2 is pin_C6 -- lcd databit d2 alias lcd_d3 is pin_C7 -- lcd databit d3 alias lcd_d4 is pin_B0 -- lcd databit d4 alias lcd_d5 is pin_B1 -- 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 handshake pins to output: pin_D2_direction = output pin_D3_direction = output and the data port to output: portF_direction = ALL_OUTPUT or 2 data port nibbles to output: portD_high_direction = ALL_OUTPUT portC_high_direction = ALL_OUTPUT or 8 individual data pins to outout: pin_D0_direction = output pin_D1_direction = output pin_C6_direction = output pin_C7_direction = output pin_B0_direction = output pin_B1_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_init()
Initialize LCD controller to 8-bits mode and default operational settings
_lcd_write_data(byte in value)
Sends data byte into LCD
__lcd_write(byte in value)
Sends byte into the LCD Can be used for both commands and data.
_lcd_write_command(byte in value)
Sends command byte into LCD For slow commands an extra delay should be added
16f727 | 16f727_lcd_hd44780_8_1.jal |
16f727 | 16f727_lcd_hd44780_8_4.jal |
16f877a | 16f877a_lcd_hd44780_8_4.jal |
16f877a | 16f877a_lcd_hd44780_8_1.jal |
16f887 | 16f887_lcd_hd44780_8_1.jal |
16f887 | 16f887_lcd_hd44780_8_4.jal |
18f4685 | 18f4685_lcd_hd44780_8_4.jal |
18f4685 | 18f4685_lcd_hd44780_8_1.jal |
18f6310 | 18f6310_lcd_hd44780_8_1.jal |
18f6310 | 18f6310_lcd_hd44780_8_8.jal |
18f6310 | 18f6310_lcd_hd44780_8_4.jal |