匿名
未登录
登录
丢石头百科
搜索
查看“1.3inch LCD HAT”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
1.3inch LCD HAT
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
<div class="tabber"> {{Product |images=[[File:1.3inch-LCD-HAT-intro.jpg|360px |alt=1.3inch-LCD-HAT | 1.3inch LCD HAT]] |categories= {{Category|树莓派}} {{Category|LCD}} {{Category|显示屏}} |brand=Waveshare |features= * 显示尺寸:1.3英寸 * 分辨率:240×240 |interfaces={{Category|SPI接口}} |related= * [[1.44inch LCD HAT]] * [[1.8inch LCD Module]] }} <div class="tabbertab" title="说明"> ==产品简介== ===产品参数=== *工作电压: 3.3V *通信接口: SPI *屏幕类型: IPS *控制芯片: ST7789VM *分辨率: 240(H)RGB x 240(V) *显示尺寸: 23.4(H)x 23.4(V)mm *像素大小: 0.0975(H)x 0.0975(V)mm *产品尺寸: 65 x 30.2(mm) ===功能引脚=== {|border=1; style="width:400px;" align="center" |-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" |CS||P8/CE0||片选 |-align="center" |DC||P25||数据/命令选择 |-align="center" |RST||P27||复位 |-align="center" |BL||P24||背光 |} ===LCD 及其控制器=== 本款LCD使用的内置控制器为ST7789VM,是一款240 x RGB x 320像素的LCD控制器,而本LCD本身的像素为240(H)RGB x 240(V),同时由于初始化控制可以初始化为横屏和竖屏两种,因此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的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHA = 0,在第一个跳变沿进行数据采集;<br /> CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。<br /> 从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。<br /> ==树莓派使用== 提供C语言与python例程 {{RPI_open_spi}} ===安装库=== '''默认情况下,树莓派 Raspbian 系统已经装好了必要的依赖。仅当编译不正常的时候,才需要手动安装这些函数库,否则请跳过这一段。''' {{RPI_C_lib}} *python <pre> #Python2 sudo apt-get update sudo apt-get install ttf-wqy-zenhei sudo apt-get install python-pip sudo pip install RPi.GPIO sudo pip install spidev #Python3 sudo apt-get update sudo apt-get install ttf-wqy-zenhei sudo apt-get install python3-pip sudo pip3 install RPi.GPIO sudo pip3 install spidev </pre> ===下载例程=== 在树莓派终端运行:<br /> <pre> sudo apt-get install p7zip-full wget http://wiki.diustou.com/w/upload/b/bd/1.3inch_LCD_HAT_code.7z 7z x 1.3inch_LCD_HAT_code.7z -r -o./1.3inch_LCD_HAT_code sudo chmod 777 -R 1.3inch_LCD_HAT_code cd 1.3inch_LCD_HAT_code </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]<br /> 完整的实现了 framebuffer驱动,让树莓派完美支持 tft 液晶。下面来介绍一下如何使用 fbtft 驱动 1.3inch LCD HAT.<br /> *打开编辑配置文件,启用一些模块<br /> <pre> sudo nano /etc/modules #添加如下: spi-bcm2835 flexfb fbtft_device </pre> 在文件后面添加如下三个语句,第一行是确保屏幕的SPI已经启动并正在运行,第二个命令实际是启动 fbtft 模块。<br /> *新建另外一个配置文件,配置 fbtft<br /> <pre> sudo nano /etc/modprobe.d/fbtft.conf </pre> *将下面语句添加到新建的空白文件中<br /> <pre> options fbtft_device name=flexfb gpios=reset:27,dc:25,cs:8,led:24 speed=40000000 bgr=1 fps=60 custom=1 height=240 width=240 options flexfb setaddrwin=0 width=240 height=240 init=-1,0x11,-2,120,-1,0x36,0x70,-1,0x3A,0x05,-1,0xB2,0x0C,0x0C,0x00,0x33,0x33,-1,0xB7,0x35,-1,0xBB,0x37,-1,0xC0,0x2C,-1,0xC2,0x01,-1,0xC3,0x12,-1,0xC4,0x20,-1,0xC6,0x0F,-1,0xD0,0xA4,0xA1,-1,0xE0,0xD0,0x04,0x0D,0x11,0x13,0x2B,0x3F,0x54,0x4C,0x18,0x0D,0x0B,0x1F,0x23,-1,0xE1,0xD0,0x04,0x0C,0x11,0x13,0x2C,0x3F,0x44,0x51,0x2F,0x1F,0x1F,0x20,0x23,-1,0x21,-1,0x29,-3 </pre> <font color="#FF0000"> 这里需要注意一下,这里是以options开头的两行语句。<br /> </font> gpios=reset:27,dc:25,cs:8,led:24 这个设置屏幕对应的引脚<br /> height=240 width=240 设置屏幕分辨率大小。 <br /> *重启一下树莓派 <pre> sudo reboot </pre> *查看设备可以发现多了一个 fb1 设备,则说明设备已经成功启动了<br /> [[file:1in3_lcd_fb.png|900px]]<br /> <font color="#FF0000"> 注意,如果你的系统是命令行界面的,则只会出现fb0<br /> </font> ===显示一张图片=== <pre> cd 1.3inch_LCD_HAT_code/fbtft/ sudo python fb.py </pre> ===显示用户界面=== 最后我们将用户界面到 1.3inch LCD HAT 上,虽然这个屏幕只有 240x240 分辨率,我们还是试一下将用户界面显示到屏幕上看下有什么样的效果。<br /> 显示用户界面只需将 fb0 上的内容直接拷贝到 fb1 上,fb0 和 fb1 同步。首先安装一下工具软件<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/ sudo apt-get install cmake cmake .. make sudo install fbcp /usr/local/bin/fbcp </pre> 设置开机启动<br /> <pre> sudo nano /etc/rc.local </pre> 设置开机启动。在 exit 0 前面添加 fbcp&。注意一定要添加"&" 后台运行,否则可能会出现系统不能启动的情况。<br /> [[file:1in3_lcd_fb5.png|900px]]<br /> 最后在/boot/config.txt 文件中设置用户界面显示尺寸。<br /> <pre> sudo nano /boot/config.txt </pre> 添加 <pre> hdmi_force_hotplug=1 hdmi_cvt=300 300 60 1 0 0 0 hdmi_group=2 hdmi_mode=1 hdmi_mode=87 display_rotate=0 </pre> 这里是设置系统界面分辨率,最后显示的效果是按照比例缩放显示在1.3inch LCD上。这里设置分辨率为300x300 显示最佳。<br /> 启动树莓派后可以发现屏幕已经出现用户界面了。<br /> [[file:1.3inch_lcd_hat_fbtftdesktop.png|800px]] <pre> sudo reboot </pre> ===播放视频=== 示例中有一段视频,下面我们可以试一下用屏幕播放视频。首先安装omxplayer<br /> <pre> sudo apt-get install omxplayer </pre> *播放视频 <pre> sudo omxplayer letitgo.mp4 </pre> ===模拟鼠标=== 模块上面板子一个摇杆和三个按键,我们可以用来控制树莓派的鼠标<br /> *安装库并下载并运行例程 <pre> sudo apt-get install python-xlib sudo pip install PyMouse wget http://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/a/a6/1.3inch-LCD-HAT-Schematic.pdf 原理图]<br> ==程序== *[https://{{SERVERNAME}}/w/upload/b/bd/1.3inch_LCD_HAT_code.7z 示例程序]<br> *[https://{{SERVERNAME}}/w/upload/d/d3/Mouse.7z 摇杆模拟鼠标程序]<br> ==软件== {{OLED_Software}} ==数据手册== *[https://{{SERVERNAME}}/w/upload/a/ae/ST7789_Datasheet.pdf ST7789 数据手册] ==相关资料== *[https://{{SERVERNAME}}/w/upload/7/70/1.3inch_LCD_HAT_GUI.7z 图形界面(客户作品)] *[https://github.com/PiSugar/pisugar-case-pihat-cap 外壳图纸(PiSugar)] 转到:[[#软件]],[[#程序]],[[#文档]] </div> == 选型列表 == {{LCD Selection Guide}} == FAQ == <div class="tabbertab" title="FAQ"> {{FAQ| 设置fbtft没有识别到fb1,或者屏幕不显示?| 这里是两行语句,不能分开成多行。<br> [[File:1.3inch_LCD_HAT_FAQ1.png|480px | 1.3inch_LCD_HAT_FAQ1]] |||}} {{FAQ| 设置fbtft后为什么程序控制了,报错没有SPI设备| 这是两种控制方式,设置为fbtft方式控制后,SPI被系统占用了,不能再通过操作IO控制屏幕。<br /> 需要屏蔽/etc/module中的把<br /> <pre> flexfb fbtft_device </pre> 改成<br /> <pre> #flexfb #fbtft_device </pre> 然后重启树莓派<br /> |||}} {{FAQ| 如何播放视频| 播放视频必须先设置fbtft,并且通过f设置fbtft显示桌面后,再运行播放视频命令才会有显示|||}} </div> <div class="tabbertab" title="售后"><br />{{Service13}}</div>
该页面使用的模板:
模板:Category
(
查看源代码
)
模板:FAQ
(
查看源代码
)
模板:LCD Selection Guide
(
查看源代码
)
模板:Note
(
查看源代码
)
模板:OLED Software
(
查看源代码
)
模板:Product
(
查看源代码
)
模板:RPI C lib
(
查看源代码
)
模板:RPI open spi
(
查看源代码
)
模板:Service00
(
查看源代码
)
模板:Service13
(
查看源代码
)
模板:Tag
(
查看源代码
)
模板:Tipbox
(
查看源代码
)
返回至
1.3inch LCD HAT
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志