GPS Tracker with a TFT display, GPLV3

Dependencies:   MAX17055 MAX32620FTHR MAX77650 SerialGPS

Committer:
DimiterK
Date:
Sat Aug 18 22:34:58 2018 +0000
Revision:
0:48d0ba737b93
GPS tracker , Hackster Contest, August 2018; Release under GPLv3,

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DimiterK 0:48d0ba737b93 1
DimiterK 0:48d0ba737b93 2 /***********************************************************************************************************************
DimiterK 0:48d0ba737b93 3 * | file : LCD_Driver.c
DimiterK 0:48d0ba737b93 4 * | version : V1.0
DimiterK 0:48d0ba737b93 5 * | date : 2017-10-16
DimiterK 0:48d0ba737b93 6 * | function : On the ST7735S chip driver and clear screen, drawing lines, drawing, writing
DimiterK 0:48d0ba737b93 7 and other functions to achieve
DimiterK 0:48d0ba737b93 8 ***********************************************************************************************************************/
DimiterK 0:48d0ba737b93 9
DimiterK 0:48d0ba737b93 10 #include "LCD_Driver.h"
DimiterK 0:48d0ba737b93 11
DimiterK 0:48d0ba737b93 12 #include <stdlib.h> //itoa()
DimiterK 0:48d0ba737b93 13 #include <stdio.h>
DimiterK 0:48d0ba737b93 14 #include "fonts.h"
DimiterK 0:48d0ba737b93 15
DimiterK 0:48d0ba737b93 16 LCD_DIS sLCD_DIS;
DimiterK 0:48d0ba737b93 17
DimiterK 0:48d0ba737b93 18 /***********************************************************************************************************************
DimiterK 0:48d0ba737b93 19 ------------------------------------------------------------------------
DimiterK 0:48d0ba737b93 20 |\\\ ///|
DimiterK 0:48d0ba737b93 21 |\\\ Drive layer ///|
DimiterK 0:48d0ba737b93 22 ------------------------------------------------------------------------
DimiterK 0:48d0ba737b93 23 ***********************************************************************************************************************/
DimiterK 0:48d0ba737b93 24 /*******************************************************************************
DimiterK 0:48d0ba737b93 25 function:
DimiterK 0:48d0ba737b93 26 Hardware reset
DimiterK 0:48d0ba737b93 27 *******************************************************************************/
DimiterK 0:48d0ba737b93 28 SPI spi0(P0_5, P0_6, P0_4); // mosi, miso, sclk
DimiterK 0:48d0ba737b93 29
DimiterK 0:48d0ba737b93 30 DigitalOut cs0(P0_7);
DimiterK 0:48d0ba737b93 31 DigitalOut rst(P1_5);
DimiterK 0:48d0ba737b93 32 DigitalOut dc(P1_4);
DimiterK 0:48d0ba737b93 33
DimiterK 0:48d0ba737b93 34 static void LCD_Reset(void)
DimiterK 0:48d0ba737b93 35 {
DimiterK 0:48d0ba737b93 36 RST_HIGH();
DimiterK 0:48d0ba737b93 37 wait_ms(100);
DimiterK 0:48d0ba737b93 38 RST_LOW();
DimiterK 0:48d0ba737b93 39 wait_ms(100);
DimiterK 0:48d0ba737b93 40 RST_HIGH();
DimiterK 0:48d0ba737b93 41 wait_ms(100);
DimiterK 0:48d0ba737b93 42 }
DimiterK 0:48d0ba737b93 43
DimiterK 0:48d0ba737b93 44 /*******************************************************************************
DimiterK 0:48d0ba737b93 45 function:
DimiterK 0:48d0ba737b93 46 Write register address and data
DimiterK 0:48d0ba737b93 47 *******************************************************************************/
DimiterK 0:48d0ba737b93 48 static void LCD_WriteReg(uint8_t Reg)
DimiterK 0:48d0ba737b93 49 {
DimiterK 0:48d0ba737b93 50 DC_LOW();
DimiterK 0:48d0ba737b93 51 cs0 = 0;
DimiterK 0:48d0ba737b93 52 spi0.write(Reg);
DimiterK 0:48d0ba737b93 53 cs0 = 1;
DimiterK 0:48d0ba737b93 54 }
DimiterK 0:48d0ba737b93 55
DimiterK 0:48d0ba737b93 56 static void LCD_WriteData_8Bit(uint8_t Data)
DimiterK 0:48d0ba737b93 57 {
DimiterK 0:48d0ba737b93 58 DC_HIGH();
DimiterK 0:48d0ba737b93 59 cs0 = 0;
DimiterK 0:48d0ba737b93 60 spi0.write(Data);
DimiterK 0:48d0ba737b93 61 cs0 = 1;
DimiterK 0:48d0ba737b93 62 }
DimiterK 0:48d0ba737b93 63
DimiterK 0:48d0ba737b93 64
DimiterK 0:48d0ba737b93 65 static void LCD_WriteData_NLen16Bit(uint16_t Data,uint32_t DataLen)
DimiterK 0:48d0ba737b93 66 {
DimiterK 0:48d0ba737b93 67 uint32_t i;
DimiterK 0:48d0ba737b93 68 DC_HIGH();
DimiterK 0:48d0ba737b93 69 cs0 = 0;
DimiterK 0:48d0ba737b93 70 for(i = 0; i < DataLen; i++) {
DimiterK 0:48d0ba737b93 71 spi0.write( (uint8_t)(Data >> 8) );
DimiterK 0:48d0ba737b93 72 spi0.write((uint8_t)(Data & 0XFF) );
DimiterK 0:48d0ba737b93 73 }
DimiterK 0:48d0ba737b93 74 cs0 = 1;
DimiterK 0:48d0ba737b93 75 }
DimiterK 0:48d0ba737b93 76
DimiterK 0:48d0ba737b93 77 /*******************************************************************************
DimiterK 0:48d0ba737b93 78 function:
DimiterK 0:48d0ba737b93 79 Common register initialization
DimiterK 0:48d0ba737b93 80 *******************************************************************************/
DimiterK 0:48d0ba737b93 81 static void LCD_InitReg(void)
DimiterK 0:48d0ba737b93 82 {
DimiterK 0:48d0ba737b93 83 spi0.frequency(4000000);
DimiterK 0:48d0ba737b93 84 cs0 = 1;
DimiterK 0:48d0ba737b93 85
DimiterK 0:48d0ba737b93 86 //ST7735R Frame Rate
DimiterK 0:48d0ba737b93 87 LCD_WriteReg(0xB1);
DimiterK 0:48d0ba737b93 88 LCD_WriteData_8Bit(0x01);
DimiterK 0:48d0ba737b93 89 LCD_WriteData_8Bit(0x2C);
DimiterK 0:48d0ba737b93 90 LCD_WriteData_8Bit(0x2D);
DimiterK 0:48d0ba737b93 91
DimiterK 0:48d0ba737b93 92 LCD_WriteReg(0xB2);
DimiterK 0:48d0ba737b93 93 LCD_WriteData_8Bit(0x01);
DimiterK 0:48d0ba737b93 94 LCD_WriteData_8Bit(0x2C);
DimiterK 0:48d0ba737b93 95 LCD_WriteData_8Bit(0x2D);
DimiterK 0:48d0ba737b93 96
DimiterK 0:48d0ba737b93 97 LCD_WriteReg(0xB3);
DimiterK 0:48d0ba737b93 98 LCD_WriteData_8Bit(0x01);
DimiterK 0:48d0ba737b93 99 LCD_WriteData_8Bit(0x2C);
DimiterK 0:48d0ba737b93 100 LCD_WriteData_8Bit(0x2D);
DimiterK 0:48d0ba737b93 101 LCD_WriteData_8Bit(0x01);
DimiterK 0:48d0ba737b93 102 LCD_WriteData_8Bit(0x2C);
DimiterK 0:48d0ba737b93 103 LCD_WriteData_8Bit(0x2D);
DimiterK 0:48d0ba737b93 104
DimiterK 0:48d0ba737b93 105 LCD_WriteReg(0xB4); //Column inversion
DimiterK 0:48d0ba737b93 106 LCD_WriteData_8Bit(0x07);
DimiterK 0:48d0ba737b93 107
DimiterK 0:48d0ba737b93 108 //ST7735R Power Sequence
DimiterK 0:48d0ba737b93 109 LCD_WriteReg(0xC0);
DimiterK 0:48d0ba737b93 110 LCD_WriteData_8Bit(0xA2);
DimiterK 0:48d0ba737b93 111 LCD_WriteData_8Bit(0x02);
DimiterK 0:48d0ba737b93 112 LCD_WriteData_8Bit(0x84);
DimiterK 0:48d0ba737b93 113 LCD_WriteReg(0xC1);
DimiterK 0:48d0ba737b93 114 LCD_WriteData_8Bit(0xC5);
DimiterK 0:48d0ba737b93 115
DimiterK 0:48d0ba737b93 116 LCD_WriteReg(0xC2);
DimiterK 0:48d0ba737b93 117 LCD_WriteData_8Bit(0x0A);
DimiterK 0:48d0ba737b93 118 LCD_WriteData_8Bit(0x00);
DimiterK 0:48d0ba737b93 119
DimiterK 0:48d0ba737b93 120 LCD_WriteReg(0xC3);
DimiterK 0:48d0ba737b93 121 LCD_WriteData_8Bit(0x8A);
DimiterK 0:48d0ba737b93 122 LCD_WriteData_8Bit(0x2A);
DimiterK 0:48d0ba737b93 123 LCD_WriteReg(0xC4);
DimiterK 0:48d0ba737b93 124 LCD_WriteData_8Bit(0x8A);
DimiterK 0:48d0ba737b93 125 LCD_WriteData_8Bit(0xEE);
DimiterK 0:48d0ba737b93 126
DimiterK 0:48d0ba737b93 127 LCD_WriteReg(0xC5); //VCOM
DimiterK 0:48d0ba737b93 128 LCD_WriteData_8Bit(0x0E);
DimiterK 0:48d0ba737b93 129
DimiterK 0:48d0ba737b93 130 //ST7735R Gamma Sequence
DimiterK 0:48d0ba737b93 131 LCD_WriteReg(0xe0);
DimiterK 0:48d0ba737b93 132 LCD_WriteData_8Bit(0x0f);
DimiterK 0:48d0ba737b93 133 LCD_WriteData_8Bit(0x1a);
DimiterK 0:48d0ba737b93 134 LCD_WriteData_8Bit(0x0f);
DimiterK 0:48d0ba737b93 135 LCD_WriteData_8Bit(0x18);
DimiterK 0:48d0ba737b93 136 LCD_WriteData_8Bit(0x2f);
DimiterK 0:48d0ba737b93 137 LCD_WriteData_8Bit(0x28);
DimiterK 0:48d0ba737b93 138 LCD_WriteData_8Bit(0x20);
DimiterK 0:48d0ba737b93 139 LCD_WriteData_8Bit(0x22);
DimiterK 0:48d0ba737b93 140 LCD_WriteData_8Bit(0x1f);
DimiterK 0:48d0ba737b93 141 LCD_WriteData_8Bit(0x1b);
DimiterK 0:48d0ba737b93 142 LCD_WriteData_8Bit(0x23);
DimiterK 0:48d0ba737b93 143 LCD_WriteData_8Bit(0x37);
DimiterK 0:48d0ba737b93 144 LCD_WriteData_8Bit(0x00);
DimiterK 0:48d0ba737b93 145 LCD_WriteData_8Bit(0x07);
DimiterK 0:48d0ba737b93 146 LCD_WriteData_8Bit(0x02);
DimiterK 0:48d0ba737b93 147 LCD_WriteData_8Bit(0x10);
DimiterK 0:48d0ba737b93 148
DimiterK 0:48d0ba737b93 149 LCD_WriteReg(0xe1);
DimiterK 0:48d0ba737b93 150 LCD_WriteData_8Bit(0x0f);
DimiterK 0:48d0ba737b93 151 LCD_WriteData_8Bit(0x1b);
DimiterK 0:48d0ba737b93 152 LCD_WriteData_8Bit(0x0f);
DimiterK 0:48d0ba737b93 153 LCD_WriteData_8Bit(0x17);
DimiterK 0:48d0ba737b93 154 LCD_WriteData_8Bit(0x33);
DimiterK 0:48d0ba737b93 155 LCD_WriteData_8Bit(0x2c);
DimiterK 0:48d0ba737b93 156 LCD_WriteData_8Bit(0x29);
DimiterK 0:48d0ba737b93 157 LCD_WriteData_8Bit(0x2e);
DimiterK 0:48d0ba737b93 158 LCD_WriteData_8Bit(0x30);
DimiterK 0:48d0ba737b93 159 LCD_WriteData_8Bit(0x30);
DimiterK 0:48d0ba737b93 160 LCD_WriteData_8Bit(0x39);
DimiterK 0:48d0ba737b93 161 LCD_WriteData_8Bit(0x3f);
DimiterK 0:48d0ba737b93 162 LCD_WriteData_8Bit(0x00);
DimiterK 0:48d0ba737b93 163 LCD_WriteData_8Bit(0x07);
DimiterK 0:48d0ba737b93 164 LCD_WriteData_8Bit(0x03);
DimiterK 0:48d0ba737b93 165 LCD_WriteData_8Bit(0x10);
DimiterK 0:48d0ba737b93 166
DimiterK 0:48d0ba737b93 167 LCD_WriteReg(0xF0); //Enable test command
DimiterK 0:48d0ba737b93 168 LCD_WriteData_8Bit(0x01);
DimiterK 0:48d0ba737b93 169
DimiterK 0:48d0ba737b93 170 LCD_WriteReg(0xF6); //Disable ram power save mode
DimiterK 0:48d0ba737b93 171 LCD_WriteData_8Bit(0x00);
DimiterK 0:48d0ba737b93 172
DimiterK 0:48d0ba737b93 173 LCD_WriteReg(0x3A); //65k mode
DimiterK 0:48d0ba737b93 174 LCD_WriteData_8Bit(0x05);
DimiterK 0:48d0ba737b93 175
DimiterK 0:48d0ba737b93 176 }
DimiterK 0:48d0ba737b93 177
DimiterK 0:48d0ba737b93 178
DimiterK 0:48d0ba737b93 179 /********************************************************************************
DimiterK 0:48d0ba737b93 180 function: Set the display scan and color transfer modes
DimiterK 0:48d0ba737b93 181 parameter:
DimiterK 0:48d0ba737b93 182 Scan_dir : Scan direction
DimiterK 0:48d0ba737b93 183 Colorchose : RGB or GBR color format
DimiterK 0:48d0ba737b93 184 ********************************************************************************/
DimiterK 0:48d0ba737b93 185 void LCD_SetGramScanWay(LCD_SCAN_DIR Scan_dir)
DimiterK 0:48d0ba737b93 186 {
DimiterK 0:48d0ba737b93 187 //Get the screen scan direction
DimiterK 0:48d0ba737b93 188 sLCD_DIS.LCD_Scan_Dir = Scan_dir;
DimiterK 0:48d0ba737b93 189
DimiterK 0:48d0ba737b93 190 //Get GRAM and LCD width and height
DimiterK 0:48d0ba737b93 191 if(Scan_dir == L2R_U2D || Scan_dir == L2R_D2U || Scan_dir == R2L_U2D || Scan_dir == R2L_D2U) {
DimiterK 0:48d0ba737b93 192 sLCD_DIS.LCD_Dis_Column = LCD_HEIGHT ;
DimiterK 0:48d0ba737b93 193 sLCD_DIS.LCD_Dis_Page = LCD_WIDTH ;
DimiterK 0:48d0ba737b93 194 } else {
DimiterK 0:48d0ba737b93 195 sLCD_DIS.LCD_Dis_Column = LCD_WIDTH ;
DimiterK 0:48d0ba737b93 196 sLCD_DIS.LCD_Dis_Page = LCD_HEIGHT ;
DimiterK 0:48d0ba737b93 197 }
DimiterK 0:48d0ba737b93 198
DimiterK 0:48d0ba737b93 199 // Gets the scan direction of GRAM
DimiterK 0:48d0ba737b93 200 uint16_t MemoryAccessReg_Data=0; //0x36
DimiterK 0:48d0ba737b93 201 switch (Scan_dir) {
DimiterK 0:48d0ba737b93 202 case L2R_U2D:
DimiterK 0:48d0ba737b93 203 MemoryAccessReg_Data = 0X00 | 0x00;//x Scan direction | y Scan direction
DimiterK 0:48d0ba737b93 204 break;
DimiterK 0:48d0ba737b93 205 case L2R_D2U:
DimiterK 0:48d0ba737b93 206 MemoryAccessReg_Data = 0x00 | 0x80;//0xC8 | 0X10
DimiterK 0:48d0ba737b93 207 break;
DimiterK 0:48d0ba737b93 208 case R2L_U2D:// 0X4
DimiterK 0:48d0ba737b93 209 MemoryAccessReg_Data = 0x40 | 0x00;
DimiterK 0:48d0ba737b93 210 break;
DimiterK 0:48d0ba737b93 211 case R2L_D2U:// 0XC
DimiterK 0:48d0ba737b93 212 MemoryAccessReg_Data = 0x40 | 0x80;
DimiterK 0:48d0ba737b93 213 break;
DimiterK 0:48d0ba737b93 214 case U2D_L2R://0X2
DimiterK 0:48d0ba737b93 215 MemoryAccessReg_Data = 0X00 | 0X00 | 0x20;
DimiterK 0:48d0ba737b93 216 break;
DimiterK 0:48d0ba737b93 217 case U2D_R2L://0X6
DimiterK 0:48d0ba737b93 218 MemoryAccessReg_Data = 0x00 | 0X40 | 0x20;
DimiterK 0:48d0ba737b93 219 break;
DimiterK 0:48d0ba737b93 220 case D2U_L2R://0XA
DimiterK 0:48d0ba737b93 221 MemoryAccessReg_Data = 0x80 | 0x00 | 0x20;
DimiterK 0:48d0ba737b93 222 break;
DimiterK 0:48d0ba737b93 223 case D2U_R2L://0XE
DimiterK 0:48d0ba737b93 224 MemoryAccessReg_Data = 0x40 | 0x80 | 0x20;
DimiterK 0:48d0ba737b93 225 break;
DimiterK 0:48d0ba737b93 226 }
DimiterK 0:48d0ba737b93 227
DimiterK 0:48d0ba737b93 228 //please set (MemoryAccessReg_Data & 0x10) != 1
DimiterK 0:48d0ba737b93 229 if((MemoryAccessReg_Data && 0x20) != 1) {
DimiterK 0:48d0ba737b93 230 sLCD_DIS.LCD_X_Adjust = LCD_X;
DimiterK 0:48d0ba737b93 231 sLCD_DIS.LCD_Y_Adjust = LCD_Y;
DimiterK 0:48d0ba737b93 232 } else {
DimiterK 0:48d0ba737b93 233 sLCD_DIS.LCD_X_Adjust = LCD_Y;
DimiterK 0:48d0ba737b93 234 sLCD_DIS.LCD_Y_Adjust = LCD_X;
DimiterK 0:48d0ba737b93 235 }
DimiterK 0:48d0ba737b93 236
DimiterK 0:48d0ba737b93 237 // Set the read / write scan direction of the frame memory
DimiterK 0:48d0ba737b93 238 LCD_WriteReg(0x36); //MX, MY, RGB mode
DimiterK 0:48d0ba737b93 239 #if defined(LCD_1IN44)
DimiterK 0:48d0ba737b93 240 LCD_WriteData_8Bit( MemoryAccessReg_Data | 0x08); //0x08 set RGB
DimiterK 0:48d0ba737b93 241 #elif defined(LCD_1IN8)
DimiterK 0:48d0ba737b93 242 LCD_WriteData_8Bit( MemoryAccessReg_Data & 0xf7); //RGB color filter panel
DimiterK 0:48d0ba737b93 243 #endif
DimiterK 0:48d0ba737b93 244
DimiterK 0:48d0ba737b93 245 }
DimiterK 0:48d0ba737b93 246
DimiterK 0:48d0ba737b93 247 /***********************************************************************************************************************
DimiterK 0:48d0ba737b93 248 ------------------------------------------------------------------------
DimiterK 0:48d0ba737b93 249 |\\\ ///|
DimiterK 0:48d0ba737b93 250 |\\\ App layer ///|
DimiterK 0:48d0ba737b93 251 ------------------------------------------------------------------------
DimiterK 0:48d0ba737b93 252 ***********************************************************************************************************************/
DimiterK 0:48d0ba737b93 253
DimiterK 0:48d0ba737b93 254 /********************************************************************************
DimiterK 0:48d0ba737b93 255 function:
DimiterK 0:48d0ba737b93 256 initialization
DimiterK 0:48d0ba737b93 257 ********************************************************************************/
DimiterK 0:48d0ba737b93 258 void LCD_Init( LCD_SCAN_DIR Lcd_ScanDir )
DimiterK 0:48d0ba737b93 259 {
DimiterK 0:48d0ba737b93 260
DimiterK 0:48d0ba737b93 261 //Hardware reset
DimiterK 0:48d0ba737b93 262 LCD_Reset();
DimiterK 0:48d0ba737b93 263
DimiterK 0:48d0ba737b93 264 //Set the initialization register
DimiterK 0:48d0ba737b93 265 LCD_InitReg();
DimiterK 0:48d0ba737b93 266
DimiterK 0:48d0ba737b93 267 //Set the display scan and color transfer modes
DimiterK 0:48d0ba737b93 268 LCD_SetGramScanWay( Lcd_ScanDir );
DimiterK 0:48d0ba737b93 269 wait_ms(200);
DimiterK 0:48d0ba737b93 270
DimiterK 0:48d0ba737b93 271 //sleep out
DimiterK 0:48d0ba737b93 272 LCD_WriteReg(0x11);
DimiterK 0:48d0ba737b93 273 wait_ms(120);
DimiterK 0:48d0ba737b93 274
DimiterK 0:48d0ba737b93 275 //Turn on the LCD display
DimiterK 0:48d0ba737b93 276 LCD_WriteReg(0x29);
DimiterK 0:48d0ba737b93 277 }
DimiterK 0:48d0ba737b93 278
DimiterK 0:48d0ba737b93 279 /********************************************************************************
DimiterK 0:48d0ba737b93 280 function: Sets the start position and size of the display area
DimiterK 0:48d0ba737b93 281 parameter:
DimiterK 0:48d0ba737b93 282 Xstart : X direction Start coordinates
DimiterK 0:48d0ba737b93 283 Ystart : Y direction Start coordinates
DimiterK 0:48d0ba737b93 284 Xend : X direction end coordinates
DimiterK 0:48d0ba737b93 285 Yend : Y direction end coordinates
DimiterK 0:48d0ba737b93 286 ********************************************************************************/
DimiterK 0:48d0ba737b93 287 void LCD_SetWindows( POINT Xstart, POINT Ystart, POINT Xend, POINT Yend )
DimiterK 0:48d0ba737b93 288 {
DimiterK 0:48d0ba737b93 289
DimiterK 0:48d0ba737b93 290 //set the X coordinates
DimiterK 0:48d0ba737b93 291 LCD_WriteReg ( 0x2A );
DimiterK 0:48d0ba737b93 292 LCD_WriteData_8Bit ( 0x00 ); //Set the horizontal starting point to the high octet
DimiterK 0:48d0ba737b93 293 LCD_WriteData_8Bit ( (Xstart & 0xff) + sLCD_DIS.LCD_X_Adjust); //Set the horizontal starting point to the low octet
DimiterK 0:48d0ba737b93 294 LCD_WriteData_8Bit ( 0x00 ); //Set the horizontal end to the high octet
DimiterK 0:48d0ba737b93 295 LCD_WriteData_8Bit ( (( Xend - 1 ) & 0xff) + sLCD_DIS.LCD_X_Adjust); //Set the horizontal end to the low octet
DimiterK 0:48d0ba737b93 296
DimiterK 0:48d0ba737b93 297 //set the Y coordinates
DimiterK 0:48d0ba737b93 298 LCD_WriteReg ( 0x2B );
DimiterK 0:48d0ba737b93 299 LCD_WriteData_8Bit ( 0x00 );
DimiterK 0:48d0ba737b93 300 LCD_WriteData_8Bit ( (Ystart & 0xff) + sLCD_DIS.LCD_Y_Adjust);
DimiterK 0:48d0ba737b93 301 LCD_WriteData_8Bit ( 0x00 );
DimiterK 0:48d0ba737b93 302 LCD_WriteData_8Bit ( ( (Yend - 1) & 0xff )+ sLCD_DIS.LCD_Y_Adjust);
DimiterK 0:48d0ba737b93 303
DimiterK 0:48d0ba737b93 304 LCD_WriteReg(0x2C);
DimiterK 0:48d0ba737b93 305
DimiterK 0:48d0ba737b93 306 }
DimiterK 0:48d0ba737b93 307
DimiterK 0:48d0ba737b93 308 /********************************************************************************
DimiterK 0:48d0ba737b93 309 function: Set the display point (Xpoint, Ypoint)
DimiterK 0:48d0ba737b93 310 parameter:
DimiterK 0:48d0ba737b93 311 xStart : X direction Start coordinates
DimiterK 0:48d0ba737b93 312 xEnd : X direction end coordinates
DimiterK 0:48d0ba737b93 313 ********************************************************************************/
DimiterK 0:48d0ba737b93 314 void LCD_SetCursor ( POINT Xpoint, POINT Ypoint )
DimiterK 0:48d0ba737b93 315 {
DimiterK 0:48d0ba737b93 316 LCD_SetWindows ( Xpoint, Ypoint, Xpoint , Ypoint );
DimiterK 0:48d0ba737b93 317 }
DimiterK 0:48d0ba737b93 318
DimiterK 0:48d0ba737b93 319 /********************************************************************************
DimiterK 0:48d0ba737b93 320 function: Set show color
DimiterK 0:48d0ba737b93 321 parameter:
DimiterK 0:48d0ba737b93 322 Color : Set show color
DimiterK 0:48d0ba737b93 323 ********************************************************************************/
DimiterK 0:48d0ba737b93 324 void LCD_SetColor( COLOR Color ,POINT Xpoint, POINT Ypoint)
DimiterK 0:48d0ba737b93 325 {
DimiterK 0:48d0ba737b93 326 LCD_WriteData_NLen16Bit(Color ,(uint32_t)Xpoint * (uint32_t)Ypoint);
DimiterK 0:48d0ba737b93 327 }
DimiterK 0:48d0ba737b93 328
DimiterK 0:48d0ba737b93 329 /********************************************************************************
DimiterK 0:48d0ba737b93 330 function: Point (Xpoint, Ypoint) Fill the color
DimiterK 0:48d0ba737b93 331 parameter:
DimiterK 0:48d0ba737b93 332 Xpoint : The x coordinate of the point
DimiterK 0:48d0ba737b93 333 Ypoint : The y coordinate of the point
DimiterK 0:48d0ba737b93 334 Color : Set the color
DimiterK 0:48d0ba737b93 335 ********************************************************************************/
DimiterK 0:48d0ba737b93 336 void LCD_SetPointlColor ( POINT Xpoint, POINT Ypoint, COLOR Color )
DimiterK 0:48d0ba737b93 337 {
DimiterK 0:48d0ba737b93 338 if ( ( Xpoint <= sLCD_DIS.LCD_Dis_Column ) && ( Ypoint <= sLCD_DIS.LCD_Dis_Page ) ) {
DimiterK 0:48d0ba737b93 339 LCD_SetCursor (Xpoint, Ypoint);
DimiterK 0:48d0ba737b93 340 LCD_SetColor ( Color , 1 , 1);
DimiterK 0:48d0ba737b93 341 }
DimiterK 0:48d0ba737b93 342 }
DimiterK 0:48d0ba737b93 343
DimiterK 0:48d0ba737b93 344 /********************************************************************************
DimiterK 0:48d0ba737b93 345 function: Fill the area with the color
DimiterK 0:48d0ba737b93 346 parameter:
DimiterK 0:48d0ba737b93 347 Xstart : Start point x coordinate
DimiterK 0:48d0ba737b93 348 Ystart : Start point y coordinate
DimiterK 0:48d0ba737b93 349 Xend : End point coordinates
DimiterK 0:48d0ba737b93 350 Yend : End point coordinates
DimiterK 0:48d0ba737b93 351 Color : Set the color
DimiterK 0:48d0ba737b93 352 ********************************************************************************/
DimiterK 0:48d0ba737b93 353 void LCD_SetArealColor (POINT Xstart, POINT Ystart, POINT Xend, POINT Yend, COLOR Color)
DimiterK 0:48d0ba737b93 354 {
DimiterK 0:48d0ba737b93 355 if((Xend > Xstart) && (Yend > Ystart)) {
DimiterK 0:48d0ba737b93 356 LCD_SetWindows( Xstart , Ystart , Xend , Yend );
DimiterK 0:48d0ba737b93 357 LCD_SetColor ( Color ,Xend - Xstart , Yend - Ystart );
DimiterK 0:48d0ba737b93 358 }
DimiterK 0:48d0ba737b93 359 }
DimiterK 0:48d0ba737b93 360
DimiterK 0:48d0ba737b93 361 /********************************************************************************
DimiterK 0:48d0ba737b93 362 function:
DimiterK 0:48d0ba737b93 363 Clear screen
DimiterK 0:48d0ba737b93 364 ********************************************************************************/
DimiterK 0:48d0ba737b93 365 void LCD_Clear(COLOR Color)
DimiterK 0:48d0ba737b93 366 {
DimiterK 0:48d0ba737b93 367 LCD_SetArealColor(0,0, sLCD_DIS.LCD_Dis_Column , sLCD_DIS.LCD_Dis_Page, Color);
DimiterK 0:48d0ba737b93 368 }
DimiterK 0:48d0ba737b93 369
DimiterK 0:48d0ba737b93 370 /********************************************************************************************/
DimiterK 0:48d0ba737b93 371
DimiterK 0:48d0ba737b93 372 void DC_LOW(void)
DimiterK 0:48d0ba737b93 373 {
DimiterK 0:48d0ba737b93 374 dc = 0;
DimiterK 0:48d0ba737b93 375 }
DimiterK 0:48d0ba737b93 376 void DC_HIGH(void)
DimiterK 0:48d0ba737b93 377 {
DimiterK 0:48d0ba737b93 378 dc= 1;
DimiterK 0:48d0ba737b93 379 }
DimiterK 0:48d0ba737b93 380
DimiterK 0:48d0ba737b93 381 void RST_LOW(void)
DimiterK 0:48d0ba737b93 382 {
DimiterK 0:48d0ba737b93 383 rst = 0;
DimiterK 0:48d0ba737b93 384 }
DimiterK 0:48d0ba737b93 385 void RST_HIGH(void)
DimiterK 0:48d0ba737b93 386 {
DimiterK 0:48d0ba737b93 387 rst = 1;
DimiterK 0:48d0ba737b93 388 }
DimiterK 0:48d0ba737b93 389
DimiterK 0:48d0ba737b93 390