概述
使用新的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
+關注
關注
34文章
4427瀏覽量
167654 -
TTL
+關注
關注
7文章
503瀏覽量
70282
發布評論請先 登錄
相關推薦
評論