RM新时代网站-首页

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

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

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

84x48像素單色LCD顯示屏的使用教程

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

概述

84x48像素單色LCD顯示屏的使用教程

這是我們84x48像素單色LCD顯示屏的快速教程。這些顯示器很小,直徑僅約1.5英寸,但由于具有很好的可讀性,并帶有背光。該顯示器由84x48單個(gè)像素組成,因此您可以將其用于圖形,文本或位圖。這些顯示器價(jià)格便宜,易于使用,僅需要幾個(gè)數(shù)字I/O引腳,并且功率也相當(dāng)?shù)汀?/p>

要驅(qū)動(dòng)顯示器,您將需要3到5個(gè)數(shù)字輸出引腳(取決于您是否要手動(dòng)控制芯片選擇和復(fù)位線) )。另一個(gè)引腳可用于控制(通過開/關(guān)或PWM)背光為了使您更輕松,我們編寫了一個(gè)不錯(cuò)的圖形庫,可以打印文本,像素,矩形,圓形和線條!該庫是為Arduino編寫的,但可以輕松移植到您最喜歡的微控制器

您可以在adafruit商店中選擇其中一個(gè)顯示器!

電源要求

顯示器使用飛利浦的PCD8544控制器芯片,并用于諾基亞3310和5110手機(jī)。該芯片設(shè)計(jì)為僅在3.3V電壓下運(yùn)行,并具有3v的通信電平,因此對(duì)于5V的微控制器,需要邏輯電平轉(zhuǎn)換器(否則很容易損壞顯示屏)。

如果要使用背光燈,最多可以繪制80mA(4個(gè)白色LED,每個(gè)20mA)。背光引腳連接到晶體管,因此您可以從微控制器引腳一次PWM所有4個(gè)LED。

Arduino接線

LCD的運(yùn)行電壓為3.3V,因此您需要使用電平轉(zhuǎn)換芯片與5V微控制器配合使用。以下將假定是這種情況。如果您正在運(yùn)行3.3V微控制器系統(tǒng),則可以跳過電平轉(zhuǎn)換器。

我們假設(shè)您要在面包板上使用它,請(qǐng)使用一塊0.1英寸接頭8針

span》

將LCD的任一側(cè)滑動(dòng)到頁眉上,“較厚”的一端在頂部。

焊接所有引腳。

將電平轉(zhuǎn)換器芯片放在側(cè)面。引腳1在左側(cè)。

我們將從電源線開始。系統(tǒng)必須由3.3V供電,所以這里的紅色通過Arduino連接到3V引腳,接地為黑色。

連接引腳1 4050,LCD VCC 引腳和LCD 背光引腳為3.3V。

連接引腳 8 和4050的LCD的 GND 引腳接地。

驗(yàn)證您是否看到背光LED點(diǎn)亮

可調(diào)光的背光選項(xiàng):

這些板的較新版本的背光電路明顯不同,比舊板更亮。您可以在背光中添加一個(gè)鍋,以便您可以控制亮度。 (這也適用于較舊的電路板,但是亮度范圍會(huì)較低。)

可以如下圖所示連接可選電位計(jì):

接下來,我們將開始對(duì)數(shù)據(jù)線進(jìn)行接線。

將LCD的 RST (重置)引腳(橙色線)連接到4050的 2 引腳

將 CS (片選)引腳(黃線)連接到4050的 4 引腳。

將 D/C (數(shù)據(jù)/命令)引腳(綠線)連接到4050的 6 引腳。

下一步,連接:

DIN (數(shù)據(jù)輸入)引腳(藍(lán)色導(dǎo)線)到4050的 15 引腳

CLK (時(shí)鐘)引腳(紫色線)連接到4050的 12 引腳。

然后我們就可以連接數(shù)據(jù)了從arduino到LCD的線路。我們可以使用任意 5個(gè)引腳,但是您可能想先從我們的示例開始。

Arduino引腳 3 (橙色)變?yōu)橐_《4050的strong》 3 。

Arduino引腳 4 (黃色)變?yōu)橐_的 5 4050。

Arduino引腳 5 (綠色)轉(zhuǎn)到4050的引腳 7 。

Arduino引腳 6 (藍(lán)色)轉(zhuǎn)到4050的引腳 14 。

Arduino引腳 7 (紫色)轉(zhuǎn)到4050的引腳 11 。

現(xiàn)在您可以進(jìn)行測(cè)試了!

Arduino測(cè)試

您可以在github上找到我們的Nokia Display Arduino庫。要安裝它,請(qǐng)單擊此按鈕以下載壓縮的ZIP文件,然后安裝它。如果您從未安裝過Arduino庫,本指南將幫助您進(jìn)行安裝。

下載Adafruit PCD8544諾基亞LCD庫

然后您將擁有對(duì)github提供的Adafruit GFX Graphics核心庫執(zhí)行相同的操作。點(diǎn)擊按鈕下載。然后,像完成庫一樣安裝Adafruit_GFX,只是這次將其命名為 Adafruit_GFX 等。

下載Adafruit GFX庫

重新啟動(dòng)Arduino軟件。您應(yīng)該在內(nèi)部看到一個(gè)名為 Adafruit_PCD8544 的新示例文件夾,該示例名為 pcdtest 。打開該草圖并將其上傳到您的Arduino。您應(yīng)該看到示例測(cè)試序列。

您可以控制背光,將背光引腳連接到5V時(shí),背光要明亮得多(如果使用Adafruit的諾基亞顯示器,則不需要電平轉(zhuǎn)換器)。您可以使用Arduino引腳來控制背光,因?yàn)榘迳嫌幸粋€(gè)晶體管。

圖形庫

我們已經(jīng)準(zhǔn)備就緒,可以使用具有位圖,形狀和文本基元的基本圖形庫。您可能可以使用它來做所有想做的事情。由于顯示器的工作方式,我們需要將整個(gè)顯示器緩沖在84x48位(504字節(jié))的ram中。但是,屏幕更新非???。

有關(guān)Adafruit GFX庫的詳細(xì)信息,請(qǐng)?jiān)L問http://learn.adafruit.com/adafruit-gfx-graphics-library-它支持線條,矩形,圓角矩形,圓形,

請(qǐng)注意,由于此顯示為MONOCHROMATIC,因此僅支持兩種顏色: 黑色或白色。黑色是顯示的點(diǎn),白色是用于擦除像素的

不要忘記,在屏幕上繪制任何內(nèi)容后,調(diào)用 display()將其寫到LCD上!

接線(較少的針腳)

您可以通過將CS引腳連接到接地來保存一些引腳(這意味著您不能在屏幕更新之間重復(fù)使用LCD的引腳,但是也許可以。您也可以連接 RST 固定到Arduino 重置,以便它將自動(dòng)重置屏幕。

CircuitPython接線

使用帶有CircuitPython和 Adafruit CircuitPython PCD8544 模塊的諾基亞5110/3310 LCD很容易。此模塊使您可以輕松編寫Python代碼來控制顯示。

您可以將此傳感器與任何CircuitPython微控制器板一起使用,或者與具有GPIO和Python的計(jì)算機(jī)配合使用。 ,我們的CircuitPython-for-Python兼容性庫。

我們將介紹如何將諾基亞LCD連接到CircuitPython微控制器板上。首先組裝LCD。

我們將向您展示如何將其連接到Feather M4 Express。由于Feather M4 Express上的邏輯電平已經(jīng)是3.3v,因此不需要邏輯電平轉(zhuǎn)換器。

將LCD連接到微控制器板上,如下所示。

微控制器GND 到 LCD Gnd

微控制器3V 到 LCD Vcc

單片機(jī)SCK 到 LCD Clk

微控制器MOSI 到 LCD Din

微控制器D6 至 LCD D/C

Microcontroller D5 到 LCD CS

Microcontroller D9 到 LCD Rst

微控制器D10 至 LCD Led

下載Fritzing圖

CircuitPython設(shè)置

PCD8544的CircuitPython安裝庫

要在您的Adafruit CircuitPython板上使用諾基亞5110/3310 LCD,您需要在板上安裝Adafruit CircuitPython PCD8544模塊。

首先請(qǐng)確保您運(yùn)行的是最新版

下一步,您需要安裝必要的庫才能使用硬件-仔細(xì)按照以下步驟從Adafruit的CircuitPython庫包中查找并安裝這些庫。我們的CircuitPython入門指南上有一個(gè)很棒的頁面,介紹如何安裝庫捆綁包。

如果選擇,您可以在板上單獨(dú)手動(dòng)安裝庫:

adafruit_pcd8544

adafruit_framebuf

adafruit_bus_device

在繼續(xù)制作之前確保您開發(fā)板的lib文件夾或根文件系統(tǒng)具有 adafruit_pcd8544 .mpy , adafruit_framebuf.mpy 和 adafruit_bus_device 文件和文件夾 已復(fù)制。

下一步連接到開發(fā)板的串行REPL,這樣您就可以在CircuitPython上得到》》》 提示。

CircuitPython的用法

使用帶有CircuitPython和 Adafruit CircuitPython PCD8544 模塊的諾基亞5110/3310 LCD很容易。該模塊使您可以輕松地編寫Python代碼來控制顯示。

您可以將此顯示與任何CircuitPython微控制器板一起使用。

為演示用法,我們將初始化該庫并使用Python代碼從開發(fā)板的Python REPL控制LCD。

初始化

首先需要初始化SPI總線。為此,請(qǐng)運(yùn)行以下命令:

下載:文件

復(fù)制代碼

import adafruit_pcd8544

import board

import busio

import digitalio

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.D5) # Chip select

reset = digitalio.DigitalInOut(board.D9) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset) import adafruit_pcd8544

import board

import busio

import digitalio

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.D5) # Chip select

reset = digitalio.DigitalInOut(board.D9) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset)

初始化程序的最后三個(gè)參數(shù)是連接到顯示器的 DC 的引腳, CS ,并按此順序重置行。再次確保在連接到板上時(shí)使用正確的引腳名稱!

控制背光LED

您也可以控制顯示屏的背光LED。只要確保LED線已連接到您的微控制器即可。只需將其初始化為DigitalInOut輸出線即可。如果將其連接到其他輸出,請(qǐng)確保相應(yīng)地更改端口。

下載:文件

復(fù)制代碼

backlight = digitalio.DigitalInOut(board.D10) # backlight

backlight.switch_to_output() backlight = digitalio.DigitalInOut(board.D10) # backlight

backlight.switch_to_output()

要打開它,只需將其設(shè)置為True并設(shè)置為將其關(guān)閉,只需將其設(shè)置為False。

下載:文件

復(fù)制代碼

# Turn Backlight on

backlight.value = True

#Turn Backlight off

backlight.value = False # Turn Backlight on

backlight.value = True

#Turn Backlight off

backlight.value = False

“對(duì)比度和偏差”

兩個(gè)重要的設(shè)置是“對(duì)比度”和“偏差設(shè)置”,以便您可以看到顯示的內(nèi)容。讓我們先看一下Bias設(shè)置。

Bias

Bias設(shè)置控制進(jìn)入顯示屏的電壓量。值越高,顯示越暗。有點(diǎn)像顯示器上的亮度設(shè)置,但會(huì)使像素更濃。值通常為4-5很好。例如,要將其設(shè)置為5,您將鍵入:

下載:文件

復(fù)制代碼

display.bias = 5 display.bias = 5

對(duì)比度

對(duì)比度設(shè)置控制暗像素和亮像素之間的差異可以設(shè)置為0-127之間的任何值。就像顯示器上的對(duì)比度設(shè)置一樣。值太高會(huì)使所有內(nèi)容顯得較暗,值太低會(huì)使所有內(nèi)容顯得太淺。大約50-60的值看起來不錯(cuò)。例如,要將其設(shè)置為50,您將鍵入:

下載:文件

復(fù)制代碼

display.contrast = 50 display.contrast = 50

您可能需要使用這些值的不同組合來查看是什么使您的特定顯示器

繪圖

PCD8544模塊當(dāng)前支持在顯示器上繪制的一組基本命令。您可以設(shè)置單個(gè)像素,填充屏幕并寫文本行。

要填充或清除整個(gè)屏幕,請(qǐng)使用fill功能。此函數(shù)采用一個(gè)參數(shù)來指定要填充的顏色,對(duì)于白色,0,對(duì)于黑色,1。例如,將屏幕填充為黑色:

下載:文件

復(fù)制代碼

display.fill(1)

display.show() display.fill(1)

display.show()

注意,fill函數(shù)實(shí)際上并未更改顯示。您必須在執(zhí)行繪制命令后調(diào)用show才能將更新的像素?cái)?shù)據(jù)發(fā)送到顯示器!

要將屏幕清除為白色,只需再次調(diào)用fill,但顏色為0:

下載:文件

復(fù)制代碼

display.fill(0)

display.show() display.fill(0)

display.show()

要設(shè)置像素,請(qǐng)使用pixel功能。此函數(shù)采用以下參數(shù):

像素X位置

像素Y位置

像素顏色(0 =白色,1 =黑色)

例如將第一個(gè)像素設(shè)置為黑色:

下載:文件

復(fù)制代碼

display.pixel(0, 0, 1)

display.show() display.pixel(0, 0, 1)

display.show()

嘗試通過更改X和Y位置將其他像素設(shè)置為白色。請(qǐng)記住,設(shè)置像素后必須調(diào)用show才能看到它們!

文本

要將文本寫入顯示,必須下載字體文件并將其復(fù)制到CIRCUITPY驅(qū)動(dòng)器。單擊下面的按鈕下載文件,然后將 font5x8.bin 復(fù)制到您的 CIRCUITPY 驅(qū)動(dòng)器中。

下載font5x8.bin文件

您可以使用text功能編寫一行文本。此函數(shù)采用以下參數(shù):

文本字符串

文本X位置

文本Y位置

文本顏色(0 =白色,1 =黑色)

例如,清除屏幕然后寫兩行文本:

下載:文件

復(fù)制代碼

display.fill(0)

display.text(‘Hello’, 0, 0, 1)

display.text(‘World’, 0, 10, 1)

display.show() display.fill(0)

display.text(‘Hello’, 0, 0, 1)

display.text(‘World’, 0, 10, 1)

display.show()

請(qǐng)注意,第二行文本從Y位置10開始,它將其向下移動(dòng)顯示屏10個(gè)像素,因此它位于下方文本的第一行。文本功能使用的字體高8像素,因此10的大小在行之間留出一些空間。

反轉(zhuǎn)

最后,您可以使用invert屬性反轉(zhuǎn)顯示顏色:

下載:文件

復(fù)制代碼

display.invert = True display.invert = True

注意invert函數(shù)不需要在其后調(diào)用show即可查看更改。

要返回非反相顯示運(yùn)行:

下載:文件

復(fù)制代碼

display.invert = False display.invert = False

所有這些都可以通過CircuitPython在諾基亞5110/3310 LCD 顯示屏上繪制!繪圖功能是基本功能,但提供了更高級(jí)用法的構(gòu)建塊。例如,您可以顯示帶有傳感器讀數(shù)或其他狀態(tài)的文本,甚至可以編寫諸如pong之類的簡單游戲!

完整示例代碼

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

復(fù)制代碼

import time

import board

import busio

import digitalio

import adafruit_pcd8544

# Initialize SPI bus and control pins

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.D5) # Chip select

reset = digitalio.DigitalInOut(board.D9) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset)

display.bias = 4

display.contrast = 60

# Turn on the Backlight LED

backlight = digitalio.DigitalInOut(board.D10) # backlight

backlight.switch_to_output()

backlight.value = True

print(“Pixel test”)

# Clear the display. Always call show after changing pixels to make the display

# update visible!

display.fill(0)

display.show()

# Set a pixel in the origin 0,0 position.

display.pixel(0, 0, 1)

# Set a pixel in the middle position.

display.pixel(display.width//2, display.height//2, 1)

# Set a pixel in the opposite corner position.

display.pixel(display.width-1, display.height-1, 1)

display.show()

time.sleep(2)

print(“Lines test”)

# we‘ll draw from corner to corner, lets define all the pair coordinates here

corners = ((0, 0), (0, display.height-1), (display.width-1, 0),

(display.width-1, display.height-1))

display.fill(0)

for corner_from in corners:

for corner_to in corners:

display.line(corner_from[0], corner_from[1],

corner_to[0], corner_to[1], 1)

display.show()

time.sleep(2)

print(“Rectangle test”)

display.fill(0)

w_delta = display.width / 10

h_delta = display.height / 10

for i in range(11):

display.rect(0, 0, int(w_delta*i), int(h_delta*i), 1)

display.show()

time.sleep(2)

print(“Text test”)

display.fill(0)

display.text(’hello world‘, 0, 0, 1)

display.text(’this is the‘, 0, 8, 1)

display.text(’CircuitPython‘, 0, 16, 1)

display.text(’adafruit lib-‘, 0, 24, 1)

display.text(’rary for the‘, 0, 32, 1)

display.text(’PCD8544! :) ‘, 0, 40, 1)

display.show()

while True:

display.invert = True

time.sleep(0.5)

display.invert = False

time.sleep(0.5)

import time

import board

import busio

import digitalio

import adafruit_pcd8544

# Initialize SPI bus and control pins

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.D5) # Chip select

reset = digitalio.DigitalInOut(board.D9) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset)

display.bias = 4

display.contrast = 60

# Turn on the Backlight LED

backlight = digitalio.DigitalInOut(board.D10) # backlight

backlight.switch_to_output()

backlight.value = True

print(“Pixel test”)

# Clear the display. Always call show after changing pixels to make the display

# update visible!

display.fill(0)

display.show()

# Set a pixel in the origin 0,0 position.

display.pixel(0, 0, 1)

# Set a pixel in the middle position.

display.pixel(display.width//2, display.height//2, 1)

# Set a pixel in the opposite corner position.

display.pixel(display.width-1, display.height-1, 1)

display.show()

time.sleep(2)

print(“Lines test”)

# we’ll draw from corner to corner, lets define all the pair coordinates here

corners = ((0, 0), (0, display.height-1), (display.width-1, 0),

(display.width-1, display.height-1))

display.fill(0)

for corner_from in corners:

for corner_to in corners:

display.line(corner_from[0], corner_from[1],

corner_to[0], corner_to[1], 1)

display.show()

time.sleep(2)

print(“Rectangle test”)

display.fill(0)

w_delta = display.width / 10

h_delta = display.height / 10

for i in range(11):

display.rect(0, 0, int(w_delta*i), int(h_delta*i), 1)

display.show()

time.sleep(2)

print(“Text test”)

display.fill(0)

display.text(‘hello world’, 0, 0, 1)

display.text(‘this is the’, 0, 8, 1)

display.text(‘CircuitPython’, 0, 16, 1)

display.text(‘a(chǎn)dafruit lib-’, 0, 24, 1)

display.text(‘rary for the’, 0, 32, 1)

display.text(‘PCD8544! :) ’, 0, 40, 1)

display.show()

while True:

display.invert = True

time.sleep(0.5)

display.invert = False

time.sleep(0.5)

Python接線

使用帶有Python和Adafruit CircuitPython PCD8544模塊的諾基亞5110/3310 LCD很容易。該模塊使您可以輕松編寫Python代碼來控制顯示。

我們將介紹如何將諾基亞LCD連接到Raspberry Pi。首先組裝您的LCD。

由于有數(shù)十種Linux計(jì)算機(jī)/主板可以使用,因此我們將顯示Raspberry Pi的接線。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問Linux上的CircuitPython指南,以了解您的平臺(tái)是否受支持。

將如下所示的LCD連接到Raspberry Pi。

Raspberry Pi GND 到 LCD Gnd

Raspberry Pi 3.3V 要 LCD Vcc

Raspberry Pi SCK(GPIO 11) 要 LCD Clk

Raspberry Pi MOSI(GPIO 10) 到 LCD Din

Raspberry Pi GPIO 6 到 LCD D/C

Raspberry Pi CE0(GPIO 8) 到 LCD CS

Raspberry Pi GPIO 5 到 LCD Rst

Raspberry Pi GPIO 13 到 LCD Led

下載Fritzing圖

Python設(shè)置

您需要安裝Adafruit_Blinka庫,該庫在Python中提供了CircuitPython支持。這可能還需要在平臺(tái)上啟用SPI并驗(yàn)證您正在運(yùn)行Python3。由于每個(gè)平臺(tái)都略有不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問Linux上的CircuitPython指南以使您的計(jì)算機(jī)準(zhǔn)備就緒!

PCD8544庫的Python安裝

完成后,從命令行運(yùn)行以下命令:

pip3 install adafruit-circuitpython-pcd8544

如果您的默認(rèn)Python是版本3,則可能需要運(yùn)行‘pip代替。只需確保您不嘗試在Python 2.x上使用CircuitPython,就不支持它!

如果抱怨沒有安裝pip3,請(qǐng)先運(yùn)行它以安裝它:

sudo apt-get install python3-pip

DejaVu TTF字體

Raspberry Pi通常隨附已安裝的DejaVu字體,但如果未安裝,則可以運(yùn)行以下命令進(jìn)行安裝:

sudo apt-get install ttf-dejavu

枕頭庫

我們還需要PIL(Python影像庫),以允許使用帶有自定義字體的文本。 PIL依賴于幾個(gè)系統(tǒng)庫,因此通過軟件包管理器進(jìn)行安裝是引入所有內(nèi)容的最簡單方法:

sudo apt-get install python3-pil

就是這樣。您應(yīng)該已經(jīng)準(zhǔn)備好了。

Python用法

使用帶有CircuitPython和 Adafruit CircuitPython PCD8544 模塊的諾基亞5110/3310 LCD很容易。此模塊可讓您輕松編寫Python代碼來控制顯示。

您可以在具有GPIO和Python 的計(jì)算機(jī)上使用此顯示,這要?dú)w功于我們的CircuitPython-for-Adafruit_Blinka Python兼容性庫。

為了演示用法,我們將初始化該庫,并使用Python代碼從開發(fā)板的Python REPL中控制LCD。

由于我們?cè)谏线\(yùn)行完整的CPython在我們的Linux/計(jì)算機(jī)上,我們可以利用強(qiáng)大的Pillow圖像繪制庫來處理文本,形狀,圖形等。Pillow是圖像和圖形處理的黃金標(biāo)準(zhǔn),您可以在此處閱讀所有內(nèi)容。

初始化

首先需要初始化SPI總線。為此,請(qǐng)運(yùn)行以下命令:

下載:文件

復(fù)制代碼

import adafruit_pcd8544

import board

import busio

import digitalio

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.CE0) # Chip select

reset = digitalio.DigitalInOut(board.D5) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset) import adafruit_pcd8544

import board

import busio

import digitalio

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.CE0) # Chip select

reset = digitalio.DigitalInOut(board.D5) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset)

初始化程序的最后三個(gè)參數(shù)是連接到顯示器的 DC 的引腳, CS ,并按此順序重置行。再次確保在連接到板上時(shí)使用正確的引腳名稱!

控制背光LED

您也可以控制顯示屏的背光LED。只要確保LED線已連接到您的微控制器即可。只需將其初始化為DigitalInOut輸出線即可。如果將其連接到其他輸出,請(qǐng)確保相應(yīng)地更改端口。

下載:文件

復(fù)制代碼

backlight = digitalio.DigitalInOut(board.D13) # backlight

backlight.switch_to_output() backlight = digitalio.DigitalInOut(board.D13) # backlight

backlight.switch_to_output()

要打開它,只需將其設(shè)置為True并設(shè)置為將其關(guān)閉,只需將其設(shè)置為False。

下載:文件

復(fù)制代碼

# Turn Backlight on

backlight.value = True

#Turn Backlight off

backlight.value = False # Turn Backlight on

backlight.value = True

#Turn Backlight off

backlight.value = False

“對(duì)比度和偏差”

兩個(gè)重要的設(shè)置是“對(duì)比度”和“偏差設(shè)置”,以便您可以看到顯示的內(nèi)容。讓我們先看一下Bias設(shè)置。

Bias

Bias設(shè)置控制進(jìn)入顯示屏的電壓量。值越高,顯示越暗。有點(diǎn)像顯示器上的亮度設(shè)置,但會(huì)使像素更濃。值通常為4-5很好。例如,要將其設(shè)置為5,您將鍵入:

下載:文件

復(fù)制代碼

display.bias = 5 display.bias = 5

對(duì)比度

對(duì)比度設(shè)置控制暗像素和亮像素之間的差異可以設(shè)置為0-127之間的任何值。就像顯示器上的對(duì)比度設(shè)置一樣。值太高會(huì)使所有內(nèi)容顯得較暗,值太低會(huì)使所有內(nèi)容顯得太淺。大約50-60的值看起來不錯(cuò)。例如,要將其設(shè)置為50,您將鍵入:

下載:文件

復(fù)制代碼

display.contrast = 50 display.contrast = 50

您可能需要使用這些值的不同組合來查看是什么使您的特定顯示器

示例代碼

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

復(fù)制代碼

“”“

This demo will fill the screen with white, draw a black box on top

and then print Hello World! in the center of the display

This example is for use on (Linux) computers that are using CPython with

Adafruit Blinka to support CircuitPython libraries. CircuitPython does

not support PIL/pillow (python imaging library)!

”“”

import board

import busio

import digitalio

from PIL import Image, ImageDraw, ImageFont

import adafruit_pcd8544

# Parameters to Change

BORDER = 5

FONTSIZE = 10

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.CE0) # Chip select

reset = digitalio.DigitalInOut(board.D5) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset)

# Contrast and Brightness Settings

display.bias = 4

display.contrast = 60

# Turn on the Backlight LED

backlight = digitalio.DigitalInOut(board.D13) # backlight

backlight.switch_to_output()

backlight.value = True

# Clear display.

display.fill(0)

display.show()

# Create blank image for drawing.

# Make sure to create image with mode ’1‘ for 1-bit color.

image = Image.new(’1‘, (display.width, display.height))

# Get drawing object to draw on image.

draw = ImageDraw.Draw(image)

# Draw a black background

draw.rectangle((0, 0, display.width, display.height), outline=255, fill=255)

# Draw a smaller inner rectangle

draw.rectangle((BORDER, BORDER, display.width - BORDER - 1, display.height - BORDER - 1),

outline=0, fill=0)

# Load a TTF font.

font = ImageFont.truetype(’/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf‘, FONTSIZE)

# Draw Some Text

text = “Hello World!”

(font_width, font_height) = font.getsize(text)

draw.text((display.width//2 - font_width//2, display.height//2 - font_height//2),

text, font=font, fill=255)

# Display image

display.image(image)

display.show()

“”“

This demo will fill the screen with white, draw a black box on top

and then print Hello World! in the center of the display

This example is for use on (Linux) computers that are using CPython with

Adafruit Blinka to support CircuitPython libraries. CircuitPython does

not support PIL/pillow (python imaging library)!

”“”

import board

import busio

import digitalio

from PIL import Image, ImageDraw, ImageFont

import adafruit_pcd8544

# Parameters to Change

BORDER = 5

FONTSIZE = 10

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.CE0) # Chip select

reset = digitalio.DigitalInOut(board.D5) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset)

# Contrast and Brightness Settings

display.bias = 4

display.contrast = 60

# Turn on the Backlight LED

backlight = digitalio.DigitalInOut(board.D13) # backlight

backlight.switch_to_output()

backlight.value = True

# Clear display.

display.fill(0)

display.show()

# Create blank image for drawing.

# Make sure to create image with mode ’1‘ for 1-bit color.

image = Image.new(’1‘, (display.width, display.height))

# Get drawing object to draw on image.

draw = ImageDraw.Draw(image)

# Draw a black background

draw.rectangle((0, 0, display.width, display.height), outline=255, fill=255)

# Draw a smaller inner rectangle

draw.rectangle((BORDER, BORDER, display.width - BORDER - 1, display.height - BORDER - 1),

outline=0, fill=0)

# Load a TTF font.

font = ImageFont.truetype(’/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf‘, FONTSIZE)

# Draw Some Text

text = “Hello World!”

(font_width, font_height) = font.getsize(text)

draw.text((display.width//2 - font_width//2, display.height//2 - font_height//2),

text, font=font, fill=255)

# Display image

display.image(image)

display.show()

讓我們一一看一下代碼的各個(gè)部分,我們首先導(dǎo)入board,以便我們可以訪問引腳定義busio,以便我們可以初始化SPI,digitalio ,幾個(gè)用于圖像繪制的PIL模塊和adafruit_pcd8544驅(qū)動(dòng)程序。

下載:文件

復(fù)制代碼

import board

import busio

import digitalio

from PIL import Image, ImageDraw, ImageFont

import adafruit_pcd8544 import board

import busio

import digitalio

from PIL import Image, ImageDraw, ImageFont

import adafruit_pcd8544

易于更改顯示尺寸,我們將在此處一處定義一些變量。我們有邊框大小和字體大小,我們將在下面進(jìn)一步解釋。

下載:file

復(fù)制代碼

BORDER = 5

FONTSIZE = 10 BORDER = 5

FONTSIZE = 10

接下來,我們使用。我們還定義了一些引腳,這些引腳將用于顯示并初始化顯示。有關(guān)更多詳細(xì)信息,請(qǐng)參見上面的初始化部分。

下載:文件

復(fù)制代碼

busio.SPI() spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.CE0) # Chip select

reset = digitalio.DigitalInOut(board.D5) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset)

接下來,我們?cè)O(shè)置“偏差和對(duì)比度”。有關(guān)更多詳細(xì)信息,請(qǐng)參見“對(duì)比度和偏差”部分。

下載:文件

復(fù)制代碼

spi = busio.SPI(board.SCK, MOSI=board.MOSI)

dc = digitalio.DigitalInOut(board.D6) # data/command

cs = digitalio.DigitalInOut(board.CE0) # Chip select

reset = digitalio.DigitalInOut(board.D5) # reset

display = adafruit_pcd8544.PCD8544(spi, dc, cs, reset) # Contrast and Brightness Settings

display.bias = 4

display.contrast = 60

之后,我們?cè)O(shè)置背光。有關(guān)更多信息,請(qǐng)參見上面的“背光”部分。

下載:文件

復(fù)制代碼

# Contrast and Brightness Settings

display.bias = 4

display.contrast = 60 # Turn on the Backlight LED

backlight = digitalio.DigitalInOut(board.D13) # backlight

backlight.switch_to_output()

backlight.value = True

接下來,如果使用任何隨機(jī)工件數(shù)據(jù)初始化顯示,我們將清除顯示。

下載:文件

復(fù)制代碼

# Turn on the Backlight LED

backlight = digitalio.DigitalInOut(board.D13) # backlight

backlight.switch_to_output()

backlight.value = True # Clear display.

display.fill(0)

display.show()

接下來,我們需要初始化PIL以創(chuàng)建要繪制的空白圖像。將其視為虛擬畫布。由于這是單色顯示,因此我們將其設(shè)置為1位彩色,這意味著像素是白色或黑色。我們也可以利用LCD的width和height屬性。

下載:file

復(fù)制代碼

# Clear display.

display.fill(0)

display.show() # Create blank image for drawing.

# Make sure to create image with mode ’1‘ for 1-bit color.

image = Image.new(’1‘, (display.width, display.height))

# Get drawing object to draw on image.

draw = ImageDraw.Draw(image)

現(xiàn)在,我們開始實(shí)際繪制。在這里,我們告訴我們要繪制一個(gè)矩形,該矩形從左上角的# Create blank image for drawing.

# Make sure to create image with mode ’1‘ for 1-bit color.

image = Image.new(’1‘, (display.width, display.height))

# Get drawing object to draw on image.

draw = ImageDraw.Draw(image)到顯示器的整個(gè)寬度和高度。我們希望它都被填充并具有黑色的輪廓,因此我們將兩個(gè)數(shù)字都傳遞255,代表填充量。

下載:文件

復(fù)制代碼

(0,0) # Draw a black background

draw.rectangle((0, 0, display.width, display.height), outline=255, fill=255)

如果運(yùn)行代碼現(xiàn)在,它將仍然顯示為空白,因?yàn)槲覀兩形锤嬖Vpython使用我們的虛擬畫布。如果您想了解操作方法,可以跳到最后。這就是我們的畫布當(dāng)前在內(nèi)存中的樣子。

接下來,我們將創(chuàng)建一個(gè)較小的白色矩形。最簡單的方法是繪制一個(gè)比全屏稍小的矩形,不填充或勾勒輪廓并將其放置在特定位置。在這種情況下,我們將創(chuàng)建一個(gè)矩形,每邊小5個(gè)像素。這是 BORDER 變量開始使用的地方。它使計(jì)算第二個(gè)矩形的大小變得更加容易。我們希望由前兩個(gè)參數(shù)組成的起始坐標(biāo)為BORDER值。然后對(duì)于接下來的兩個(gè)參數(shù),即我們的結(jié)束坐標(biāo),我們要從寬度和高度中減去邊界值。另外,由于這是一個(gè)從零開始的坐標(biāo)系,因此我們還需要從每個(gè)數(shù)字中減去1。

下載:文件

復(fù)制代碼

# Draw a black background

draw.rectangle((0, 0, display.width, display.height), outline=255, fill=255) # Draw a smaller inner rectangle

draw.rectangle((BORDER, BORDER, display.width - BORDER - 1, display.height - BORDER - 1),

outline=0, fill=0)

這是虛擬畫布在內(nèi)存中的外觀。

現(xiàn)在,使用PIL繪制文本非常簡單。首先,我們將字體設(shè)置為默認(rèn)系統(tǒng)文本。之后,我們定義文本并獲取文本的大小。我們正在獲取它將呈現(xiàn)的大小,以便我們可以計(jì)算中心位置。最后,我們使用字體大小和屏幕大小來計(jì)算要在其上繪制文本的位置,該位置將出現(xiàn)在屏幕中央。

下載:文件

復(fù)制代碼

# Draw a smaller inner rectangle

draw.rectangle((BORDER, BORDER, display.width - BORDER - 1, display.height - BORDER - 1),

outline=0, fill=0) # Load a TTF font.

font = ImageFont.truetype(’/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf‘, FONTSIZE)

# Draw Some Text

text = “Hello World!”

(font_width, font_height) = font.getsize(text)

draw.text((display.width//2 - font_width//2, display.height//2 - font_height//2),

text, font=font, fill=255)

最后,我們需要將虛擬畫布顯示在LCD上,并使用2個(gè)命令進(jìn)行操作。首先,我們將圖像設(shè)置在屏幕上,然后告訴它顯示圖像。

下載:file

復(fù)制代碼

# Load a TTF font.

font = ImageFont.truetype(’/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf‘, FONTSIZE)

# Draw Some Text

text = “Hello World!”

(font_width, font_height) = font.getsize(text)

draw.text((display.width//2 - font_width//2, display.height//2 - font_height//2),

text, font=font, fill=255) # Display image

display.image(image)

display.show()

i》 別忘了您必須調(diào)用display.image(image)和display.show()才能真正顯示圖形。 LCD需要一段時(shí)間才能繪制,因此將所有繪制功能聚集到緩沖區(qū)中(快速),然后將它們一次顯示到LCD(緩慢)

最終輸出應(yīng)如下所示。

下載

我們的PCD8544(Nokia 5110)LCD顯示Arduino庫位于github 上,附帶示例代碼。該庫使用1/2 KB的RAM,因?yàn)樗枰彌_整個(gè)顯示,但是速度非???!該代碼很容易適應(yīng)任何其他微控制器。

您還需要獲得Adafruit GFX Graphics核心庫,該庫可以打印文本,位圖,像素,矩形,圓形和直線,也可以使用在github 上。

PCD8544數(shù)據(jù)表會(huì)告訴您有關(guān)顯示器可以做什么的所有信息。
責(zé)任編輯:wv

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

    關(guān)注

    34

    文章

    4424

    瀏覽量

    167401
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4483

    瀏覽量

    74240
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    低功耗128*128點(diǎn)陣工業(yè)SPI串口通訊單色LCD液晶顯示模塊 128128點(diǎn)陣COG顯示屏

    顯示屏
    深圳市乾思迪電子科技有限公司
    發(fā)布于 :2024年12月13日 14:26:08

    2.8寸單色LCD液晶顯示屏12864點(diǎn)陣SPI或并口通訊 低功耗工業(yè)級(jí)128*64點(diǎn)陣COG顯示屏

    顯示屏
    深圳市乾思迪電子科技有限公司
    發(fā)布于 :2024年12月13日 14:09:59

    小尺寸單色LCD液晶顯示屏12832圖形點(diǎn)陣 低功耗128*32點(diǎn)陣COG顯示模塊

    顯示屏
    深圳市乾思迪電子科技有限公司
    發(fā)布于 :2024年12月13日 10:11:31

    2.0寸單色LCD液晶顯示屏,12864圖形點(diǎn)陣

    顯示屏串口
    乾思迪電子科技
    發(fā)布于 :2024年11月19日 16:45:32

    oled是什么顯示屏 OLED與LCD的區(qū)別

    的電流成正比。OLED顯示屏由非常薄的有機(jī)材料涂層和玻璃基板(或柔性有機(jī)基板)構(gòu)成,當(dāng)有電流通過時(shí),這些有機(jī)材料就會(huì)發(fā)光。OLED顯示屏中的每個(gè)像素點(diǎn)都能獨(dú)立發(fā)光,無需背光支持,因此具有一系列獨(dú)特的優(yōu)點(diǎn)。 OLED
    的頭像 發(fā)表于 10-21 16:40 ?1455次閱讀

    液晶顯示屏與led顯示屏的區(qū)別

    在現(xiàn)代電子設(shè)備中,顯示屏是人機(jī)交互的重要界面。隨著科技的發(fā)展,顯示屏技術(shù)也在不斷進(jìn)步,其中液晶顯示屏LCD)和LED顯示屏是兩種主流的
    的頭像 發(fā)表于 10-12 10:39 ?1264次閱讀

    lcd和led顯示屏有什么區(qū)別

    LCD(液晶顯示器)和LED(發(fā)光二極管)顯示屏是兩種常見的顯示技術(shù),它們?cè)谠S多方面都有顯著的不同。以下是對(duì)這兩種技術(shù)的比較: 1. 基本工作原理
    的頭像 發(fā)表于 10-10 14:18 ?860次閱讀

    像素間距矩陣LED顯示屏中的常見LED顯示挑戰(zhàn)

    電子發(fā)燒友網(wǎng)站提供《窄像素間距矩陣LED顯示屏中的常見LED顯示挑戰(zhàn).pdf》資料免費(fèi)下載
    發(fā)表于 09-05 10:57 ?0次下載
    窄<b class='flag-5'>像素</b>間距矩陣LED<b class='flag-5'>顯示屏</b>中的常見LED<b class='flag-5'>顯示</b>挑戰(zhàn)

    P2.5LED顯示屏好還是P3LED顯示屏好?

    好? 一、LED顯示屏 LED顯示屏是一種新型的顯示設(shè)備,其通過發(fā)光二極管的發(fā)光實(shí)現(xiàn)顯示的功能。它具有色彩鮮艷、亮度高、壽命長、能耗低等優(yōu)點(diǎn),應(yīng)用廣泛。常見的LED
    的頭像 發(fā)表于 08-29 15:33 ?440次閱讀

    顯示器的像素間距越小,顯示效果越好嗎

    像素間距(Pixel Pitch) 是指LED顯示屏LCD顯示器上相鄰兩個(gè)像素點(diǎn)之間的距離,通常以毫米(mm)為單位表示。
    的頭像 發(fā)表于 08-10 09:56 ?1041次閱讀

    詳解LED顯示屏的基本結(jié)構(gòu)和控制方式

    體結(jié)構(gòu) LED顯示屏體是顯示信息的核心部分,主要由顯示點(diǎn)陣、行列驅(qū)動(dòng)電路和其他輔助電路組成。顯示
    的頭像 發(fā)表于 07-19 08:49 ?1080次閱讀

    什么是LED顯示屏像素

    LED顯示屏像素作為數(shù)字顯示領(lǐng)域的重要組成部分,以其獨(dú)特的魅力和廣泛的應(yīng)用前景,正在點(diǎn)亮我們未來的世界。讓我們共同期待LED顯示屏像素在未來
    的頭像 發(fā)表于 05-28 01:32 ?861次閱讀

    什么是LED顯示屏像素距(點(diǎn)間距)?

    LED顯示屏像素距(點(diǎn)間距)作為衡量其性能的重要指標(biāo)之一,正不斷推動(dòng)著LED顯示屏技術(shù)的發(fā)展和應(yīng)用的拓展。我們有理由相信,在不久的將來,LED顯示屏將會(huì)以更加驚艷的視覺效果和更加智能的
    的頭像 發(fā)表于 05-28 01:27 ?1576次閱讀
    什么是LED<b class='flag-5'>顯示屏</b><b class='flag-5'>像素</b>距(點(diǎn)間距)?

    LED電子顯示屏的相關(guān)報(bào)告

    顯示屏、異形顯示屏等多種類型。LED電子顯示屏經(jīng)歷了從單色到彩色、從低分辨率到高分辨率、從小型化到大型化的發(fā)展歷程。未來,LED電子顯示屏
    發(fā)表于 04-03 17:18 ?0次下載

    LED顯示屏是什么材質(zhì) led顯示屏參數(shù)設(shè)置

    LED顯示屏是一種基于LED(Light Emitting Diode)技術(shù)的顯示裝置,用于在各種場(chǎng)合中展示文字、圖像、視頻等內(nèi)容。它由多個(gè)LED像素點(diǎn)組成,可以通過控制每個(gè)像素點(diǎn)的亮
    的頭像 發(fā)表于 02-03 14:33 ?3880次閱讀
    RM新时代网站-首页