2inch LCD Module

来自丢石头百科
2inch LCD Module
2inch-LCD-Module
基本信息

分类: LCD 显示屏

品牌: Waveshare

功能简介
特性
  • 显示尺寸:2英寸
  • 分辨率:240×320

接口

SPI接口

相关产品

产品简介

本产品是 2寸IPS显示屏模块,分辨率为 240*320,使用 SPI 接口通信,LCD 带有内部控制器,已封装好基本函数,可以实现图片旋转、画点、线、圆、矩形,显示英文字符和中文字符,显示图片。
提供完善的配套树莓派例程(BCM2835 库,WiringPi 库,以及 python 例程),STM32 例程,Arduino 例程。

产品参数

  • 工作电压:3.3V/5V
  • 通信接口:SPI
  • 屏幕类型:TFT
  • 控制芯片:ST7789V
  • 分辨率:240(V) x 320(H)RGB
  • 显示尺寸:23.4(H)x 23.4(V)mm
  • 像素大小:0.0975(H)x 0.0975(V)mm
  • 产品尺寸:58 x 35(mm)

功能引脚

功能引脚 描述
VCC 3.3V/5V电源正
GND 电源地
DIN SPI数据输入
CLK SPI时钟输入
CS 片选,低电平有效
DC 数据/命令选择
RST 复位
BL 背光

硬件说明

LCD 及其控制器

该LCD支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本例程使用RGB565的颜色格式,这也是常用的RGB格式。
对于大部分的LCD控制器而言,都可以配置控制器的通信方式,通常都有8080并行接口、三线SPI、四线SPI等通信方式。此LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信速度也会比较快。

通信协议

0.96inch lcd module spi.png
从上的得知使用的是4线SPI通信,查阅数据手册可以得到如下的通信时序图,以传输RGB556为例:
注:与传统的SPI协议不同的地方是:由于是只需要显示,故而将从机发往主机的数据线进行了隐藏。
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接口

RPI open spi.png
然后重启树莓派:

sudo reboot

请确保SPI没有被其他的设备占用,你可以在/boot/config.txt中间检查

安装库

  • 安装BCM2835, 打开树莓派终端,并运行一下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz 
cd bcm2835-1.60/
sudo ./configure
sudo make
sudo make check
sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
  • 安装wiringPi
sudo apt-get install wiringpi
#对于树莓派4B可能需要进行升级:
cd /tmp
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版本,如果没有出现说明安装出错
  • 安装python2库
sudo apt-get updata
sudo apt-get install python-pip 
sudo pip install RPi.GPIO
sudo pip install spidev
sudo apt-get install python-imaging
  • 安装python3库
sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install RPi.GPIO
sudo pip3 install spidev
sudo apt-get install python3-imaging

硬件连接

2inch-LCD-Module-3.jpg

2inch 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-full
wget http://wiki.diustou.com/w/upload/1/19/2inch_LCD_Module_code.7z
7z x 2inch_LCD_Module_code.7z
sudo chmod 777 -R  2inch_LCD_Module_code
cd 2inch_LCD_Module_code/2inch_LCD_Module_code/RaspberryPi\&JetsonNano/

运行测试程序

  • C语言
cd c
make clean
make
sudo ./main
  • python
cd python/examples
sudo python main.py

预期效果

  1. 屏幕全部刷白
  2. 显示数字、英文和中文
  3. 画矩形框
  4. 画直线(对角线)
  5. 画5个空心圆
  6. 显示一张100X100的logo
  7. 显示一张240X320全屏图片

STM32

  • 在产品百科界面下载程序,然后解压。STM32程序位于 ~/ STM32/…
  • 打开STM32中的\XNUCLEO-F103RB\MDK-ARM\Demo.uvprojx,使用Keil uVision5打开。例程使用的是HAL库。测试使用的开发板为微雪XNUCLEO-F103RB,芯片为STM32F103RBT6,如需换芯片或者想使用标准库你只需要更改DEV_Config.c和.h即可,实现里面的函数和宏定义即可。换芯片也可以使用STM32CubeMX。
  • 本例程使用的开发板为XNUCLEO-F103RB,程序是基于HAL库

硬件连接

2inch LCD XNUCLEO-F103RB
VCC 5V
GND GND
DIN PA7
CLK PA5
CS PB6
DC PA8
RST PA9
BL PC7

预期效果

  1. 屏幕全部刷白
  2. 显示数字和英文
  3. 显示中文
  4. 画矩形框
  5. 画直线(对角线)
  6. 画5个空心圆
  7. 显示一张70X70的logo

Arduino

  • 在产品百科界面下载程序,然后解压。Arduino程序位于 ~/Arduino UNO/…
  • 把Arduino目录下的文件夹复制到Arduino安装目录的libraries下,一般是C:\Program Files (x86)\Arduino\libraries或者C:\Users\用户名\Documents\Arduino\libraries
  • 打开Arduino IDE: 点击 File-> Example,查看是否有LCD_2inch选项,若有说明库导入成功,打开LCD_2inch
  • 本例程使用的开发板为Arduino UNO

硬件连接

2inch LCD UNO PLUS
VCC 5V
GND GND
DIN D11
CLK D13
CS D10
DC D7
RST D8
BL D9

预期效果

  1. 屏幕全部刷白
  2. 显示数字和英文
  3. 显示中文
  4. 画矩形框
  5. 画直线(对角线)
  6. 画5个空心圆
  7. 显示一张70X70的logo

选型列表

型号 分辨率 显示接口 面板材质 触摸类型 触摸接口 扬声器 音频输出
0.96inch LCD Module 80x160 SPI TFT - - - -
1.3inch LCD HAT 240x240 SPI IPS - - - -
1.3inch LCD Module 240x240 SPI TFT - - - -
1.3inch OLED (B) 128x64 I2C/SPI OLED(蓝色) - - - -
1.44inch LCD HAT 128x128 SPI TFT - - - -
1.5inch RGB OLED Module 128x128 SPI OLED(65K彩色) - - - -
1.8inch LCD Module 160x128 SPI TFT - - - -
2.23inch OLED HAT 128x32 I2C/SPI OLED(白色) - - - -
2inch LCD Module 320x240 SPI TFT - - - -
3.5HD480320SR TFT LCD 480x320 HDMI TFT 电阻式 SPI -
3.5HS480320SR TFT LCD 480x320 SPI (高速) TFT 电阻式 SPI - -
3.5inch HDMI LCD 480x320 HDMI IPS 电阻式 SPI -
3.5inch RPi LCD (A) 480x320 SPI TFT 电阻式 SPI - -
4.3inch DSI LCD 800x480 DSI IPS 电容式 I2C - -
4HD480800SR IPS LCD 800x480 HDMI IPS 电阻式 SPI -
4inch HDMI LCD 800x480 HDMI IPS 电阻式 SPI - -
4inch Resistive Touch LCD 800x480 8080 IPS 电阻式 SPI - -
5HD800480SR TFT LCD 800x480 HDMI TFT 电阻式 SPI - -
5HD800480UC TFT LCD 800x480 HDMI TFT 电阻式 USB -
5inch HDMI LCD 800x480 HDMI TFT 电阻式 SPI - -
7HD1024600UC IPS LCD 1024x600 HDMI IPS 电容式 USB - -
7HD1024600UCC IPS LCD 1024x600 HDMI IPS 电容式 USB
7HD800480UC TFT LCD 800x480 HDMI TFT 电容式 USB - -
7inch HDMI LCD (H) 1024x600 HDMI IPS 电容式 USB -
Display (1024×600, 7inch, IPS, HD, C) 1024x600 HDMI IPS 电容式 USB - -

FAQ

问题:
使用树莓派控制,LCD黑屏?
答复:

a) 检查打开了SPI;
b) 检查背光引脚是否有输出,无输出可尝试悬空BL控制线;


问题:
不正确的使用树莓派控制可能会导致?
答复:

如果运行wiringPi例程正常,再运行python或者BCM2835可能会屏幕无法正常刷新,因为bcm2835库是树莓派cpu芯片的库函数,底层是直接操作寄存器,而wiringPi库和python的底层都是通过读写linux系统的设备文件操作设备,可能导致GPIO口异常,重启树莓派可完美解决。


问题:
如何翻转图像?
答复:

C语言控制可以使用函数Paint_SetRotate(Rotate);当时在C语言中翻转的角度只能为0、90、180、270度;Python可以调用rotate(Rotate)来翻转任意角度。


问题:
Python Image库
答复:

对于有些树莓派系统可能并没有 image 这个库,运行:sudo apt-get install python-imaging 安装 python-imaging 库



Icon-mail.png 联系 丢石头

我们的工作时间是: 09:00-18:00 (UTC+8 周一到周六)