目录

前言

一、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 代码和原理相关推荐

  1. Arduino ESP32通过PWM控制无源蜂鸣器

    Arduino ESP32通过PWM控制无源蜂鸣器 相关篇<ESP32在Arduino开发环境中的PWM的使用方法> ESP32通过PWM控制无源蜂鸣器发出声音. 有源和无源蜂鸣器知识科普 ...

  2. arduino esp32 读福申甲醛传感器

    arduino esp32 读福申甲醛传感器 想法 源代码 想法 arduino库丰富,几行代码即可完成需求描述. 缺点是不能Debug. 想持续监测甲醛变化. 使用杜邦线连接,需要将传感器的输出线焊 ...

  3. Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠

    Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠 通过定时器功能,设置5秒,时间到就唤醒深度睡眠 实例代码 /*通过定时器功能唤醒深度睡眠(设置为5秒) */#define uS_ ...

  4. Arduino ESP32 深度睡眠与外部唤醒(EXT0)

    Arduino ESP32 深度睡眠与外部唤醒(EXT0) 使用10K下拉电阻连接到按钮 GPIO 4和GND之间,防止其他杂波信号干扰,在3.3V和GPIO4之间接按键,用来触发EXT0,接线示意图 ...

  5. Arduino ESP32深度睡眠触摸唤醒(触摸唤醒)

    Arduino ESP32深度睡眠触摸唤醒(触摸唤醒) 通过D4–GPIO4引脚触摸感应,触发唤醒功能. 睡眠模式下,触摸中断响应流程图 实例代码 /*深度睡眠触摸唤醒(触摸T0唤醒) */#defi ...

  6. android studio蓝牙低功耗,arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网

    arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网 nodered开发: esp32采用的蓝牙于普通的蓝牙不同,是低功耗蓝牙,手机用一般的蓝牙代码是连不上的.在本文中,不 ...

  7. Arduino ESP32:测试GPIO中断功能

    Arduino ESP32:测试GPIO中断功能 ESP32:测试GPIO中断功能 实例代码 /*测试GPIO中断功能接线说明: 按键1接23,按键2接18 */#include <Arduin ...

  8. Arduino ESP32 WIFI 蓝牙模式触控按键切换

    Arduino ESP32 WIFI &蓝牙模式触控按键切换 相关篇<Arduino ESP32自带触摸传感器功能测试> <ESP32电容式触摸传感器引脚实例> ESP ...

  9. Arduino ESP32利用PWM实现板载LED呼吸灯效果

    Arduino ESP32利用PWM实现板载LED呼吸灯效果 LEDC简介 LED控制(LEDC)外围设备主要用于控制LED的强度,尽管它也可以用于生成PWM信号用于其他目的.它具有16个通道,可以生 ...

最新文章

  1. AMAB interconnector PL301(二)
  2. 华人博士拿下ACM SIGSOFT杰出博士论文奖,师从北大谢涛教授
  3. 百度地图手绘线坐标获取
  4. springboot 替换tomcat_Springboot (二十八)云配置服务器
  5. Spring Cloud【Finchley】-07Feign构造多参数GET/POST请求
  6. 2016年ICT产业趋势预测
  7. 四、WebApp 基础可视组件(IVX 快速开发教程)
  8. android 7.1 apk的systemuid相同导致问题[2]
  9. 用Java描述数据结构之线性表的顺序存储(顺序表),ArrayList及其方法的介绍
  10. python中mat函数_Python中flatten( )函数及函数用法详解
  11. ubuntu server 下使用subversion的总结【原创】
  12. c语言学习-从键盘输入10个字符,按照字典顺序将其排序输出(二维字符数组)
  13. HPUX11.31环境下,更换HBA卡后的配置操作(HP-UX)
  14. 初学者python笔记(类的装饰器、property方法、元类)
  15. 在dos下的文件及文件夹操作命令
  16. CSS显示属性上的过渡
  17. 问卷调查报告html模版,问卷调查报告的格式
  18. Micrium uC-Probe STM32调试工具 ucosIIucosIII
  19. 天使投资喜欢什么样的商业计划书
  20. 把一个人的特点写具体作文_把一个人的特点写具体作文400字

热门文章

  1. “死亡之星”——“阿波非斯”
  2. 互联网创业必备工具盘点
  3. 安卓模拟器的使用--皇室战争免费快速成长之路
  4. python中文分句_Python 中文分句
  5. 对接海康威视ehome踩过的坑总结
  6. Javase尚硅谷笔记
  7. Aop简介 Aop术语 SpringAOP
  8. 如何实现复制文本到剪贴板?
  9. 解决VS2017/2019无法在线升级
  10. 中继(扩展)wifi覆盖范围的路由器的设置(图文教程)【中继路由器的设置图文教程】