用于控制各种硬件后端上的lcd的库

pyLCD的Python项目详细描述


PYLCD–一个用于控制各种硬件后端上的LCD的库
使用与ks0108兼容的图形lcd基本上是相同的,只是管脚名称和功能名称不同。

license
----
此程序是在agplv3下授权的。有关详细信息,请参见"license"文件。

installation
----
您可以使用python包索引轻松安装pylcd库。只需键入:

sudo pip install pylcd


硬件支持
----
此库支持多个硬件平台进行输入和输出。

>当前可用的输出后端:
*velleman K8055 USB实验接口板
*raspberry pi gpio pins
*使用串行通信的Arduino管脚(仍在开发中)
*显示接口管脚状态的调试输出
*不起作用的虚拟输出

当前可用的输入后端:
*系统标准输入(如键盘)
*树莓PI GPIO管脚
*否input

有关如何使用它们的示例,请参见下面的使用示例。


在实例化显示时,输出pinmaps
您需要向它传递一个字典,其中包含从LCD上的管脚名称到连接LCD的设备上输出数字的映射。
对于K8055,您可能需要使用这个管脚映射:

`` python
pinmap={
'rs':1,
'rw':2,
'e':3,
'd4,
'd5':5,
"d6":6,
"d7":7,
"led":9,
}
````

请注意,背光led管脚在此处编号为9,即使k8055只有8个数字输出。但是,由于有两个额外的模拟输出,我将它们编号为9和10以避免混淆。
使用模拟输出进行背光控制可以通过使用脉宽调制来调暗背光!

对于覆盆子pi,需要使用wiringpi的"wpi"模式"gpio"管脚编号方案。我将液晶显示器连接如下:

``python
pinmap={
'rs':2,
'rw':3,
'e':4,
'd4':22,
'd5':10,
'd6':9,
'd7':11,
'led':18,
}
``````

此pin是pi的唯一可用硬件pwm pin,因此我建议使用此pin。
如果使用的是"debugbackend"后端,则pin编号无关紧要。

input pinmaps
----
如果使用的是使用i/o pin的输入模块,则需要为该模块也支持。
目前,只支持五个键:向上键、向左键、确定键、向右键和向下键,以及两个指示灯:就绪键和错误键。
我的pinmap如下所示:

`` python
输入pinmap={
向上键:23,
向左键:7,
确定键:8,
向右键:24,
向下键:25,
就绪键:27,
"错误":22,
}
````

这是一本字典,格式如下:

`` python
charmap={
0:(
0b10101,
0b1010,
0b10101,
0b1010,
0b10101,
0b1010,
0b10101,
0b1010,
}
````

因为hd44780最多可以存储8个自定义字符。
这些值应该是8个整数的元组或列表,其中每个整数代表自定义字符的一行。我建议用二进制表示法编写这些整数,因为这样做很容易看出哪些像素将处于活动状态,哪些像素将不处于活动状态。

要从图像文件加载自定义字符,请执行以下操作:

``python
charmap={
'dir':"/path/to/directory",
}
````

编号为'0.<;后缀>;`到'7.<;后缀>;`。每个文件必须宽5像素,高8像素,由黑白像素组成,其中黑色像素将转换为显示屏上的活动像素。
要使用此功能,您需要安装python imaging library(pil)。


参见下面的用法示例。请查看"lcd.py"文件以了解可能的情况。

使用示例
----
初始化一个标准16x2字符的lcd,该lcd的光标在树莓pi上闪烁,您可以这样做:

``python
import hd44780
pinmap={}光标闪烁=真)
display.clear()
display.home()
````

请执行以下操作:

``python
input_pinmap={},buttons=("yes","no"))
如果选中,则index==0:
ui.message("doing stuff…")
否则:
ui.message("aborted.")
````

请注意,如果使用的是"systeminput"输入后端,则需要能够向运行脚本的终端发送按键,否则它将无法对您的输入做出反应。
有关更多示例,我建议查看包含的示例脚本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用数据库中的值填充p:selectOneMenu   Java/Junit中的异步单元测试一个非常简单但不成功的例子   在Debian上使用Java连接到MySQL   java测试时如何恢复表中的一条记录/行?   java如何将重点放在jbutton上而不是放在另一个jbutton上?   java我可以从HPROF文件中获取JVM标志吗?   java如何使用自定义比较器在2个集合上保留   java让stringTokenizer将一行文本拆分为预定义变量的最佳方法是什么   Kotlin Android/Java字符串日期时间格式,API21   exchange server EWS Java Api自动发现不工作   netbeans是Java新手,似乎无法修复错误;应为类、接口或枚举。274062   我正在尝试将一些scala代码转换为Java8,以创建新的Lambda和并行集合   流中的分配api(java)   用于串行通信的java Python字节数组