在 LCD 上顯示文字
在不需要外部監視器的情況下顯示資訊時,LCD 字元顯示會很有用。 常見的 LCD 字元顯示器可以直接連接到 GPIO 針腳,但這種方法需要使用最多 10 個 GPIO 針腳。 對於需要連線至裝置組合的案例,將太多 GPIO 連接器用於字元顯示通常不切實際。
許多製造商都販售 20x4 的 LCD 字元顯示器,其中包含整合式 GPIO 展開器。 字元顯示器會直接連接到 GPIO 展開器,然後透過內部整合電路 (I2C) 序列通訊協定連接到 Raspberry Pi。
在本主題中,您將使用 .NET,使用 I2C GPIO 展開器,在一個 LED 字元顯示器上顯示文字。
必要條件
- ARM 型 (ARMv7 或更新版本) 單一面板電腦 (SBC)
- 具有 I2C 介面的 20x4 LCD 字元顯示器
- 跳線
- 試驗電路板 (選擇性/建議)
- Raspberry Pi GPIO 擴充板 (選擇性/建議)
- .NET SDK 7 或更新版本
注意
本教學課程是以 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 2.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.Create
,並使用busId
和deviceAddress
參數傳入新的I2cConnectionSettings
,以建立I2cDevice
的執行個體。 這個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。