0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

USB +串行RGB背光字符LCD背包的制作

454398 来源:网络整理 作者:网络整理 2019-11-28 10:55 次阅读

概述

使用新的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背包签名驱动程序

示意图和构造打印

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4411

    浏览量

    167044
  • TTL
    TTL
    +关注

    关注

    7

    文章

    502

    浏览量

    70115
收藏 人收藏

    评论

    相关推荐

    飞凌嵌入式-ELFBOARD-RGB LCD屏接口的PCB设计要点

    :VGA、DVI、HDMI、DP、USB-C、Type-C等,内接显示屏接口(直接接到显示屏的)有:MIPI、LVDS、eDP和LCD RGB接口等,本次针对咱们硬件中几种常见的内接显示屏接口,予以介绍
    发表于 11-12 11:51

    飞凌嵌入式-ELBOARD-RGB LCD显示屏接口的PCB设计要点

    :VGA、DVI、HDMI、DP、USB-C、Type-C等,内接显示屏接口(直接接到显示屏的)有:MIPI、LVDS、eDP和LCD RGB接口等,本次针对咱们硬件中几种常见的内接显示屏接口,予以介绍
    发表于 11-12 11:49

    USB是通用串行总线

    USB是通用串行总线 USB是通用串行总线,USB协议版本包括 USB1.0、
    的头像 发表于 08-21 10:52 265次阅读

    背光驱动方式及特性详解

    LCD(Liquid Crystal Display)即液晶显示器,在消费类电子和家电市场是主流屏幕产品。LCD本身不发光,它需要一个外部面光源系统来帮助其显示,即背光源。背光源将点光
    的头像 发表于 07-22 17:16 1551次阅读
    <b class='flag-5'>背光</b>驱动方式及特性详解

    ESP32-S2能否支持8位串行RGB

    看ESP32-S2手册上写的是支持8位串口RGB的。但是在编译esp-idf master代码时出错。 我有一片LCD是8位串行RGB接口(驱动芯片HX8238D),想用
    发表于 06-17 06:17

    espidf5.0.0版本的LCD中的rgb_panel例程怎么跑起来?

    想请问一下 espidf5.0.0版本的LCD中的rgb_panel例程怎么跑起来,之前跑起来过几次,不过现在完全跑不起来了 报错代码中出现的错误均为例程中的源代码,且其头文件都是有包含的,请问
    发表于 06-12 08:04

    ESP32-S3驱动LCD_RGB时, esp_lcd_panel_swap_xy不生效的原因?

    IDF版本5.1.2 使用example: LCD-RGB, 添加SPI配置代码后, 屏幕可以显示例程(lv_scatter), 显示内容为竖屏. 竖屏显示
    发表于 06-05 06:03

    TFT-LCD面板制作流程

    电子发烧友网站提供《TFT-LCD面板制作流程.pdf》资料免费下载
    发表于 03-24 09:32 13次下载

    集成WLED背光驱动器的 LCD 偏置电源TPS65142数据表

    电子发烧友网站提供《集成WLED背光驱动器的 LCD 偏置电源TPS65142数据表.pdf》资料免费下载
    发表于 03-07 14:11 0次下载
    集成WLED<b class='flag-5'>背光</b>驱动器的 <b class='flag-5'>LCD</b> 偏置电源TPS65142数据表

    在3伏电压下使用字符LCD模块

    LCD模块与七段LED显示屏相比,LCD模块比LED显示屏可以显示更多的字符。大多数 LCD 模块的功耗小于 1 mA,因此也适用于电池供电的设备。
    发表于 02-02 16:56 433次阅读
    在3伏电压下使用<b class='flag-5'>字符</b><b class='flag-5'>LCD</b>模块

    ccfl冷阴极萤光灯管背光灯和lcd背光灯有区别吗

    CCFL冷阴极萤光灯管背光灯和LCD背光灯是两种常见的背光技术。它们在原理、结构、特点以及应用等方面存在一定的区别。 首先,从背光原理上看,
    的头像 发表于 01-24 10:50 1608次阅读

    超低功耗液晶显示屏-无需背光阳光下可视SHARP Memory LCD选型表

    超低功耗液晶显示屏-无需背光阳光下可视SHARP Memory LCD选型表
    的头像 发表于 01-09 11:02 2748次阅读
    超低功耗液晶显示屏-无需<b class='flag-5'>背光</b>阳光下可视SHARP Memory <b class='flag-5'>LCD</b>选型表

    纵享丝滑!全志R128+LVGL驱动多尺寸RGB LCD屏幕流畅运行

    (480x480) 4寸圆屏RGB(480x480) R128适配RGB LCD配置如动图展示,其中最大的屏幕是 7寸1024x600分辨率,lvgl测试不加触摸能跑60多帧,加触摸是58帧左右
    发表于 12-22 09:52

    rgb屏和mcu屏有什么区别

    Crystal Display,简称LCD)。它是一种通过液晶材料的光学特性来控制光线透过的显示技术。RGB屏使用了一种液体晶体材料,具有透明度可调的特性,通过控制电压在液晶分子之间的排列方向来控制背光透过的光线,从而显示出图
    的头像 发表于 12-20 09:46 4634次阅读

    全志R128使用RGB LCD移植方法教程

    这里的示例以百问网的7寸(1024x600)、4寸方屏(480x480)、4寸圆屏RGB(480x480) LCD为例。 选择方案 这里建议用百问网提供
    发表于 12-18 17:03