樹莓派驅動 1.44inch LCD HAT


自 1.44inch LCD HAT 這個迷你的屏幕上架后深受很多創客門喜愛,同時也有多客戶反
應我們提供的資料不夠完善。特此寫一篇教程講解樹莓派如何通過移植 fbtft 顯示.
Framebuffer 是用一個視頻輸出設備從包含完整的幀數據的一個內存緩沖區中來驅動一
個視頻顯示設備。簡單的來說,就是使用一個內存區來存儲顯示內容,改變內存的數據就可
以改變顯示的內容。
在 github 上有一個開源工程:https://github.com/notro/fbtft,完整的實現了 framebuffer
驅動,讓樹莓派完美支持 tft 液晶。下面來介紹一下如何使用 fbtft 驅動 1.44inch LCD HAT.
打開編輯配置文件,啟用一些模塊。

sudo nano /etc/modules


在文件后面添加如下兩個語句,第一行是確保屏幕的 SPI 已經啟動並正在運行,第二個
命令實際是啟動 fbtft 模塊。

spi-bcm2835
fbtft_device


新建另外一個配置文件,配置 fbtft

sudo nano /etc/modprobe.d/fbtft.conf


將下面語句添加到新建的空白文件中,
樹莓派驅動手冊(代碼要在一行,不能換行)


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


這里需要注意一下, name 需要根據屏幕的主控芯片型號選擇, 1.44inch LCD HAT 的主
控芯片是 ST7735s。 fbtft 是支持這個型號的。這里選擇 adafruit18_green,因為芯片是和這
個一樣的。
gpios=reset:27,dc:25,cs:8,led:24 這個設置屏幕對應的引腳,這個根據板子的原理圖設置。
height=128 width=128 rotate=180 設置屏幕分辨率大小和顯示方向。
此時重啟一下樹莓派.如果屏幕顯示全黑則屏幕已經工作了。

sudo reboot

 

顯示一張圖片
下面我們來顯示一張圖片。首先安裝 python 的 PIL 庫

sudo apt-get install python-imaging


示例程序:

#!/usr/bin/env python2
import os
import struct
from PIL import Image
im = Image.open('time.bmp')
im = im.rotate(270)
w, h = im.size
print( "w:", w ,"h:", h)
with open('/dev/fb1', 'wb') as f:
for j in range(0,h):
for i in range(0,w):
r,g,b =im.getpixel((i,j))
rgb=struct.pack('H',((r >> 3) << 11)|((g >> 2) << 5)|(b >> 3))
f.write(rgb);


程序讀取一張圖片,然后將圖片轉為內存數據並寫入到/dev/fb1 設備中。這里需要注意
的是屏幕是兩個字節表示一個像素點, RGB565 的格式顯示。
上面程序刷新的時候會看到屏幕是一行行顯示的,刷新效果不是很好,下面將程序修改
一下,先將要顯示的內容保存到 fb 文件中,再用 cat 命令顯示出來。
樹莓派驅動手冊

#!/usr/bin/env python2
import os
import struct
from PIL import Image
im = Image.open('time.bmp')
im = im.rotate(270)
w, h = im.size
print( "w:", w ,"h:", h)
with open('time.fb', 'wb') as f:
for j in range(0,h):
for i in range(0,w):
r,g,b =im.getpixel((i,j))
rgb=struct.pack('H',((r >> 3) << 11)|((g >> 2) << 5)|(b >> 3))
f.write(rgb);
os.system('cat time.fb > /dev/fb1')


最后上傳兩個程序的壓縮文件。
http://www.waveshare.net/w/upload/f/fd/Fbtft.tar.gz
顯示用戶界面
最后我們將用戶界面到 1.44inch LCD HAT 上,雖然這個屏幕只有 128x128 分辨率,我
們還是試一下將用戶界面顯示到屏幕上看下有什么樣的效果。
顯示用戶界面只需將 fb0 上的內容直接拷貝到 fb1 上, fb0 和 fb1 同步。
首先安裝一下工具軟件

sudo apt-get install cmake git


使用 github 上的開源代碼來實現這個功能,下載代碼並安裝。

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


設置開機啟動。在

sudo nano /etc/rc.local


設置開機啟動。在 exit 0 前面添加 fbcp&.
樹莓派驅動手冊
注意一定要添加"&" 后台運行,否則可能會出現系統不能啟動的情況。
最后在/boot/config.txt 文件中設置用戶界面顯示尺寸。

sudo nano /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


啟動樹莓派后可以發現屏幕已經出現用戶界面了。最后顯示效果圖。
顯示屏幕常亮
打開 lightdm.conf
樹莓派驅動手冊

sudo vi /etc/lightdm/lightdm.conf


修改 lightdm.conf
找到[SeatDefaults]段下的’xserver-command’,取消注釋,修改為如下:
#xserver-command=X
修改為
xserver-command=X -s 0 -dpms
-s # –設置屏幕保護不啟用
dpms 關閉電源節能管理
重啟

sudo reboot


有興趣弄游戲機的小伙伴們可以參考下面這兩個鏈接,這里不再詳細講解。
https://www.sudomod.com/forum/viewtopic.php?f=11&t=5371&start=10
https://pi0cket.com/guides/tiny-software-for-tinypi/#more-99


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM