Две этикетки

This commit is contained in:
Beslan
2022-02-20 12:14:43 +03:00
parent fd7be6b644
commit 6a60cfb872
3 changed files with 213 additions and 193 deletions

View File

@@ -11,166 +11,170 @@ ILI9341::ILI9341(PinName MOSI, PinName MISO, PinName SCK, PinName DC, PinName RS
rst = 1;
osDelay(10);
ThisThread::sleep_for(10ms);
// (void)osDelay(10);
rst = 0;
osDelay(10);
ThisThread::sleep_for(10ms);
// osDelay(10);
rst = 1;
osDelay(10);
ThisThread::sleep_for(10ms);
// osDelay(10);
LCD_WR_REG(0x01); //software reset
osDelay(50);
LCD_WR_REG(0x28);
LCD_WR_REG(0x01U); //software reset
ThisThread::sleep_for(50ms);
// osDelay(50);
LCD_WR_REG(0x28U);
// display off
//---------------------------------------------------------
// magic?
LCD_WR_REG(0xcf);
LCD_WR_Data(0x00);
LCD_WR_Data(0x83);
LCD_WR_Data(0x30);
LCD_WR_REG(0xcfU);
LCD_WR_Data(0x00U);
LCD_WR_Data(0x83U);
LCD_WR_Data(0x30U);
LCD_WR_REG(0xed);
LCD_WR_Data(0x64);
LCD_WR_Data(0x03);
LCD_WR_Data(0x12);
LCD_WR_Data(0x81);
LCD_WR_REG(0xe8);
LCD_WR_Data(0x85);
LCD_WR_Data(0x01);
LCD_WR_Data(0x79);
LCD_WR_REG(0xcb);
LCD_WR_Data(0x39);
LCD_WR_Data(0x2c);
LCD_WR_Data(0x00);
LCD_WR_Data(0x34);
LCD_WR_Data(0x02);
LCD_WR_REG(0xf7);
LCD_WR_Data(0x20);
LCD_WR_REG(0xea);
LCD_WR_Data(0x00);
LCD_WR_Data(0x00);
LCD_WR_REG(0xedU);
LCD_WR_Data(0x64U);
LCD_WR_Data(0x03U);
LCD_WR_Data(0x12U);
LCD_WR_Data(0x81U);
LCD_WR_REG(0xe8U);
LCD_WR_Data(0x85U);
LCD_WR_Data(0x01U);
LCD_WR_Data(0x79U);
LCD_WR_REG(0xcbU);
LCD_WR_Data(0x39U);
LCD_WR_Data(0x2cU);
LCD_WR_Data(0x00U);
LCD_WR_Data(0x34U);
LCD_WR_Data(0x02U);
LCD_WR_REG(0xf7U);
LCD_WR_Data(0x20U);
LCD_WR_REG(0xeaU);
LCD_WR_Data(0x00U);
LCD_WR_Data(0x00U);
//------------power control------------------------------
LCD_WR_REG(0xc0); //power control
LCD_WR_Data(0x26);
LCD_WR_REG(0xc1); //power control
LCD_WR_Data(0x11);
LCD_WR_REG(0xc0U); //power control
LCD_WR_Data(0x26U);
LCD_WR_REG(0xc1U); //power control
LCD_WR_Data(0x11U);
//--------------VCOM
LCD_WR_REG(0xc5); //vcom control
LCD_WR_Data(0x35); //35
LCD_WR_Data(0x3e); //3E
LCD_WR_REG(0xc7); //vcom control
LCD_WR_Data(0xbe); // 0x94
LCD_WR_REG(0xc5U); //vcom control
LCD_WR_Data(0x35U); //35
LCD_WR_Data(0x3eU); //3E
LCD_WR_REG(0xc7U); //vcom control
LCD_WR_Data(0xbeU); // 0x94
//------------memory access control------------------------
LCD_WR_REG(0x36);
LCD_WR_REG(0x36U);
// memory access control
LCD_WR_Data(0xE8U); //Поворот экрана на 0 градусов
// LCD_WR_Data(0x28U); //Поворот экрана на 180 градусов
LCD_WR_REG(0x3a); // pixel format set
LCD_WR_Data(0x55); //16bit /pixel
LCD_WR_REG(0x3aU); // pixel format set
LCD_WR_Data(0x55U); //16bit /pixel
//----------------- frame rate------------------------------
LCD_WR_REG(0xb1);
LCD_WR_REG(0xb1U);
// frame rate
LCD_WR_Data(0x00U);
LCD_WR_Data(0x1BU); //70
//----------------Gamma---------------------------------
LCD_WR_REG(0xf2); // 3Gamma Function Disable
LCD_WR_Data(0x08);
LCD_WR_REG(0x26);
LCD_WR_Data(0x01); // gamma set 4 gamma curve 01/02/04/08
LCD_WR_REG(0xf2U); // 3Gamma Function Disable
LCD_WR_Data(0x08U);
LCD_WR_REG(0x26U);
LCD_WR_Data(0x01U); // gamma set 4 gamma curve 01/02/04/08
LCD_WR_REG(0xE0); //positive gamma correction
LCD_WR_Data(0x1f);
LCD_WR_Data(0x1a);
LCD_WR_Data(0x18);
LCD_WR_Data(0x0a);
LCD_WR_Data(0x0f);
LCD_WR_Data(0x06);
LCD_WR_Data(0x45);
LCD_WR_Data(0x87);
LCD_WR_Data(0x32);
LCD_WR_Data(0x0a);
LCD_WR_Data(0x07);
LCD_WR_Data(0x02);
LCD_WR_Data(0x07);
LCD_WR_Data(0x05);
LCD_WR_Data(0x00);
LCD_WR_REG(0xE1); //negamma correction
LCD_WR_Data(0x00);
LCD_WR_Data(0x25);
LCD_WR_Data(0x27);
LCD_WR_Data(0x05);
LCD_WR_Data(0x10);
LCD_WR_Data(0x09);
LCD_WR_Data(0x3a);
LCD_WR_Data(0x78);
LCD_WR_Data(0x4d);
LCD_WR_Data(0x05);
LCD_WR_Data(0x18);
LCD_WR_Data(0x0d);
LCD_WR_Data(0x38);
LCD_WR_Data(0x3a);
LCD_WR_Data(0x1f);
LCD_WR_REG(0xE0U); //positive gamma correction
LCD_WR_Data(0x1fU);
LCD_WR_Data(0x1aU);
LCD_WR_Data(0x18U);
LCD_WR_Data(0x0aU);
LCD_WR_Data(0x0fU);
LCD_WR_Data(0x06U);
LCD_WR_Data(0x45U);
LCD_WR_Data(0x87U);
LCD_WR_Data(0x32U);
LCD_WR_Data(0x0aU);
LCD_WR_Data(0x07U);
LCD_WR_Data(0x02U);
LCD_WR_Data(0x07U);
LCD_WR_Data(0x05U);
LCD_WR_Data(0x00U);
LCD_WR_REG(0xE1U); //negamma correction
LCD_WR_Data(0x00U);
LCD_WR_Data(0x25U);
LCD_WR_Data(0x27U);
LCD_WR_Data(0x05U);
LCD_WR_Data(0x10U);
LCD_WR_Data(0x09U);
LCD_WR_Data(0x3aU);
LCD_WR_Data(0x78U);
LCD_WR_Data(0x4dU);
LCD_WR_Data(0x05U);
LCD_WR_Data(0x18U);
LCD_WR_Data(0x0dU);
LCD_WR_Data(0x38U);
LCD_WR_Data(0x3aU);
LCD_WR_Data(0x1fU);
//--------------ddram ---------------------
LCD_WR_REG(0x2a);
LCD_WR_REG(0x2aU);
// column set
// size = 239
LCD_WR_Data(0x00);
LCD_WR_Data(0x00);
LCD_WR_Data(0x00);
LCD_WR_Data(0xEF);
LCD_WR_REG(0x2b);
LCD_WR_Data(0x00U);
LCD_WR_Data(0x00U);
LCD_WR_Data(0x00U);
LCD_WR_Data(0xEFU);
LCD_WR_REG(0x2bU);
// page address set
// size = 319
LCD_WR_Data(0x00);
LCD_WR_Data(0x00);
LCD_WR_Data(0x01);
LCD_WR_Data(0x3F);
LCD_WR_Data(0x00U);
LCD_WR_Data(0x00U);
LCD_WR_Data(0x01U);
LCD_WR_Data(0x3FU);
// LCD_WR_REG(0x34);
//LCD_WR_REG(0x35);
// tearing effect off
// tearing effect on
// LCD_WR_REG(0xb4); // display inversion
// LCD_WR_Data(0x00);
LCD_WR_REG(0xb7); //entry mode set
LCD_WR_Data(0x07);
LCD_WR_REG(0xb7U); //entry mode set
LCD_WR_Data(0x07U);
//-----------------display---------------------
LCD_WR_REG(0xb6);
LCD_WR_REG(0xb6U);
// display function control
LCD_WR_Data(0x0a);
LCD_WR_Data(0x82);
LCD_WR_Data(0x27);
LCD_WR_Data(0x00);
LCD_WR_REG(0x11); //sleep out
osDelay(100);
LCD_WR_REG(0x29); // display on
LCD_WR_Data(0x0aU);
LCD_WR_Data(0x82U);
LCD_WR_Data(0x27U);
LCD_WR_Data(0x00U);
LCD_WR_REG(0x11U); //sleep out
ThisThread::sleep_for(100ms);
LCD_WR_REG(0x29U); // display on
}
void ILI9341::LCD_WR_Data(uint8_t Data) {
dc = 1;
dispPort.write(Data);
(void)dispPort.write(static_cast<int>(Data));
}
void ILI9341::LCD_WR_REG(uint8_t Reg) {
dc = 0;
dispPort.write(Reg);
(void)dispPort.write(static_cast<int>(Reg));
}
void
ILI9341::LCD_setaddress(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) //set coordinate for print or other function
{
LCD_WR_REG(0x2A);
LCD_WR_Data(x1 >> 8);
LCD_WR_Data(x1);
LCD_WR_Data(x2 >> 8);
LCD_WR_Data(x2);
LCD_WR_REG(0x2AU);
LCD_WR_Data(x1 >> 8U);
LCD_WR_Data(static_cast<uint8_t>(x1));
LCD_WR_Data(x2 >> 8U);
LCD_WR_Data(static_cast<uint8_t>(x2));
LCD_WR_REG(0x2B);
LCD_WR_Data(y1 >> 8);
LCD_WR_Data(y1);
LCD_WR_Data(y2 >> 8);
LCD_WR_Data(y2);
LCD_WR_REG(0x2BU);
LCD_WR_Data(y1 >> 8U);
LCD_WR_Data(static_cast<uint8_t>(y1));
LCD_WR_Data(y2 >> 8U);
LCD_WR_Data(static_cast<uint8_t>(y2));
LCD_WR_REG(0x2C); //memory write
LCD_WR_REG(0x2CU); //memory write
}
void ILI9341::transmitData(const uint8_t *pixels, uint16_t x, uint16_t y, uint16_t w, uint16_t h) {