209 lines
7.2 KiB
C
209 lines
7.2 KiB
C
/*!
|
|
\file gd32f303e_lcd_eval.h
|
|
\brief LCD driver header file
|
|
*/
|
|
|
|
/*
|
|
Copyright (C) 2017 GigaDevice
|
|
|
|
2017-05-19, V1.0.0, demo for GD32F30x
|
|
*/
|
|
|
|
#ifndef GD32F303E_LCD_EVAL_H
|
|
#define GD32F303E_LCD_EVAL_H
|
|
|
|
#include "gd32f30x.h"
|
|
|
|
#define BANK0_LCD_D ((uint32_t)0x65000000) /*!< LCD data address */
|
|
#define BANK0_LCD_C ((uint32_t)0x64000000) /*!< LCD register address */
|
|
|
|
/* LCD registers */
|
|
#define R0 0x00
|
|
#define R1 0x01
|
|
#define R2 0x02
|
|
#define R3 0x03
|
|
#define R4 0x04
|
|
#define R5 0x05
|
|
#define R6 0x06
|
|
#define R7 0x07
|
|
#define R8 0x08
|
|
#define R9 0x09
|
|
#define R10 0x0A
|
|
#define R11 0x0B
|
|
#define R12 0x0C
|
|
#define R13 0x0D
|
|
#define R14 0x0E
|
|
#define R15 0x0F
|
|
#define R16 0x10
|
|
#define R17 0x11
|
|
#define R18 0x12
|
|
#define R19 0x13
|
|
#define R20 0x14
|
|
#define R21 0x15
|
|
#define R22 0x16
|
|
#define R23 0x17
|
|
#define R24 0x18
|
|
#define R25 0x19
|
|
#define R26 0x1A
|
|
#define R27 0x1B
|
|
#define R28 0x1C
|
|
#define R29 0x1D
|
|
#define R30 0x1E
|
|
#define R31 0x1F
|
|
#define R32 0x20
|
|
#define R33 0x21
|
|
#define R34 0x22
|
|
#define R35 0x23
|
|
#define R36 0x24
|
|
#define R37 0x25
|
|
#define R40 0x28
|
|
#define R41 0x29
|
|
#define R43 0x2B
|
|
#define R45 0x2D
|
|
#define R48 0x30
|
|
#define R49 0x31
|
|
#define R50 0x32
|
|
#define R51 0x33
|
|
#define R52 0x34
|
|
#define R53 0x35
|
|
#define R54 0x36
|
|
#define R55 0x37
|
|
#define R56 0x38
|
|
#define R57 0x39
|
|
#define R58 0x3A
|
|
#define R59 0x3B
|
|
#define R60 0x3C
|
|
#define R61 0x3D
|
|
#define R62 0x3E
|
|
#define R63 0x3F
|
|
#define R64 0x40
|
|
#define R65 0x41
|
|
#define R66 0x42
|
|
#define R67 0x43
|
|
#define R68 0x44
|
|
#define R69 0x45
|
|
#define R70 0x46
|
|
#define R71 0x47
|
|
#define R72 0x48
|
|
#define R73 0x49
|
|
#define R74 0x4A
|
|
#define R75 0x4B
|
|
#define R76 0x4C
|
|
#define R77 0x4D
|
|
#define R78 0x4E
|
|
#define R79 0x4F
|
|
#define R80 0x50
|
|
#define R81 0x51
|
|
#define R82 0x52
|
|
#define R83 0x53
|
|
#define R96 0x60
|
|
#define R97 0x61
|
|
#define R106 0x6A
|
|
#define R118 0x76
|
|
#define R128 0x80
|
|
#define R129 0x81
|
|
#define R130 0x82
|
|
#define R131 0x83
|
|
#define R132 0x84
|
|
#define R133 0x85
|
|
#define R134 0x86
|
|
#define R135 0x87
|
|
#define R136 0x88
|
|
#define R137 0x89
|
|
#define R139 0x8B
|
|
#define R140 0x8C
|
|
#define R141 0x8D
|
|
#define R143 0x8F
|
|
#define R144 0x90
|
|
#define R145 0x91
|
|
#define R146 0x92
|
|
#define R147 0x93
|
|
#define R148 0x94
|
|
#define R149 0x95
|
|
#define R150 0x96
|
|
#define R151 0x97
|
|
#define R152 0x98
|
|
#define R153 0x99
|
|
#define R154 0x9A
|
|
#define R157 0x9D
|
|
#define R192 0xC0
|
|
#define R193 0xC1
|
|
#define R229 0xE5
|
|
|
|
/* LCD color */
|
|
#define WHITE 0xFFFF
|
|
#define BLACK 0x0000
|
|
#define GREY 0xF7DE
|
|
#define BLUE 0x001F
|
|
#define BLUE2 0x051F
|
|
#define RED 0xF800
|
|
#define MAGENTA 0xF81F
|
|
#define GREEN 0x07E0
|
|
#define CYAN 0x7FFF
|
|
#define YELLOW 0xFFE0
|
|
|
|
#define LINE0 0
|
|
#define LINE1 24
|
|
#define LINE2 48
|
|
#define LINE3 72
|
|
#define LINE4 96
|
|
#define LINE5 120
|
|
#define LINE6 144
|
|
#define LINE7 168
|
|
#define LINE8 192
|
|
#define LINE9 216
|
|
|
|
/* char format struct definitions */
|
|
typedef struct
|
|
{
|
|
uint16_t font; /*!< the type of font */
|
|
uint16_t direction; /*!< the direction of char */
|
|
uint16_t char_color; /*!< the color of char */
|
|
uint16_t bk_color; /*!< the color of backgroud */
|
|
}char_format_struct;
|
|
|
|
#define CHAR_FONT_8_16 ((uint16_t)0x0000U) /*!< the font of char is 8X16 */
|
|
#define CHAR_FONT_16_24 ((uint16_t)0x0001U) /*!< the font of char is 16X24 */
|
|
|
|
#define CHAR_DIRECTION_HORIZONTAL ((uint16_t)0x0000U) /*!< character display direction is horizontal */
|
|
#define CHAR_DIRECTION_VERTICAL ((uint16_t)0x0001U) /*!< character display direction is vertical */
|
|
|
|
/* lcd peripheral initialize */
|
|
void exmc_lcd_init(void);
|
|
/* initize the LCD */
|
|
void lcd_init(void);
|
|
/* write data to the selected LCD register */
|
|
void lcd_register_write(uint16_t register_id,uint16_t value);
|
|
/* read the value of LCD register */
|
|
uint16_t lcd_register_read(uint8_t register_id);
|
|
/* write command to LCD register */
|
|
void lcd_command_write (uint16_t value);
|
|
/* prepare to write to the LCD GRAM */
|
|
void lcd_gram_write_prepare(void);
|
|
/* write RGB code to the LCD GRAM register */
|
|
void lcd_gram_write(uint16_t rgb_code);
|
|
/* read data from GRAM */
|
|
uint16_t lcd_gram_read(void);
|
|
/* set the curson of LCD */
|
|
void lcd_cursor_set(uint16_t x,uint16_t y);
|
|
/* clear the LCD screen to the specified color */
|
|
void lcd_clear(uint16_t Color);
|
|
/* set the point according to the specified position and color */
|
|
void lcd_point_set(uint16_t x,uint16_t y,uint16_t point);
|
|
/* get the point according to the specified position */
|
|
uint16_t lcd_point_get(uint16_t x,uint16_t y);
|
|
/* set window area */
|
|
void lcd_windows_set(uint16_t start_x,uint16_t start_y,uint16_t end_x,uint16_t end_y);
|
|
/* draw a horizontal line on LCD screen */
|
|
void lcd_hline_draw(uint16_t x,uint16_t start_y,uint16_t end_y,uint16_t color,uint16_t width);
|
|
/* draw a rectangle according to the specified position and color */
|
|
void lcd_rectangle_draw(uint16_t start_x,uint16_t start_y,uint16_t end_x,uint16_t end_y,uint16_t point);
|
|
/* fill the specified color to a rectangle */
|
|
void lcd_rectangle_fill(uint16_t start_x,uint16_t start_y,uint16_t end_x,uint16_t end_y,uint16_t color);
|
|
/* draw a picture on LCD screen according to the specified position */
|
|
void lcd_picture_draw(uint16_t start_x,uint16_t start_y,uint16_t end_x,uint16_t end_y,uint16_t *pic);
|
|
/* display a char on LCD screen according to the specified position */
|
|
void lcd_char_display(uint16_t x,uint16_t y,uint8_t c,char_format_struct c_format);
|
|
|
|
#endif /* GD32F303E_LCD_EVAL_H */
|