1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/drivers/aip31068/include/aip31068_regs.h
2021-08-13 19:50:38 +02:00

162 lines
3.6 KiB
C

/*
* Copyright (C) 2020 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup drivers_aip31068
* @brief Register definitions for the AIP31068 I2C LCD controller
* @author Hendrik van Essen <hendrik.ve@fu-berlin.de>
* @file
* @{
*/
#ifndef AIP31068_REGS_H
#define AIP31068_REGS_H
#include "bitarithm.h"
#ifdef __cplusplus
extern "C"
{
#endif
/* Commands (page 18, table 3) */
/**
* @brief Clears entire display and sets cursor to position (0, 0).
*
* @note: Also changes AIP31068_BIT_ENTRY_MODE_INCREMENT to 1
*/
#define AIP31068_CMD_CLEAR_DISPLAY 0x01
/**
* @brief Sets cursor to position (0, 0) and resets display to original position
* before any shift operations.
*/
#define AIP31068_CMD_RETURN_HOME 0x02
/**
* @brief Sets cursor move direction and specifies display shift.
*/
#define AIP31068_CMD_ENTRY_MODE_SET 0x04
/**
* @brief Sets entire display on/off, cursor on/off, and blinking of cursor
* position character on/off.
*/
#define AIP31068_CMD_DISPLAY_CONTROL 0x08
/**
* @brief Moves cursor and shifts display.
*/
#define AIP31068_CMD_CURSOR_DISPLAY_SHIFT 0x10
/**
* @brief Sets interface data length, number of display lines and character
* font size.
*/
#define AIP31068_CMD_FUNCTION_SET 0x20
/**
* @brief Sets CGRAM address.
*/
#define AIP31068_CMD_SET_CGRAM_ADDR 0x40
/**
* @brief Sets DDRAM address.
*/
#define AIP31068_CMD_SET_DDRAM_ADDR 0x80
/* Bits for AIP31068_CMD_ENTRY_MODE_SET (page 16, section 3) */
/**
* @brief 0 = Decrement cursor after insertion
* 1 = Increment cursor after insertion
*/
#define AIP31068_BIT_ENTRY_MODE_INCREMENT BIT1
/**
* @brief 0 = No automated display scroll
* 1 = Automated display scroll
*/
#define AIP31068_BIT_ENTRY_MODE_AUTOINCREMENT BIT0
/* Bits for AIP31068_CMD_DISPLAY_CONTROL (page 16, section 4) */
/**
* @brief 0 = Display off
* 1 = Display on
*/
#define AIP31068_BIT_DISPLAY_CONTROL_DISPLAY BIT2
/**
* @brief 0 = Cursor off
* 1 = Cursor on
*/
#define AIP31068_BIT_DISPLAY_CONTROL_CURSOR BIT1
/**
* @brief 0 = Cursor blinking off
* 1 = Cursor blinking on
*/
#define AIP31068_BIT_DISPLAY_CONTROL_CURSOR_BLINKING BIT0
/* Bits for AIP31068_CMD_CURSOR_DISPLAY_SHIFT (page 17, section 5) */
/**
* @brief 0 = Shift the cursor position
* 1 = Scroll the display content
*/
#define AIP31068_BIT_CURSOR_DISPLAY_SHIFT_SELECTION BIT3
/**
* @brief 0 = Shift to the left
* 1 = Shift to the right
*/
#define AIP31068_BIT_CURSOR_DISPLAY_SHIFT_DIRECTION BIT2
/* Bits for AIP31068_CMD_FUNCTION_SET (page 17, section 6) */
/**
* @brief 0 = 4 bit interface data length
* 1 = 8 bit interface data length
*/
#define AIP31068_BIT_FUNCTION_SET_BITMODE BIT4
/**
* @brief 0 = Single line
* 1 = Two lines
*/
#define AIP31068_BIT_FUNCTION_SET_LINECOUNT BIT3
/**
* @brief 0 = 5x8 dots per character
* 1 = 5x10 dots per character
*/
#define AIP31068_BIT_FUNCTION_SET_FONTSIZE BIT2
/* Bits for control byte (page 12) */
/**
* @brief 0 = Last control byte
* 1 = Another control byte follows data byte
*/
#define AIP31068_BIT_CONTROL_BYTE_CO BIT7
/**
* @brief 0 = data byte interpreted as command
* 1 = data byte interpreted as data
*/
#define AIP31068_BIT_CONTROL_BYTE_RS BIT6
#ifdef __cplusplus
}
#endif
#endif /* AIP31068_REGS_H */
/** @} */