電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>帶Arduino Uno的I2C 16x2 LCD接口(僅4線)

帶Arduino Uno的I2C 16x2 LCD接口(僅4線)

2022-10-18 | zip | 0.97 MB | 次下載 | 免費

資料介紹

描述

Arduino Uno 接口 I2C 16x2 LCD

在本文中,我將連接 16x2 I2C LCD 與 Arduino Uno。在我之前的文章中討論了 16x2 LCD 與 Arduino Uno 的接口。區(qū)別在于電線的數(shù)量。我們需要超過 12 根電線。但這里只使用 4 根線。如何 ?!?。。。?!在我使用并行通信方法將 LCD 與 Arduino 連接之前。但現(xiàn)在我正在使用 I2C 通信。

這個怎么運作 ?

這里我使用了我之前文章中相同的 16X2 LCD。但另外將 I2C 模塊連接到 16x2 LCD。它充當 LCD 和 MCU(此處為 Arduino)之間的中介。

在開始之前,您必須了解 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
I2C 通信
?

I2C 是 Inter-IC 的縮寫。它是一種BUS。這是飛利浦半導體設計的。I2C 是一種同步、多從機、多主機分組交換、單端串行總線。IE。多個芯片可以連接到同一總線。I2C 僅使用兩條雙向開集或開漏線,串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL),通過電阻上拉。使用的典型電壓為 +5 V 或 +3.3 V,但允許使用其他電壓的系統(tǒng)。有關 I2C 協(xié)議的更多信息,請單擊此處。

I2C 串行接口適配器

ic2_serial_interface_lcd_module_1_1_1_(1)_T2vWMivPjD.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
I2C 串行接口適配器
?

它也被稱為 I2C 模塊。它共有 20 個公插針。16 個引腳面向后側,4 個引腳面向前側。用于連接 16x2 LCD 的 16 個引腳,4 個引腳中的 2 個引腳是 SDA 和 SCL。SDA 是串行數(shù)據(jù)引腳,SCL 是時鐘引腳。其余 2 個引腳用于電源(Vcc 和接地)。I2C 模塊上有一個 POT。我們可以通過旋轉這個 POT 來控制 LCD 顯示屏的對比度。并且模塊上固定有一個跳線。當我們移除跳線時,LCD 顯示屏的背光將熄滅。

I2C LCD地址

在開始之前,我們需要了解 I2C 設備的尋址。每個可以連接到 MCU 的設備都有一個地址。我們需要知道這個地址才能與該特定設備進行通信。

您可以在 I2C 模塊上看到三個焊盤。標記為 A0、A1 和 A2。這是地址選擇器。即,每個焊盤具有一個上部分和一個下部分。如果上藥水與下藥水之間存在連接,則稱為“已連接”,否則稱為“未連接”。當 A0、A1、A2 處于“未連接”狀態(tài)(A0 = 0、A1 = 0、A2 = 0)時,地址將為 0x27。默認情況下,A0、A1、A2 處于“未連接”狀態(tài)。有時默認地址是0x3F。當我們只使用一個 LCD 時,無需更改 I2C 模塊的地址。但是當我們使用多個 LCD 時,需要更改地址。因為兩個或多個不同的設備不能與同一個地址通信。

i2c_adress_table_DZwgPNt9oR.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?

步驟1

如果您已經(jīng)知道 LCD 的地址,請?zhí)^此步驟 - 1 和步驟 -2

在某些情況下A0、A1、A2處于“未連接”狀態(tài),但地址不是0x27。我們無法與此地址通信。所以我們需要找到那個設備的原始地址。為此,我們需要使用“I2C 掃描儀”代碼運行 Arduino。

I2C 掃描器代碼

I2C Scanner 代碼用于查找 I2C 設備的數(shù)量和 I2C 設備的地址。首先添加包含“Wire.h”庫的頭文件。然后在設置部分,通過“Wire.begin()”開始“Wire”庫。然后通過“Serial.begin()”以 9600 的波特率啟動串行監(jiān)視器。接下來在循環(huán)部分,定義兩個數(shù)據(jù)類型為“byte”的變量,分別命名為“error”和“address”。然后使用名為“Devices”的“Integer (int)”數(shù)據(jù)類型定義另一個變量。并將初始值設置為 0。接下來開始一個 for 循環(huán),最小值為 1,最大值為 127?!暗刂贰庇米餮h(huán)變量。接下來使用函數(shù)“Wire.beginTransmission()”輸入要連接的地址。i2c_scanner 使用“Write. 然后僅當?shù)刂?16 時才將特定地址打印到串行監(jiān)視器。這里我們以十六進制打印地址。打印指令為“Serial.print(address, HEX)”。并計算設備。然后僅當?shù)刂?16 時才將特定地址打印到串行監(jiān)視器。這里我們以十六進制打印地址。打印指令為“Serial.print(address, HEX)”。并計算設備。完整的 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,請?zhí)^此步驟。但如果您有 16x2 LCD 和 I2C 模塊,請參閱將此模塊連接到 LCD 的步驟。

聯(lián)系

首先焊接 I2C 模塊。I2C 模塊上沒有用于連接 16x2 LCD 的標簽。所以在下面給出的圖像的幫助下焊接它

i2clcd_1oCPuO9l9f.png?auto=compress%2Cformat&w=740&h=555&fit=max
16x2 LCD 上的 I2C 模塊
?

焊接后將 I2C 模塊連接到 Arduino Uno。

Arduino Uno I2C 模塊

模擬引腳 4 - SDA

模擬引腳 5 - SCL

5V - Vcc

地 - 地

將 Arduino 連接到計算機。

接下來從 Arduino IDE 右上角的圖標打開串行監(jiān)視器。并將波特率設置為9600。請確保端口正確。然后您可以在串行監(jiān)視器中看到 LCD 的地址,如下所示

i2c_lcd_(2)_pn4Y4HF7c5.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?
最后我們找到I2C LCD的地址。那是 0x27

步驟 - 3

接下來我將在我們的 I2C LCD 上顯示一個文本。

在此之前需要向 Arduino IDE 添加一個庫。轉到鏈接下載庫 Arduino-LiquidCrystal-I2C-library。然后打開 Arduino IDE 并轉到Sketch>Include Library> Add.ZIP Library 。接下來選擇下載的 ZIP 文件并單擊打開。

第4步

接下來創(chuàng)建草圖。首先,我包含標題“Wire.h”。該庫有助于與 I2C 設備進行通信。然后包括“LiquidCrystal_I2C.h”以更好地與顯示器通信。

#include  
#include 

步驟 - 5

接下來使用函數(shù)“LiquidCrystal_I2C lcd() 設置地址、列數(shù)和行數(shù)。地址為 0x27(使用 I2C Scanner Code 發(fā)現(xiàn))。列數(shù)為 16,行數(shù)為 2。之后,我們可以使用“l(fā)cd”調用顯示器。您也可以將多個 I2C LCD 與 Arduino Uno 一起使用。但為每個顯示器設置不同的地址和變量。

LiquidCrystal_I2C lcd(0x27, 16, 2);

步驟 - 6

接下來對設置部分進行編碼。首先使用函數(shù)“l(fā)cd.begin()”初始化顯示。如果你有另一個顯示器初始化它們。

lcd.begin();

步驟 - 7

接下來使用函數(shù)“l(fā)cd.backlight()”打開背光。

lcd.backlight();

步驟 - 8

接下來使用指令“l(fā)cd.clear()”清除 lcd。然后將光標設置到位置 (4, 0)。

lcd.clear();
lcd.setCursor(4,0);

步驟 - 9

現(xiàn)在 LCD 已準備好打印。光標位于第 4 列(從 0 開始計數(shù))和第 0 行(從 0 開始計數(shù))。然后通過函數(shù)“l(fā)cd.print()”打印消息“Hackster”。

lcd.print("Hackster");

然后將循環(huán)部分留空。

編程完成。將草圖上傳到 Arduino 并在 LCD 上查看消息。 完整的代碼在本文的代碼部分給出

請不要復制粘貼我的代碼。嘗試逐行理解代碼并創(chuàng)建自己的草圖。

您可以在這里加入我們的電報群或搜索 INNOVATION。硬件或編程有任何疑問,請隨時在我們的電報群中提問。

跟著我,

Instagram :五伏特玩家

聯(lián)系方式:akshayjoseph666@gmail.com

在評論框中分享您的經(jīng)驗和建議。

以前的文章:

與 Arduino Uno 接口 16x2 LCD(并行接口)、非接觸式門鈴、與 Arduino Uno接口藍牙模塊 (HC-05)、自動水龍頭、自動洗手液、與 Arduino Uno 接口超聲波傳感器、與 Arduino Uno 和按鈕控制伺服電機、帶有 Arduino Uno 和 POT 的控制伺服電機,帶有 Arduino Uno 的伺服電機接口,具有保存先前狀態(tài)的紅外控制家用電器,非接觸式洗手定時器


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費