0.96inch LCD Module

来自Waveshare Wiki
Eng10讨论 | 贡献2019年11月15日 (五) 18:00的版本 →‎文档
跳转至: 导航搜索
0.96inch-LCD-Module
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
显示尺寸 0.96英寸
分辨率 80×160
' 无特性,不解释
' 无特性,不解释
接口 SPI

产品概述

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

产品参数

  • 工作电压: 3.3V
  • 通信接口: SPI
  • 屏幕类型: TFT
  • 控制芯片: ST7735S
  • 分辨率: 160 (V)RGB x 80(H)
  • 显示尺寸: 21.7(V)x 10.8(H)mm
  • 像素大小: 0.1356(V)x 0.135(H)mm
  • 产品尺寸 32.5 x26.00(mm)

接口说明

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

LCD 及其控制器

本款LCD使用的内置控制器为ST7735S,是一款162 x RGB x 132像素的LCD控制器,而本LCD本身的像素为160(H)RGB x 80(V)。
查看数据手册可以得知该控制器支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本屏幕使用RGB565格式的颜色格式,这也是常用的RGB格式。
由于LCD的显示起始位置与控制器的原点不一致,因此在使用控制器初始化显示全屏显示区域时需要对做偏移处理:水平方向从第二个像素点开始显示,垂直方向从第27个像素点开始。这样就可以保证显示的LCD中RAM对应的位置与实际一致。
对于大部分的LCD控制器而言,都可以配置控制器的通信方式,通常都有8080并行接口、三线SPI、四线SPI等通信方式。此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 update
sudo apt-get install python-pip 
sudo pip install RPi.GPIO
sudo apt-get install python-smbus

硬件连接

0.96inch lcd module rpi.png

LCD Raspberry Pi (Board) Raspberry Pi (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://www.waveshare.net/w/upload/1/1d/0.96inch_LCD_Module_code.7z
7z x 0.96inch_LCD_Module_code.7z 
sudo chmod 777 -R 0.96inch_LCD_Module_code
cd 0.96inch_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 5V
GND GND
DIN PA7
CLK PA5
CS PB6
DC PA8
RST PA9
BL PB0
  • 下载到开发板

打开STM32/STM32F103RBT6/MDK-ARM/lcd0in96-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
编译并下载到开发板即可看到现象

Jetson nano

硬件连接

Jetson nanoGPIO兼容树莓派接口

LCD Jetson nano (Board) Jetson nano (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 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/1/1d/0.96inch_LCD_Module_code.7z
7z x 0.96inch_LCD_Module_code.7z 
sudo chmod 777 -R 0.96inch_LCD_Module_code
cd 0.96inch_LCD_Module_code/JetsonNano/

运行测试程序

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