[LKS32 硬件]

凌鸥开发板LKS32AT085评测-驱动1.8寸TFT屏

[复制链接]
1255|14
手机看帖
扫描二维码
随时随地手机跟帖
rock00210|  楼主 | 2022-9-8 20:36 | 显示全部楼层 |阅读模式
本帖最后由 rock00210 于 2022-9-9 07:46 编辑

凌鸥创芯车规级LKS32AT085开发板测评—移植1.8寸TFT屏幕程序
首先非常感谢21ic和凌鸥创芯,很荣幸能参加此次活动并参与评测。
本次主要做MCU驱动1.8寸液晶,液晶驱动芯片为ST7735,此屏幕为SPI总线方式,共8个引脚如下图:
11406552ead158ccac750c85c1c8b0b7
GND---0V,VCC---3.3V,,SCL---P1.4,SDA---P1.5,RES-----P1.6,DC-----P1.7,CS-----P1.8,BL-----P1.9。
SCL为SPI时钟,SDA为SPI数据,RES为SPI复位,DC为SPI指令和数据选择端,CS为片选,BL为背光,本次采用GPIO模拟的方式实现。关于SPI驱动的时序,请自行研究,在此不做赘述,TFT驱动程序如下:
//液晶IO初始化配置
voidLCD_GPIO_Init(void)
{
GPIO_InitTypeDefGPIO_InitStruct;
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIO1, &GPIO_InitStruct);
}
//向SPI总线传输一个8位数据
void  SPI_WriteData(u8 Data)
{
unsigned char i=0;
for(i=8;i>0;i--)
{
if(Data&0x80)//输出数据
GPIO_SetBits(GPIO1, GPIO_Pin_5);
elseGPIO_ResetBits(GPIO1, GPIO_Pin_5);
GPIO_ResetBits(GPIO1, GPIO_Pin_4);
GPIO_SetBits(GPIO1, GPIO_Pin_4);
      Data<<=1;
}
}
//向液晶屏写一个8位指令
voidLcd_WriteIndex(u8 Index)
{
   //SPI 写命令时序开始
GPIO_ResetBits(GPIO1, GPIO_Pin_8);
GPIO_ResetBits(GPIO1, GPIO_Pin_7);
SPI_WriteData(Index);
GPIO_SetBits(GPIO1, GPIO_Pin_8);
}
//向液晶屏写一个8位数据
voidLcd_WriteData(u8 Data)
{
GPIO_ResetBits(GPIO1, GPIO_Pin_8);
GPIO_SetBits(GPIO1, GPIO_Pin_7);
SPI_WriteData(Data);
GPIO_SetBits(GPIO1, GPIO_Pin_8);
}
//向液晶屏写一个16位数据
void LCD_WriteData_16Bit(u16 Data)
{
GPIO_ResetBits(GPIO1, GPIO_Pin_8);
GPIO_SetBits(GPIO1, GPIO_Pin_7);
SPI_WriteData(Data>>8); //写入高8位数据
SPI_WriteData(Data); //写入低8位数据
GPIO_SetBits(GPIO1, GPIO_Pin_8);
}
voidLcd_WriteReg(u8 Index,u8 Data)
{
Lcd_WriteIndex(Index);
Lcd_WriteData(Data);
}
voidLcd_Reset(void)
{
GPIO_ResetBits(GPIO1, GPIO_Pin_6);
delay_ms(100);
GPIO_SetBits(GPIO1, GPIO_Pin_6);
delay_ms(50);
}
//LCD Init For 1.8Inch LCD Panel with ST7735R.
voidLcd_Init(void)
{
LCD_GPIO_Init();
Lcd_Reset(); //Reset before LCD Init.
//LCD Init For 1.44Inch LCD Panel with ST7735R.
Lcd_WriteIndex(0x11);//Sleep exit
delay_ms (120);
//ST7735R Frame Rate
Lcd_WriteIndex(0xB1);
Lcd_WriteData(0x01);
Lcd_WriteData(0x2C);
Lcd_WriteData(0x2D);
Lcd_WriteIndex(0xB2);
Lcd_WriteData(0x01);
Lcd_WriteData(0x2C);
Lcd_WriteData(0x2D);
Lcd_WriteIndex(0xB3);
Lcd_WriteData(0x01);
Lcd_WriteData(0x2C);
Lcd_WriteData(0x2D);
Lcd_WriteData(0x01);
Lcd_WriteData(0x2C);
Lcd_WriteData(0x2D);
Lcd_WriteIndex(0xB4); //Column inversion
Lcd_WriteData(0x07);
//ST7735R Power Sequence
Lcd_WriteIndex(0xC0);
Lcd_WriteData(0xA2);
Lcd_WriteData(0x02);
Lcd_WriteData(0x84);
Lcd_WriteIndex(0xC1);
Lcd_WriteData(0xC5);
Lcd_WriteIndex(0xC2);
Lcd_WriteData(0x0A);
Lcd_WriteData(0x00);
Lcd_WriteIndex(0xC3);
Lcd_WriteData(0x8A);
Lcd_WriteData(0x2A);
Lcd_WriteIndex(0xC4);
Lcd_WriteData(0x8A);
Lcd_WriteData(0xEE);
Lcd_WriteIndex(0xC5); //VCOM
Lcd_WriteData(0x0E);
Lcd_WriteIndex(0x36); //MX, MY, RGB mode
Lcd_WriteData(0xC0);
//ST7735R Gamma Sequence
Lcd_WriteIndex(0xe0);
Lcd_WriteData(0x0f);
Lcd_WriteData(0x1a);
Lcd_WriteData(0x0f);
Lcd_WriteData(0x18);
Lcd_WriteData(0x2f);
Lcd_WriteData(0x28);
Lcd_WriteData(0x20);
Lcd_WriteData(0x22);
Lcd_WriteData(0x1f);
Lcd_WriteData(0x1b);
Lcd_WriteData(0x23);
Lcd_WriteData(0x37);
Lcd_WriteData(0x00);
Lcd_WriteData(0x07);
Lcd_WriteData(0x02);
Lcd_WriteData(0x10);
Lcd_WriteIndex(0xe1);
Lcd_WriteData(0x0f);
Lcd_WriteData(0x1b);
Lcd_WriteData(0x0f);
Lcd_WriteData(0x17);
Lcd_WriteData(0x33);
Lcd_WriteData(0x2c);
Lcd_WriteData(0x29);
Lcd_WriteData(0x2e);
Lcd_WriteData(0x30);
Lcd_WriteData(0x30);
Lcd_WriteData(0x39);
Lcd_WriteData(0x3f);
Lcd_WriteData(0x00);
Lcd_WriteData(0x07);
Lcd_WriteData(0x03);
Lcd_WriteData(0x10);  
Lcd_WriteIndex(0x2a);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x7f);
Lcd_WriteIndex(0x2b);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x00);
Lcd_WriteData(0x9f);
Lcd_WriteIndex(0xF0); //Enable test command  
Lcd_WriteData(0x01);
Lcd_WriteIndex(0xF6); //Disable ram power save mode
Lcd_WriteData(0x00);
Lcd_WriteIndex(0x3A); //65k mode
Lcd_WriteData(0x05);
Lcd_WriteIndex(0x29);//Display on
}
/*************************************************
函数名:LCD_Set_Region
功能:设置lcd显示区域,在此区域写点数据自动换行
入口参数:xy起点和终点
返回值:无
*************************************************/
voidLcd_SetRegion(u16 x_start,u16 y_start,u16 x_end,u16 y_end)
{
Lcd_WriteIndex(0x2a);
Lcd_WriteData(0x00);
Lcd_WriteData(x_start);//Lcd_WriteData(x_start+2);
Lcd_WriteData(0x00);
Lcd_WriteData(x_end+2);
Lcd_WriteIndex(0x2b);
Lcd_WriteData(0x00);
Lcd_WriteData(y_start+0);
Lcd_WriteData(0x00);
Lcd_WriteData(y_end+1);
Lcd_WriteIndex(0x2c);
}
/*************************************************
函数名:LCD_Set_XY
功能:设置lcd显示起始点
入口参数:xy坐标
返回值:无
*************************************************/
voidLcd_SetXY(u16 x,u16 y)
{
Lcd_SetRegion(x,y,x,y);
}
/*************************************************
函数名:LCD_DrawPoint
功能:画一个点
入口参数:无
返回值:无
*************************************************/
voidGui_DrawPoint(u16 x,u16 y,u16 Data)
{
Lcd_SetRegion(x,y,x+1,y+1);
LCD_WriteData_16Bit(Data);
}   
/*****************************************
函数功能:读TFT某一点的颜色
出口参数:color  点颜色值
******************************************/
unsignedintLcd_ReadPoint(u16 x,u16 y)
{
unsignedint Data;
Lcd_SetXY(x,y);
  //Lcd_ReadData();//丢掉无用字节
  //Data=Lcd_ReadData();
Lcd_WriteData(Data);
return Data;
}
/*************************************************
函数名:Lcd_Clear
功能:全屏清屏函数
入口参数:填充颜色COLOR
返回值:无
*************************************************/
voidLcd_Clear(u16 Color)               
{
unsignedinti,m;
Lcd_SetRegion(0,0,X_MAX_PIXEL-1,Y_MAX_PIXEL-1);
Lcd_WriteIndex(0x2C);
for(i=0;i<X_MAX_PIXEL;i++)
for(m=0;m<Y_MAX_PIXEL;m++)
    {
LCD_WriteData_16Bit(Color);
    }   
}
显示状态如下:
709f6588b36bcd7e686969efcb8651d9
如果想显示其他汉字或者图片,需要通过取模软件,导出16进制,生成数组进行显示。
总的来说,功率板和MCU板做的不错,另外此功率版还能兼容其他型号的MCU,具体可以和凌鸥创芯联系确认下,官方提供的例程和库函数也比较丰富,容易上手。官网的资料相对来说也比较丰富,只是分类做的不是太好,希望厂家以后能改进。

使用特权

评论回复
chenjun89| | 2022-9-8 21:44 | 显示全部楼层
参考一下,还是要跑GUI。

使用特权

评论回复
updownq| | 2022-9-10 20:42 | 显示全部楼层
ST7735TFT彩屏  

使用特权

评论回复
kmzuaz| | 2022-9-10 21:28 | 显示全部楼层
能驱动st7735s吗  

使用特权

评论回复
lzmm| | 2022-9-10 22:01 | 显示全部楼层
ST7735驱动使用实例     

使用特权

评论回复
weifeng90| | 2022-9-10 22:52 | 显示全部楼层
裸屏显示还是不行

使用特权

评论回复
rosemoore| | 2022-9-11 11:09 | 显示全部楼层
st7735屏幕移植      

使用特权

评论回复
macpherson| | 2022-9-11 11:49 | 显示全部楼层
谁有ST7735 TFT 中文资料?

使用特权

评论回复
dzfansman| | 2022-9-11 12:31 | 显示全部楼层
配置spi驱动st7735s屏

使用特权

评论回复
dspmana| | 2022-9-11 13:21 | 显示全部楼层
ST7735中文版   

使用特权

评论回复
sheflynn| | 2022-9-11 14:14 | 显示全部楼层
可以横屏显示吗      

使用特权

评论回复
gouguoccc| | 2022-9-11 18:16 | 显示全部楼层
可以移植一个GUI

使用特权

评论回复
Henryko| | 2022-9-16 20:15 | 显示全部楼层
能驱动st7735s吗  

使用特权

评论回复
rock00210|  楼主 | 2022-9-28 06:14 | 显示全部楼层
也可以横屏显示

使用特权

评论回复
Jacquetry| | 2022-12-20 14:02 | 显示全部楼层
有没有ST7735 TFT 的资料?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

64

帖子

3

粉丝