驱动TFT-1.44寸屏(ST7735)显示器

目录

一、驱动芯片介绍

二、驱动方式

三、完整代码下载

        TFT1.44寸屏,搭配ST7735驱动芯片,是一种专为小型电子设备设计的彩色液晶显示解决方案。该屏幕采用薄膜晶体管(TFT)技术,能够实现高亮度、高对比度和丰富的色彩表现(通常支持262K色,即18位色彩深度),提供清晰细腻的显示效果。ST7735作为一款集成度高的驱动芯片,不仅支持多种分辨率(在1.44寸屏上通常为128x128像素),还具备RGB RAMDAC、控制器和GPIO接口等功能,并通过SPI接口与微控制器进行通信。此外,ST7735还提供了硬件加速图形绘制功能,如点、线、矩形绘制及文本显示等,进一步提升了显示性能。该组合广泛应用于仪器仪表、智能设备等嵌入式系统中,因其低功耗特性而特别适合便携式设备。通过编写相应的驱动程序,可以方便地初始化ST7735驱动芯片,配置SPI接口,并发送显示数据,使TFT1.44寸屏正常工作。

一、驱动芯片介绍

  • 屏幕尺寸:1.44英寸
  • 分辨率:128x128像素
  • 色彩:支持262K色,即18位色彩深度(6位红、6位绿、6位蓝各通道),能够提供相对丰富的颜色表现。
  • 接口类型:MCU接口,可通过SPI协议与微控制器进行通信。
  • 驱动型号:ST7735
  • 功能:ST7735是一款低功耗的彩色TFT液晶屏驱动芯片,广泛应用于各种嵌入式系统和电子设备中。它集成了RGB RAMDAC(随机存取的数字模拟转换器)、控制器和GPIO接口,支持硬件加速图形绘制功能,如画点、线、矩形、填充以及文本显示等。
  • 兼容性:可直接以SPI协议,或8位/9位/16位并行连接外部控制器。显示数据可以存储在片内的132x162x18 bits内存中,显示内存的读写不需要外部时钟驱动。
  • 型号差异:ST7735有几种不同的型号,如ST7735、ST7735R、ST7735S等。-R和-S型号在功能上与原始型号一致,但增加了垂直滚动功能,并容忍更高的电压(最高到4.8V)。

        由于TFT1.44寸屏具有体积小、功耗低、色彩丰富等特点,因此非常适合用于智能手表、便携式医疗设备、小型电子仪器等需要显示信息的嵌入式系统中。

二、驱动方式

        首先,我们需要根据实际的硬件连接来定义LCD接口所使用的GPIO引脚。

/******************************************************************************接口定义,请根据接线修改并修改相应IO初始化--驱动板子和IO要对应 */
//	#define LCD_DI        	//PA7      	//数据输入线
//	#define LCD_SC        	//PA5      	//时钟线
//	#define LCD_CS        	//PB1      	//片选	
//	#define LCD_SDO/RST     //PA6      	//数据输出/复位
//	#define LCD_RS         	//PB0       //命令/数据切换
//	#define LCD_BLK         //PB10    	//背光控制

        使用下 LCD_Init 函数通过SPI接口与TFT进行通信,并执行各种各个寄存器的初始化配置等。 

/*******************************************************************************/
//函数:void LCD_Init(void)
//函数功能:初始化lcd
/*******************************************************************************/
void LCD_Init(void){ 	LCD_BLK_On;           //开启背光LCD_SoftRest();        //软复位 //LCD Init For 1.44Inch LCD Panel with ST7735R.LCD_WR_REG(0x11);//Sleep exit HAL_Delay(120);//ST7735R Frame RateLCD_WR_REG(0xB1); LCD_WR_DATA8(0x01); LCD_WR_DATA8(0x2C); LCD_WR_DATA8(0x2D); LCD_WR_REG(0xB2); LCD_WR_DATA8(0x01); LCD_WR_DATA8(0x2C); LCD_WR_DATA8(0x2D); LCD_WR_REG(0xB3); LCD_WR_DATA8(0x01); LCD_WR_DATA8(0x2C); LCD_WR_DATA8(0x2D); LCD_WR_DATA8(0x01); LCD_WR_DATA8(0x2C); LCD_WR_DATA8(0x2D); LCD_WR_REG(0xB4); //Column inversion LCD_WR_DATA8(0x07); //ST7735R Power SequenceLCD_WR_REG(0xC0); LCD_WR_DATA8(0xA2); LCD_WR_DATA8(0x02); LCD_WR_DATA8(0x84); LCD_WR_REG(0xC1); LCD_WR_DATA8(0xC5); LCD_WR_REG(0xC2); LCD_WR_DATA8(0x0A); LCD_WR_DATA8(0x00); LCD_WR_REG(0xC3); LCD_WR_DATA8(0x8A); LCD_WR_DATA8(0x2A); LCD_WR_REG(0xC4); LCD_WR_DATA8(0x8A); LCD_WR_DATA8(0xEE); LCD_WR_REG(0xC5); //VCOM LCD_WR_DATA8(0x0E); LCD_WR_REG(0x36); //MX, MY, RGB mode LCD_WR_DATA8(0xC8); //ST7735R Gamma SequenceLCD_WR_REG(0xe0); LCD_WR_DATA8(0x0f); LCD_WR_DATA8(0x1a); LCD_WR_DATA8(0x0f); LCD_WR_DATA8(0x18); LCD_WR_DATA8(0x2f); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x20); LCD_WR_DATA8(0x22); LCD_WR_DATA8(0x1f); LCD_WR_DATA8(0x1b); LCD_WR_DATA8(0x23); LCD_WR_DATA8(0x37); LCD_WR_DATA8(0x00); 	LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x02); LCD_WR_DATA8(0x10); LCD_WR_REG(0xe1); LCD_WR_DATA8(0x0f); LCD_WR_DATA8(0x1b); LCD_WR_DATA8(0x0f); LCD_WR_DATA8(0x17); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x2c); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x2e); LCD_WR_DATA8(0x30); LCD_WR_DATA8(0x30); LCD_WR_DATA8(0x39); LCD_WR_DATA8(0x3f); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0x10);  LCD_WR_REG(0x2a);LCD_WR_DATA8(0x00);LCD_WR_DATA8(0x00);LCD_WR_DATA8(0x00);LCD_WR_DATA8(0x7f);LCD_WR_REG(0x2b);LCD_WR_DATA8(0x00);LCD_WR_DATA8(0x00);LCD_WR_DATA8(0x00);LCD_WR_DATA8(0x9f);LCD_WR_REG(0xF0); //Enable test command  LCD_WR_DATA8(0x01); LCD_WR_REG(0xF6); //Disable ram power save mode LCD_WR_DATA8(0x00); LCD_WR_REG(0x3A); //65k mode LCD_WR_DATA8(0x05); LCD_WR_REG(0x29);//Display on	 LCD_Display_Dir(LCD_DIR_Mode);	//选择--屏幕显示方式LCD_BLK_On;					//点亮背光LCD_Clear(WHITE);}

        基于STM32 HAL库编写的,使用下面这些函数通过SPI接口与TFT进行通信,并执行各种控制操作,如写入寄存器、写入数据、显示开启/关闭等。 

/********************************************************************/
//函数:u8 SPI_ReadWriteByte(u8 TxData)
//函数功能: SPI读写函数 : 使用操作寄存器方式,速度更快
//SPI1 读写一个字节
//TxData:要写入的字节
//返回值:读取到的字节
//*******************************************************************/
u8 SPI_ReadWriteByte(u8 TxData){		 			 while(HAL_SPI_Transmit(&hspi1, &TxData, 1, 100) != HAL_OK);         // 发送数据
}//********************************************************************/
//函数:void LCD_WR_REG(u16 regval)
//函数功能:
//写寄存器函数
//regval:寄存器值
//*******************************************************************/
void LCD_WR_REG(u16 regval){   LCD_CS_CLR;  //LCD_CS=0  //片选LCD_RS_CLR;  //LCD_RS=0  //设置命令状态SPI_ReadWriteByte(regval&0x00FF);LCD_CS_SET;  //LCD_CS=1	 
}//*******************************************************************/
//函数:void LCD_WR_DATA8(u8 data)   //写8位数据
//函数功能:
//液晶屏--写8位数据函数
//*******************************************************************/
void LCD_WR_DATA8(u8 data){LCD_CS_CLR;  //LCD_CS=0  //片选LCD_RS_SET;	 //LCD_RS=1   //设置数据状态			    	   SPI_ReadWriteByte(data);	LCD_CS_SET;  //LCD_CS=1   			 
}//*******************************************************************/
//函数:void LCD_WR_DATA16(u16 data)   //写16位数据
//函数功能:写LCD数据
//输入参数:
//data:要写入的值
//*******************************************************************/
void LCD_WR_DATA16(u16 data){	LCD_CS_CLR;  //LCD_CS=0  //片选LCD_RS_SET;	 //LCD_RS=1   //设置数据状态SPI_ReadWriteByte(data>>8);SPI_ReadWriteByte(data);LCD_CS_SET;    //LCD_CS=1
}//*******************************************************************/
//函数:void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue)  //写液晶屏寄存器
//函数功能:写寄存器
//输入参数: 
//LCD_Reg:寄存器地址
//LCD_RegValue:要写入的数据
//*******************************************************************/
void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue){	LCD_WR_REG(LCD_Reg);		   //写入要写的寄存器序号	 LCD_WR_DATA8(LCD_RegValue);//写入数据	    		 
}//*******************************************************************/
//函数:void LCD_WriteRAM_Prepare(void)   
//函数功能:开始写GRAM  命令
//*******************************************************************/
void LCD_WriteRAM_Prepare(void){LCD_WR_REG(lcddev.wramcmd);	  
}	//*******************************************************************/
//函数:LCD_WriteRAM(u16 RGB_Code)   
//函数功能:写入点阵颜色值
//输入参数:
//RGB_Code:颜色值
//*******************************************************************/
void LCD_WriteRAM(u16 RGB_Code){							    LCD_WR_DATA16( RGB_Code );//写十六位GRAM
}//********************************************************************************/
//函数:void LCD_DisplayOn(void)
//函数功能:
//LCD开启显示
//*******************************************************************/
void LCD_DisplayOn(void){					   LCD_WR_REG(0X29);	//开启显示
}	//*******************************************************************/
//函数:void LCD_DisplayOff(void)
//函数功能:
//LCD关闭显示
//*******************************************************************/
void LCD_DisplayOff(void){	   LCD_WR_REG(0X28);	//关闭显示
} //********************************************************************************/
//函数:void LCD_SoftRest(void)
//函数功能:给屏幕发命令,执行软复位命令
//LCD开启显示
//*******************************************************************/
void LCD_SoftRest(void){					   LCD_WR_REG(0x01);	//发送软复位命令HAL_Delay(100);  // delay 50 ms 
}	//********************************************************************************/
//函数:void LCD_SoftRest(void)
//函数功能:给屏幕发命令,执行硬复位命令
//LCD开启显示
//*******************************************************************/
void LCD_HardwareRest(void){					   
//	LCD_RST_CLR;     //液晶屏复位 --硬复位--使能 
//	HAL_Delay(50);   // delay 50 ms 
//	LCD_RS_SET;      //液晶屏复位 --硬复位--失能 
//	HAL_Delay(30);   // delay 30 ms 
}	

        通过调用 Demo_Menu 函数,进行示例的演示。

//****************************************************************************************/
//函数:void Demo_Menu(void)
//功能描述: 演示程序菜单
/****************************************************************************************/
void Demo_Menu(void){LCD_Clear(WHITE); //清屏Draw_Font24B(4,30,RED,"液晶屏测试");Draw_Font16B(4,60,BLUE,"1: 电子颜色填充");Draw_Font16B(4,80,BLUE,"2: 文字显示");Draw_Font16B(4,100,BLUE,"3: 图片显示");Draw_Font16B(4,120,RED,"shop155800028.taobao.com");HAL_Delay(2000);//延时Color_Test();       //颜色填充测试Font_Test();        //字体字形显示测试Show_Picture();     //显示一张图片LCD_Clear(WHITE); //清屏LCD_ShowString(0,0,20,20,12,RED,"!#2");DisplayButtonUp(5,20,25,35);DisplayButtonDown(45,20,65,35);LCD_ShowxNum(5,40,99,3,12,RED,0);LCD_ShowNum(55,40,888,3,12,RED);HAL_Delay(2000);	}

三、完整代码下载

项目代码下载链接:https://download.csdn.net/download/qq_26043945/89935663

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络八股文个人总结

1.TCP/IP模型和OSI模型的区别 在计算机网络中,TCP/IP 模型和 OSI 模型是两个重要的网络协议模型。它们帮助我们理解计算机通信的工作原理。以下是它们的主要区别,以通俗易懂的方式进行解释: 1. 模型层数 OSI 模型:有 7 层&#…

使用onnxruntime-web 运行yolov8-nano推理

ONNX(Open Neural Network Exchange)模型具有以下两个特点促成了我们可以使用onnxruntime-web 直接在web端上运行推理模型,为了让这个推理更直观,我选择了试验下yolov8 识别预览图片: 1. 跨平台兼容性 ONNX 是一种开…

Qt 练习做一个登录界面

练习做一个登录界面 效果 UI图 UI代码 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Dialog</class><widget class"QDialog" name"Dialog"><property name"ge…

ArcGIS软件之“新建中学最适合地址”地图制作

目录 最终效果图(全文图中的颜色类似即可&#xff0c;形状一样为标准&#xff09;第一步、设置现有中学的欧式距离第二步、将计算好的欧式距离 进行重分类第三步、进行核密度分析第四步、进行人口密度的重分类第五步、进行土地使用的要素转栅格第六步、对上一步进行重分类第七步…

就业市场变革:AI时代,我们将如何评估人才?

内容概要 在这个充满变革的时代&#xff0c;就业市场正被人工智能&#xff08;AI&#xff09;技术深刻改变。随着技术的进步&#xff0c;传统的人才评估方式逐渐显示出其局限性。例如&#xff0c;过去依赖于纸质简历和面试评估的方式在快速变化的环境中难以准确识别真实的人才…

Linux Kernel Programming (个人读书笔记)

目录 Before everything begins 笔者的环境 关于如何在Arch Linux下载Virtual Box 下载一个镜像&#xff0c;然后开启一个简单的虚拟机 在Ubuntu虚拟机下东西 配置我们的内核 啥是KConfig和KBuild? 构建内核配置选择 启动&#xff01;一个好的内核配置的开始 使用分发…

【传知代码】智慧医疗:纹理特征VS卷积特征

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 论文概述纹理特征和深度卷积特征算法流程数据预处理方法纹理特征提取深度卷积特征提取分类网络搭建代码复现BLS_Model.py文件——分类器搭建py…

算法深度剖析:前缀和

文章目录 前言一、一维前缀和模板二、二维前缀和模板三、寻找数组的中心下标四、除自身以外数组的乘积五、和为 K 的子数组六、和可被 K 整除的子数组七、连续数组八、矩阵区域和 前言 本章将深度剖析前缀和&#xff0c;以及总结前缀和模板。 前缀和是一种在算法和数据处理中…

leetcode双指针题目总结

文章目录 283. 移动零题目描述解题 11. 盛最多水的容器题目描述解法解释时间复杂度 15. 三数之和题目描述解法思路解释优势 42. 接雨水题目描述解答具体思路 283. 移动零 题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非…

Android——显式/隐式Intent

概述 在Android中&#xff0c;Intent是各个组件之间信息通信的桥梁&#xff0c;它用于Android各组件的通信。 Intent 的组成部分 一、显式 Intent 第一种方式 Intent intent new Intent(this, ActFinishActivity.class);startActivity(intent);第二种方式 Intent intent …

时序预测 | Matlab基于TSA-LSTM-Attention被囊群优化算法优化长短期记忆网络融合注意力机制多变量多步时间序列预测

时序预测 | Matlab基于TSA-LSTM-Attention多变量多步预测 目录 时序预测 | Matlab基于TSA-LSTM-Attention多变量多步预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Matlab基于TSA-LSTM-Attention被囊群优化算法优化长短期记忆网络融合注意力机制多变量多…

PAT甲级-1041 Be Unique

题目 题目大意 从一组数字中选出第一个唯一出现的数&#xff0c;输出该数。如果没有&#xff0c;则输出None。 思路 哈希的思想&#xff0c;将数值作为索引&#xff0c;对应该数值出现的次数&#xff0c;然后遍历数组即可。 注意第一个数字是指数字的个数&#xff0c;不是数…

LLM 使用 Elastic 实现可观察性:Azure OpenAI (二)

作者&#xff1a;来自 Elastic Muthukumar Paramasivam•Lalit Satapathy 我们为 Azure OpenAI GA 包添加了更多功能&#xff0c;现在提供提示和响应监控、PTU 部署性能跟踪和计费洞察&#xff01; 我们最近宣布了 Azure OpenAI 集成的 GA。你可以在我们之前的博客 LLM 可观察性…

Python画图3个小案例之“一起看流星雨”、“爱心跳动”、“烟花绚丽”

源码如下&#xff1a; import turtle # 导入turtle库&#xff0c;用于图形绘制 import random # 导入random库&#xff0c;生成随机数 import math # 导入math库&#xff0c;进行数学计算turtle.setup(1.0, 1.0) # 设置窗口大小为屏幕大小 turtle.title("流星雨动画&…

二十九、Python基础语法(继承-上)

一、概念介绍 继承&#xff1a;继承描述的是类与类之间的关系&#xff0c;集成之后子类对象可以直接使用父类中定义的方法的属性&#xff0c;可以减少代码冗余&#xff0c;提高编码效率。 二、继承语法 三、继承例子 # 定义一个父类 Animal class Animal:def __init__(self,…

‌频率和波长之间存在反比关系‌

‌频率和波长之间存在反比关系‌。根据波速公式vλf&#xff0c;在同种介质中&#xff0c;波的传播速度相同&#xff0c;因此波长和频率的乘积不变&#xff0c;即λv/f。这意味着频率越高&#xff0c;波长越短&#xff1b;频率越低&#xff0c;波长越长。 ‌频率和波数的转换公…

Rust 力扣 - 238. 除自身以外数组的乘积

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题主要有个关键点&#xff0c;就是元素能取0&#xff0c;然后我们分类讨论元素为0的数量 如果数组中存在至少两个元素为0&#xff0c;则每个元素的除自身以外的乘积为0如果数组中仅存在一个0&#xff0c;则为…

我们来学mysql -- 连接(原理版)

我们来学mysql -- 连接 题记两张表驱动表 题记 回到初学者的视角&#xff0c;navicat或命令窗口&#xff0c;呈现一行行数据&#xff0c;类比为excel工作薄更是深入人心通过join将多表的记录关联起来&#xff0c;这似乎也没啥问题只是好像是那么回事&#xff0c;又…似乎有想说…

Ubuntu 22.04安装部署

一、部署环境 表 1‑1 环境服务版本号系统Ubuntu22.04 server lts运行环境1JDK1.8前端WEBNginx1.8数据库postgresqlpostgresql13postgis3.1pgrouting3.1消息队列rabbitmq3.X(3.0以上)运行环境2erlang23.3.3.1 二、安装系统 2.1安装 1.安装方式&#xff0c;选第一条。 2.选择…

红队-windows基础篇

声明 通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一.Windows&linux介绍 微软windows操作系统&#xff0c;…