1.8inch LCD Module

来自Waveshare Wiki
Eng10讨论 | 贡献2019年7月31日 (三) 14:36的版本
跳转至: 导航搜索
1.8inch-LCD-Module
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
显示尺寸 1.8英寸
分辨率 128×160
' 无特性,不解释
' 无特性,不解释
接口 SPI

产品概述

提供树莓派(c\python)、stm32、Arduino、Jetson nano(c\python)例程

产品参数

  • 工作电压: 3.3V
  • 通信接口: SPI
  • 屏幕类型: TFT
  • 控制芯片: ST7735S
  • 分辨率: 128*160 (Pixel)
  • 显示尺寸: 35.4(W) * 28.03(H)(mm)
  • 像素大小: 0.219(W)*0.219(H)(MM)
  • 产品尺寸 56.5 * 34(mm)

接口说明

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

LCD 及其控制器

ST7735S是一款132*162像素的LCD,而本产品为128*160像素的LCD,因此在显示上做了一些处理:水平方向从第二个像素点开始显示,垂直方向从第一个像素点开始显示,这样就可以保证显示的时候LCD中RAM对应的位置与实际位置是一致的。
该LCD支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本例程使用RGB565的颜色格式,这也是常用的RGB格式
LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信是速度也会比较快

通信协议

0.96inch lcd module spi.png
注:与传统的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接口

PS:如果使用的是Bullseye分支的系统,需要将”apt-get“改成“apt",Bullseye分支的系统只支持Python3。
  • 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config
选择Interfacing Options -> SPI -> Yes 开启SPI接口

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

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 apt-get install python-smbus

硬件连接

LCD Raspberry Pi (BCM)
VCC 3.3V
GND GND
DIN MOSI
CLK SCLK
CS CE0
DC 25
RST 27
BL 24

下载例程

在树莓派终端运行:

sudo apt-get install p7zip
wget http://www.waveshare.net/w/upload/4/4f/1.8inch-LCD_Module-Code.7z
7zr x 1.8inch-LCD_Module-Code.7z -r -o./1.8inch-LCD_Module-Code
sudo chmod 777 -R 1.8inch-LCD_Module-Code
cd 1.8inch-LCD_Module-Code/RaspberryPi/

运行测试程序

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

STM32

本例程是基于HAL库进行开发的,例程已经在XNUCLEO-F103RB上进行了验证。
点击此处下载代码或在资料中下载。

  • 硬件连接
模块 XNUCLEO-F103RB
VCC 3V3
GND GND
DIN PA7
CLK PA5
CS PB6
DC PA8
RST PA9
BL PC7
  • 下载到开发板

打开STM32/STM32F103RBT6/lcd1in8-demo/MDK-ARM/lcd1in8-demo.uvprojx
编译并下载到开发板即可看到现象

Arduino

本例程已经在Arduino UNO上进行了验证。
点击此处下载代码或在资料中下载。

  • 硬件连接
模块 UNO
VCC 5V
GND GND
DIN D11
CLK D13
CS D10
DC D7
RST D8
BL D9
  • 下载到开发板

打开Arduino/LCD_Show/LCD_Show.ino
编译并下载到开发板即可看到现象
由于使用UNO PLUS开发板,其全局变量只有2Kb,因此提供的例程中没有图片显示的示范,不过调用方法是一样的,只是由于全局变量的不足,而未做demo

Jetson nano

安装库

安装函数库

  • 打开终端界面,输入以下指令安装相应的函数库
sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install Jetson.GPIO
sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

【注意】your_user_name 是你使用的用户名,比如说 waveshare

  • 安装I2C
sudo apt-get install python-smbus
  • 安装图像处理库:
sudo apt-get install python3-pil
sudo apt-get install python3-numpy

下载程序

sudo apt-get install p7zip
wget http://www.waveshare.net/w/upload/4/4f/1.8inch-LCD_Module-Code.7z
7zr x 1.8inch-LCD_Module-Code.7z -r -o./1.8inch-LCD_Module-Code
cd 1.8inch-LCD_Module-Code/JetsonNano/

运行测试程序

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