1.3inch LCD Module
| ||||||||||||||||||||||||
| ||||||||||||||||||||||||
产品简介
提供树莓派、STM32、arduino例程
产品参数
- 工作电压: 3.3V/5V
- 通信接口: SPI
- 屏幕类型: TFT
- 控制芯片: ST7789
- 分辨率: 240(H)RGB x 240(V)
- 显示尺寸: 23.4(H)x 23.4(V)mm
- 像素大小: 0.0975(H)x 0.0975(V)mm
- 产品尺寸: 45 x 31(mm)
功能引脚
功能引脚 | 描述 |
VCC | 3.3V/5V电源正 |
GND | 电源地 |
DIN | SPI数据输入 |
CLK | SPI时钟输入 |
CS | 片选,低电平有效 |
RST | 复位 |
BL | 背光 |
LCD 及其控制器
本款LCD使用的内置控制器为ST7789VM,是一款240 x RGB x 320像素的LCD控制器,而本LCD本身的像素为240(H)RGB x 240(V),同时由于初始化控制可以初始化为横屏和竖屏两种,因此LCD的内部RAM并未完全使用。
该LCD支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本例程使用RGB565的颜色格式,这也是常用的RGB格式
LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信是速度也会比较快
通信协议
注:与传统的SPI协议不同的地方是:由于是只需要显示,故而将从机发往主机的数据线进行了隐藏,该表格详见Datasheet Page 66。
RESX为复位,模块上电时拉低,通常情况下置1;
CSX为从机片选, 仅当CS为低电平时,芯片才会被使能。
D/CX为芯片的数据/命令控制引脚,当DC = 0时写命令,当DC = 1时写数据
SDA为传输的数据,即RGB数据;
SCL为SPI通信时钟。
对于SPI通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合:
CPHA的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHL = 0,在第一个跳变沿进行数据采集;
CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。
从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。
树莓派
提供C语言与python例程
树莓派使用教程
开启SPI接口
- 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择Interfacing Options -> SPI -> Yes 开启SPI接口
sudo reboot
请确保SPI没有被其他的设备占用,你可以在/boot/config.txt中间检查
安装库
如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用
BCM2835
#打开树莓派终端,并运行以下指令 wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
wiringPi
#打开树莓派终端,并运行以下指令 cd sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错 #Bullseye分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
lgpio
#打开树莓派终端,并运行以下指令 wget https://github.com/joan2937/lg/archive/master.zip unzip master.zip cd lg-master sudo make install # 更多的可以参考官网:https://github.com/gpiozero/lg
- python
sudo apt-get updata sudo apt-get install python-pip sudo pip install RPi.GPIO sudo pip install spidev
硬件连接
LCD | RPi引脚号 | BCM |
VCC | 5V | 5V |
GND | GND | GND |
DIN | 19 | MOSI |
CLK | 23 | SCLK |
CS | 24 | CE0 |
DC | 22 | P25 |
RST | 13 | P27 |
BL | 12 | P18 |
下载例程
在树莓派终端运行:
sudo apt-get install p7zip wget http://www.waveshare.net/w/upload/5/5d/1.3inch_LCD_Module_code.7z 7z x 1.3inch_LCD_Module_code.7z sudo chmod 777 -R 1.3inch_LCD_Module_code cd 1.3inch_LCD_Module_code/RaspberryPi
运行测试程序
- C语言
cd c make clean make sudo ./main
- python
cd python sudo python main.py sudo python key_demo.py
fbtft移植
参考1.3inch LCD HAT FBTFT移植章节
STM32
- 本例程使用的开发板为 XNUCLEO-F103RB,程序是基于HAL库
硬件连接
LCD | XNUCLEO-F103RB |
VCC | 5V |
GND | GND |
DIN | PA7 |
CLK | PA5 |
CS | PB6 |
DC | PA8 |
RST | PA9 |
BL | PC7 |
预期效果
- 屏幕全部刷白
- 显示数字和英文
- 显示中文
- 画矩形框
- 画直线(对角线)
- 画5个空心圆
- 显示一张70X70的logo
Arduino
- 本例程使用的开发板为Arduino UNO
硬件连接
LCD | UNO |
VCC | 5V |
GND | GND |
DIN | D11 |
CLK | D13 |
CS | D10 |
DC | D7 |
RST | D8 |
BL | D9 |
预期效果
- 屏幕全部刷白
- 显示数字和英文
- 显示中文
- 画矩形框
- 画直线(对角线)
- 画5个空心圆
- 显示一张70X70的logo