0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用樹莓派驅(qū)動16x2 LCD

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 17:58 ? 次閱讀

概述

向任何項目添加LCD會立即使它提高一個檔次。本教程說明了如何使用6個GPIO引腳將廉價的HDD44780兼容LCD連接到Raspberry Pi。盡管還有其他方法可以使用I2CUART進行連接,但這是直接使用裸機的最直接方法。

此技術(shù):

允許使用廉價LCD

不需要任何 i2c驅(qū)動程序

不會竊取Pi上唯一的串行端口。

示例Python代碼發(fā)送日期,時間和Pi的IP地址到顯示器。如果您在無頭模式下運行Pi,一眼就能確定IP地址非常方便。

要遵循本教程,您將需要

標(biāo)準(zhǔn)LCD 16x2 +其他功能

Pi T-Cobbler Plus,Pi Cobbler Plus用于模型B +/Pi 2或原始Pi補鞋匠

(2)半尺寸面包板

連接線

A Raspberry Pi(與所有26pin和40pin Pi兼容

您幾乎可以將任何字符LCD與本教程-適用于16x1、16x2、20x2、20x4 LCD。它不適用于40x4 LCD

將補鞋匠連接到LCD

LCD

每當(dāng)遇到帶有16個連接器的LCD顯示器時,最有可能使用HD44780控制器。這些設(shè)備提供相同的引出線,使其相對易于使用。 LCD使用并行接口,這意味著我們需要樹莓派的許多引腳來控制它。在本教程中,我們將使用4個數(shù)據(jù)引腳(4位模式)和兩個控制引腳。

數(shù)據(jù)引腳很簡單。他們正在將數(shù)據(jù)發(fā)送到顯示器(高/低切換)。我們將僅使用寫入模式,而不讀取任何數(shù)據(jù)。

寄存器選擇引腳有兩種用途。拉低時,它可以向LCD發(fā)送命令(例如移至或清除屏幕的位置)。這稱為寫指令或命令寄存器。當(dāng)以另一種方式切換(1)時,寄存器選擇引腳進入數(shù)據(jù)模式,并將其用于將數(shù)據(jù)發(fā)送到屏幕。

讀/寫引腳將被拉低(僅寫)。 ),因為我們只希望基于此設(shè)置寫入LCD。

啟用引腳將被切換為將數(shù)據(jù)寫入寄存器。

LCD引腳排列

接地

VCC- 5v不是3.3v

電位器的對比度調(diào)整(VO)

寄存器選擇(RS)。 RS = 0:命令,RS = 1:數(shù)據(jù)

讀/寫(R/W)。 R/W = 0:寫,R/W = 1:讀(我們將不使用此引腳)

時鐘(啟用)。觸發(fā)下降沿

位0 (4位操作中不使用)

位1 (4位操作中不使用)

位2 (在4位操作中不使用)

位3 (在4位操作中不使用)

第4位

第5位

第6位

第7位

背光LED陽極( +)

背光LED陰極(-)

在接線前,請檢查LCD是否具有LED背光,而不是EL背光。 LED背光使用10-40mA的功率,EL背光使用200 + ma! EL背光燈通常價格便宜但無法使用,請確保不要使用背光燈,否則Pi會過載。一些帶有LED背光的廉價LCD在LCD模塊的背光上沒有電阻,如果不確定,請在15針和5V引腳之間連接一個1Kohm電阻,而不是直接連接。 所有Adafruit液晶顯示器都具有帶內(nèi)置電阻器的LED背光燈,因此您不需要額外的電阻器!

5v LCD vs 3.3v Pi

樹莓派GPIO設(shè)計for3.3v,但我們的LCD是5v設(shè)備。 使用5v顯示屏很好,但前提是我們要從Pi向外發(fā)送數(shù)據(jù)。我們不會在補鞋匠上使用3.3v電源軌,我們將顯示器的 RW (讀/寫)引腳連接到GND,因為我們不希望顯示器發(fā)送5v信號進入Pi。

別越過溪流!

接線圖

首先,將補鞋匠電源引腳連接到面包板電源導(dǎo)軌。補鞋匠提供的+ 5.0V連接至紅色條紋導(dǎo)軌(紅色線),補鞋匠提供的GND連接至藍色條紋導(dǎo)軌(黑色線)

為了將數(shù)據(jù)發(fā)送至LCD,我們將其接線為遵循

LCD的引腳#1接地

LCD的引腳#2達到+ 5V

引腳#3(Vo)連接到電位計的中間

4號針(RS)連接到補鞋匠#22

Pin#5(RW)接地

Pin #6(EN)連接到補鞋匠#17

跳過LCD引腳#7,#8,#9和#10

引腳#11(D4)連接到補鞋匠#25

Pin#12(D5)連接到Cobbler#24

Pin#13(D6)連接到Cobber#23

Pin#14(D7)連接到Cobber#18

針#15(LED +)轉(zhuǎn)到+ 5V(紅線)

針#16(LED-)接地(黑色線)

然后連接電位計,左引腳接地(黑線),右引腳接地+ 5V(紅線)

以下是T-Cobbler Plus版本的草圖:

》素描以26針的補鞋匠覆盆子Pi(v1,v2)

準(zhǔn)備LCD

開始之前,請進行以下操作確保您有一個帶0.1“公頭的排針和一個10K電位器。所有Adafruit字符LCD都帶有這些部件,因此您應(yīng)該一切順利。

大多數(shù)LCD都有頂部有16個針腳的條帶,如果標(biāo)頭稍長,請將其斷開,直到其正確的長度

接下來,您需要將接頭連接到LCD。 您必須執(zhí)行此操作,僅嘗試“壓入” LCD是不可行的!

首先連接補鞋匠的 5V 和 GND 線到面包板。然后將針腳#1,#2和#15,#16連接到面包板電源導(dǎo)軌,如圖所示。背光應(yīng)點亮。如果沒有,請檢查接線!

接下來,進行對比電位計,如上圖所示,中間引腳連接到LCD引腳#3,另兩個引腳連接到5V并接地。

扭轉(zhuǎn)電位計,直到您看到LCD的第一行充滿了方框。如果看不到方框,請檢查接線!

完成 RS,RW,EN,D4,D5,D6,和 D7 引腳的接線,如圖所示

就是這樣!現(xiàn)在您可以運行Python腳本在屏幕上繪制文本了!

必要的軟件包

最新的Raspbian

您的Pi必須運行最新版本的Raspbian。本教程使用Raspbian Stretch(2018年11月)編寫。如果尚未為Raspberry Pi準(zhǔn)備SD卡,請查閱我們的指南。安裝完成后,請確保并運行以下命令以確保您的安裝軟件包是最新的。

下載:文件

復(fù)制代碼

$ sudo apt-get update -y

$ sudo apt-get upgrade -y $ sudo apt-get update -y

$ sudo apt-get upgrade -y

安裝pip3

pip3已與完整的Raspbian安裝一起安裝,但Raspbian Lite并未安裝包括pip3,因此需要按如下所示進行安裝。

下載:文件

復(fù)制代碼

$ sudo apt-get install python3-pip $ sudo apt-get install python3-pip

安裝adafruit-blinka

下載:文件

復(fù)制代碼

$ sudo pip3 install adafruit-blinka $ sudo pip3 install adafruit-blinka

安裝adafruit-circuitpython-charlcd

下載:文件

C opy代碼

$ sudo pip3 install adafruit-circuitpython-charlcd $ sudo pip3 install adafruit-circuitpython-charlcd

Python腳本

以下代碼可以下載到您的樹莓派上,并運行以在LCD顯示屏上獲取機器的日期,時間和IP地址。

代碼

下載:Project Zip 或 Drive_a_16x2_LCD_with_the_Raspberry_Pi.py | 在Github上查看

復(fù)制代碼

from subprocess import Popen, PIPE

from time import sleep

from datetime import datetime

import board

import digitalio

import adafruit_character_lcd.character_lcd as characterlcd

# Modify this if you have a different sized character LCD

lcd_columns = 16

lcd_rows = 2

# compatible with all versions of RPI as of Jan. 2019

# v1 - v3B+

lcd_rs = digitalio.DigitalInOut(board.D22)

lcd_en = digitalio.DigitalInOut(board.D17)

lcd_d4 = digitalio.DigitalInOut(board.D25)

lcd_d5 = digitalio.DigitalInOut(board.D24)

lcd_d6 = digitalio.DigitalInOut(board.D23)

lcd_d7 = digitalio.DigitalInOut(board.D18)

# Initialise the lcd class

lcd = characterlcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6,

lcd_d7, lcd_columns, lcd_rows)

# looking for an active Ethernet or WiFi device

def find_interface():

find_device = “ip addr show”

interface_parse = run_cmd(find_device)

for line in interface_parse.splitlines():

if “state UP” in line:

dev_name = line.split(‘:’)[1]

return dev_name

# find an active IP on the first LIVE network device

def parse_ip():

find_ip = “ip addr show %s” % interface

find_ip = “ip addr show %s” % interface

ip_parse = run_cmd(find_ip)

for line in ip_parse.splitlines():

if “inet ” in line:

ip = line.split(‘ ’)[5]

ip = ip.split(‘/’)[0]

return ip

# run unix shell command, return as ASCII

def run_cmd(cmd):

p = Popen(cmd, shell=True, stdout=PIPE)

output = p.communicate()[0]

return output.decode(‘a(chǎn)scii’)

# wipe LCD screen before we start

lcd.clear()

# before we start the main loop - detect active network device and ip address

sleep(2)

interface = find_interface()

ip_address = parse_ip()

while True:

# date and time

lcd_line_1 = datetime.now().strftime(‘%b %d %H:%M:%S ’)

# current ip address

lcd_line_2 = “IP ” + ip_address

# combine both lines into one update to the display

lcd.message = lcd_line_1 + lcd_line_2

sleep(2)

from subprocess import Popen, PIPE

from time import sleep

from datetime import datetime

import board

import digitalio

import adafruit_character_lcd.character_lcd as characterlcd

# Modify this if you have a different sized character LCD

lcd_columns = 16

lcd_rows = 2

# compatible with all versions of RPI as of Jan. 2019

# v1 - v3B+

lcd_rs = digitalio.DigitalInOut(board.D22)

lcd_en = digitalio.DigitalInOut(board.D17)

lcd_d4 = digitalio.DigitalInOut(board.D25)

lcd_d5 = digitalio.DigitalInOut(board.D24)

lcd_d6 = digitalio.DigitalInOut(board.D23)

lcd_d7 = digitalio.DigitalInOut(board.D18)

# Initialise the lcd class

lcd = characterlcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6,

lcd_d7, lcd_columns, lcd_rows)

# looking for an active Ethernet or WiFi device

def find_interface():

find_device = “ip addr show”

interface_parse = run_cmd(find_device)

for line in interface_parse.splitlines():

if “state UP” in line:

dev_name = line.split(‘:’)[1]

return dev_name

# find an active IP on the first LIVE network device

def parse_ip():

find_ip = “ip addr show %s” % interface

find_ip = “ip addr show %s” % interface

ip_parse = run_cmd(find_ip)

for line in ip_parse.splitlines():

if “inet ” in line:

ip = line.split(‘ ’)[5]

ip = ip.split(‘/’)[0]

return ip

# run unix shell command, return as ASCII

def run_cmd(cmd):

p = Popen(cmd, shell=True, stdout=PIPE)

output = p.communicate()[0]

return output.decode(‘a(chǎn)scii’)

# wipe LCD screen before we start

lcd.clear()

# before we start the main loop - detect active network device and ip address

sleep(2)

interface = find_interface()

ip_address = parse_ip()

while True:

# date and time

lcd_line_1 = datetime.now().strftime(‘%b %d %H:%M:%S ’)

# current ip address

lcd_line_2 = “IP ” + ip_address

# combine both lines into one update to the display

lcd.message = lcd_line_1 + lcd_line_2

sleep(2)

下載代碼

為了簡單起見,將此文件放在您的主目錄中。 wget命令使事情變得簡單。

下載:文件

復(fù)制代碼

$ wget https://raw.githubusercontent.com/adafruit/Adafruit_Learning_System_Guides/master/Drive_a_16x2_LCD_with_the_Raspberry_Pi/Drive_a_16x2_LCD_with_the_Raspberry_Pi.py $ wget https://raw.githubusercontent.com/adafruit/Adafruit_Learning_System_Guides/master/Drive_a_16x2_LCD_with_the_Raspberry_Pi/Drive_a_16x2_LCD_with_the_Raspberry_Pi.py

運行代碼

以下命令將啟動該程序,您應(yīng)該會看到LCD顯示屏上顯示了日期,時間和IP地址。

下載:文件

復(fù)制代碼

$ sudo python3 。/Drive_a_16x2_LCD_with_the_Raspberry_Pi.py $ sudo python3 。/Drive_a_16x2_LCD_with_the_Raspberry_Pi.py

在每次啟動時顯示時間和IP

擁有一個可以手動運行的腳本是一件好事,但花時間和時間來做不是很好Raspberry Pi啟動時,顯示屏上會彈出IP地址嗎?這是使用初始化腳本完成的,該腳本在每次Raspberry Pi啟動時都會運行我們的Python代碼。

下載服務(wù)文件

以下命令將使您可以將lcd.service文件直接下載到您的Pi。 p》

下載:文件

復(fù)制代碼

$ wget https://raw.githubusercontent.com/adafruit/Adafruit_Learning_System_Guides/master/Drive_a_16x2_LCD_with_the_Raspberry_Pi/lcd.service $ wget https://raw.githubusercontent.com/adafruit/Adafruit_Learning_System_Guides/master/Drive_a_16x2_LCD_with_the_Raspberry_Pi/lcd.service

下載:Project Zip 或 lcd.service | 在Github上查看

復(fù)制代碼

[Unit]

Description=LCD date|time|ip

Requires=network-online.target

After=network-online.target

[Service]

ExecStart=/usr/bin/python3 Drive_a_16x2_LCD_with_the_Raspberry_Pi.py

WorkingDirectory=/home/pi

StandardOutput=inherit

StandardError=inherit

Restart=always

User=pi

[Install]

WantedBy=network-online.target

[Unit]

Description=LCD date|time|ip

Requires=network-online.target

After=network-online.target

[Service]

ExecStart=/usr/bin/python3 Drive_a_16x2_LCD_with_the_Raspberry_Pi.py

WorkingDirectory=/home/pi

StandardOutput=inherit

StandardError=inherit

Restart=always

User=pi

[Install]

WantedBy=network-online.target

放置lcd.service文件

lcd.service文件需要復(fù)制到正確的位置,并且可以使用systemctl命令來啟動|停止|啟用服務(wù)。在啟用此功能之前,最好先進行測試,因為系統(tǒng)上的路徑可能存在細(xì)微差別。

下載:文件

復(fù)制代碼

$ sudo cp lcd.service /etc/systemd/system $ sudo cp lcd.service /etc/systemd/system

測試lcd.service

下載:文件

復(fù)制代碼

$ sudo systemctl daemon-reload

$ sudo systemctl start lcd.service

$ ps auxww | grep -i 16x2 $ sudo systemctl daemon-reload

$ sudo systemctl start lcd.service

$ ps auxww | grep -i 16x2

以下命令讀取對服務(wù)文件的更新,啟動lcd.service并確認(rèn)該進程正在運行。如果腳本顯示在“ ps”命令輸出中,則說明您已正確完成所有操作,現(xiàn)在可以啟用服務(wù)并重新啟動。該服務(wù)應(yīng)在啟動時自動激活。

啟用lcd.service

下載:文件

復(fù)制代碼

$ sudo systemctl enable lcd.service $ sudo systemctl enable lcd.service

現(xiàn)在,每次啟動時,LCD都會在啟動時自動顯示日期/時間/ip地址。這意味著您無需插入監(jiān)視器即可知道何時可以訪問Pi以及IP地址是什么。

時區(qū)

最后,但并非最不重要:我的Pi已配置了UT(通用時間)。我更喜歡根據(jù)我的時區(qū)(山)來查看時間。這是在Pi上為任何位置配置時間的方法。這是一次配置設(shè)置,將在兩次重啟之間保留。

我們可以使用raspi-config輕松設(shè)置時區(qū)。選擇以下內(nèi)容:

本地化選項

更改時區(qū)

大陸/國家/地區(qū)

時區(qū)

運行raspi-config

下載:文件

復(fù)制代碼

$ sudo raspi-config $ sudo raspi-config

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4407

    瀏覽量

    166950
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1696

    瀏覽量

    105457
收藏 人收藏

    評論

    相關(guān)推薦

    樹莓gpio有什么用,樹莓gpio接口及編程方法

    一、樹莓GPIO的用途 樹莓(Raspberry Pi)是一款小巧、功能強大的單板計算機,廣泛應(yīng)用于編程教育、物聯(lián)網(wǎng)項目、家庭媒體中心等領(lǐng)域。GPIO(General Purpos
    的頭像 發(fā)表于 10-22 18:09 ?367次閱讀

    什么是樹莓樹莓是什么架構(gòu)的

    什么是樹莓 樹莓(Raspberry Pi,簡寫為RPi,別名為RasPi/RPI)是由英國“Raspberry Pi 慈善基金會”開發(fā)的一款為學(xué)習(xí)計算機編程教育而設(shè)計的微型電腦。
    的頭像 發(fā)表于 10-22 17:33 ?331次閱讀

    常見液晶驅(qū)動控制芯片詳解

    ,還是可選擇并行或串行的方式。 一、字符型LCD驅(qū)動控制IC 市場上通用的8×1、8×216×1、16X2
    的頭像 發(fā)表于 10-12 16:35 ?758次閱讀

    樹莓和單片機的優(yōu)缺點是什么

    樹莓(Raspberry Pi)和單片機(Microcontroller)是兩種廣泛應(yīng)用于電子項目和嵌入式系統(tǒng)的硬件平臺。它們各自具有獨特的優(yōu)缺點,適用于不同的應(yīng)用場景。 樹莓
    的頭像 發(fā)表于 08-30 18:21 ?1398次閱讀

    樹莓的功能用途是什么

    樹莓(Raspberry Pi)是一款由英國樹莓基金會研發(fā)的信用卡大小的單板計算機,自2012年推出以來,已經(jīng)發(fā)展出多個型號和版本。樹莓
    的頭像 發(fā)表于 08-30 18:01 ?2091次閱讀

    樹莓x86還是arm

    樹莓(Raspberry Pi)是一款由英國樹莓基金會(Raspberry Pi Foundation)開發(fā)的微型計算機。它基于ARM架構(gòu),而非
    的頭像 發(fā)表于 08-30 15:42 ?687次閱讀

    樹莓裝ubuntu和raspbian哪個更好

    樹莓(Raspberry Pi)是一款由英國樹莓基金會開發(fā)的單板計算機,廣泛應(yīng)用于教育、科研、物聯(lián)網(wǎng)等領(lǐng)域。樹莓
    的頭像 發(fā)表于 08-30 15:41 ?984次閱讀

    電池電量計樹莓驅(qū)動

    電池電量計樹莓驅(qū)動
    發(fā)表于 06-07 11:12 ?0次下載

    20×4/16x8 LCD顯示驅(qū)動芯片VK2C21數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《20×4/16x8 LCD顯示驅(qū)動芯片VK2C21數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 05-11 11:14 ?0次下載

    72×4/68x8/60x16 LCD顯示驅(qū)動芯片VK2C24數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《72×4/68x8/60x16 LCD顯示驅(qū)動芯片VK2C24數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 05-07 14:22 ?0次下載

    廣泛應(yīng)用于智能電表/壓力表的LCD驅(qū)動芯片——AiP16C2X

    廣泛應(yīng)用于智能電表/壓力表的LCD驅(qū)動芯片——AiP16C2X
    的頭像 發(fā)表于 04-23 09:40 ?487次閱讀
    廣泛應(yīng)用于智能電表/壓力表的<b class='flag-5'>LCD</b><b class='flag-5'>驅(qū)動</b>芯片——AiP<b class='flag-5'>16C2X</b>

    72×4/68x8/60x16 LCD顯示驅(qū)動芯片VK2C24數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《72×4/68x8/60x16 LCD顯示驅(qū)動芯片VK2C24數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 04-12 14:37 ?0次下載

    20×4/16x8 LCD顯示驅(qū)動芯片VK2C21AA 數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《20×4/16x8 LCD顯示驅(qū)動芯片VK2C21AA 數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 04-10 15:18 ?0次下載

    樹莓主板如何連接電腦

    連接樹莓派到電腦是一個非常有用的功能,它可以讓我們在電腦上進行樹莓的操作和管理。本文將詳細(xì)介紹如何連接樹莓主板到電腦。我會從準(zhǔn)備工作開始
    的頭像 發(fā)表于 01-07 15:40 ?1735次閱讀

    宏集方案 | 如何用工業(yè)樹莓和MQTT平臺打通OT和IT?

    何用工業(yè)樹莓和MQTT平臺打通OT和IT?
    的頭像 發(fā)表于 01-05 11:01 ?346次閱讀
    宏集方案 | 如<b class='flag-5'>何用</b>工業(yè)<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>和MQTT平臺打通OT和IT?