导航菜单
Toggle navigation
微雪商城
微雪课堂
Raspberry Pi
主板/套件
显示屏
摄像头
扩展板
笔记本
机器人
游戏机
Android/Linux主板
人工智能
主板/套件
显示屏
摄像头
扩展板
机器人
显示屏
LCD/OLED
e-Paper
模块
远距离无线通信
近距离无线通信
有线通信/接口转换
摄像头/音视频
传感器
电机/舵机
大杂烩
机器人
智能车
驱动器/传感器
机械手/云台控制
MCU/FPGA
Arduino
micro:bit
LPC
FPGA
查看“1.3inch LCD HAT”的源代码
←
1.3inch LCD HAT
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
<div class="tabber"> {{外围模块|colorscheme=blue |name = 1.3inch LCD HAT |img=[[File:1.3inch-LCD-HAT-intro.jpg|360px |alt=1.3inch-LCD-HAT|link=http://{{SERVERNAME}}/shop/1.3inch-LCD-HAT.htm | 1.3inch LCD HAT]] |category1=LCD |category2=显示屏 |brand=Waveshare |feature-name1= 显示尺寸 |feature-value1=1.3英寸 |feature-name2= 分辨率 |feature-value2=240×240 | interface1 =SPI | Product1 = [[1.44inch LCD HAT]] | Product2 = [[1.8inch LCD Module]] }} <div class="tabbertab" title="说明"> =产品简介= ==产品参数== *工作电压: 3.3V *通信接口: SPI *屏幕类型: TFT *控制芯片: 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:700px;" 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的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHL = 0,在第一个跳变沿进行数据采集;<br /> CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。<br /> 从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。<br /> =树莓派使用= 提供C语言与python例程 {{RPI_open_spi}} ==安装库== {{RPI_C_lib}} *python <pre> sudo apt-get updata sudo apt-get install ttf-wqy-zenhei sudo apt-get install python-pip sudo pip install RPi.GPIO sudo pip install spidev </pre> ==下载例程== 在树莓派终端运行:<br /> <pre> apt-get install p7zip-full wget http://www.waveshare.net/w/upload/b/bd/1.3inch_LCD_HAT_code.7z 7z x 1.3inch_LCD_HAT_code.7z 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> *python <pre> cd python sudo python main.py sudo python key_demo.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> =Fbtft移植= Framebuffer 是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备。简单的来说,就是使用一个内存区来存储显示内容,改变内存的数据就可以改变显示的内容。<br /> 在 github 上有一个开源工程:[https://github.com/notro/fbtft framebuffer]<br /> 完整的实现了 framebuffer驱动,让树莓派完美支持 tft 液晶。下面来介绍一下如何使用 fbtft 驱动 1.44inch 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,0x1A,-1,0xC0,0x2C,-1,0xC2,0x01,-1,0xC3,0x0B,-1,0xC4,0x20,-1,0xC6,0x0F,-1,0xD0,0xA4,0xA1,-1,0x21,-1,0xE0,0x00,0x19,0x1E,0x0A,0x09,0x15,0x3D,0x44,0x51,0x12,0x03,0x00,0x3F,0x3F,-1,0xE1,0x00,0x18,0x1E,0x0A,0x09,0x25,0x3F,0x43,0x52,0x33,0x03,0x00,0x3F,0x3F,-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/ 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 #添加 hdmi_force_hotplug=1 hdmi_cvt=300 300 60 1 0 0 0 hdmi_group=2 hdmi_mode=1 hdmi_mode=87 display_rotate=1 </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 pip install input </pre> 添加uinput到/etc/modules <pre> sudo nano /etc/modules # add uinput </pre> [[file:1.3inch_lcd_hat_mouse.png||900px]] *下载并运行例程 <pre> wget http://www.waveshare.net/w/upload/d/d3/Mouse.7z 7zr x Mouse.7z -r -o./Mouse cd Mouse 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> '''使用摇杆上下左右,就可以看到鼠标在动了。''' ==显示屏幕常亮== 打开 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="资料"> ===文档=== *[http://www.waveshare.net/w/upload/a/a6/1.3inch-LCD-HAT-Schematic.pdf 原理图]<br> ===程序=== *[http://www.waveshare.net/w/upload/b/bd/1.3inch_LCD_HAT_code.7z 示例程序]<br> *[http://www.waveshare.net/w/upload/d/d3/Mouse.7z 摇杆模拟鼠标程序]<br> ===软件=== {{OLED_Software}} ===数据手册=== *[http://www.waveshare.net/w/upload/a/ae/ST7789_Datasheet.pdf ST7789 数据手册] ===相关资料=== *[http://www.waveshare.net/w/upload/7/70/1.3inch_LCD_HAT_GUI.7z 图形界面(客户作品)] *[https://github.com/PiSugar/pisugar-case-pihat-cap 外壳图纸(PiSugar)] <br /><big>批量下载教程——请戳<big><big><big>☛</big></big></big></big>[[File:download-icon.png|link=批量下载教程]] <!--{{Join_us}}--> </div> <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> |||}} {{FAQ| 如何播放视频| 播放视频必须先设置fbtft,并且通过f设置fbtft显示桌面后,再运行播放视频命令才会有显示|||}} </div> <div class="tabbertab" title="售后"><br />{{Service08}}</div>
该页面使用的模板:
模板:FAQ
(
查看源代码
)
模板:Fbcp
(
查看源代码
)
模板:LCD HAT
(
查看源代码
)
模板:LCD Module
(
查看源代码
)
模板:Note
(
查看源代码
)
模板:Note/styles.css
(
查看源代码
)
模板:OLED Software
(
查看源代码
)
模板:RPI C lib
(
查看源代码
)
模板:RPI Python lib
(
查看源代码
)
模板:RPI open spi
(
查看源代码
)
模板:Service20
(
查看源代码
)
模板:外围模块
(
查看源代码
)
返回至
1.3inch LCD HAT
。