/*! \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 */