TFT1.44寸屏ST7735S屏幕使用-stm32f103c8t6

2023-05-16

TFT1.44寸屏ST7735S屏幕使用-stm32f103c8t6

在这里插入图片描述
K :背景灯
RESET:tft复位
RS:控制线(数据或者命令)
SDA:数据线(SPI时作为MOSI)
SCK:时钟线
IOVCC:数据有效脚,写数据或者是命令时应该拉低

1.LCD初始化
/初始化lcd

void LCD_Init(void)
{ 	 
	
	SPIGPIO_Init();
	
	SPILCD_RST_RESET ;	//LCD_RST=0	 //SPI接口复位
	HAL_Delay(20); // delay 20 ms 
  SPILCD_RST_SET ;	//LCD_RST=1		
	HAL_Delay(50);
	
	
	lcddev.width=128;
	lcddev.height=128;
	lcddev.wramcmd=0X2C;
	lcddev.setxcmd=0X2A;
	lcddev.setycmd=0X2B; 	

	LCD_WR_REG(0x11);//Sleep exit
	HAL_Delay(100);
						 
			//ST7735R Frame Rate
	LCD_WR_REG(0xB1);     //In Normal Mode (Full Colors)    全屏模式
	LCD_WR_DATA8(0x05);    //设置 RTNA Set 1-line  Period  一行周期
	LCD_WR_DATA8(0x3C);    //设置 FPA: Front Porch
	LCD_WR_DATA8(0x3C);    //设置 BPA: Back Porch
	//Frame rate=fosc/((RTNA x 2 + 40) x (LINE + FPA + BPA +2))
	//其中 fosc = 850kHz

	/* Set the frame frequency of the Idle mode.  */
	LCD_WR_REG(0xB2);     //In Idle Mode (8-colors)
	LCD_WR_DATA8(0x05);
	LCD_WR_DATA8(0x3C);
	LCD_WR_DATA8(0x3C);

	/* Set the frame frequency of the Partial mode/ full colors. */
	LCD_WR_REG(0xB3);
	LCD_WR_DATA8(0x05);
	LCD_WR_DATA8(0x3C);
	LCD_WR_DATA8(0x3C);
	LCD_WR_DATA8(0x05);
	LCD_WR_DATA8(0x3C);
	LCD_WR_DATA8(0x3C);
	

	//------------------------------------End ST7735S Frame Rate-----------------------------------------//
	LCD_WR_REG(0xB4);   //Display Inversion Control  显示反转控制

	LCD_WR_DATA8(0x07);  //LCD_ST7735S_WR_8DATA(0x03); 原来为3,改为7
	// 低三位从高到低,分别为  full colors normal mode 、Idle mode 、
	// full Colors partial mode  的 点反转 或 列反转 ,1为列反转

	LCD_WR_REG(0xC0);   //Power Control Setting  电源控制设置
	LCD_WR_DATA8(0x28);
	LCD_WR_DATA8(0x08);
	LCD_WR_DATA8(0x84);
	LCD_WR_REG(0xC1);
	LCD_WR_DATA8(0XC0);
	LCD_WR_REG(0xC2);
	LCD_WR_DATA8(0x0C);
	LCD_WR_DATA8(0x00);
	LCD_WR_REG(0xC3);
	LCD_WR_DATA8(0x8C);
	LCD_WR_DATA8(0x2A);
	LCD_WR_REG(0xC4);
	LCD_WR_DATA8(0x8A);
	LCD_WR_DATA8(0xEE);
	//---------------------------------End ST7735S Power Sequence-------------------------------------//
	LCD_WR_REG(0xC5);   //  VCOM 电压配置
	LCD_WR_DATA8(0x0C); //  -0.725
	//------------------------------------ST7735S Gamma Sequence-----------------------------------------//
	LCD_WR_REG(0xE0);
	LCD_WR_DATA8(0x05);
	LCD_WR_DATA8(0x1A);
	LCD_WR_DATA8(0x0C);
	LCD_WR_DATA8(0x0E);
	LCD_WR_DATA8(0x3A);
	LCD_WR_DATA8(0x34);
	LCD_WR_DATA8(0x2D);
	LCD_WR_DATA8(0x2F);
	LCD_WR_DATA8(0x2D);
	LCD_WR_DATA8(0x2A);
	LCD_WR_DATA8(0x2F);
	LCD_WR_DATA8(0x3C);
	LCD_WR_DATA8(0x00);
	LCD_WR_DATA8(0x01);
	LCD_WR_DATA8(0x02);
	LCD_WR_DATA8(0x10);
	LCD_WR_REG(0xE1);
	LCD_WR_DATA8(0x04);
	LCD_WR_DATA8(0x1B);
	LCD_WR_DATA8(0x0D);
	LCD_WR_DATA8(0x0E);
	LCD_WR_DATA8(0x2D);
	LCD_WR_DATA8(0x29);
	LCD_WR_DATA8(0x24);
	LCD_WR_DATA8(0x29);
	LCD_WR_DATA8(0x28);
	LCD_WR_DATA8(0x26);
	LCD_WR_DATA8(0x31);
	LCD_WR_DATA8(0x3B);
	LCD_WR_DATA8(0x00);
	LCD_WR_DATA8(0x00);
	LCD_WR_DATA8(0x03);
	LCD_WR_DATA8(0x12);
	//------------------------------------End ST7735S Gamma Sequence-----------------------------------------//

	LCD_WR_REG(0x3A); //65k mode
	LCD_WR_DATA8(0x05);
	LCD_WR_REG(0x29); //开显示 Display on
} 
//写寄存器函数
//regval:寄存器值
void LCD_WR_REG(uint16_t regval)
{ 
	SPILCD_RS_RESET;
	SPILCD_CS_RESET;  //LCD_CS=0
	SPI_WriteByte(&SpiHandle,regval&0x00FF);
	SPILCD_CS_SET;  //LCD_CS=1	   		 
}

/*写一个字节*/
uint8_t SPI_WriteByte(SPI_HandleTypeDef* SPI,uint8_t Byte)
{
	HAL_SPI_Transmit(SPI,&Byte,1,0xFFFF);	
	return 0;
}
void LCD_WR_DATA8(uint8_t da)   //写8位数据
{
	SPILCD_RS_SET;
	SPILCD_CS_RESET;  //LCD_CS=0				    	   
	SPI_WriteByte(&SpiHandle,da);	
	SPILCD_CS_SET;  //LCD_CS=1   			 
}			
 //画点
//x,y:坐标
//POINT_COLOR:此点的颜色
void LCD_DrawPoint(uint16_t x,uint16_t y)
{
	LCD_SetCursor(x,y);		//设置光标位置 
	LCD_WriteRAM_Prepare();	//开始写入GRAM
	LCD_WR_DATA(POINT_COLOR); //POINT_COLOR写入颜色RGB
} 

SPI初始化

void SPI_Init(void)
{
	SpiHandle.Instance               = SPIx;
  SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
  SpiHandle.Init.Direction         = SPI_DIRECTION_2LINES;
  SpiHandle.Init.CLKPhase          = SPI_PHASE_2EDGE;
  SpiHandle.Init.CLKPolarity       = SPI_POLARITY_HIGH;
  SpiHandle.Init.DataSize          = SPI_DATASIZE_8BIT;
  SpiHandle.Init.FirstBit          = SPI_FIRSTBIT_MSB;
  SpiHandle.Init.TIMode            = SPI_TIMODE_DISABLE;
  SpiHandle.Init.CRCCalculation    = SPI_CRCCALCULATION_DISABLE;
  SpiHandle.Init.CRCPolynomial     = 7;
  SpiHandle.Init.NSS               = SPI_NSS_SOFT;
	SpiHandle.Init.Mode 						 = SPI_MODE_MASTER;
	//SpiHandle.Init.Mode 						 = SPI_MODE_SLAVE;
	
	HAL_SPI_Init(&SpiHandle);
	
	
	__HAL_SPI_ENABLE(&SpiHandle);
	
	
	
}

显示效果

在这里插入图片描述

整个工程链接:https://download.csdn.net/download/qq_39061579/15655245

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TFT1.44寸屏ST7735S屏幕使用-stm32f103c8t6 的相关文章

随机推荐