LCD 字元顯示器適用於顯示資訊,而不需要外部監視器。 常見的 LCD 字元顯示器可以直接連接到 GPIO 針腳,但這種方法需要使用最多 10 個 GPIO 針腳。 對於需要連接多種裝置的情況,將大量 GPIO 腳位用於字元顯示器通常是不切實際的。
許多製造商銷售整合了 GPIO 擴展器的 20x4 LCD 字元顯示器。 字元顯示會直接連接到 GPIO 展開器,然後透過 Inter-Integrated 線路 (I2C) 序列通訊協定連接到 Raspberry Pi。
在本主題中,您將使用 .NET,使用 I2C GPIO 展開器在 LCD 字元顯示器上顯示文字。
先決條件
- ARM 型 (ARMv7 或更新版本) 單板電腦 (SBC)
- 具有 I2C 介面的 20x4 LCD 字元顯示器
- 跳線
- 麵包板(選擇性/建議)
- Raspberry Pi GPIO 擴展板(可選/建議)
- .NET SDK 8 或更新版本
備註
本教學課程是以Raspberry Pi為目標裝置所撰寫。 不過,本教學課程可用於支援 .NET 的任何 Linux 型 SBC,例如 Orange Pi、ODROID 等等。
備註
有許多LCD字元顯示器製造商。 大部分的設計都相同,製造商不應該對功能產生任何差異。 如需參考,本教學課程是使用 SunFounder LCD2004 所開發。
準備 SBC (單板電腦)
請確定您的 SBC 已設定為支援下列服務:
- SSH
- I2C
對於許多裝置,不需要額外的設定。 針對 Raspberry Pi,請使用 raspi-config
命令。 如需 raspi-config
的詳細資訊,請參閱 Raspberry Pi 文件。
準備硬體
使用跳線將 I2C GPIO 擴充器上的四個針腳連接到 Raspberry Pi,如下所示:
- GND 對地面
- VCC 到 5V
- SDA 至 SDA (GPIO 2)
- SCL 至 SCL (GPIO 3)
視需要參閱下圖:
I2C 介面(顯示器背面) | Raspberry Pi GPIO |
---|---|
![]() |
![]() 圖片由Raspberry Pi Foundation 提供。 |
小提示
建議使用 GPIO 分流板搭配麵包板,以簡化與 GPIO 標頭的連接。
建立應用程式
在慣用的開發環境中完成下列步驟:
使用 .NET CLI 或 Visual Studio 建立新的 .NET 控制台應用程式。 將它命名為 LcdTutorial。
dotnet new console -o LcdTutorial cd LcdTutorial
將 Iot.Device.Bindings 套件新增至專案。 從項目目錄或Visual Studio使用 .NET CLI。
dotnet add package Iot.Device.Bindings --version 3.2.0-*
使用下列程式碼取代 Program.cs 的內容:
using System; using System.Device.Gpio; using System.Device.I2c; using System.Threading; using Iot.Device.CharacterLcd; using Iot.Device.Pcx857x; Console.WriteLine("Displaying current time. Press Ctrl+C to end."); using I2cDevice i2c = I2cDevice.Create(new I2cConnectionSettings(1, 0x27)); using var driver = new Pcf8574(i2c); using var lcd = new Lcd2004(registerSelectPin: 0, enablePin: 2, dataPins: new int[] { 4, 5, 6, 7 }, backlightPin: 3, backlightBrightness: 0.1f, readWritePin: 1, controller: new GpioController(PinNumberingScheme.Logical, driver)); int currentLine = 0; while (true) { lcd.Clear(); lcd.SetCursorPosition(0,currentLine); lcd.Write(DateTime.Now.ToShortTimeString()); currentLine = (currentLine == 3) ? 0 : currentLine + 1; Thread.Sleep(1000); }
在上述程式碼中:
using 宣告會藉由呼叫
I2cDevice
並傳入一個含有I2cDevice.Create
和I2cConnectionSettings
參數的新busId
,來建立deviceAddress
的實例。 這I2cDevice
代表 I2C 總線。 宣告using
確保物件被處置且硬體資源被正確釋放。警告
GPIO 擴充器裝置位址取決於製造商所使用的晶片。 配備PCF8574的 GPIO 擴充器會使用位址
0x27
,而那些使用PCF8574A晶片的人則使用0x3F
。 請參閱你的 LCD 文件。另一
using
宣告會建立Pcf8574
的實例,並將I2cDevice
傳遞至建構函式。 這個實例代表 GPIO 展開器。另一個
using
宣告會建立Lcd2004
實例,以代表顯示。 數個參數會傳遞至建構函式,描述用來與 GPIO 展開器通訊的設定。 GPIO 展開器會當做controller
參數傳遞。while
迴圈會無限期執行。 每次迭代- 清除螢幕顯示。
- 將游標位置設定為目前行的第一個位置。
- 將目前時間顯示於目前游標位置的螢幕上。
- 反覆查看目前的行計數器。
- 睡眠 1000 毫秒。
建置應用程式。 如果使用 .NET CLI,請執行
dotnet build
。 若要在 Visual Studio 中建置,請按 Ctrl+Shift+B。將應用程式部署至 SBC 作為獨立應用程式。 如需指示,請參閱 將 .NET 應用程式部署至Raspberry Pi。 請務必使用 提供可執行檔
chmod +x
許可權。切換至部署目錄並執行可執行檔,在Raspberry Pi上執行應用程式。
./LcdTutorial
觀察 LCD 字元顯示,每一行上都顯示當前時間。
小提示
如果顯示器已點亮,但您看不到任何文字,請嘗試調整顯示器背面的對比撥號。
按 Ctrl+C 終止程式。
祝賀! 您已使用 I2C 和 GPIO 擴充器在 LCD 上顯示文字!
取得原始程式碼
本教學課程的來源 可在 GitHub 上取得。