概述
使用新的adafruit usb或ttl串行背包,向项目或计算机添加字符显示从未如此简单!这种定制设计的pcb位于任何“标准”字符lcd(16x2或20x4尺寸)的背面,可完成您想要的一切:打印文本,自动滚动,设置背光,调整对比度,制作自定义字符,翻动打开或关闭光标等。它甚至可以通过完整的8位pwm控制背光来处理我们的rgb背光lcd。这意味着您可以将背景颜色更改为所需的任何颜色-红色,绿色,蓝色,粉红色,白色,紫色黄色,蓝绿色,鲑鱼色,淡黄色,或者只是将其保留为中性背景。
背包内有一个usb-功能强大的at90usb162芯片,可侦听mini-b usb端口和ttl串行输入线的命令。 usb接口在windows/mac/linux上显示为com/串行端口。背包将自动从正在使用的输入中选择数据。对于usb连接,它将以任何波特率工作。对于ttl连接,默认波特率是9600,但是您可以发送命令将波特率设置为2400、4800、9600、19200、28800或57600。 (上电期间,波特率在lcd上闪烁)。诸如波特率,背光颜色,亮度,启动画面等任何自定义内容都将永久存储在eeprom中。
命令界面与流行的“ matrix orbital”规范兼容,因此,该背包可以与期望“ matrix” lcd的计算机应用程序或库完美配合。我们为rgb背光和设置lcd尺寸添加了一些额外的命令。如果您不想使用这些命令,则只需开始将ascii发送到lcd上,它就会像键入的那样神奇地显示出来。
立即从adafruit商店领取一个!
usb或ttl串行
有两个用于将数据传输到背包的接口:usb和串行。 usb是最简单的:只需将mini-b电缆从背包连接到计算机即可供电和连接。该背包将作为windows,mac和linux计算机的“ usb串行端口”出现。 windows需要inf文件,而mac或linux则不需要驱动程序。 windows计算机将创建 com 端口,mac/linux将在 /dev/cu.usbserialxx 或类似版本下创建设备,运行 dmesg 插入后立即查看该设备的名称。使用usb,可以使用任何终端程序,以任何波特率连接到端口,并发送文本和命令数据。 usb不使用波特率,因此只需连接9600或最简单的那个即可。
您也可以连接ttl串行输入。这是红色/黑色/白色电缆。通过将黑线接地和红线+ 5v供电。白色电缆是5v ttl串行输入。默认情况下,背包配置为9600波特,8位,无奇偶校验,1个停止位。如果您需要更快或更慢的ttl接口,则可以配置波特率。通电后,背包会将波特率闪烁到显示屏上100毫秒,因此,如果您真的很困惑,请在观看显示屏的同时进行连接。您始终可以连接usb(usb不使用波特率)并在其中重置波特率。
要硬接线usb连接,标准的“ 5x1”插脚中有一个usb分支,用于红色,黑色,白色和绿色usb电线。对于ttl连接的硬接线,rx和tx引脚有分线。沿着pcb的边缘。
组装
第一步是将字符lcd显示屏焊接到背包上。请记住,仅支持字符 类型的显示器,它们的大小最大为20x4,但不能更大。 所有adafruit字符显示都可以使用,但我们不能保证任何其他字符都可以使用!
如果您从adafruit购买套件,则可能会获得额外的蓝色10k电位器。该套件不需要此零件,因此您可以将其用于另一个项目!
背包带有一个标头,您可以使用该标头适合显示屏。方便地使用无焊面包板将接头连接器直接连接。
您的套件中还可能带有蓝色的3针电位器,不需要此部分,您只需将其回收利用到另一个项目中即可。
断开标头,使其与lcd上的引脚数匹配。
将标头的长边朝下放在面包板上。然后将lcd放在顶部。如果您使用的液晶显示器有两行可用,请确保使用与以下图像匹配的行。
用烙铁焊接所有标题。
下一步,对齐背包,使其与lcd的角部匹配,背包中的孔应在相同的位置。
完全背包。
就是这样!
发送文本
要显示文本,只需发送ascii字符!需要注意一些特殊字符:
换行符(0x0a或‘ n’)将用空格填充当前行的其余部分(将其空白)并移至下一行
未收听回车符(0x0d或‘ r’)
退格键(0x08)会将字符备份一个空格,并将最后一个字符替换为一个空格以擦除它。
还有很多特殊命令,有关如何在下面发送这些命令,请参见下文。
唯一的特殊字符是 0xfe “命令开始”字符。
使用usb进行测试
测试lcd和背包的最简单方法是将其连接到计算机并使用终端程序发送数据。
使用任何mini-b usb电缆连接到背包。如果您使用的是windows,则需要将其指向inf驱动程序文件。请参阅下面的inf文件下载部分。 mac和linux不需要驱动程序。
插入背包后,它将创建一个串行端口。在windows下,这称为 com端口。您可以在设备管理器→端口中查看创建的com端口的名称。连接usb电缆时,您应该会看到一个条目出现/消失。
对于mac/linux,一旦插入电缆,请运行 dmesg 以查看端口的名称,可能类似于 /dev/cu.usbmodem-xxxx 或类似版本。您还可以在 terminal 窗口中输入 ls/dev/cu。*,以查看出现/消失的项目
端口已知,您可以使用自己喜欢的终端程序进行连接。对于此示例,我们将使用arduino内置的基本终端。串行端口监视器的唯一缺点是一次只能发送一个完整的字符串,并且末尾会有新行。如果您使用的是更强大的显示器,例如coolterm(mac)或realterm(windows),则可以在输入每个字符时观看
首先选择与背包相同的com串行端口。
p》
打开串行端口监视器,然后键入hello world!
点击发送 后,它将把文本转移到背包中,并出现。就是这样!
有关更多命令,请检查github存储库(请参阅“下载”选项卡)以获取将测试显示屏上所有命令的python脚本。
使用ttl串行进行测试
接下来,我们将演示如何使用arduino微控制器发送文本和命令。当然,您可以使用任何具有可配置为9600波特率的串行输出的微控制器。该演示将展示如何设置显示尺寸,rgb背光和创建自定义字符。有关更多命令,请参见下面的受支持命令的完整列表
用一个arduino抓取并按如下所示将jst电缆连接到背包:红线到+ 5v,黑线到地,白色数据线转到数字2。您可以稍后更改数字引脚,但在此示例中坚持使用#2并在以后根据需要进行调整。
您可以从此github存储库下载此示例。
下载:文件
复制代码
#include “arduino.h”
#if defined(arduino_arch_samd) || defined(__sam3x8e__)
// use pin 18 with due, pin 1 with zero or m0 pro
#define lcd serial1
#else
#include
// create a software serial port!
softwareserial lcd = softwareserial(0,2);
#endif
// for esp8266 use this softwareserial library: https://github.com/plerup/espsoftwareserial
void setup() {
lcd.begin(9600);
// set the size of the display if it isn‘t 16x2 (you only have to do this once)
lcd.write(0xfe);
lcd.write(0xd1);
lcd.write(16); // 16 columns
lcd.write(2); // 2 rows
delay(10);
// we suggest putting delays after each command to make sure the data
// is sent and the lcd is updated.
// set the contrast, 200 is a good place to start, adjust as desired
lcd.write(0xfe);
lcd.write(0x50);
lcd.write(200);
delay(10);
// set the brightness - we’ll max it (255 is max brightness)
lcd.write(0xfe);
lcd.write(0x99);
lcd.write(255);
delay(10);
// turn off cursors
lcd.write(0xfe);
lcd.write(0x4b);
lcd.write(0xfe);
lcd.write(0x54);
// create a custom character
lcd.write(0xfe);
lcd.write(0x4e);
lcd.write((uint8_t)0); // location #0
lcd.write((uint8_t)0x00); // 8 bytes of character data
lcd.write(0x0a);
lcd.write(0x15);
lcd.write(0x11);
lcd.write(0x11);
lcd.write(0x0a);
lcd.write(0x04);
lcd.write((uint8_t)0x00);
delay(10); // we suggest putting delays after each command
// clear screen
lcd.write(0xfe);
lcd.write(0x58);
delay(10); // we suggest putting delays after each command
// go ‘home’
lcd.write(0xfe);
lcd.write(0x48);
delay(10); // we suggest putting delays after each command
lcd.print(“we ”);
lcd.write((uint8_t)0); // to print the custom character, ‘write’ the location
lcd.println(“ arduino!”);
lcd.print(“ - adafruit”);
delay(1000);
}
uint8_t red, green, blue;
void loop() {
// adjust colors
for (red = 0; red 《 255; red++) {
lcd.write(0xfe);
lcd.write(0xd0);
lcd.write(red);
lcd.write((uint8_t)0);
lcd.write(255 - red);
delay(10); // give it some time to adjust the backlight!
}
for (green = 0; green 《 255; green++) {
lcd.write(0xfe);
lcd.write(0xd0);
lcd.write(255-green);
lcd.write(green);
lcd.write((uint8_t)0);
delay(10); // give it some time to adjust the backlight!
}
for (blue = 0; blue 《 255; blue++) {
lcd.write(0xfe);
lcd.write(0xd0);
lcd.write((uint8_t)0);
lcd.write(255-blue);
lcd.write(blue);
delay(10); // give it some time to adjust the backlight!
}
} #include “arduino.h”
#if defined(arduino_arch_samd) || defined(__sam3x8e__)
// use pin 18 with due, pin 1 with zero or m0 pro
#define lcd serial1
#else
#include
// create a software serial port!
softwareserial lcd = softwareserial(0,2);
#endif
// for esp8266 use this softwareserial library: https://github.com/plerup/espsoftwareserial
void setup() {
lcd.begin(9600);
// set the size of the display if it isn‘t 16x2 (you only have to do this once)
lcd.write(0xfe);
lcd.write(0xd1);
lcd.write(16); // 16 columns
lcd.write(2); // 2 rows
delay(10);
// we suggest putting delays after each command to make sure the data
// is sent and the lcd is updated.
// set the contrast, 200 is a good place to start, adjust as desired
lcd.write(0xfe);
lcd.write(0x50);
lcd.write(200);
delay(10);
// set the brightness - we’ll max it (255 is max brightness)
lcd.write(0xfe);
lcd.write(0x99);
lcd.write(255);
delay(10);
// turn off cursors
lcd.write(0xfe);
lcd.write(0x4b);
lcd.write(0xfe);
lcd.write(0x54);
// create a custom character
lcd.write(0xfe);
lcd.write(0x4e);
lcd.write((uint8_t)0); // location #0
lcd.write((uint8_t)0x00); // 8 bytes of character data
lcd.write(0x0a);
lcd.write(0x15);
lcd.write(0x11);
lcd.write(0x11);
lcd.write(0x0a);
lcd.write(0x04);
lcd.write((uint8_t)0x00);
delay(10); // we suggest putting delays after each command
// clear screen
lcd.write(0xfe);
lcd.write(0x58);
delay(10); // we suggest putting delays after each command
// go ‘home’
lcd.write(0xfe);
lcd.write(0x48);
delay(10); // we suggest putting delays after each command
lcd.print(“we ”);
lcd.write((uint8_t)0); // to print the custom character, ‘write’ the location
lcd.println(“ arduino!”);
lcd.print(“ - adafruit”);
delay(1000);
}
uint8_t red, green, blue;
void loop() {
// adjust colors
for (red = 0; red 《 255; red++) {
lcd.write(0xfe);
lcd.write(0xd0);
lcd.write(red);
lcd.write((uint8_t)0);
lcd.write(255 - red);
delay(10); // give it some time to adjust the backlight!
}
for (green = 0; green 《 255; green++) {
lcd.write(0xfe);
lcd.write(0xd0);
lcd.write(255-green);
lcd.write(green);
lcd.write((uint8_t)0);
delay(10); // give it some time to adjust the backlight!
}
for (blue = 0; blue 《 255; blue++) {
lcd.write(0xfe);
lcd.write(0xd0);
lcd.write((uint8_t)0);
lcd.write(255-blue);
lcd.write(blue);
delay(10); // give it some time to adjust the backlight!
}
}
您应该看到以下内容,并且背景颜色发生了变化:
命令参考
命令集基于矩阵轨道规范。我们添加了一些命令来支持rgb背光和调整显示器的尺寸(因此一个固件可以支持16x2或20x4)。如果您使用的软件支持matrix orbital显示器,则此背包的工作原理应相同(如果不行,请让我们知道!)
所有命令都以特殊字符 0xfe (以十六进制表示)开头,告诉背包接下来要注意特殊命令。
基本命令:
display on-0xfe 0x42-此命令可打开显示屏背光。参数是要保留多少分钟,该命令受支持,但我们不处理超时,因此该数字将被忽略
display on-0xfe 0x46 -打开显示背光关闭
设置亮度-0xfe 0x99 -设置背光的整体亮度(颜色分量单独设置-亮度设置在设置颜色后生效)。设置保存到eeprom
设置并保存亮度-0xfe 0x98 -与上面相同
设置对比度-0xfe 0x50 -设置显示对比度。通常,大约在180-220的值才有效。设置保存到eeprom
设置并保存对比度-0xfe 0x91 -与上面相同
自动滚动-0xfe 0x51 -这样一来,当接收到文本且显示屏上没有更多空间时,文本将自动“滚动”,因此第二行变为第一行,依此类推。新文本始终位于显示屏的底部。
自动滚屏-0xfe 0x52 -这样一来,当收到文本并且显示屏上没有更多空间时,文本将环绕起来以从显示屏顶部开始。
清除屏幕-0xfe 0x58 -这将清除任何文本的屏幕
更改启动初始屏幕-0xfe 0x40 -之后发送此命令时,最多写32个字符(对于16x2)或80个字符(对于20x4),这些字符将在启动过程中显示为初始屏幕。如果您不想启动屏幕,请写一些空格移动和更改光标:
设置光标位置-0xfe 0x47-文本输入光标的位置。列和行的编号从1开始,因此左上角的第一个位置是(1,1)
回家-0xfe 0x48-将光标放在位置(1, 1)
向后光标-0xfe 0x4c-向后移动光标一个空格,如果在位置(1,1),它将“换行”到最后一个位置。
向前移动光标-0xfe 0x4d-将光标向后移动一个空格,如果在最后一个位置,它将“包装”到(1,1)位置。
打开下划线光标-0xfe 0x4a-打开下划线光标
关闭下划线光标-0xfe 0x4b-关闭下划线光标
阻止光标打开-0xfe 0x53-打开闪烁的块光标
关闭阻止光标-0xfe 0x54-关闭闪烁的块光标
rgb背光和lcd尺寸
设置rgb背光颜色-0xfe 0xd0 -将背光设置为红色,绿色和蓝色成分的颜色。的值范围可以从0到255(一个字节)。这将保存到eeprom。每种颜色r,g和b在命令后均由一个字节表示。颜色值的范围是0到255(十六进制为0xff)。要将背光设置为红色,命令为 0xfe 0xd0 0xff 0x0 0x0。 蓝色为 0xfe 0xd0 0x0 0x0 0xff。 白色是 0xfe 0xd0 0xff 0xff 0xff。
设置lcd尺寸-0xfe 0xd1 -您可以将背包配置为所连接尺寸的显示器。自定义字符
创建自定义字符-0xfe 0x4e -,将在spot中创建一个自定义角色。可以在0到7之间(8个点)。发送了8个字节,指示字符应如何显示
将自定义字符保存到eeprom库-0xfe 0xc1-,这会将自定义字符保存到eeprom库以供以后使用。共有4个存储区,每个存储区有8个位置。
从eeprom存储区加载自定义字符-0xfe 0xc0-,这会将所有保存到eeprom存储区的8个字符加载到lcd的内存中。输出
通用输出是背包不使用的4个引脚,您可以将这些引脚设置为高或低。 gpo1 标为pb0, gpo2 标记为pc2, gpo3 标记为pc4, gpo4 标记为pc7
gpo关闭-0xfe 0x56 -将通用引脚设置为low(0v)
gpo开启-0xfe 0x57 -将通用引脚设置为高(5v)
gpo起始状态-0xfe 0xc3 -设置gpo引脚“未处理”的初始位置!
设置自动线-wrap on-0xfe 0x43 -和关闭自动换行功能- 0xfe 0x44 -不支持。我们发现自动换行并不是非常有用,因此它可以一直自动运行。
初始化/放置中号和大号,水平条和垂直条-不支持此功能
下载
文件
测试软件和at90固件@ github。背包使用teensy v1.0框架,我们没有教程或修改固件的支持,但是如果您要自定义背包固件,它可为您带来黑客乐趣!我们还将未使用的at90usb162引脚分成一个额外的插头-请参见未使用/已使用引脚的示意图。
您可以通过将复位引脚接地来启动引导加载程序(at90usb162芯片)。它是通过usb与av109兼容的引导程序,avrdude支持它,但目前我们没有arduino ide支持(并且没有eta)
github上的eaglecad pcb文件
lcd smartie-受欢迎的字符lcd驱动程序
adafruit fritzing库中的框对象
驱动程序以下是windows xp/7/vista的inf驱动程序。解压缩并导航到“新硬件向导”中的文件夹。
单击此处:
usb_serial_backpack-driver.zip
我们还有windows 8签名的驱动程序-它们是beta版,因此请尝试!
下载usb串行rgb lcd背包签名驱动程序
示意图和构造打印
国家电网蒙东试点配置配电网感知系统
广和通L610 Cat 1模组赋能视频监控无线联网
温度传感器的电路结构及原理
怎样用NE555做定时开关
工控机让智能扫地机器人变得触手可及
USB +串行RGB背光字符LCD背包的制作
静止无功发生器(SVG)的工作原理及应用
sdram走线等长规则
PM2.5粉尘检测传感器在能新风机中的应用
内嵌CAN总线32位Cortex-M0微控制器NUC130 / NUC140系列新品
阿维塔12交付量创新高,搭载鸿蒙座舱,支持华为设备互联
晶圆现货市场的短期飙升 有晶圆合约成功涨价10%
74ls20引脚图管脚图及真值功能表
芯和半导体片上无源电磁场仿真套件成功通过三星8LPP工艺认证
氢燃料电池行业频动 金沙江合资建2.5万MW电池厂还要入股镍钴厂
高效轻型线程助力提高Linux实时性能
氮化镓充电器和普通充电器对比哪个好
多元算力时代开启,服务器市场还将保持增长
上海市80%高架桥将更换为LED路灯
linux中怎么查看指定端口是否开放