#HD44780CharacterLCD.swift

A Swift library for 16x2(aka 1602A), 20x4(aka 2004A) or bigger Character LCDs with an Hitachi HD44780 controller or one of its clones(KS0066, SPLC780D, ST7066U, NT8331D, etc...).

Linux-only Swift 4 compatible License: BSD

LCD with Swift

#摘要

一个用于 16x2(又名 1602A)、20x4(又名 2004A)或更大尺寸字符 LCD 的 Swift 库,这些 LCD 使用 Hitachi HD44780 控制器或其克隆版本(KS0066、SPLC780D、ST7066U、NT8331D 等... 市场上 99% 的控制器)。

此库不适用于连接到额外的 I2C/SPI 驱动板的 LCD(只有 5 个引脚而不是大约 16 个引脚的板)。

此外,不支持 RGB 背光,如果有人感兴趣,将来可能会添加。

支持的开发板

SwiftyGPIO 支持的每个开发板:Raspberry Pi、BeagleBone、C.H.I.P. 等...

要使用此库,您需要一个运行 Swift 3.x/4.x 的 Linux ARM 开发板,此库的旧 Swift 2.x 版本可在特定分支上找到。

下面的示例将使用 Raspberry Pi 2 开发板,但您可以轻松修改示例以使用其他支持的开发板之一。

安装

请参阅 SwiftyGPIO 的 readme 文件以获取 Swift 安装说明。

一旦您的开发板运行 Swift,如果您的版本支持 Swift Package Manager,您可以简单地将此库添加为项目的依赖项,并使用 swift build 进行编译。

let package = Package(
    name: "MyProject",
    dependencies: [
	.package(url: "https://github.com/uraimo/HD44780CharacterLCD.swift.git", from: "3.0.0"),
	...
    ]
    ...
) 

目录 Examples/RaspberryPi 包含一个使用 SPM 的示例项目,编译它并使用 sudo ./.build/debug/TestLCD 运行示例。

如果不支持 SPM,您需要手动下载库及其依赖项

wget https://raw.githubusercontent.com/uraimo/HD44780CharacterLCD.swift/master/Sources/HD44780CharacterLCD.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SwiftyGPIO.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/Presets.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SunXi.swift

一旦所有文件都已下载,创建一个额外的文件,其中将包含您的应用程序的代码(例如 main.swift)。当您的代码准备就绪后,使用以下命令编译它

swiftc  *.swift

编译器将创建一个 main 可执行文件。

与 GPIO 交互的所有操作一样,如果您还不是 root 用户,您将需要使用 sudo ./main 运行该二进制文件。

用法

在以下用法示例中,我将使用连接到 Raspberry Pi 2 的 20x4 LCD,如下所示

HD44780 pins

在将其用作参考之前,请验证引脚是否相同(A 和 K 可能有不同的名称)。

由于该库仅支持写入,因此 R/W 引脚连接到 GND,并且由于我们使用 4 位数据模式,因此较低的 4 个数据引脚未连接到任何东西。

AK 引脚用于背光,如果您有 RGB 背光 LCD,您将有三个引脚而不是两个。通常您只需将 K 连接到 GND,将 A 连接到 VDD(5V)。V0 引脚调节显示对比度,您可以将其连接到 GND 以获得最大对比度,或者您可以使用 20K 可变电阻搜索您喜欢的值,这里我建议您使用连接到 GND 的 470 欧姆电阻,这将为您提供良好的对比度值(请参阅上面的图片),如果您不喜欢,请随意尝试。

这就是 LCD 连接的全部内容,只需将剩余的引脚连接到图表中所示的 Raspberry Pi GPIO。

该库需要使用 SwiftyGPIO 创建的 6 个 GPIO 对象来初始化 HD44780 类,让我们看看如何在 Raspberry Pi 2 上执行此操作,我们将使用接头左侧的前 6 个 gpio

import SwiftyGPIO
import HD44780LCD

let gpios = SwiftyGPIO.GPIOs(for: .RaspberryPi2)
var rs = gpios[.P2]!
var e = gpios[.P3]!
var d4 = gpios[.P4]!
var d5 = gpios[.P17]!
var d6 = gpios[.P27]!
var d7 = gpios[.P22]!
let lcd = HD44780LCD(rs:rs,e:e,d7:d7,d6:d6,d5:d5,d4:d4,width:20,height:4)

可以使用 clearScreen 方法清除屏幕

lcd.clearScreen()

光标是 HD44780 LCD 提供的一项功能,它指向下一个字符应该绘制的位置,光标可以移动到原位 (0,0) 或特定位置

lcd.cursorHome()
lcd.cursorTo(x:0,y:0)

目前,光标相关的方法没有实际用例,因为它无法在当前位置打印字符或字符串(实现起来很简单)。

要在给定位置打印字符串,请使用 printString 方法,最后一个参数指定是否应使用美国字符集。如果布尔值为 false,则将使用带有片假名符号的日语字符集。

lcd.printString(x:0,y:0,what:"Hello From Swift!",usCharSet:true)

示例

示例在 Examples 目录中提供。

使用此库的项目

TODO

一些缺失的功能