blob: 7dc1aadf04b87143eef3d0de70d5ed48913d89e6 [file] [log] [blame]
/***********************************************************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Electronics Corporation and is only
* intended for use with Renesas products. No other uses are authorized. This
* software is owned by Renesas Electronics Corporation and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this software
* and to discontinue the availability of this software. By using this software,
* you agree to the additional terms and conditions found by accessing the
* following link:
* http://www.renesas.com/disclaimer
*
* Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.
***********************************************************************************************************************/
/***********************************************************************************************************************
* File Name : lcd_pmod.h
* Device(s) : RZ/T1 (R7S910017)
* Tool-Chain : GNUARM-NONEv14.02-EABI
* H/W Platform : RSK+RZT1 CPU Board
*
* Description : This Header file contains the Macro Definitions & prototypes
* for the functions used in lcd.c
*
* This function is created to drive the Okaya LCD display with
* either ST7735 or ST7715 driver device. The commands for both
* the devices are the same.
*
* The display is controlled using the SPI bus. In this example,
* the SCI5 is used. This can be modified to the SCI connected to
* the PMOD interface. The SCI driver file will also be required.
*
* The display memory has an offset with respect to the actual
* pixel. This is not documented but realised from driving the
* display. The offset is set as LEFT MARGIN and TOP MARGIN.
* This offset is catered for internally, so as far as the user
* is concerned, cursor position 0,0 is the top left pixel.
*
* The simplest procedure to run the display is as follows:
* Init_LCD(); Initialise the serial port and set up the display.
*
* Clear the display.
* The font colour is set to white and background colour to black.
*
* DisplaySetFontColour(COL_YELLOW);
* set the font colour to desired colour
* DisplaySetBackColour(COL_BLUE);
* set the background colour to desired value
* DisplayCenter(1,"Renesas");
* write a title on line 1 of the display.
*
* Note: Line 0 is the top line.
***********************************************************************************************************************/
/***********************************************************************************************************************
* History : DD.MM.YYYY Version Description
* : 21.04.2015 1.00
***********************************************************************************************************************/
/***********************************************************************************************************************
User Includes (Project Level Includes)
***********************************************************************************************************************/
/* Defines standard variable types used in this file */
#include <stdint.h>
#include "iodefine.h"
/***********************************************************************************************************************
Macro Definitions
***********************************************************************************************************************/
/* Multiple inclusion prevention macro */
#ifndef LCD_PMOD_H
#define LCD_PMOD_H
/***********************************************************************************************************************
Macro Definitions for Okaya display on PMOD connector
***********************************************************************************************************************/
/***********************************************************************************************************************
* SCREEN
*
* The screen size is 128 x 128 pixels, with coordinate 0,0 at the top left.
* The display controller is ST7735 or ST7715.
*
***********************************************************************************************************************/
/* 16 lines @ 8 bits = 128. */
#define SCREEN_HEIGHT (128)
#define SCREEN_WIDTH (128)
#ifndef USE_PMOD2
/* DATA/COMMAND select pin */
#define DATA_CMD_PIN (PORT7.PODR.BIT.B6)
/* Backlight enable pin */
#define BL_ENABLE_PIN (PORT7.PODR.BIT.B4)
/* Reset pin */
#define RESET_PIN (PORT6.PODR.BIT.B7)
#else
/* DATA/COMMAND select pin */
#define DATA_CMD_PIN (PORTM.PODR.BIT.B2)
/* Backlight enable pin */
#define BL_ENABLE_PIN (PORTM.PODR.BIT.B3)
/* Reset pin */
#define RESET_PIN (PORT5.PODR.BIT.B1)
#endif
/* Automatic calculation of parameters */
/* including a space */
#define FONT_WIDTH (6u)
/* including 1 pixel space */
#define FONT_HEIGHT (8u)
#define MAX_LINES (SCREEN_HEIGHT / FONT_HEIGHT)
#define CHAR_PER_LINE (SCREEN_WIDTH / FONT_WIDTH)
/* Allow 2 pixel margin on the left and the top */
#define LEFT_MARGIN (2u)
#define TOP_MARGIN (3u)
#define CR (0x0d)
#define LF (0x0a)
#define BS (0x08)
/***********************************************************************************************************************
* DISPLAY COLOUR DEFINITIONS (16 bits) R5G6B5 format
*
* Only Primary & secondary colours are defined here. Other colours can be
* created using RGB values.
***********************************************************************************************************************/
#define COL_BLACK (0x0000)
#define COL_RED (0xF800)
#define COL_GREEN (0x07E0)
#define COL_BLUE (0x001F)
#define COL_YELLOW (0xFFE0)
#define COL_CYAN (0x07FF)
#define COL_MAGENTA (0xF81F)
#define COL_WHITE (0xFFFF)
/***********************************************************************************************************************
DISPLAY COMMAND SET ST7735
***********************************************************************************************************************/
#define ST7735_NOP (0x0)
#define ST7735_SWRESET (0x01)
#define ST7735_SLPIN (0x10)
#define ST7735_SLPOUT (0x11)
#define ST7735_PTLON (0x12)
#define ST7735_NORON (0x13)
#define ST7735_INVOFF (0x20)
#define ST7735_INVON (0x21)
#define ST7735_DISPOFF (0x28)
#define ST7735_DISPON (0x29)
#define ST7735_CASET (0x2A)
#define ST7735_RASET (0x2B)
#define ST7735_RAMWR (0x2C)
#define ST7735_COLMOD (0x3A)
#define ST7735_MADCTL (0x36)
#define ST7735_FRMCTR1 (0xB1)
#define ST7735_INVCTR (0xB4)
#define ST7735_DISSET5 (0xB6)
#define ST7735_PWCTR1 (0xC0)
#define ST7735_PWCTR2 (0xC1)
#define ST7735_PWCTR3 (0xC2)
#define ST7735_VMCTR1 (0xC5)
#define ST7735_PWCTR6 (0xFC)
#define ST7735_GMCTRP1 (0xE0)
#define ST7735_GMCTRN1 (0xE1)
/* delay for delay counter */
#define DELAY_TIMING (0x08)
/***********************************************************************************************************************
* Function Prototypes
***********************************************************************************************************************/
/* Initialises the debug LCD */
void lcd_init (void);
/* Display string at specific line of display */
void display_lcd (uint8_t const line, uint8_t const column, uint8_t const * string);
/* Display the string at current cursor position */
void display_str (uint8_t const * str);
/* Display the sting at the centre of the specified line */
void display_center (uint8_t const line_num, uint8_t * const str);
/* Clears the display */
void clear_display (uint16_t colour);
/* Clear a specified line */
void display_clear_line(uint8_t line_num);
/* Set the current cursor position */
void display_set_cursor (uint8_t const x, uint8_t const y);
/* Delay function */
void display_delay_us (uint32_t time_us);
void display_delay_ms (uint32_t time_ms);
/* Set Font colour */
void display_set_font_colour (uint16_t const col);
/* Set Background colour */
void display_set_back_colour (uint16_t const col);
/* Simple image blit */
void display_image (uint8_t *image, uint8_t image_width,
uint8_t image_height, uint8_t loc_x, uint8_t loc_y);
/* Enable display */
void display_on (void);
/* Disable display */
void display_off (void);
/* LCD_PMOD_H */
#endif