資料介紹
描述
與 Arduino Uno 接口 I2C 16x2 LCD
在本文中,我將連接 16x2 I2C LCD 與 Arduino Uno。在我之前的文章中討論了 16x2 LCD 與 Arduino Uno 的接口。區(qū)別在于電線的數(shù)量。我們需要超過(guò) 12 根電線。但這里只使用 4 根線。如何 ?!!!!!!在我使用并行通信方法將 LCD 與 Arduino 連接之前。但現(xiàn)在我正在使用 I2C 通信。
這個(gè)怎么運(yùn)作 ?
這里我使用了我之前文章中相同的 16X2 LCD。但另外將 I2C 模塊連接到 16x2 LCD。它充當(dāng) LCD 和 MCU(此處為 Arduino)之間的中介。
在開(kāi)始之前,您必須了解 I2C 串行接口適配器(I2C 模塊)、 I2C 通信和I2C LCD 的地址
I2C 通信
![introduction-to-i2c-data-transmission-diagram-data-frame_0jawVJbo0r.png?auto=compress%2Cformat&w=740&h=555&fit=max](https://hackster.imgix.net/uploads/attachments/1113341/introduction-to-i2c-data-transmission-diagram-data-frame_0jawVJbo0r.png?auto=compress%2Cformat&w=740&h=555&fit=max)
I2C 是 Inter-IC 的縮寫(xiě)。它是一種BUS。這是飛利浦半導(dǎo)體設(shè)計(jì)的。I2C 是一種同步、多從機(jī)、多主機(jī)分組交換、單端串行總線。IE。多個(gè)芯片可以連接到同一總線。I2C 僅使用兩條雙向開(kāi)集或開(kāi)漏線,串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL),通過(guò)電阻上拉。使用的典型電壓為 +5 V 或 +3.3 V,但允許使用其他電壓的系統(tǒng)。有關(guān) I2C 協(xié)議的更多信息,請(qǐng)單擊此處。
I2C 串行接口適配器
![ic2_serial_interface_lcd_module_1_1_1_(1)_T2vWMivPjD.jpg?auto=compress%2Cformat&w=740&h=555&fit=max](https://hackster.imgix.net/uploads/attachments/1113346/ic2_serial_interface_lcd_module_1_1_1_(1)_T2vWMivPjD.jpg?auto=compress%2Cformat&w=740&h=555&fit=max)
它也被稱為 I2C 模塊。它共有 20 個(gè)公插針。16 個(gè)引腳面向后側(cè),4 個(gè)引腳面向前側(cè)。用于連接 16x2 LCD 的 16 個(gè)引腳,4 個(gè)引腳中的 2 個(gè)引腳是 SDA 和 SCL。SDA 是串行數(shù)據(jù)引腳,SCL 是時(shí)鐘引腳。其余 2 個(gè)引腳用于電源(Vcc 和接地)。I2C 模塊上有一個(gè) POT。我們可以通過(guò)旋轉(zhuǎn)這個(gè) POT 來(lái)控制 LCD 顯示屏的對(duì)比度。并且模塊上固定有一個(gè)跳線。當(dāng)我們移除跳線時(shí),LCD 顯示屏的背光將熄滅。
I2C LCD地址
在開(kāi)始之前,我們需要了解 I2C 設(shè)備的尋址。每個(gè)可以連接到 MCU 的設(shè)備都有一個(gè)地址。我們需要知道這個(gè)地址才能與該特定設(shè)備進(jìn)行通信。
您可以在 I2C 模塊上看到三個(gè)焊盤(pán)。標(biāo)記為 A0、A1 和 A2。這是地址選擇器。即,每個(gè)焊盤(pán)具有一個(gè)上部分和一個(gè)下部分。如果上藥水與下藥水之間存在連接,則稱為“已連接”,否則稱為“未連接”。當(dāng) A0、A1、A2 處于“未連接”狀態(tài)(A0 = 0、A1 = 0、A2 = 0)時(shí),地址將為 0x27。默認(rèn)情況下,A0、A1、A2 處于“未連接”狀態(tài)。有時(shí)默認(rèn)地址是0x3F。當(dāng)我們只使用一個(gè) LCD 時(shí),無(wú)需更改 I2C 模塊的地址。但是當(dāng)我們使用多個(gè) LCD 時(shí),需要更改地址。因?yàn)閮蓚€(gè)或多個(gè)不同的設(shè)備不能與同一個(gè)地址通信。
![i2c_adress_table_DZwgPNt9oR.jpg?auto=compress%2Cformat&w=740&h=555&fit=max](https://hackster.imgix.net/uploads/attachments/1113764/i2c_adress_table_DZwgPNt9oR.jpg?auto=compress%2Cformat&w=740&h=555&fit=max)
步驟1
如果您已經(jīng)知道 LCD 的地址,請(qǐng)?zhí)^(guò)此步驟 - 1 和步驟 -2
在某些情況下A0、A1、A2處于“未連接”狀態(tài),但地址不是0x27。我們無(wú)法與此地址通信。所以我們需要找到那個(gè)設(shè)備的原始地址。為此,我們需要使用“I2C 掃描儀”代碼運(yùn)行 Arduino。
I2C 掃描器代碼
I2C Scanner 代碼用于查找 I2C 設(shè)備的數(shù)量和 I2C 設(shè)備的地址。首先添加包含“Wire.h”庫(kù)的頭文件。然后在設(shè)置部分,通過(guò)“Wire.begin()”開(kāi)始“Wire”庫(kù)。然后通過(guò)“Serial.begin()”以 9600 的波特率啟動(dòng)串行監(jiān)視器。接下來(lái)在循環(huán)部分,定義兩個(gè)數(shù)據(jù)類型為“byte”的變量,分別命名為“error”和“address”。然后使用名為“Devices”的“Integer (int)”數(shù)據(jù)類型定義另一個(gè)變量。并將初始值設(shè)置為 0。接下來(lái)開(kāi)始一個(gè) for 循環(huán),最小值為 1,最大值為 127。“地址”用作循環(huán)變量。接下來(lái)使用函數(shù)“Wire.beginTransmission()”輸入要連接的地址。i2c_scanner 使用“Write. 然后僅當(dāng)?shù)刂?16 時(shí)才將特定地址打印到串行監(jiān)視器。這里我們以十六進(jìn)制打印地址。打印指令為“Serial.print(address, HEX)”。并計(jì)算設(shè)備。然后僅當(dāng)?shù)刂?16 時(shí)才將特定地址打印到串行監(jiān)視器。這里我們以十六進(jìn)制打印地址。打印指令為“Serial.print(address, HEX)”。并計(jì)算設(shè)備。完整的 I2C 掃描儀代碼如下所示
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int Devices;
Serial.println("Scanning...");
Devices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
Devices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (Devices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000);
}
將 I2C 掃描儀代碼上傳到 Arduino Uno。
第2步
如果您有 I2C LCD,請(qǐng)?zhí)^(guò)此步驟。但如果您有 16x2 LCD 和 I2C 模塊,請(qǐng)參閱將此模塊連接到 LCD 的步驟。
聯(lián)系
首先焊接 I2C 模塊。I2C 模塊上沒(méi)有用于連接 16x2 LCD 的標(biāo)簽。所以在下面給出的圖像的幫助下焊接它
![i2clcd_1oCPuO9l9f.png?auto=compress%2Cformat&w=740&h=555&fit=max](https://hackster.imgix.net/uploads/attachments/1113798/i2clcd_1oCPuO9l9f.png?auto=compress%2Cformat&w=740&h=555&fit=max)
焊接后將 I2C 模塊連接到 Arduino Uno。
Arduino Uno I2C 模塊
模擬引腳 4 - SDA
模擬引腳 5 - SCL
5V - Vcc
地 - 地
將 Arduino 連接到計(jì)算機(jī)。
接下來(lái)從 Arduino IDE 右上角的圖標(biāo)打開(kāi)串行監(jiān)視器。并將波特率設(shè)置為9600。請(qǐng)確保端口正確。然后您可以在串行監(jiān)視器中看到 LCD 的地址,如下所示
![i2c_lcd_(2)_pn4Y4HF7c5.jpg?auto=compress%2Cformat&w=740&h=555&fit=max](https://hackster.imgix.net/uploads/attachments/1113948/i2c_lcd_(2)_pn4Y4HF7c5.jpg?auto=compress%2Cformat&w=740&h=555&fit=max)
最后我們找到I2C LCD的地址。那是 0x27
步驟 - 3
接下來(lái)我將在我們的 I2C LCD 上顯示一個(gè)文本。
在此之前需要向 Arduino IDE 添加一個(gè)庫(kù)。轉(zhuǎn)到鏈接 并下載庫(kù) Arduino-LiquidCrystal-I2C-library。然后打開(kāi) Arduino IDE 并轉(zhuǎn)到Sketch>Include Library> Add.ZIP Library 。接下來(lái)選擇下載的 ZIP 文件并單擊打開(kāi)。
第4步
接下來(lái)創(chuàng)建草圖。首先,我包含標(biāo)題“Wire.h”。該庫(kù)有助于與 I2C 設(shè)備進(jìn)行通信。然后包括“LiquidCrystal_I2C.h”以更好地與顯示器通信。
#include
#include
步驟 - 5
接下來(lái)使用函數(shù)“LiquidCrystal_I2C lcd() 設(shè)置地址、列數(shù)和行數(shù)。地址為 0x27(使用 I2C Scanner Code 發(fā)現(xiàn))。列數(shù)為 16,行數(shù)為 2。之后,我們可以使用“l(fā)cd”調(diào)用顯示器。您也可以將多個(gè) I2C LCD 與 Arduino Uno 一起使用。但為每個(gè)顯示器設(shè)置不同的地址和變量。
LiquidCrystal_I2C lcd(0x27, 16, 2);
步驟 - 6
接下來(lái)對(duì)設(shè)置部分進(jìn)行編碼。首先使用函數(shù)“l(fā)cd.begin()”初始化顯示。如果你有另一個(gè)顯示器初始化它們。
lcd.begin();
步驟 - 7
接下來(lái)使用函數(shù)“l(fā)cd.backlight()”打開(kāi)背光。
lcd.backlight();
步驟 - 8
接下來(lái)使用指令“l(fā)cd.clear()”清除 lcd。然后將光標(biāo)設(shè)置到位置 (4, 0)。
lcd.clear();
lcd.setCursor(4,0);
步驟 - 9
現(xiàn)在 LCD 已準(zhǔn)備好打印。光標(biāo)位于第 4 列(從 0 開(kāi)始計(jì)數(shù))和第 0 行(從 0 開(kāi)始計(jì)數(shù))。然后通過(guò)函數(shù)“l(fā)cd.print()”打印消息“Hackster”。
lcd.print("Hackster");
然后將循環(huán)部分留空。
編程完成。將草圖上傳到 Arduino 并在 LCD 上查看消息。 完整的代碼在本文的代碼部分給出。
請(qǐng)不要復(fù)制粘貼我的代碼。嘗試逐行理解代碼并創(chuàng)建自己的草圖。
您可以在這里加入我們的電報(bào)群或搜索 INNOVATION。對(duì)硬件或編程有任何疑問(wèn),請(qǐng)隨時(shí)在我們的電報(bào)群中提問(wèn)。
跟著我,
聯(lián)系方式:akshayjoseph666@gmail.com
在評(píng)論框中分享您的經(jīng)驗(yàn)和建議。
以前的文章:
與 Arduino Uno 接口 16x2 LCD(并行接口)、非接觸式門鈴、與 Arduino Uno接口藍(lán)牙模塊 (HC-05)、自動(dòng)水龍頭、自動(dòng)洗手液、與 Arduino Uno 接口超聲波傳感器、與 Arduino Uno 和按鈕控制伺服電機(jī)、帶有 Arduino Uno 和 POT 的控制伺服電機(jī),帶有 Arduino Uno 的伺服電機(jī)接口,具有保存先前狀態(tài)的紅外控制家用電器,非接觸式洗手定時(shí)器
- 使用Arduino和I2C LCD制作帶按鈕的簡(jiǎn)單菜單
- 如何在Arduino中使用20x4 I2C字符LCD顯示器
- 帶DHT11和I2C 20x4 LCD的溫度監(jiān)控器
- 帶I2C的Arduino 26x2 LED顯示屏
- 使用Arduino的LCD I2C閃爍文本
- 用Arduino和16x2 LCD顯示器制作倒計(jì)時(shí)繼電器
- 帶16x2 LCD顯示屏和4x4鍵盤(pán)的計(jì)算器
- 使用1307 RTC、I2C LCD和Arduino Uno的數(shù)字日歷時(shí)鐘
- 在Arduino上使用16x2 LCD
- 如何連接和使用16x2 I2C LCD的教程
- 帶LCD I2C 16x2顯示屏的Arduino DTH22濕度溫度
- 如何在arduino中使用I2c LCD模塊
- I2C LCD 器件通過(guò)驅(qū)動(dòng)帶有 I2C 接口的 2 線式 16 字符 LCD 13次下載
- PSoC 4 帶有 I2C 接口的字符 LCD 11次下載
- Arduino uno驅(qū)動(dòng)I2C接口12864LCD屏幕程序及使用手冊(cè) 99次下載
- I2C地址跳變問(wèn)題的調(diào)試案例 1893次閱讀
- 什么是I2C協(xié)議? 2555次閱讀
- Linux I2C驅(qū)動(dòng)入門知識(shí)科普 1734次閱讀
- I2C內(nèi)核架構(gòu)分析 1276次閱讀
- MM32F0140 MCU關(guān)于I2C的介紹、配置及實(shí)驗(yàn) 3990次閱讀
- 什么是I2C通信協(xié)議? 7829次閱讀
- i2c總線用來(lái)做什么_i2c總線數(shù)據(jù)傳輸過(guò)程 7305次閱讀
- 微雪電子MCP23017 IO擴(kuò)展模塊16IO口 I2C接口簡(jiǎn)介 1.4w次閱讀
- 微雪電子0.96inch OLED (B) 帶SPI/I2C驅(qū)動(dòng)模塊 2846次閱讀
- 基于MCS-51單片機(jī)I2C總線接口電路的設(shè)計(jì) 3457次閱讀
- I2C總線技術(shù)在HDTV數(shù)字地面接收機(jī)中的應(yīng)用解析 1057次閱讀
- LPC2124開(kāi)發(fā)板I2C總線接口的應(yīng)用 1943次閱讀
- i2c總線相關(guān)知識(shí) 3568次閱讀
- 基于FPGA的I2C SLAVE模式總線的設(shè)計(jì)方案 1.3w次閱讀
- I2C器件接口IP核的CPLD設(shè)計(jì) 1176次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論