匿名
未登录
登录
丢石头百科
搜索
查看“1.44inch LCD HAT”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
1.44inch LCD HAT
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
<div class="tabber"> {{Product |images=[[File:1.44inch-LCD-HAT-intro.jpg|360px |alt=1.44inch-LCD-HAT | 1.44inch LCD HAT]] |categories= {{Category|树莓派}} {{Category|LCD}} {{Category|显示屏}} |brand=Waveshare |features= * 显示尺寸:1.44英寸 * 分辨率:128×128 |interfaces={{Category|SPI接口}} |related= * [[1.8inch LCD Module]] }} <div class="tabbertab" title="说明"> ==产品概述== '''提供树莓派程序驱动、FBTFT移植教程''' ===产品参数=== *工作电压: 3.3V *通信接口: SPI *屏幕类型: TFT *控制芯片: ST7735S *分辨率: 128*128 (Pixel) *显示尺寸: 25.5*26.5(mm) *像素大小: 0.129(W)*0.219(H)(MM) *产品尺寸 65*30.2(mm) ===功能引脚=== {|border=1; |-style="background:#0000ff; color:white;" align="center" |功能引脚||树莓派接口(BCM)||描述 |-align="center" |KEY1||P21||按键1GPIO |-align="center" |KEY2||P20||按键2GPIO |-align="center" |KEY3||P16||按键3GPIO |-align="center" |摇杆UP||P6||摇杆上 |-align="center" |摇杆Down||P19||摇杆下 |-align="center" |摇杆Left||P5||摇杆左 |-align="center" |摇杆Right||P26||摇杆右 |-align="center" |摇杆Press||P13||摇杆按下 |-align="center" |SCLK||P11/SCLK||SPI时钟线 |-align="center" |MOSI||P10/MOSI||SPI数据线 |-align="center" |DC||P25||数据/命令选择 |-align="center" |CS||P8/CE0||片选 |-align="center" |RST||P27||复位 |-align="center" |BL||P24||背光 |} ===LCD 及其控制器=== ST7735S是一款132*162像素的LCD控制器,而本产品为128*128像素的LCD,因此在显示上做了一些处理:水平方向从第二个像素点开始显示,这样就可以保证显示的时候LCD中RAM对应的位置与实际位置是一致的。<br /> 该LCD支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本例程使用RGB565的颜色格式,这也是常用的RGB格式<br /> LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信是速度也会比较快<br /> ===通信协议=== [[file:0.96inch_lcd_module_spi.png|900px]]<br /> 注:与传统的SPI协议不同的地方是:由于是只需要显示,故而将从机发往主机的数据线进行了隐藏,该表格详见Datasheet Page 66。<br /> RESX为复位,模块上电时拉低,通常情况下置1;<br /> CSX为从机片选, 仅当CS为低电平时,芯片才会被使能。<br /> D/CX为芯片的数据/命令控制引脚,当DC = 0时写命令,当DC = 1时写数据。<br /> SDA为传输的数据,即RGB数据。<br /> SCL为SPI通信时钟。<br /> 对于SPI通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合:<br /> CPHA的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHL = 0,在第一个跳变沿进行数据采集;<br /> CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。<br /> 从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。<br /> ==树莓派== 提供C语言与python例程 {{RPI_open_spi}} ===安装库=== '''默认情况下,树莓派 Raspbian 系统已经装好了必要的依赖。仅当编译不正常的时候,才需要手动安装这些函数库,否则请跳过这一段。''' {{RPI_C_lib}} *python <pre> sudo apt-get update sudo apt-get install python-pip sudo pip install RPi.GPIO sudo pip install spidev </pre> ===下载例程=== 在树莓派终端运行:<br /> <pre> apt-get install p7zip-full wget https://wiki.diustou.com/w/upload/f/fa/1.44inch-LCD-HAT-Code.7z 7z x 1.44inch-LCD-HAT-Code.7z -r -o./1.44inch-LCD-HAT-Code sudo chmod 777 -R 1.44inch-LCD-HAT-Code cd 1.44inch-LCD-HAT-Code/RaspberryPi/ </pre> ===运行测试程序=== *C语言 <pre> cd c make clean make sudo ./main </pre> *对于树莓派4B及raspbian_lite-2019-06-20系统之后需要设置如下,按键才能正常输入<br /> <pre> sudo nano /boot/config.txt #添加如下: gpio=6,19,5,26,13,21,20,16=pu </pre> *python <pre> cd python sudo python main.py sudo python key_demo.py </pre> ==fbtft移植== {{Note|此fbtft移植教程暂不适用于2020.8月以后的Raspbian版本,如需使用fbtft,请使用老版本的Raspbian系统。}} Framebuffer 是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备。简单的来说,就是使用一个内存区来存储显示内容,改变内存的数据就可以改变显示的内容。<br /> 在 github 上有一个开源工程:https://github.com/notro/fbtft ,完整的实现了framebuffer驱动,让树莓派完美支持 tft 液晶。下面来介绍一下如何使用 fbtft 驱动 1.44inch LCD HAT.<br /> 打开编辑配置文件,启用一些模块<br /> <pre> sudo nano /etc/modules #添加如下: spi-bcm2835 fbtft_device </pre> 添加第一行是确保屏幕的 SPI 已经启动并正在运行,第二个命令实际是启动 fbtft 模块。<br /> 新建另外一个配置文件,配置 fbtft<br /> <pre> sudo nano /etc/modprobe.d/fbtft.conf </pre> 将下面语句添加到新建的空白文件中,<br /> <pre> options fbtft_device name=adafruit18_green gpios=reset:27,dc:25,cs:8,led:24 speed=40000000 bgr=1 fps=60 custom=1 height=128 width=128 rotate=180 </pre> 这里需要注意一下,name 需要根据屏幕的主控芯片型号选择,1.44inch LCD HAT 的主控芯片是 ST7735s。fbtft 是支持这个型号的。这里选择 adafruit18_green,因为芯片是和这个一样的。<br /> gpios=reset:27,dc:25,cs:8,led:24 这个设置屏幕对应的引脚,这个根据板子的原理图设置。<br /> height=128 width=128 rotate=180 设置屏幕分辨率大小和显示方向。<br /> 此时重启一下树莓派.如果屏幕显示全黑则屏幕已经工作了。<br /> <pre> sudo reboot </pre> 查看设备可以发现多了一个 fb1 设备,则说明设备已经成功启动了<br /> [[file:1in3_lcd_fb.png|900px]]<br /> <font color="#FF0000"> 注意,如果你的系统是命令行界面的,则只会出现fb0<br /> </font> ===显示用户界面=== 最后我们将用户界面到 1.44inch LCD HAT 上,虽然这个屏幕只有 128x128 分辨率,我们还是试一下将用户界面显示到屏幕上看下有什么样的效果。<br /> 显示用户界面只需将 fb0 上的内容直接拷贝到 fb1 上,fb0 和 fb1 同步。<br /> 首先安装一下工具软件<br /> <pre> sudo apt-get install cmake git </pre> 使用 github 上的开源代码来实现这个功能,下载代码并安装。<br /> <pre> cd ~ git clone https://github.com/tasanakorn/rpi-fbcp cd rpi-fbcp/ mkdir build cd build/ cmake .. make sudo install fbcp /usr/local/bin/fbcp </pre> 设置开机启动。在<br /> <pre> sudo nano /etc/rc.local </pre> 设置开机启动。在 exit 0 前面添加 fbcp&.<br /> 注意一定要添加"&" 后台运行,否则可能会出现系统不能启动的情况。<br /> [[file:1in3_lcd_fb5.png|900px]]<br /> 最后在/boot/config.txt 文件中设置用户界面显示尺寸。<br /> <pre> sudo vi /boot/config.txt #添加 hdmi_force_hotplug=1 hdmi_cvt=128 128 60 1 0 0 0 hdmi_group=2 hdmi_mode=1 hdmi_mode=87 display_rotate=1 </pre> 启动树莓派后可以发现屏幕已经出现用户界面了。最后显示效果图。<br /> [[file:1in3_lcd_fb6.png|900px]]<br /> 如果屏幕闪烁或者出现花屏,可以在/boot/config.txt中添加如下:<br /> <pre> enable_uart=1 </pre> ===模拟鼠标=== 模块上面板子一个摇杆和三个按键,我们可以用来控制树莓派的鼠标<br /> *安装库并下载并运行例程 <pre> sudo apt-get install python-xlib sudo pip install PyMouse wget https://wiki.diustou.com/w/upload/d/d3/Mouse.7z 7z x Mouse.7z sudo python mouse.py </pre> *该命令无法在命令行界面运行。对于树莓派4B及raspbian_lite-2019-06-20系统之后需要设置如下,按键才能正常输入<br /> <pre> sudo nano /boot/config.txt #添加如下: gpio=6,19,5,26,13,21,20,16=pu </pre> '''使用摇杆上下左右,就可以看到鼠标在动了。''' *配置成开机自启 注意不要加到/etc/rc.local中,因为rc.local在系统还没有进入桌面之前会执行,而PyMouse模块在命令行界面运行的话会报错没有鼠标这个事件,所以我们需要执行如下:<br /> <pre> cd .config/ mkdir autostart cd autostart/ sudo nano local.desktop </pre> 加入如下: <pre> [Desktop Entry] Type=Application Exec=python /home/pi/mouse.py </pre> 然后重新启动树莓派,即可使用按键控制鼠标了。<br /> ===显示屏幕常亮=== 打开 lightdm.conf<br /> <pre> sudo vi /etc/lightdm/lightdm.conf </pre> 修改 lightdm.conf 找到[SeatDefaults]段下的’xserver-command’,取消注释,修改为如下: <pre> #xserver-command=X </pre> 修改为 <pre> xserver-command=X -s 0 -dpms </pre> *-s # –设置屏幕保护不启用 *dpms 关闭电源节能管理 重启<br /> <pre> sudo reboot </pre> ===其他=== 有兴趣弄游戏机的小伙伴们可以参考下面这两个链接,这里不再详细讲解。<br /> https://www.sudomod.com/forum/viewtopic.php?f=11&t=5371&start=10<br /> https://pi0cket.com/guides/tiny-software-for-tinypi/#more-99<br /> </div> <div class="tabbertab" title="资料"> ==文档== *[https://{{SERVERNAME}}/w/upload/6/6f/1.44inch-LCD-HAT-Schematic.pdf 原理图]<br> ==程序== *[https://{{SERVERNAME}}/w/upload/f/fa/1.44inch-LCD-HAT-Code.7z 树莓派程序]<br> *[https://{{SERVERNAME}}/w/upload/4/4e/1.44inch-LCD-HAT-All-Code.7z 示例程序]<br> ==软件== {{OLED_Software}} ==数据手册== *[https://{{SERVERNAME}}/w/upload/e/e2/ST7735S_V1.1_20111121.pdf ST7735S 手册] 转到:[[#软件]],[[#程序]],[[#文档]] <!--{{Join_us}}--></div> == 选型列表 == {{LCD Selection Guide}} == FAQ == <div class="tabbertab" title="FAQ"><br /> {{FAQ |按键使用不了? |对于树莓派系统镜像(2019-06-20-raspbian-buster)而言,需要在/boot/config.txt加入: <pre> gpio=6,19,5,26,13,21,20,16=pu </pre> }} {{FAQ |为什么开启了FBTFT没有spidev0.0? |开启了fbtft,重启之后会占用掉spidev0.0,此时如果需要运行示例程序,需要把/etc/modules中的开启fb对应的语句屏蔽掉。 }} </div> <div class="tabbertab" title="售后"><br />{{Service08}}</div>
该页面使用的模板:
模板:Category
(
查看源代码
)
模板:FAQ
(
查看源代码
)
模板:LCD Selection Guide
(
查看源代码
)
模板:Note
(
查看源代码
)
模板:OLED Software
(
查看源代码
)
模板:Product
(
查看源代码
)
模板:RPI C lib
(
查看源代码
)
模板:RPI open spi
(
查看源代码
)
模板:Service00
(
查看源代码
)
模板:Service08
(
查看源代码
)
模板:Tag
(
查看源代码
)
模板:Tipbox
(
查看源代码
)
返回至
1.44inch LCD HAT
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志