1.8inch LCD Module
用户手册
1.8inch LCD Module
用户手册
产品概述
本产品是
1.8
寸电阻屏模块,分辨率为
128*160,带有内部控制器,½用 SPI
接口通信,已封装
号基本½数,可以实现点的大小,线的粗细实虚,是否填充圆,矩½,以及显示英文字符。
提供树莓派例程,STM32 例程,Arduino 例程
产品特性
类型:
接口:
控制芯片:
色阶指数:
分辨率:
产品尺寸:
显示尺寸:
像素大小:
工½温度:
接口说明
TFT
SPI
ST7735S
256K
128*160 (Pixel)
56.5 * 34(mm)
35.4(W) * 28.03(H)(mm)
0.219(W)*0.219(H)(MM)
-30°C ~ 85°C
标识
3V3
GND
DIN
CLK
CS
DC
RST
BL
3.3V
电源输入
地
SPI
数据输入
SPI
时钟
从机片选
数据/½令
复½
背光
描述
版本:V1.0,
2017
年
11
月
7
日
1
1.8inch LCD Module
用户手册
程序分析
1.
工½原理
ST7735S
是一款
132*162
像素的
LCD,而本产品为 128*160
像素的
LCD,因此在显示
上做了一些处理:水平方向从第二个像素点开始显示,垂直方向从第一个像素点开始显
示,这样就可以保证显示的时候
LCD
中
RAM
对应的½½与实际½½是一致的。
该
LCD
支持
12
½,16 ½以及
18
½每像素的输入颜色格式,即
RGB444,RGB565,
RGB666
三种颜色格式,本例程½用
RGB565
的颜色格式,这也是常用的
RGB
格式
LCD
½用四线
SPI
通信接口,这样可以大大的节省
GPIO
口,同时通信是速度也会比较
快
2.
通信协议
注:与传统的
SPI
协议不同的地方是:由于是只需要显示,故而将从机发送到主机的数据线进
行了隐藏,该表格详见
datasheet page 58.
RESX:复½,模块上电时拉½,通常情况下½ 1;
IM2:控制模块数据通信方式,此处½用 SPI
通信;
CSX:为从机片选,仅½ CS
为½电平时,芯片才会被½½
D/CX:芯片的数据/½令控制引脚,½ DC=0
时写½令,½
DC=1
时写数据
SDA:传输的数据,即 RGB
数据
SCL:SPI
通信时钟
版本:V1.0,
2017
年
11
月
7
日
2
1.8inch LCD Module
用户手册
对于
SPI
通信而言,数据是有传输时序的,即时钟相½(CPHA) 与时钟极性(CPOL)的
组合:
CPOL
的高½决定串行同步时钟的空闲状态电平,CPOL=0,为½电平。
CPHA
的高½决定串行同步时钟是在第一个时钟跳变沿还是第二个时钟跳变沿数据被采
集, ½
CPHL=0,在第一个跳变沿进行数据采集
这个两者组合就成为四种
SPI
通信方式,½内通常½用的是
SPI0,
即
GPHL=0, CPOL=0
从图中可以看出,½
SCLK
第一个下降沿时开始传输数据,一个时钟周期传输
8bits
数据,
½用
SPI0,按½传输,高½在前,½½在后。
实验演示
本模块提供树莓派和
STM32
和
Arduino
例程,其中树莓派提供了
BCM2835, WiringPi
以及
python
程序。实现常用屏幕操½功½:画点、画线、画矩½,画圆及他们的大小,½度。填
充、显示英文字符并提供
5
种常见字½,以及画图等功½。
为了方便您的½用,这里对例程½用进行了说明。
树莓派程序
1.
树莓派开启
SPI
功½
sudo raspi-config
选择
Advanced Options -> SPI -> yes
启动
SPI
内核驱动
2.
½数库的安装
关于树莓派½数库的安装详细见微雪课堂:
http://www.waveshare.net/study/article-742-1.html
此处详细介绍了
WiringPi、bcm2835、python
的安装
3.
½用
对于
BCM2835
与
WiringPi
而言只需要把对应的例程拷贝进树莓派中(可通过
samba
或者
直接复制到
SD)即可,一下示例均复制到了树莓派 pi
用户目½下。
3.1 BCM2835
½用
运行
ls
½令,可见如下文件
版本:V1.0,
2017
年
11
月
7
日
3
1.8inch LCD Module
用户手册
其中:bin 文件夹中为项目生成的.o 文件,通常情况下我们是不需要管的:
Fonts
文件夹中为
5
种常见字½。
Pic
文件夹中为显示的图片,请保证图片的像素为
128*128,否则可½显示不全。并且需要
保证图片为.bmp 格式的。
Obj
文件夹中为项目文件,其中有
mian.c, OLED_Driver.c
及.h,
DEV_Config.c
及.h,以及
OLED_GUI.c
及.h
main.c:主½数。需要注意的是,½然定义了
OLED_ScanDir,这个是控制扫描方向的,½
是此模块为树莓派专用,同时也为了程序的兼容性,此处½然定义了½数,½是不会½响
扫描方向。
DEV_Config.c:定义了树莓派的管脚及通信方式。
LCD_Driver.c:OLED
的驱动,通常情况下不需要做修改
LCD_GUI.c:常用的画点,线,图,字½数,通常情况下½只需要修改
GUI_Show()这个
jams
就,这个½数为显示调用½数。
LCD_BMP.c:
读取解析
bmp
图片文件,然后进行显示。
Makefile:
工程的编译规则,如果更改了代码,需要先执行
make clean
清除全部文件依
赖以及生产的可执行文件,然后再执行
make,这样 makefile
就会自动编译整个项目从而生
成可执行文件。
oled_1in8:可执行文件,通过
make
½令生成
用户½用的时候只需要执行
sudo ./oled_1in8
执行程序即可
3.2 WiringPi
½用
运行
ls
½令,可见如下文件
WiringPi
与
BCM2835
文件目½相同,区别在两点:
一:
WiringPi
是通过读取
Linux
系统的设备文件操½,而
bcm2835
则是树莓派
cpu
芯片的
库½数,操½的是寄存器。因此如果先½用了
BCM2835
库,wiringpi 则会½用失败,此时
重启系统即可;
版本:V1.0,
2017
年
11
月
7
日
4
1.8inch LCD Module
用户手册
二:由于第一个区别,他们的底层的配½不一样,在
DEV_Config.c
中½用的为
WiringPi
及
其相应的
wiringPiSPI
来提供底层接口
同样,只需运行
sudo ./oled_1in8
运行程序即可
3.3 Python
运行
ls,可见文件如下:
LCD_1in8.py:
LCD
驱动程序
LCD_Config.py:
硬件底层接口配½
运行程序:
sudo python main.py
注:有些树莓派系统可½没有
image
这个库。运行:sudo
apt-get install python-imaging
安装
python-imaging
库
Image
试
python
图像处理库,任½一副图像½是用一个
Image
对象表示,因此可以通过
new
方法来创建一张空½图片,大小与
LCD
的最大啊显示范围一直,通过
Draw
库来进行
画图, 最后把这个图片传递到
LCD
上。这里通过
Image.load()去读取点的 RGB888
数据,
把他们的数据传话为
RGB565,通过每一个点的扫描,达到整屏显示的效果。核心代码如
图:
3.4
开机自动运行
通过配½/etc/rc.local,½代码在树莓派启动时运行
运行:
sudo vim /etc/rc.local
在
exit 0
前加上:
sudo python /home/pi/python/demo.py &
需要注意的是:/home/pi/python/demo.py 为放½例程所在目½½½,可以通过½令:pwd
来获取
版本:V1.0,
2017
年
11
月
7
日
5