46 #include <avr/pgmspace.h>
48 #if (__GNUC__ * 100 + __GNUC_MINOR__) < 405
49 #error "This library requires AVR-GCC 4.5 or later, update to newer AVR-GCC compiler !"
60 #ifdef _LCD_DEFINITIONS_FILE
61 #include "lcd_definitions.h"
69 #ifndef LCD_CONTROLLER_KS0073
70 #define LCD_CONTROLLER_KS0073 0
85 #ifndef LCD_DISP_LENGTH
86 #define LCD_DISP_LENGTH 16
88 #ifndef LCD_LINE_LENGTH
89 #define LCD_LINE_LENGTH 0x40
91 #ifndef LCD_START_LINE1
92 #define LCD_START_LINE1 0x00
94 #ifndef LCD_START_LINE2
95 #define LCD_START_LINE2 0x40
97 #ifndef LCD_START_LINE3
98 #define LCD_START_LINE3 0x14
100 #ifndef LCD_START_LINE4
101 #define LCD_START_LINE4 0x54
103 #ifndef LCD_WRAP_LINES
104 #define LCD_WRAP_LINES 0
126 #define LCD_IO_MODE 1
131 #define LCD_PORT PORTA
133 #ifndef LCD_DATA0_PORT
134 #define LCD_DATA0_PORT LCD_PORT
136 #ifndef LCD_DATA1_PORT
137 #define LCD_DATA1_PORT LCD_PORT
139 #ifndef LCD_DATA2_PORT
140 #define LCD_DATA2_PORT LCD_PORT
142 #ifndef LCD_DATA3_PORT
143 #define LCD_DATA3_PORT LCD_PORT
145 #ifndef LCD_DATA0_PIN
146 #define LCD_DATA0_PIN 0
148 #ifndef LCD_DATA1_PIN
149 #define LCD_DATA1_PIN 1
151 #ifndef LCD_DATA2_PIN
152 #define LCD_DATA2_PIN 2
154 #ifndef LCD_DATA3_PIN
155 #define LCD_DATA3_PIN 3
158 #define LCD_RS_PORT LCD_PORT
164 #define LCD_RW_PORT LCD_PORT
170 #define LCD_E_PORT LCD_PORT
176 #elif defined(__AVR_AT90S4414__) || defined(__AVR_AT90S8515__) || defined(__AVR_ATmega64__) || \
177 defined(__AVR_ATmega8515__)|| defined(__AVR_ATmega103__) || defined(__AVR_ATmega128__) || \
178 defined(__AVR_ATmega161__) || defined(__AVR_ATmega162__)
182 #define LCD_IO_DATA 0xC000
183 #define LCD_IO_FUNCTION 0x8000
184 #define LCD_IO_READ 0x0100
187 #error "external data memory interface not available for this device, use 4-bit IO port mode"
202 #ifndef LCD_DELAY_BOOTUP
203 #define LCD_DELAY_BOOTUP 16000
205 #ifndef LCD_DELAY_INIT
206 #define LCD_DELAY_INIT 5000
208 #ifndef LCD_DELAY_INIT_REP
209 #define LCD_DELAY_INIT_REP 64
211 #ifndef LCD_DELAY_INIT_4BIT
212 #define LCD_DELAY_INIT_4BIT 64
214 #ifndef LCD_DELAY_BUSY_FLAG
215 #define LCD_DELAY_BUSY_FLAG 4
217 #ifndef LCD_DELAY_ENABLE_PULSE
218 #define LCD_DELAY_ENABLE_PULSE 1
231 #define LCD_ENTRY_MODE 2
232 #define LCD_ENTRY_INC 1
233 #define LCD_ENTRY_SHIFT 0
235 #define LCD_ON_DISPLAY 2
236 #define LCD_ON_CURSOR 1
237 #define LCD_ON_BLINK 0
239 #define LCD_MOVE_DISP 3
240 #define LCD_MOVE_RIGHT 2
241 #define LCD_FUNCTION 5
242 #define LCD_FUNCTION_8BIT 4
243 #define LCD_FUNCTION_2LINES 3
244 #define LCD_FUNCTION_10DOTS 2
250 #define LCD_ENTRY_DEC 0x04
251 #define LCD_ENTRY_DEC_SHIFT 0x05
252 #define LCD_ENTRY_INC_ 0x06
253 #define LCD_ENTRY_INC_SHIFT 0x07
256 #define LCD_DISP_OFF 0x08
257 #define LCD_DISP_ON 0x0C
258 #define LCD_DISP_ON_BLINK 0x0D
259 #define LCD_DISP_ON_CURSOR 0x0E
260 #define LCD_DISP_ON_CURSOR_BLINK 0x0F
263 #define LCD_MOVE_CURSOR_LEFT 0x10
264 #define LCD_MOVE_CURSOR_RIGHT 0x14
265 #define LCD_MOVE_DISP_LEFT 0x18
266 #define LCD_MOVE_DISP_RIGHT 0x1C
269 #define LCD_FUNCTION_4BIT_1LINE 0x20
270 #define LCD_FUNCTION_4BIT_2LINES 0x28
271 #define LCD_FUNCTION_8BIT_1LINE 0x30
272 #define LCD_FUNCTION_8BIT_2LINES 0x38
275 #define LCD_MODE_DEFAULT ((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC) )
292 extern void lcd_init(uint8_t dispAttr);
332 extern void lcd_puts(
const char *s);
341 extern void lcd_puts_p(
const char *progmem_s);
365 #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s))
void lcd_puts_p(const char *progmem_s)
Display string from program memory without auto linefeed.
Definition: lcd.c:484
void lcd_gotoxy(uint8_t x, uint8_t y)
Set cursor to specified position.
Definition: lcd.c:364
void lcd_clrscr(void)
Clear display and set cursor to home position.
Definition: lcd.c:400
void lcd_home(void)
Set cursor to home position.
Definition: lcd.c:409
void lcd_command(uint8_t cmd)
Send LCD controller instruction command.
Definition: lcd.c:338
void lcd_data(uint8_t data)
Send data byte to LCD controller.
Definition: lcd.c:350
void lcd_puts(const char *s)
Display string without auto linefeed.
Definition: lcd.c:467
void lcd_putc(char c)
Display character at current cursor position.
Definition: lcd.c:420
void lcd_init(uint8_t dispAttr)
Initialize display and select type of cursor.
Definition: lcd.c:504