Arduino ESP32 TFTLCD ST7735 代码和原理
目录
前言
一、3线SPI
二、使用
1.命令
2.对应引脚调整
总结
前言
驱动芯片是ST7735,之前在Arduino上找库,没几个能用的(我FW不能用肯定是我的错),最后还是自己从STM32移植一个。顺便介绍一下ST7735驱动原理。
一、3线SPI
ST7735可以用3线SPI通讯,因为是移植的没用arduino的SPI库,直接模拟SPI。
CS高电平,传数据拉低,同时SCL拉低,SDA开始传输数据,然后SCK拉高,重复8次,CS拉高,整个过程就结束了。
void LCD_Writ_Bus(u8 dat)
{ u8 i;LCD_CS_Clr();for(i=0;i<8;i++){ LCD_SCLK_Clr();if(dat&0x80){LCD_MOSI_Set();}else{LCD_MOSI_Clr();}LCD_SCLK_Set();dat<<=1;} LCD_CS_Set();
}
clr低电平;set高电平。反正能跟时序图对上就行,写数据OK了,写命令就是,拉高下DC,再拉低DC。
void LCD_WR_REG(u8 dat)
{LCD_DC_Clr();LCD_Writ_Bus(dat);LCD_DC_Set();
}
写命令和写数据都搞定。就可以开始操作LCD了。
二、使用
1.命令
可以看到命令caset 那一行是设置X轴位置;RAset设置Y轴位置。只要我们设置完位置,再点亮对应像素点的颜色,我们就可以让这些像素点组成你需要的图案或文字。
那怎么看这个表呢,那设置点位置举例。确定X轴位置,写命令0X2AH,然后写数据,这个数据是一个16位数据。 先写高八位,再写低八位。这样X轴起始位置就确定了,X轴结束位置再写一个16位数据。同理,Y轴起始和结束位置可以用相同方法确定,只不过一开始写命令要写0X2B。同理其它命令也是这样使用的。确定颜色和清屏之类的命令也有,只不过要你们去查ST7735的操作手册了,本来有一份,重置电脑忘记保存了,这图也是从别人那里哪来的。
ST7735s驱动 - 知乎 (zhihu.com),这位大佬写的也不错,可以看看。具体程序如下:
LCD_WR_REG(0x2a);LCD_WR_DATA(x1+2);LCD_WR_DATA(x2+2);LCD_WR_REG(0x2b);LCD_WR_DATA(y1+1);LCD_WR_DATA(y2+1);LCD_WR_REG(0x2c);
确定点的步骤就是这样,至于为什么要+2,是因为实际像素点位置和门位置差2,加上就是对应像素点的位置了。
可以看绿色哪一行y轴是不是差1。说实话我也不确定是不是这样(哈哈)。
然后就是设置颜色了,上一步最后不是写了一个0X2C的命令,所以后面直接跟一个颜色的16位数据。
//画笔颜色
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40 //棕色
#define BRRED 0XFC07 //棕红色
#define GRAY 0X8430 //灰色
#define DARKBLUE 0X01CF //深蓝色
#define LIGHTBLUE 0X7D7C //浅蓝色
#define GRAYBLUE 0X5458 //灰蓝色
#define LIGHTGREEN 0X841F //浅绿色
#define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色
#define LGRAYBLUE 0XA651 //浅灰蓝色(中间层颜色)
#define LBBLUE 0X2B12 //浅棕蓝色(选择条目的反色)
具体颜色有这么多,我只用了黑白两个颜色(别问、问就是懒),你们想用直接把这些复制到.h里面就OK了。
有了画点函数后面就方便了,用像素点组成你想要的图形就OK了。因为字符和英文可以用ascii码,找一个ascii库找写对应的字模就行了。中文就有点麻烦了,所以懒得弄就没搞,中文字库2万多个,还占内存。
所以直接使用的话,实现的功能是,显示ASCII里支持的字符,可以调整颜色。
2.对应引脚调整
代码如下(示例):
#define SCL 13
#define SDA 12
#define RES 14
#define DC 27
#define CS 26
#define BL 25#define USE_HORIZONTAL 1 //显示模式 1 竖屏 2好像是横屏旋转90 #if USE_HORIZONTAL==0||USE_HORIZONTAL==1
#define LCD_W 128
#define LCD_H 160 //你屏幕像素
这里可以改你成你自己定义的串口。然后调整横竖屏;我的屏幕是1.8寸128*160,可以改成你的屏幕大小就可以用了。 这些全在lcd1.h里面改。
总结
没有汉字,字体颜色可以去复制到.h文件里具体使用方法再文件里面有注释,感觉我注释写的还比较全 ,应该能看懂。
LCD_DrawPoint(10,10,BLACK); //画点LCD_DrawPoint(10,11,BLACK);LCD_DrawPoint(11,10,BLACK);LCD_DrawPoint(11,11,BLACK);LCD_ShowChar(15,15,'1',BLACK,WHITE,16,0); //显示单个字符 X位置 Y位置 ‘要显示的字符’ 字体颜色 背景颜色 字号 显示模式 0不重叠 1重叠LCD_ShowString(24,60,"lcd-1",BLACK ,WHITE,16,0); //显示字符串 “要显示的字符串”LCD_ShowString(24,80,"-i",BLACK ,WHITE,16,0); //显示字符串 LCD_ShowIntNum(72,60,i,3,BLACK,WHITE,16); //显示整数变量 i=显示整数LCD_ShowFloatNum1(60,17,00.00,4,BLACK,WHITE,16); //显示两位小数
第一次写可能写的不是很好,见谅。
最后贴上下载地址https://github.com/WINKCM/Arduino-ESP32-TFTLCD-ST7735.git
链接: https://pan.baidu.com/s/1FOVin0QuSzZ5YJ64PX8evg 提取码: 6uc7 复制这段内容后打开百度网盘手机App,操作更方便哦
Arduino ESP32 TFTLCD ST7735 代码和原理相关推荐
- Arduino ESP32通过PWM控制无源蜂鸣器
Arduino ESP32通过PWM控制无源蜂鸣器 相关篇<ESP32在Arduino开发环境中的PWM的使用方法> ESP32通过PWM控制无源蜂鸣器发出声音. 有源和无源蜂鸣器知识科普 ...
- arduino esp32 读福申甲醛传感器
arduino esp32 读福申甲醛传感器 想法 源代码 想法 arduino库丰富,几行代码即可完成需求描述. 缺点是不能Debug. 想持续监测甲醛变化. 使用杜邦线连接,需要将传感器的输出线焊 ...
- Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠
Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠 通过定时器功能,设置5秒,时间到就唤醒深度睡眠 实例代码 /*通过定时器功能唤醒深度睡眠(设置为5秒) */#define uS_ ...
- Arduino ESP32 深度睡眠与外部唤醒(EXT0)
Arduino ESP32 深度睡眠与外部唤醒(EXT0) 使用10K下拉电阻连接到按钮 GPIO 4和GND之间,防止其他杂波信号干扰,在3.3V和GPIO4之间接按键,用来触发EXT0,接线示意图 ...
- Arduino ESP32深度睡眠触摸唤醒(触摸唤醒)
Arduino ESP32深度睡眠触摸唤醒(触摸唤醒) 通过D4–GPIO4引脚触摸感应,触发唤醒功能. 睡眠模式下,触摸中断响应流程图 实例代码 /*深度睡眠触摸唤醒(触摸T0唤醒) */#defi ...
- android studio蓝牙低功耗,arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网
arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网 nodered开发: esp32采用的蓝牙于普通的蓝牙不同,是低功耗蓝牙,手机用一般的蓝牙代码是连不上的.在本文中,不 ...
- Arduino ESP32:测试GPIO中断功能
Arduino ESP32:测试GPIO中断功能 ESP32:测试GPIO中断功能 实例代码 /*测试GPIO中断功能接线说明: 按键1接23,按键2接18 */#include <Arduin ...
- Arduino ESP32 WIFI 蓝牙模式触控按键切换
Arduino ESP32 WIFI &蓝牙模式触控按键切换 相关篇<Arduino ESP32自带触摸传感器功能测试> <ESP32电容式触摸传感器引脚实例> ESP ...
- Arduino ESP32利用PWM实现板载LED呼吸灯效果
Arduino ESP32利用PWM实现板载LED呼吸灯效果 LEDC简介 LED控制(LEDC)外围设备主要用于控制LED的强度,尽管它也可以用于生成PWM信号用于其他目的.它具有16个通道,可以生 ...
最新文章
- AMAB interconnector PL301(二)
- 华人博士拿下ACM SIGSOFT杰出博士论文奖,师从北大谢涛教授
- 百度地图手绘线坐标获取
- springboot 替换tomcat_Springboot (二十八)云配置服务器
- Spring Cloud【Finchley】-07Feign构造多参数GET/POST请求
- 2016年ICT产业趋势预测
- 四、WebApp 基础可视组件(IVX 快速开发教程)
- android 7.1 apk的systemuid相同导致问题[2]
- 用Java描述数据结构之线性表的顺序存储(顺序表),ArrayList及其方法的介绍
- python中mat函数_Python中flatten( )函数及函数用法详解
- ubuntu server 下使用subversion的总结【原创】
- c语言学习-从键盘输入10个字符,按照字典顺序将其排序输出(二维字符数组)
- HPUX11.31环境下,更换HBA卡后的配置操作(HP-UX)
- 初学者python笔记(类的装饰器、property方法、元类)
- 在dos下的文件及文件夹操作命令
- CSS显示属性上的过渡
- 问卷调查报告html模版,问卷调查报告的格式
- Micrium uC-Probe STM32调试工具 ucosIIucosIII
- 天使投资喜欢什么样的商业计划书
- 把一个人的特点写具体作文_把一个人的特点写具体作文400字