STM32F103VET6驱动彩屏TFT2.8(ili9341)HAL库+标准库

FSMC

  • 1.ILI9341
  • 2.TFT彩屏
  • 3.设备准备
  • 4.FSMC
  • 5.驱动代码(标准库)
  • 6.驱动代码(HAL)
  • 7.获取工程

1.ILI9341

在这里插入图片描述

ILI9341(手册下载方式见文末)

2.TFT彩屏

Thin Film Transistor (薄膜场效应晶体管),是指液晶显示器上的每一液晶象素点都是由集成在其后的薄膜晶体管来驱动。从而可以做到高速度高亮度高对比度显示屏幕信息。目前在手机上TFT使用最为广泛,中高端彩屏手机中普遍采用的屏幕,分65536色及26万色, 1600万色三种,其显示效果非常出色。随着技术的进步,TFT不仅应用在手机上,许多智能仪表,工控人机界面也都在使用TFT取代之前的黑白屏。

3.设备准备

在这里插入图片描述
在这里插入图片描述

项目型号
单片机STM32F103VET6
彩屏淘宝微雪的TFT2.8
接口引脚
D0FSMC_D0
D1FSMC_D1
D15FSMC_D15
RSFSMC_A16
WRFSMC_NWE
RDFSMC_NOD
CSFSMC_NE1
BL自定义
RES自定义

4.FSMC

笔者这个液晶屏是用的stm32单片机驱动所以,使用的是stm32上的fsmc技术实现驱动。
首先简单介绍一下FSMC:

STM32系列微控制器为用户提供了丰富的选择,可适用于工业控制、智能家电、建筑安防、医疗设备以及消费类电子产品等多方位嵌入式系统设计。STM32系列采用一种新型的存储器扩展技术——FSMC,在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。
FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列中内部集成256 KB以上FlaSh,后缀为xC、xD和xE的高存储密度微控制器特有的存储控制机制。之所以称为“可变”,是由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静态存储器,满足系统设计对存储容量、产品体积以及成本的综合要求。
FSMC内部结构
STM32微控制器之所以能够支持NOR Flash和NAND Flash这两类访问方式完全不同的存储器扩展,是因为FSMC内部实际包括NOR Flash和NAND/PC Card两个控制器,分别支持两种截然不同的存储器访问方式。在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。FSMC起到桥梁作用,既能够进行信号类型的转换,又能够进行信号宽度和时序的调整,屏蔽掉不同存储类型的差异,使之对内核而言没有区别。
FSMC映射地址空间
FSMC管理1 GB的映射地址空间。该空间划分为4个大小为256 MB的BANK,每个BANK又划分为4个64 MB的子BANK,如表1所列。FSMC的2个控制器管理的映射地址空间不同。NOR Flash控制器管理第1个BANK,NAND/PC Card控制器管理第2~4个BANK。由于两个控制器管理的存储器类型不同,扩展时应根据选用的存储设备类型确定其映射位置。其中,BANK1的4个子BANK拥有独立的片选线和控制寄存器,可分别扩展一个独立的存储设备,而BANK2~BANK4只有一组控制寄存器。
在这里插入图片描述

5.驱动代码(标准库)

下面代码是野火官方的例程基于标准库 内联代码片

/*** @brief  初始化ILI9341的IO引脚* @param  无* @retval 无*/
static void ILI9341_GPIO_Config ( void )
{GPIO_InitTypeDef GPIO_InitStructure;/* 使能FSMC对应相应管脚时钟*/RCC_APB2PeriphClockCmd ( 	/*控制信号*/ILI9341_CS_CLK|ILI9341_DC_CLK|ILI9341_WR_CLK|ILI9341_RD_CLK	|ILI9341_BK_CLK|ILI9341_RST_CLK|/*数据信号*/ILI9341_D0_CLK|ILI9341_D1_CLK|	ILI9341_D2_CLK | ILI9341_D3_CLK | ILI9341_D4_CLK|ILI9341_D5_CLK|ILI9341_D6_CLK | ILI9341_D7_CLK|ILI9341_D8_CLK|ILI9341_D9_CLK | ILI9341_D10_CLK|ILI9341_D11_CLK|ILI9341_D12_CLK | ILI9341_D13_CLK|ILI9341_D14_CLK|ILI9341_D15_CLK	, ENABLE );/* 配置FSMC相对应的数据线,FSMC-D0~D15 */	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin = ILI9341_D0_PIN;GPIO_Init ( ILI9341_D0_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D1_PIN;GPIO_Init ( ILI9341_D1_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D2_PIN;GPIO_Init ( ILI9341_D2_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D3_PIN;GPIO_Init ( ILI9341_D3_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D4_PIN;GPIO_Init ( ILI9341_D4_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D5_PIN;GPIO_Init ( ILI9341_D5_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D6_PIN;GPIO_Init ( ILI9341_D6_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D7_PIN;GPIO_Init ( ILI9341_D7_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D8_PIN;GPIO_Init ( ILI9341_D8_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D9_PIN;GPIO_Init ( ILI9341_D9_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D10_PIN;GPIO_Init ( ILI9341_D10_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D11_PIN;GPIO_Init ( ILI9341_D11_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D12_PIN;GPIO_Init ( ILI9341_D12_PORT, & GPIO_InitStructure );	GPIO_InitStructure.GPIO_Pin = ILI9341_D13_PIN;GPIO_Init ( ILI9341_D13_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D14_PIN;GPIO_Init ( ILI9341_D14_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_D15_PIN;GPIO_Init ( ILI9341_D15_PORT, & GPIO_InitStructure );/* 配置FSMC相对应的控制线* FSMC_NOE   :LCD-RD* FSMC_NWE   :LCD-WR* FSMC_NE1   :LCD-CS* FSMC_A16  	:LCD-DC*/GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin = ILI9341_RD_PIN; GPIO_Init (ILI9341_RD_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_WR_PIN; GPIO_Init (ILI9341_WR_PORT, & GPIO_InitStructure );GPIO_InitStructure.GPIO_Pin = ILI9341_CS_PIN; GPIO_Init ( ILI9341_CS_PORT, & GPIO_InitStructure );  GPIO_InitStructure.GPIO_Pin = ILI9341_DC_PIN; GPIO_Init ( ILI9341_DC_PORT, & GPIO_InitStructure );/* 配置LCD复位RST控制管脚*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = ILI9341_RST_PIN; GPIO_Init ( ILI9341_RST_PORT, & GPIO_InitStructure );/* 配置LCD背光控制管脚BK*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Pin = ILI9341_BK_PIN; GPIO_Init ( ILI9341_BK_PORT, & GPIO_InitStructure );
}/*** @brief  LCD  FSMC 模式配置* @param  无* @retval 无*/
static void ILI9341_FSMC_Config ( void )
{FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;FSMC_NORSRAMTimingInitTypeDef  readWriteTiming; 	/* 使能FSMC时钟*/RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_FSMC, ENABLE );//地址建立时间(ADDSET)为1个HCLK 2/72M=28nsreadWriteTiming.FSMC_AddressSetupTime      = 0x01;	 //地址建立时间//数据保持时间(DATAST)+ 1个HCLK = 5/72M=70ns	readWriteTiming.FSMC_DataSetupTime         = 0x04;	 //数据建立时间//选择控制的模式//模式B,异步NOR FLASH模式,与ILI9341的8080时序匹配readWriteTiming.FSMC_AccessMode            = FSMC_AccessMode_B;	/*以下配置与模式B无关*///地址保持时间(ADDHLD)模式A未用到readWriteTiming.FSMC_AddressHoldTime       = 0x00;	 //地址保持时间//设置总线转换周期,仅用于复用模式的NOR操作readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;//设置时钟分频,仅用于同步类型的存储器readWriteTiming.FSMC_CLKDivision           = 0x00;//数据保持时间,仅用于同步型的NOR	readWriteTiming.FSMC_DataLatency           = 0x00;	FSMC_NORSRAMInitStructure.FSMC_Bank                  = FSMC_Bank1_NORSRAMx;FSMC_NORSRAMInitStructure.FSMC_DataAddressMux        = FSMC_DataAddressMux_Disable;FSMC_NORSRAMInitStructure.FSMC_MemoryType            = FSMC_MemoryType_NOR;FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth       = FSMC_MemoryDataWidth_16b;FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode       = FSMC_BurstAccessMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity    = FSMC_WaitSignalPolarity_Low;FSMC_NORSRAMInitStructure.FSMC_WrapMode              = FSMC_WrapMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive      = FSMC_WaitSignalActive_BeforeWaitState;FSMC_NORSRAMInitStructure.FSMC_WriteOperation        = FSMC_WriteOperation_Enable;FSMC_NORSRAMInitStructure.FSMC_WaitSignal            = FSMC_WaitSignal_Disable;FSMC_NORSRAMInitStructure.FSMC_ExtendedMode          = FSMC_ExtendedMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WriteBurst            = FSMC_WriteBurst_Disable;FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct     = &readWriteTiming;  FSMC_NORSRAMInit ( & FSMC_NORSRAMInitStructure ); /* 使能 FSMC_Bank1_NORSRAM4 */FSMC_NORSRAMCmd ( FSMC_Bank1_NORSRAMx, ENABLE );  }/*** @brief  初始化ILI9341寄存器* @param  无* @retval 无*/
static void ILI9341_REG_Config ( void )
{/*  Power control B (CFh)  */DEBUG_DELAY  ();ILI9341_Write_Cmd ( 0xCF  );ILI9341_Write_Data ( 0x00  );ILI9341_Write_Data ( 0x81  );ILI9341_Write_Data ( 0x30  );/*  Power on sequence control (EDh) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xED );ILI9341_Write_Data ( 0x64 );ILI9341_Write_Data ( 0x03 );ILI9341_Write_Data ( 0x12 );ILI9341_Write_Data ( 0x81 );/*  Driver timing control A (E8h) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xE8 );ILI9341_Write_Data ( 0x85 );ILI9341_Write_Data ( 0x10 );ILI9341_Write_Data ( 0x78 );/*  Power control A (CBh) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xCB );ILI9341_Write_Data ( 0x39 );ILI9341_Write_Data ( 0x2C );ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x34 );ILI9341_Write_Data ( 0x02 );/* Pump ratio control (F7h) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xF7 );ILI9341_Write_Data ( 0x20 );/* Driver timing control B */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xEA );ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x00 );/* Frame Rate Control (In Normal Mode/Full Colors) (B1h) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xB1 );ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x1B );/*  Display Function Control (B6h) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xB6 );ILI9341_Write_Data ( 0x0A );ILI9341_Write_Data ( 0xA2 );/* Power Control 1 (C0h) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xC0 );ILI9341_Write_Data ( 0x35 );/* Power Control 2 (C1h) */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0xC1 );ILI9341_Write_Data ( 0x11 );/* VCOM Control 1 (C5h) */ILI9341_Write_Cmd ( 0xC5 );ILI9341_Write_Data ( 0x45 );ILI9341_Write_Data ( 0x45 );/*  VCOM Control 2 (C7h)  */ILI9341_Write_Cmd ( 0xC7 );ILI9341_Write_Data ( 0xA2 );/* Enable 3G (F2h) */ILI9341_Write_Cmd ( 0xF2 );ILI9341_Write_Data ( 0x00 );/* Gamma Set (26h) */ILI9341_Write_Cmd ( 0x26 );ILI9341_Write_Data ( 0x01 );DEBUG_DELAY ();/* Positive Gamma Correction */ILI9341_Write_Cmd ( 0xE0 ); //Set GammaILI9341_Write_Data ( 0x0F );ILI9341_Write_Data ( 0x26 );ILI9341_Write_Data ( 0x24 );ILI9341_Write_Data ( 0x0B );ILI9341_Write_Data ( 0x0E );ILI9341_Write_Data ( 0x09 );ILI9341_Write_Data ( 0x54 );ILI9341_Write_Data ( 0xA8 );ILI9341_Write_Data ( 0x46 );ILI9341_Write_Data ( 0x0C );ILI9341_Write_Data ( 0x17 );ILI9341_Write_Data ( 0x09 );ILI9341_Write_Data ( 0x0F );ILI9341_Write_Data ( 0x07 );ILI9341_Write_Data ( 0x00 );/* Negative Gamma Correction (E1h) */ILI9341_Write_Cmd ( 0XE1 ); //Set GammaILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x19 );ILI9341_Write_Data ( 0x1B );ILI9341_Write_Data ( 0x04 );ILI9341_Write_Data ( 0x10 );ILI9341_Write_Data ( 0x07 );ILI9341_Write_Data ( 0x2A );ILI9341_Write_Data ( 0x47 );ILI9341_Write_Data ( 0x39 );ILI9341_Write_Data ( 0x03 );ILI9341_Write_Data ( 0x06 );ILI9341_Write_Data ( 0x06 );ILI9341_Write_Data ( 0x30 );ILI9341_Write_Data ( 0x38 );ILI9341_Write_Data ( 0x0F );/* memory access control set */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0x36 ); 	ILI9341_Write_Data ( 0xC8 );    /*竖屏  左上角到 (起点)到右下角 (终点)扫描方式*/DEBUG_DELAY ();/* column address control set */ILI9341_Write_Cmd ( CMD_SetCoordinateX ); ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0xEF );/* page address control set */DEBUG_DELAY ();ILI9341_Write_Cmd ( CMD_SetCoordinateY ); ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x00 );ILI9341_Write_Data ( 0x01 );ILI9341_Write_Data ( 0x3F );/*  Pixel Format Set (3Ah)  */DEBUG_DELAY ();ILI9341_Write_Cmd ( 0x3a ); ILI9341_Write_Data ( 0x55 );/* Sleep Out (11h)  */ILI9341_Write_Cmd ( 0x11 );	ILI9341_Delay ( 0xAFFf<<2 );DEBUG_DELAY ();/* Display ON (29h) */ILI9341_Write_Cmd ( 0x29 ); }/*** @brief  ILI9341初始化函数,如果要用到lcd,一定要调用这个函数* @param  无* @retval 无*/
void ILI9341_Init ( void )
{ILI9341_GPIO_Config ();ILI9341_FSMC_Config ();ILI9341_BackLed_Control (ENABLE  );      //点亮LCD背光灯ILI9341_Rst ();ILI9341_REG_Config ();//设置默认扫描方向,其中 6 模式为大部分液晶例程的默认显示方向  ILI9341_GramScan(LCD_SCAN_MODE);LCD_SetColors(GREEN,WHITE);
}

6.驱动代码(HAL)

HAL库版本基于野火的例程改写,主要是改了初始化部分

/* 初始化显示屏 */
void ILI9341_Init(void)
{FSMC_NORSRAM_TimingTypeDef timing = {0};GPIO_InitTypeDef gpio;__HAL_RCC_FSMC_CLK_ENABLE();__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();__HAL_RCC_GPIOE_CLK_ENABLE();// PD12: BLBL_OFF;gpio.Mode = GPIO_MODE_OUTPUT_PP;gpio.Pin = GPIO_PIN_12;gpio.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOD, &gpio);// PE1: RSTRST_ON;gpio.Pin = GPIO_PIN_1;HAL_GPIO_Init(GPIOE, &gpio);// PD0~1: FSMC_D2~3, PD4: FSMC_NOE, PD5: FSMC_NWE, PD7: FSMC_NE1, PD8~11: FSMC_D13~16, PD14~15: FSMC_D0~1// FSMC_NOE=>RD, FSMC_NWE=>WR, FSMC_D16=>RS, FSMC_NE1=>CSgpio.Mode = GPIO_MODE_AF_PP;gpio.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_14 | GPIO_PIN_15;gpio.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOD, &gpio);// PE7~15: FSMC_D4~12gpio.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;HAL_GPIO_Init(GPIOE, &gpio);// FSMC一共有6种模式:模式1~2和模式A~D// 彩屏使用的是模式2(即NOR Flash模式)而非模式B,这是因为配置FSMC时并没有使能扩展模式hnor.Extended = FSMC_Bank1E;hnor.Instance = FSMC_Bank1;hnor.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;hnor.Init.MemoryType = FSMC_MEMORY_TYPE_NOR;hnor.Init.NSBank = FSMC_NORSRAM_BANK1;hnor.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;timing.AddressHoldTime = 1;timing.AddressSetupTime = 0;timing.CLKDivision = 2;timing.DataLatency = 2;timing.DataSetupTime = 1;HAL_NOR_Init(&hnor, &timing, NULL);HAL_Delay(1);RST_OFF;HAL_Delay(1);// Power control BILI9341_CMD = 0xcf;ILI9341_DATA = 0x00;ILI9341_DATA = 0x81;ILI9341_DATA = 0x30;// Power on sequence controlILI9341_CMD = 0xed;ILI9341_DATA = 0x64;ILI9341_DATA = 0x03;ILI9341_DATA = 0x12;ILI9341_DATA = 0x81;// Driver timing control AILI9341_CMD = 0xe8;ILI9341_DATA = 0x85;ILI9341_DATA = 0x10;ILI9341_DATA = 0x78;// Power control AILI9341_CMD = 0xcb;ILI9341_DATA = 0x39;ILI9341_DATA = 0x2c;ILI9341_DATA = 0x00;ILI9341_DATA = 0x34;ILI9341_DATA = 0x02;// Pump ratio controlILI9341_CMD = 0xf7;ILI9341_DATA = 0x20;// Driver timing control BILI9341_CMD = 0xea;ILI9341_DATA = 0x00;ILI9341_DATA = 0x00;// Frame Rate Control (In Normal Mode/Full Colors)ILI9341_CMD = 0xb1;ILI9341_DATA = 0x00;ILI9341_DATA = 0x1b;// Display Function ControlILI9341_CMD = 0xb6;ILI9341_DATA = 0x0a;ILI9341_DATA = 0xa2;// Power Control 1ILI9341_CMD = 0xc0;ILI9341_DATA = 0x35;// Power Control 2ILI9341_CMD = 0xc1;ILI9341_DATA = 0x11;// VCOM Control 1ILI9341_CMD = 0xc5;ILI9341_DATA = 0x45;ILI9341_DATA = 0x45;// VCOM Control 2ILI9341_CMD = 0xc7;ILI9341_DATA = 0xa2;// Enable 3GILI9341_CMD = 0xf2;ILI9341_DATA = 0x00;// Gamma SetILI9341_CMD = 0x26;ILI9341_DATA = 0x01;// Positive Gamma CorrectionILI9341_CMD = 0xe0;ILI9341_DATA = 0x0f;ILI9341_DATA = 0x26;ILI9341_DATA = 0x24;ILI9341_DATA = 0x0b;ILI9341_DATA = 0x0e;ILI9341_DATA = 0x09;ILI9341_DATA = 0x54;ILI9341_DATA = 0xa8;ILI9341_DATA = 0x46;ILI9341_DATA = 0x0c;ILI9341_DATA = 0x17;ILI9341_DATA = 0x09;ILI9341_DATA = 0x0f;ILI9341_DATA = 0x07;ILI9341_DATA = 0x00;// Negative Gamma CorrectionILI9341_CMD = 0xe1;ILI9341_DATA = 0x00;ILI9341_DATA = 0x19;ILI9341_DATA = 0x1b;ILI9341_DATA = 0x04;ILI9341_DATA = 0x10;ILI9341_DATA = 0x07;ILI9341_DATA = 0x2a;ILI9341_DATA = 0x47;ILI9341_DATA = 0x39;ILI9341_DATA = 0x03;ILI9341_DATA = 0x06;ILI9341_DATA = 0x06;ILI9341_DATA = 0x30;ILI9341_DATA = 0x38;ILI9341_DATA = 0x0f;// Pixel Format SetILI9341_CMD = 0x3a;ILI9341_DATA = 0x55;// Sleep OutILI9341_CMD = 0x11;HAL_Delay(100);ILI9341_SetScanDirection(0); // 设置扫描方向ILI9341_CMD = 0x29; // 允许显示显存中的图像 (后面还需要打开背光才能开显示)
}

7.获取工程

1.去这里下载点击链接: 点击获取.
2.关注微信公众号MeiXiangDao2020 回复:TFT2.8资料
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部