第二十六章-连接显示器及LCD
可选:HDMI输出,3.5mm视频输出,其它转接方式,以及官方显示屏
- HDMI最方便,直接连接即可
需要注意的是,开机时如果没连接显示器便不会有视频输出,即使开机后连接了显示器也是一样的结果;如果想强制视频输出的话,需要修改
config.txt
文件,假设你的显示器是HDMI接口1366x768分辨率
sudo nano /boot/config.txt
添加:
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=16
hdmi_drive=2
这里
hdmi_force_hotplug=1
是强制输出到HDMI,即使未检测到HDMI设备
- 3.5mm视频输出
可以连接CRT旧电视,接口集成在音频口,所以直接在音频口接耳机会发现底噪很大,不过社区正在改进这点
可以直接淘宝购买Zune的RCA Cable,或者DIY接口定义一致的线材,定义参考下图,图片版权归属原作者MATT:
另外需要修改config.txt
(PAL制式电视):
(新版的Jessie不用修改也能显示,如果没声音的话再进行以下操作)
树莓派上:
sudo nano /boot/config.txt
或Windows上打开config.txt
将
#sdtv_mode=2
前面的#删掉,变为:
sdtv_mode=2
配合老电视和 Xbox 360手柄或8位堂完全仿红白机的FC30手柄怀旧FC是相当不错的选择,系统方面可以选择Lakka , RetroPie , recalbox-os
- HDMI转接VGA
但多篇文章都建议一定用有源的HDMI转VGA,也就是可以连接电源的,否则会烧毁树莓派
修改config.txt
文件,添加:
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=16
hdmi_drive=2
hdmi_mode=16为设置1024x768 60Hz 其它分辨率可参考官方config.txt说明
一些有源HDMI转VGA的选择:
白色款1,白色款2,黑色款1,黑色款2,Moto,(似乎这款最便宜,需要另外配一个Micro HDMI母对HDMI公,比如这个)
- Nokia 5510/3310 LCD
这块屏幕的尺寸约1.5寸,分辨率为84x48,不论字体采用8x8还是6x12显示的内容都很有限,而且因为是拆机屏,质量难以保证 诺基亚5510/3310的液晶模块controller一般为PCD8544,接口为 SPI
连线:
LCD | Driver gpio name | Raspberry Pi | 备注 |
---|---|---|---|
GND | GND | ||
VCC | 3.3V | ||
CLK | SCLK | ||
DIN | MOSI | ||
D/C | dc | GPIO24 | Command/data |
CS | CE0 | Chip Select | |
RST | reset | GPIO25 | |
LED | led | GPIO23 | led |
然后通过:
gpio readall
查阅附录2查看树莓派上对应的端口
对照 BCM
及 Physical
栏,依次找到连线表内的对应端口
下面是一种接法:
LCD | Raspberry Pi(Physical) |
---|---|
GND | 9 |
BL | 16 |
VCC | 1 |
CLK | 23 |
Din | 19 |
DC | 18 |
CE | 24 |
RST | 22 |
启用 SPI
:
sudo nano /boot/config.txt
加入:
dtparam=spi=on
重启生效
这块单色LCD可以通过 FBTFT 进行console显示,这样在终端里能做的事用它都可以做到
由于Linux kernel staging tree已经加入FBTFT,所以不需额外安装
终端显示:
sudo modprobe fbtft_device name=nokia3310
dmesg 会显示:
......
[ 52.092954] fbtft: module is from the staging directory, the quality is unknown, you have been warned.
[ 52.098978] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.
[ 52.101017] fbtft_device: SPI devices registered:
[ 52.101040] fbtft_device: spidev spi0.0 500kHz 8 bits mode=0x00
[ 52.101053] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00
[ 52.101062] fbtft_device: 'fb' Platform devices registered:
[ 52.101092] fbtft_device: soc:fb id=-1 pdata? no
[ 52.101132] fbtft_device: Deleting spi0.0
[ 52.101429] spi spi0.0: setting up native-CS0 as GPIO 8
[ 52.101544] fbtft_device: GPIOS used by 'nokia3310':
[ 52.101555] fbtft_device: 'reset' = GPIO25
[ 52.101564] fbtft_device: 'dc' = GPIO24
[ 52.101572] fbtft_device: 'led' = GPIO23
[ 52.101580] fbtft_device: SPI devices registered:
[ 52.101592] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00
[ 52.101603] fbtft_device: fb_pcd8544 spi0.0 400kHz 8 bits mode=0x00
[ 52.113572] fb_pcd8544: module is from the staging directory, the quality is unknown, you have been warned.
[ 52.253490] graphics fb1: fb_pcd8544 frame buffer, 84x48, 7 KiB video memory, 0 KiB DMA buffer memory, fps=20, spi0.0 at 0 MHz
lsmod 会显示:
Module Size Used by
fb_pcd8544 3048 0
fbtft_device 27354 0
fbtft 27484 2 fb_pcd8544,fbtft_device
syscopyarea 2773 1 fbtft
sysfillrect 3299 1 fbtft
sysimgblt 1921 1 fbtft
fb_sys_fops 1157 1 fbtft
启用终端:
con2fbmap 1 1
(如果遇到屏幕正面看是black screen,在别的角度可以看到文字的话,这和屏幕本身连接方式有关,其液晶与电路板是用导电胶连接的,可能没有充分接触,稍微压一下边框应该可以正常显示;如果LED闪得厉害,多半是屏幕有问题,建议找卖家换一个)