ST7735STFT屏幕的驱动

ST7735S简介

请添加图片描述

点击图片购买

ST7735S 是 262K 彩色图形型 TFT-LCD 的单芯片控制器/驱动程序。它由396条源线和162门线驱动电路组成。该芯片能够直接连接到外部微处理器,并接受串行外围接口 (SPI)、8 位/9 位/16 位/18 位并行接口。显示数据可以存储在 132 x 162 x 18 位的片上显示数据 RAM 中。它可以在没有外部操作时钟时执行显示数据 RAM 读写操作,以最大限度地降低功耗。此外,由于驱动液晶所需的集成电源电路,因此可以制造出组件较少的显示系统。

TFT简介

下方这款为 1.44寸 TFT彩屏,驱动IC使用ST7735S芯片,液晶驱动IC的SPI接口已经引出带板子外侧,以便使用杜邦线连接,为不想焊接的伙伴非常友好,此次驱动所使用的MCU为增强型51单片机STC12系列的MCU,如下图所示:
在这里插入图片描述

点击图片购买

引脚说明

PIN Parameter
VCC 5V/3.3V电源接入
GND 接地
CS 液晶屏片选信号,低电平使能
RESET 液晶屏复位信号,低电平复位
A0 液晶屏寄存器/数据选择信号,高电平:寄存器,低电平:数据
SDA SPI总线写数据信号
SCK SPI总线时钟信号
LED 背光控制,高电平点亮,如无需控制则接3.3V常亮

程序驱动

流程框架如下

Created with Raphaël 2.3.0

初始化

编写显示函数

显示

结束

yes

主要命令控制

在这里插入图片描述
上图中我们可以看到如果想要软重启液晶屏的话,可以直接看我圈中的那一行,D/CX为0,意思就是需要选择写入命令,个人建议写SPI代码的时候传输数据代码选择高位在前,这样就可以直接使用HEX那一栏的数据,即直接使用MCU_write_TFT_Byte(0x01)即可,即可完成软重启。
在这里插入图片描述
上图中的三个命令2A,2B.2C,分别为配置地址选择区域和填色命令,在选择好地址写入对应的数据函数即可完成屏幕的取地址和填色处理。

部分代码框架

初始化代码,取自屏幕官方文档配置的驱动。

*配置好屏幕退出睡眠模式,配置帧速率等操作,如果有需求进行屏幕镜像的可以去参考文档中的36命令那里着重看下*
void TFT_init()
{
	TFT_BL=0;//背光关闭
	
	TFT_RESET=0;
    TFT_delay500ms();
    TFT_RESET=1;
    TFT_delay500ms();
	
	MCU_write_TFT_Byte(0x11,TFT_COMMAND);//睡眠退出
	TFT_delay500ms();
	
	//ST7735R 帧速率
	MCU_write_TFT_Byte(0xB1,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x01,TFT_DATA); 
	MCU_write_TFT_Byte(0x2C,TFT_DATA); 
	MCU_write_TFT_Byte(0x2D,TFT_DATA); 

	MCU_write_TFT_Byte(0xB2,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x01,TFT_DATA); 
	MCU_write_TFT_Byte(0x2C,TFT_DATA); 
	MCU_write_TFT_Byte(0x2D,TFT_DATA); 

	MCU_write_TFT_Byte(0xB3,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x01,TFT_DATA); 
	MCU_write_TFT_Byte(0x2C,TFT_DATA); 
	MCU_write_TFT_Byte(0x2D,TFT_DATA); 
	MCU_write_TFT_Byte(0x01,TFT_DATA); 
	MCU_write_TFT_Byte(0x2C,TFT_DATA); 
	MCU_write_TFT_Byte(0x2D,TFT_DATA); 
	
	MCU_write_TFT_Byte(0xB4,TFT_COMMAND);//列反转
	MCU_write_TFT_Byte(0x07,TFT_DATA); 
	
	//ST7735R Power Sequence
	MCU_write_TFT_Byte(0xC0,TFT_COMMAND); 
	MCU_write_TFT_Byte(0xA2,TFT_DATA); 
	MCU_write_TFT_Byte(0x02,TFT_DATA); 
	MCU_write_TFT_Byte(0x84,TFT_DATA); 
	MCU_write_TFT_Byte(0xC1,TFT_COMMAND); 
	MCU_write_TFT_Byte(0xC5,TFT_DATA); 

	MCU_write_TFT_Byte(0xC2,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x0A,TFT_DATA); 
	MCU_write_TFT_Byte(0x00,TFT_DATA); 

	MCU_write_TFT_Byte(0xC3,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x8A,TFT_DATA); 
	MCU_write_TFT_Byte(0x2A,TFT_DATA); 
	MCU_write_TFT_Byte(0xC4,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x8A,TFT_DATA); 
	MCU_write_TFT_Byte(0xEE,TFT_DATA); 
	
	MCU_write_TFT_Byte(0xC5,TFT_COMMAND);//VCOM 
	MCU_write_TFT_Byte(0x0E,TFT_DATA); 
	
	MCU_write_TFT_Byte(0x36,TFT_COMMAND);//MX,MY,RGB mode 
	
	switch (DISPLAY_DIRECTION)//显示的方向(竖屏:0,横屏:1,竖屏旋转180度:2,横屏旋转180度:3)
	{
		case	0: MCU_write_TFT_Byte(0xC8,TFT_DATA);break;//竖屏
		case	1: MCU_write_TFT_Byte(0xA8,TFT_DATA);break;//横屏
		case    2: MCU_write_TFT_Byte(0x08,TFT_DATA);break;//竖屏翻转180度
		default	 : MCU_write_TFT_Byte(0x68,TFT_DATA);break;//横屏翻转180度
	}

	//ST7735R Gamma Sequence
	MCU_write_TFT_Byte(0xE0,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x0F,TFT_DATA); 
	MCU_write_TFT_Byte(0x1A,TFT_DATA); 
	MCU_write_TFT_Byte(0x0F,TFT_DATA); 
	MCU_write_TFT_Byte(0x18,TFT_DATA); 
	MCU_write_TFT_Byte(0x2F,TFT_DATA); 
	MCU_write_TFT_Byte(0x28,TFT_DATA); 
	MCU_write_TFT_Byte(0x20,TFT_DATA); 
	MCU_write_TFT_Byte(0x22,TFT_DATA); 
	MCU_write_TFT_Byte(0x1F,TFT_DATA); 
	MCU_write_TFT_Byte(0x1B,TFT_DATA); 
	MCU_write_TFT_Byte(0x23,TFT_DATA); 
	MCU_write_TFT_Byte(0x37,TFT_DATA); 
	MCU_write_TFT_Byte(0x00,TFT_DATA); 	
	MCU_write_TFT_Byte(0x07,TFT_DATA); 
	MCU_write_TFT_Byte(0x02,TFT_DATA); 
	MCU_write_TFT_Byte(0x10,TFT_DATA); 

	MCU_write_TFT_Byte(0xE1,TFT_COMMAND); 
	MCU_write_TFT_Byte(0x0F,TFT_DATA); 
	MCU_write_TFT_Byte(0x1B,TFT_DATA); 
	MCU_write_TFT_Byte(0x0F,TFT_DATA); 
	MCU_write_TFT_Byte(0x17,TFT_DATA); 
	MCU_write_TFT_Byte(0x33,TFT_DATA); 
	MCU_write_TFT_Byte(0x2C,TFT_DATA); 
	MCU_write_TFT_Byte(0x29,TFT_DATA); 
	MCU_write_TFT_Byte(0x2E,TFT_DATA); 
	MCU_write_TFT_Byte(0x30,TFT_DATA); 
	MCU_write_TFT_Byte(0x30,TFT_DATA); 
	MCU_write_TFT_Byte(0x39,TFT_DATA); 
	MCU_write_TFT_Byte(0x3F,TFT_DATA); 
	MCU_write_TFT_Byte(0x00,TFT_DATA); 
	MCU_write_TFT_Byte(0x07,TFT_DATA); 
	MCU_write_TFT_Byte(0x03,TFT_DATA); 
	MCU_write_TFT_Byte(0x10,TFT_DATA);  
	
	MCU_write_TFT_Byte(0xF0,TFT_COMMAND);//启动测试命令
	MCU_write_TFT_Byte(0x01,TFT_DATA); 
	MCU_write_TFT_Byte(0xF6,TFT_COMMAND);//禁用ram省电模式
	MCU_write_TFT_Byte(0x00,TFT_DATA); 
	
	MCU_write_TFT_Byte(0x3A,TFT_COMMAND);//65k mode 
	MCU_write_TFT_Byte(0x05,TFT_DATA); 
	MCU_write_TFT_Byte(0x29,TFT_COMMAND);//开启显示
	
	//设置显示区域(行起始,行终止,列起始,列终止)
	TFT_set_region(0,127,0,127);
	
	TFT_clear(BLACK);//清屏(屏幕为黑色)
	TFT_BL=1;//背光开启
}

驱动展示

在这里插入图片描述

总结

关键初始化框架给出,方便直接配置使用,部分功能函数可在下方留言邮箱获取,上线发送,长期发布类似文章,欢迎关注,欢迎随时留言。

版权声明:本文为CSDN博主「优信电子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42250136/article/details/119909394

生成海报
点赞 0

优信电子

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

用51单片机做宿舍门禁系统(1)--1602显示

由于时间紧迫,还有其他考试,所以目前只能抽时间慢慢做慢慢更新了,本身就是一个练手项目。 1602显示 所谓的智能系统,没有显示是万万不能的,所以有一个显示的东西是很必要的

郭天祥的10天学会51单片机_第九节

开发板上的蜂鸣器下面是温度传感器DS18B20 DA转换器的下面是SPI总线(RFR、IOUT、DI0和GND) I2C总线和SPI总线用的多。 I2C总线仲裁:具有 C总线接口的设备都接在总线上

51单片机、直流电机(电机工作5s后停止工作)

对于大功率外设,直接用IO口进行驱动很容易把芯片烧毁,或者无法驱动。那么要想驱动大功率外设,就必须搭建驱动电路。而我们的开发板上搭载了ULN2003驱动芯片,它是一个单片高电压、高电流的达

TM1650芯片驱动四位数码管

自言自语 今天上班被丢了块4位数码管过来,还有一份驱动数码管的芯片资料。还好只有十几页,哈哈哈。 大致浏览下手册,了解到这个芯片叫TM1650,然后是使用模拟IIC协议的。那也就是说&#