LCD  1.0
HD44780 compatible lcd driver for Xmega devices
 All Files Functions Variables Macros
Macros | Functions
lcd.h File Reference

macro's for lcd driver for Xmega More...

Go to the source code of this file.

Macros

#define F_CPU   2000000UL
 F_CPU must be declared.
 
#define LCD_4BIT_MODE   1
 Macro defining the 4-bit mode (1) or the 8-bit mode (0)
 
#define LCD_BUSY_FLAG   0
 Macro defining that you want to use the busy flag (1) or not (0)
 
#define LCD_DATA_PORT   PORTA
 Macro's to define the data port.
 
#define LCD_D0_PORT   LCD_DATA_PORT
 Port D0-pin (currently not used)
 
#define LCD_D1_PORT   LCD_DATA_PORT
 Port D1-pin (currently not used)
 
#define LCD_D2_PORT   LCD_DATA_PORT
 Port D2-pin (currently not used)
 
#define LCD_D3_PORT   LCD_DATA_PORT
 Port D3-pin (currently not used)
 
#define LCD_D4_PORT   LCD_DATA_PORT
 Port D4-pin (currently not used)
 
#define LCD_D5_PORT   LCD_DATA_PORT
 Port D5-pin (currently not used)
 
#define LCD_D6_PORT   LCD_DATA_PORT
 Port D6-pin (currently not used)
 
#define LCD_D7_PORT   LCD_DATA_PORT
 Port D7-pin (currently not used)
 
#define LCD_D0_bp   PIN0_bp
 Bit position D0-pin (currently not used)
 
#define LCD_D1_bp   PIN1_bp
 Bit position D1-pin (currently not used)
 
#define LCD_D2_bp   PIN2_bp
 Bit position D2-pin (currently not used)
 
#define LCD_D3_bp   PIN3_bp
 Bit position D3-pin (currently not used)
 
#define LCD_D4_bp   PIN4_bp
 Bit position D4-pin.
 
#define LCD_D5_bp   PIN5_bp
 Bit position D5-pin.
 
#define LCD_D6_bp   PIN6_bp
 Bit position D6-pin.
 
#define LCD_D7_bp   PIN7_bp
 Bit position D7-pin.
 
#define LCD_COMM_PORT   PORTD
 Macro's to define the communication port.
 
#define LCD_RS_PORT   LCD_COMM_PORT
 Port RS-pin.
 
#define LCD_RW_PORT   LCD_COMM_PORT
 Port R/W-pin.
 
#define LCD_E_PORT   LCD_COMM_PORT
 Port E-pin.
 
#define LCD_RS_bp   PIN4_bp
 Bit position RS-pin.
 
#define LCD_RW_bp   PIN3_bp
 Bit position R/W-pin.
 
#define LCD_E_bp   PIN5_bp
 Bit position E-pin.
 
#define TDELAY1_ms   50
 Time Delay 1st initialization.
 
#define TDELAY2_ms   5
 Time Delay 2nd initialization.
 
#define TDELAY3_us   100
 Time Delay 3rd initialization.
 
#define TPWE_us   0.5
 Time Period Width Enable (TpwE)
 
#define TDELAY_us   50
 Time Delay commands and data.
 
#define T_CLEARDISPLAY_us   1600
 Time Delay clear display.
 
#define LCD_LINES   2
 Number of visible lines of the display.
 
#define LCD_DISP_LENGTH   16
 Visible characters per line of the display.
 
#define LCD_START_LINE1   0x00
 DDRAM address of first char of line 1.
 
#define LCD_START_LINE2   0x40
 DDRAM address of first char of line 2.
 
#define LCD_START_LINE3   0x10
 DDRAM address of first char of line 3.
 
#define LCD_START_LINE4   0x50
 DDRAM address of first char of line 4.
 
#define LCD_CLR_bp   0
 DB0: clear display.
 
#define LCD_HOME_bp   1
 DB1: return to home position.
 
#define LCD_ENTRY_MODE_bp   2
 DB2: set entry mode.
 
#define LCD_ENTRY_INC_bp   1
 DB1: 1=increment, 0=decrement.
 
#define LCD_ENTRY_SHIFT_bp   0
 DB2: 1=display shift on.
 
#define LCD_ON_bp   3
 DB3: turn lcd/cursor on.
 
#define LCD_ON_DISPLAY_bp   2
 DB2: turn display on.
 
#define LCD_ON_CURSOR_bp   1
 DB1: turn cursor on.
 
#define LCD_ON_BLINK_bp   0
 DB0: blinking cursor ?
 
#define LCD_MOVE_bp   4
 DB4: move cursor/display.
 
#define LCD_MOVE_DISP_bp   3
 DB3: move display (0-> cursor) ?
 
#define LCD_MOVE_RIGHT_bp   2
 DB2: move right (0-> left) ?
 
#define LCD_FUNCTION_bp   5
 DB5: function set.
 
#define LCD_FUNCTION_8BIT_bp   4
 DB4: set 8BIT mode (0->4BIT mode)
 
#define LCD_FUNCTION_2LINES_bp   3
 DB3: two lines (0->one line)
 
#define LCD_FUNCTION_10DOTS_bp   2
 DB2: 5x10 font (0->5x7 font)
 
#define LCD_CGRAM_bp   6
 DB6: set CG RAM address.
 
#define LCD_DDRAM_bp   7
 DB7: set DD RAM address.
 
#define LCD_BUSY_bp   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   0x20
 4-bit, single line, 5x8 dots
 
#define LCD_FUNCTION_4BIT_1LINE   0x20
 4-bit, single line, 5x8 dots
 
#define LCD_FUNCTION_4BIT_2LINES   0x28
 4-bit, dual line, 5x8 dots
 
#define LCD_FUNCTION_8BIT   0x30
 8-bit, single line, 5x8 dots
 
#define LCD_FUNCTION_8BIT_1LINE   0x30
 8-bit, single line, 5x8 dots
 
#define LCD_FUNCTION_8BIT_2LINES   0x38
 8-bit, dual line, 5x8 dots
 
#define LCD_D0_bm   (1 << (LCD_D0_bp))
 Bit mask D0-pin.
 
#define LCD_D1_bm   (1 << (LCD_D1_bp))
 Bbit mask D1-pin.
 
#define LCD_D2_bm   (1 << (LCD_D2_bp))
 Bit mask D2-pin.
 
#define LCD_D3_bm   (1 << (LCD_D3_bp))
 Bit mask D3-pin.
 
#define LCD_D4_bm   (1 << (LCD_D4_bp))
 Bit mask D4-pin.
 
#define LCD_D5_bm   (1 << (LCD_D5_bp))
 Bit mask D5-pin.
 
#define LCD_D6_bm   (1 << (LCD_D6_bp))
 Bit mask D6-pin.
 
#define LCD_D7_bm   (1 << (LCD_D7_bp))
 Bit mask D7-pin.
 
#define LCD_RS_bm   (1 << (LCD_RS_bp))
 Bit mask RS-pin.
 
#define LCD_RW_bm   (1 << (LCD_RW_bp))
 Bit mask R/W-pin.
 
#define LCD_E_bm   (1 << (LCD_E_bp))
 Bit mask E-pin.
 
#define LCD_DATA_PORT_gm   ((LCD_D7_bm)|(LCD_D6_bm)|(LCD_D5_bm)|(LCD_D4_bm))
 Group mask for data port.
 
#define LCD_WRITE_BYTE(b, rs)   (lcd4_write_byte((b),(rs)))
 Writes byte tot LCD. More...
 
#define LCD_INIT   lcd4_init
 Initalizes LCD.
 

Functions

void lcd_init (void)
 Initialize the lcd. More...
 
void lcd_clear (void)
 Clear lcd. More...
 
void lcd_home (void)
 Cursor to home position. More...
 
void lcd_gotoxy (uint8_t x, uint8_t y)
 Set cursor to specified position. More...
 
void lcd_putc (char c)
 Writes a character to the LCD. More...
 
void lcd_puts (char *s)
 Writes a string to the LCD. More...
 
void lcd_cmd (uint8_t cmd)
 Writes a command char to the LCD. More...
 
void lcd_data (uint8_t b)
 Writes a data byte to the LCD. More...
 

Detailed Description

macro's for lcd driver for Xmega

Author
Wim Dolman (w.e.dolman@hva.nl)
Date
21-10-2013
Version
1.0

This file contains the macro definitions for interfacing a HD44780U-based text lcd display for Atmel Xmega devices.

This file and the accompanying file lcd.c are based on the lcd libray from Peter Fleury (http://homepage.hispeed.ch/peterfleury/) for the ATmega devices.

This library is suitable for four different io modes:

There are defines for these four modes:

In 8 bit mode all 8 data pins must be connected to one 8-pin port of the Xmega. In 4 bit mode all 4 data pins must be connected to one port of Xmega, but the 4 data lines may be connected to any pin of that port and in any order. This file contains the macro definitions that for this purposes.

The control lines RS, E and R/W can connected to any pin of any port of the Xmega.

Warning
Be careful using the busyflag. Most alfanumeric displays are 5 Volt devices. The Xmega is not 5 Volt tolerant. When using the busyflag, information is also send from the LCD to the Xmega. So you can damage your Xmega.

Macro Definition Documentation

#define LCD_WRITE_BYTE (   b,
  rs 
)    (lcd4_write_byte((b),(rs)))

Writes byte tot LCD.

This function writes a byte to the LCD.

Parameters
bthe byte
rsregister select (0 is coomand, 1 is data)

Function Documentation

void lcd_clear ( void  )

Clear lcd.

This function clears the LCD and sets cursor to home position.

Returns
none
void lcd_cmd ( uint8_t  cmd)

Writes a command char to the LCD.

This function writes a command char to the LCD.

Parameters
cmdcommand character
Returns
none
void lcd_data ( uint8_t  b)

Writes a data byte to the LCD.

This function writes a data byte to the LCD.

Parameters
bdata byte
Returns
none
void lcd_gotoxy ( uint8_t  x,
uint8_t  y 
)

Set cursor to specified position.

This function sets the cursor to the specified position.

Parameters
xhorizontal position (0: left most position)
yvertical position (0: first line)
Returns
none
void lcd_home ( void  )

Cursor to home position.

This function sets cursor to home position.

Returns
none
void lcd_init ( void  )

Initialize the lcd.

This function initializes the LCD in one of the four modes depending on de values of LCD_4BIT_MODE and LCD_BUSY_FLAG in the header file.

Returns
none
void lcd_putc ( char  c)

Writes a character to the LCD.

This function writes a character to the LCD. The characters '\n' and '\f' have a special meaning

  • '\n' (new line) : go to the start of the next line
  • '\f' (formfeed) : clears display and start at the home position
Parameters
cthe character to be written
Returns
none
void lcd_puts ( char *  s)

Writes a string to the LCD.

This function writes a character string to the LCD.

Parameters
spointer to the character string
Returns
none