DIGILIGHT
LCD library

Basic routines for interfacing a HD44780U-based text LCD display. Подробнее...

Definitions for MCU Clock Frequency

Adapt the MCU clock frequency in Hz to your target.

#define XTAL   4000000
 

Definition for LCD controller type

Use 0 for HD44780 controller, change to 1 for displays with KS0073 controller.

#define LCD_CONTROLLER_KS0073   0
 

Definitions for Display Size

Change these definitions to adapt setting to your display

#define LCD_LINES   2
 
#define LCD_DISP_LENGTH   16
 
#define LCD_LINE_LENGTH   0x40
 
#define LCD_START_LINE1   0x00
 
#define LCD_START_LINE2   0x40
 
#define LCD_START_LINE3   0x14
 
#define LCD_START_LINE4   0x54
 
#define LCD_WRAP_LINES   0
 
#define LCD_IO_MODE   1
 

Definitions for LCD command instructions

The constants define the various LCD controller instructions which can be passed to the function lcd_command(), see HD44780 data sheet for a complete description.

#define LCD_CLR   0 /* DB0: clear display */
 
#define LCD_HOME   1 /* DB1: return to home position */
 
#define LCD_ENTRY_MODE   2 /* DB2: set entry mode */
 
#define LCD_ENTRY_INC   1 /* DB1: 1=increment, 0=decrement */
 
#define LCD_ENTRY_SHIFT   0 /* DB2: 1=display shift on */
 
#define LCD_ON   3 /* DB3: turn lcd/cursor on */
 
#define LCD_ON_DISPLAY   2 /* DB2: turn display on */
 
#define LCD_ON_CURSOR   1 /* DB1: turn cursor on */
 
#define LCD_ON_BLINK   0 /* DB0: blinking cursor ? */
 
#define LCD_MOVE   4 /* DB4: move cursor/display */
 
#define LCD_MOVE_DISP   3 /* DB3: move display (0-> cursor) ? */
 
#define LCD_MOVE_RIGHT   2 /* DB2: move right (0-> left) ? */
 
#define LCD_FUNCTION   5 /* DB5: function set */
 
#define LCD_FUNCTION_8BIT   4 /* DB4: set 8BIT mode (0->4BIT mode) */
 
#define LCD_FUNCTION_2LINES   3 /* DB3: two lines (0->one line) */
 
#define LCD_FUNCTION_10DOTS   2 /* DB2: 5x10 font (0->5x7 font) */
 
#define LCD_CGRAM   6 /* DB6: set CG RAM address */
 
#define LCD_DDRAM   7 /* DB7: set DD RAM address */
 
#define LCD_BUSY   7 /* DB7: LCD is busy */
 
#define LCD_ENTRY_DEC   0x04 /* display shift off, dec cursor move dir */
 
#define LCD_ENTRY_DEC_SHIFT   0x05 /* display shift on, dec cursor move dir */
 
#define LCD_ENTRY_INC_   0x06 /* display shift off, inc cursor move dir */
 
#define LCD_ENTRY_INC_SHIFT   0x07 /* display shift on, inc cursor move dir */
 
#define LCD_DISP_OFF   0x08 /* display off */
 
#define LCD_DISP_ON   0x0C /* display on, cursor off */
 
#define LCD_DISP_ON_BLINK   0x0D /* display on, cursor off, blink char */
 
#define LCD_DISP_ON_CURSOR   0x0E /* display on, cursor on */
 
#define LCD_DISP_ON_CURSOR_BLINK   0x0F /* display on, cursor on, blink char */
 
#define LCD_MOVE_CURSOR_LEFT   0x10 /* move cursor left (decrement) */
 
#define LCD_MOVE_CURSOR_RIGHT   0x14 /* move cursor right (increment) */
 
#define LCD_MOVE_DISP_LEFT   0x18 /* shift display left */
 
#define LCD_MOVE_DISP_RIGHT   0x1C /* shift display right */
 
#define LCD_FUNCTION_4BIT_1LINE   0x20 /* 4-bit interface, single line, 5x7 dots */
 
#define LCD_FUNCTION_4BIT_2LINES   0x28 /* 4-bit interface, dual line, 5x7 dots */
 
#define LCD_FUNCTION_8BIT_1LINE   0x30 /* 8-bit interface, single line, 5x7 dots */
 
#define LCD_FUNCTION_8BIT_2LINES   0x38 /* 8-bit interface, dual line, 5x7 dots */
 
#define LCD_MODE_DEFAULT   ((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC) )
 

Functions

void lcd_init (void)
 Initialize display and select type of cursor.
 
void lcd_clrscr (void)
 Clear display and set cursor to home position.
 
void lcd_home (void)
 Set cursor to home position.
 
void lcd_gotoxy (uint8_t x, uint8_t y)
 Set cursor to specified position. Подробнее...
 
void lcd_putc (char c)
 Display character at current cursor position. Подробнее...
 
void lcd_puts (const char *s)
 Display string without auto linefeed. Подробнее...
 
void lcd_puts_p (const char *progmem_s)
 Display string from program memory without auto linefeed. Подробнее...
 
void lcd_command (uint8_t cmd)
 Send LCD controller instruction command. Подробнее...
 
void lcd_data (uint8_t data)
 Send data byte to LCD controller. Подробнее...
 
uint8_t lcd_getxy (void)
 
uint8_t lcd_read (uint8_t rs)
 
#define lcd_puts_P(__s)   lcd_puts_p(PSTR(__s))
 macros for automatically storing string constant in program memory
 

Подробное описание

Basic routines for interfacing a HD44780U-based text LCD display.

#include <lcd.h>

Originally based on Volker Oth's LCD library, changed lcd_init(), added additional constants for lcd_command(), added 4-bit I/O mode, improved and optimized code.

Library can be operated in memory mapped mode (LCD_IO_MODE=0) or in 4-bit IO port mode (LCD_IO_MODE=1). 8-bit IO port mode not supported.

Memory mapped mode compatible with Kanda STK200, but supports also generation of R/W signal through A8 address line.

Автор
Peter Fleury pfleu.nosp@m.ry@g.nosp@m.mx.ch http://jump.to/fleury
См. также
The chapter Interfacing a HD44780 Based LCD to an AVR on my home page.

Макросы

◆ LCD_CONTROLLER_KS0073

#define LCD_CONTROLLER_KS0073   0

Use 0 for HD44780 controller, 1 for KS0073 controller

См. определение в файле lcd.h строка 58

◆ LCD_DISP_LENGTH

#define LCD_DISP_LENGTH   16

visibles characters per line of the display

См. определение в файле lcd.h строка 65

Используется в center_str(), center_str_p(), lcd_putc(), show_hex_long(), show_rpad_str() и show_rpad_str_p().

◆ LCD_IO_MODE

#define LCD_IO_MODE   1

0: memory mapped mode, 1: IO port mode

См. определение в файле lcd.h строка 74

◆ LCD_LINE_LENGTH

#define LCD_LINE_LENGTH   0x40

internal line length of the display

См. определение в файле lcd.h строка 66

◆ LCD_LINES

#define LCD_LINES   2

number of visible lines of the display

См. определение в файле lcd.h строка 64

◆ LCD_START_LINE1

#define LCD_START_LINE1   0x00

DDRAM address of first char of line 1

См. определение в файле lcd.h строка 67

Используется в lcd_putc().

◆ LCD_START_LINE2

#define LCD_START_LINE2   0x40

DDRAM address of first char of line 2

См. определение в файле lcd.h строка 68

◆ LCD_START_LINE3

#define LCD_START_LINE3   0x14

DDRAM address of first char of line 3

См. определение в файле lcd.h строка 69

◆ LCD_START_LINE4

#define LCD_START_LINE4   0x54

DDRAM address of first char of line 4

См. определение в файле lcd.h строка 70

◆ LCD_WRAP_LINES

#define LCD_WRAP_LINES   0

0: no wrap, 1: wrap at end of visibile line

См. определение в файле lcd.h строка 71

◆ XTAL

#define XTAL   4000000

clock frequency in Hz, used to calculate delay timer

См. определение в файле lcd.h строка 50

Функции

◆ lcd_command()

void lcd_command ( uint8_t  cmd)

Send LCD controller instruction command.

Аргументы
cmdinstruction to send to LCD controller, see HD44780 data sheet
Возвращает
none

См. определение в файле lcd.c строка 354

Используется в lcd_clrscr(), lcd_gotoxy() и lcd_home().

◆ lcd_data()

void lcd_data ( uint8_t  data)

Send data byte to LCD controller.

Similar to lcd_putc(), but without interpreting LF

Аргументы
databyte to send to LCD controller, see HD44780 data sheet
Возвращает
none

См. определение в файле lcd.c строка 366

◆ lcd_gotoxy()

void lcd_gotoxy ( uint8_t  x,
uint8_t  y 
)

Set cursor to specified position.

Аргументы
xhorizontal position
(0: left most position)
yvertical position
(0: first line)
Возвращает
none

См. определение в файле lcd.c строка 380

Перекрестные ссылки lcd_command().

◆ lcd_putc()

void lcd_putc ( char  c)

Display character at current cursor position.

Аргументы
ccharacter to be displayed
Возвращает
none

См. определение в файле lcd.c строка 436

Перекрестные ссылки LCD_DISP_LENGTH и LCD_START_LINE1.

Используется в lcd_puts(), lcd_puts_p() и show_hex_long().

◆ lcd_puts()

void lcd_puts ( const char *  s)

Display string without auto linefeed.

Аргументы
sstring to be displayed
Возвращает
none

См. определение в файле lcd.c строка 483

Перекрестные ссылки lcd_putc().

◆ lcd_puts_p()

void lcd_puts_p ( const char *  progmem_s)

Display string from program memory without auto linefeed.

Аргументы
progmem_sstring from program memory be be displayed
Возвращает
none
См. также
lcd_puts_P

См. определение в файле lcd.c строка 500

Перекрестные ссылки lcd_putc().