将16x2 LCD与Arduino连接方法
原文地址:https://circuitdigest.com/microcontroller-projects/arduino-lcd-interfacing-tutorial
將16x2 LCD與Arduino連接方法
ARDUINO的
經過**迪利普·拉賈(Dilip Raja)** 2015年6月4日19
為了在人的世界和機器的世界之間建立良好的溝通,顯示單元扮演著重要的角色。因此,它們是嵌入式系統的重要組成部分。顯示單元-不論大小,都遵循相同的基本原理。除了圖形顯示和3D支付等復雜的顯示單元外,還必須知道如何使用16x1和16x2單元之類的簡單顯示。16x1顯示單元將包含16個字符,并在一行中。的16×2 LCD將在總16英寸1 32個字符第一 線和另一條16在2次 線。在此必須理解,每個字符中都有5x10 = 50像素,因此要顯示一個字符,所有50像素必須一起工作。但是我們不必擔心,因為人機界面中還有另一個控制器(HD44780)負責控制像素。(您可以在LCD單元中看到它,它是背面的黑眼圈)。
在本教程中,我們將使用ARDUINO UNO連接16x2 LCD。與普通的開發板不同,將LCD連接到ARDUINO的過程非常簡單。在這里,我們不必擔心數據發送和接收。我們只需要定義引腳號,它就可以在LCD上顯示數據了。
所需組件
硬件: ARDUINO UNO,電源(5v),JHD_162ALCD(16x2LCD),100uF電容器。
軟體: Arduino IDE(Arduino nightly)。
電路圖和說明
16x2 LCD顯示模塊
帶有HD44780控制器的16x2 LCD顯示模塊
之所以命名為**16×2 LCD,**是因為;它有16列和2行。有很多可用的組合,例如8×1、8×2、10×2、16×1等。但是最常用的是16 * 2 LCD,因此我們在這里使用它。
上面提到的所有LCD顯示屏都將具有16針,并且編程方法也相同,因此選擇權留給您。以下是16x2 LCD模塊的引腳排列和引腳描述:
| 1 | 引腳1 | GND | 電源極引腳 | 這是LCD的接地引腳 | 連接到MCU /電源的接地 |
| 2 | 引腳2 | VCC | 電源極引腳 | 這是LCD的電源電壓引腳 | 連接到電源的電源引腳 |
| 3 | 引腳3 | V0 / VEE | 控制引腳 | 調整液晶顯示屏的對比度。 | 連接到可以提供0-5V電源的可變POT |
| 4 | 引腳4 | 寄存器選擇 | 控制引腳 | 在命令/數據寄存器之間切換 | 連接到MCU引腳并獲得0或1。0- > Command Mode 1-> Data Mode |
| 5 | 引腳5 | 讀/寫 | 控制引腳 | 在讀/寫操作之間切換LCD | 連接到MCU引腳并獲得0或1。0- >寫入操作 1->讀取操作 |
| 6 | 引腳6 | 使能 | 控制引腳 | 必須保持高電平才能執行讀/寫操作 | 連接到MCU并始終保持高電平。 |
| 7 | 引腳7-14 | 數據位(0-7) | 數據/命令引腳 | 用于將命令或數據發送到LCD的引腳。 | 在4線模式下, 只有4個引腳(0-3)連接到MCU。在8線模式下,所有8個引腳(0-7)連接到MCU。 |
| 8 | 引腳15 | LED正極 | LED接腳 | 正常的LED狀操作可照亮LCD | 連接到+ 5V |
| 9 | 引腳16 | LED負極 | LED接腳 | 正常的LED像操作一樣點亮連接到GND的LCD。 | 接地 |
如果您不了解所有引腳的功能也可以,我將在下面詳細解釋。現在,讓我們回頭看一下LCD:
好吧,這兩個黑色圓圈像是LCD背面的東西嗎?
這些黑圈由接口IC及其相關組件組成,可幫助我們將此LCD與MCU配合使用。因為我們的LCD是16 * 2點矩陣LCD,所以它將總共有(16 * 2 = 32)32個字符,每個字符將由5 * 8像素點組成。下圖顯示了一個啟用了所有像素的單個字符。
所以現在,我們知道每個字符都有(5 * 8 = 40)40個像素,對于32個字符,我們將有(32 * 40)1280個像素。此外,還應指示LCD有關像素的位置。
在MCU的幫助下處理所有事情將是一項繁重的任務,因此使用了HD44780之類的接口IC,該接口IC安裝在LCD模塊本身上。該IC的功能是從MCU獲取命令和數據,并對它們進行處理,以在我們的LCD屏幕上顯示有意義的信息。
讓我們討論必須由控制引腳控制的LCD中可用的不同類型的模式和選項。
*LCD的4位和8位模式*
LCD可以在兩種不同的模式下工作,即4位模式和8位模式。在**4位模式下,**我們先將數據半字節發送,首先是高半字節,然后是低半字節。對于那些不知道什么是半字節的人:半字節是一組四位,因此字節的低四位(D0-D3)形成低四位,而高四位(D4-D7)一個字節的形式從較高的半字節開始。這使我們能夠發送8位數據。
而**在8位模式下,**由于我們使用了所有8條數據線,因此可以一鍵直接發送8位數據。
現在您一定已經猜到了,是的,8位模式比4位模式更快,更完美。但是主要的缺點是它需要將8條數據線連接到微控制器。這將使我們用完MCU的I / O引腳,因此廣泛使用4位模式。沒有控制引腳用于設置這些模式。這只是編程方式的變化。
*LCD的讀寫模式:*
如前所述,LCD本身包含一個接口IC。MCU可以對該接口IC進行讀取或寫入。在大多數情況下,我們只會寫IC,因為讀取會使它變得更復雜,而且這種情況很少見。如果需要,可以讀取諸如光標位置,狀態完成中斷等信息,但這不在本教程的討論范圍之內。
大多數LCD中使用的接口IC是**HD44780U,**為了對LCD進行編程,我們應該學習IC的完整數據表。該數據表是這里給出。
*LCD命令:*
LCD中有一些預設命令指令,我們需要通過一些微控制器將這些指令發送到LCD。以下是一些重要的命令說明:
| 0F | LCD亮,光標亮 |
| 01 | 清除顯示畫面 |
| 02 | 回家 |
| 04 | 減少光標(向左移動光標) |
| 06 | 增量光標(向右移動光標) |
| 05 | 右移顯示 |
| 07 | 左移顯示 |
| 0E | 顯示開,光標閃爍 |
| 80 | 強制光標到第一行的開頭 |
| C0 | 強制光標移至第二行的開頭 |
| 38 | 2行和5×7矩陣 |
| 83 | 光標線1位置3 |
| 3C | 激活第二行 |
| 08 | 顯示關閉,光標關閉 |
| C1 | 跳至第二行,位置1 |
| 0C | 顯示開啟,光標關閉 |
| C1 | 跳至第二行,位置1 |
| C2 | 跳至第二行,位置2 |
在16x2 LCD中,如果有背光,則全部有16個引腳,如果沒有背光,則有14個引腳。一個人可以給背光燈插針供電或懸空。現在,在14個引腳中,有8個數據引腳(7-14或D0-D7),2個電源引腳(1&2或VSS&VDD或GND&+ 5v),第三個用于對比度控制的引腳(VEE控制字符的粗細)如圖所示)和3個控制引腳(RS&RW&E)。
在電路中,可以觀察到我只接了兩個控制引腳,這給了靈活性。對比度位和READ / WRITE并不經常使用,因此它們可以接地。這使LCD處于最高對比度和讀取模式。我們只需要控制ENABLE和RS引腳即可相應地發送字符和數據。
LCD的連接如下所示:
-
PIN1或VSS接地
-
PIN2或VDD或VCC至+ 5v電源
-
PIN3或VEE接地(為初學者提供最大對比度)
-
PIN4或RS(寄存器選擇)到ARDUINO UNO的PIN0
-
PIN5或RW(讀/寫)接地(將LCD置于讀模式可簡化用戶的通信)
-
PIN6或E(啟用)到ARDUINO UNO的PIN1
-
PIN11或D4至ARDUINO UNO的PIN8
-
PIN12或D5至ARDUINO UNO的PIN9
-
PIN13或D6至ARDUINO UNO的PIN10
-
PIN14或D7至ARDUINO UNO的PIN11
ARDUINO IDE允許用戶以4位模式使用LCD。這種通信類型使用戶能夠減少ARDUINO上的引腳使用,這與其他ARDUINO無需單獨編程以在4 it模式下使用有關,因為默認情況下ARDUINO設置為以4位模式進行通信。在電路中,您可以看到我們使用了4位通信(D4-D7)。
因此,僅從上表的觀察,我們就將LCD的6個引腳連接到控制器,其中4個引腳是數據引腳,另外2個是控制引腳。
上圖顯示了連接到ARDUINO UNO的16x2 LCD的電路圖。
原理
要將LCD連接到ARDUINO UNO,我們需要了解一些事情。
#include <LiquidCrystal.h>lcd.begin(16,2); LiquidCrystal LCD(0,1,8,9,10,11); lcd.print(“ hello,world!”);如上表所示,我們只需要查看這四行即可在ARDUINO和LCD之間建立通信。
首先,我們需要啟用頭文件(’#include <LiquidCrystal.h>’),該頭文件中寫入了指令,這使用戶能夠以4位模式將LCD連接到UNO,而不會產生任何絨毛。使用此頭文件,我們不必將數據一點一點地發送到LCD,這一切都將得到解決,我們也不必編寫用于向LCD發送數據或命令的程序。
其次,我們需要告訴主板我們在這里使用哪種類型的LCD。由于我們有許多不同類型的LCD(例如20x4、16x2、16x1等)。在這里,我們將16x2 LCD連接到UNO,因此得到“ lcd.begin(16,2);”。對于16x1,我們得到’lcd.begin(16,1);’。
在此說明中,我們將告訴主板我們引腳的連接位置。連接的引腳需要按“ RS,En,D4,D5,D6,D7”的順序表示。這些引腳應正確表示。由于我們已將RS連接到PIN0等,如電路圖所示,我們將板上的引腳號表示為LiquidCrystal lcd(0,1,8,9,10,11);。需要在LCD中顯示的數據應寫為lcd.print(“ hello,world!”);。使用此命令,LCD會顯示“ hello,world!”。
如您所見,我們不必擔心任何其他事情,我們只需要初始化即可,UNO將準備顯示數據。我們不必在此處編寫程序循環來通過BYTE發送數據BYTE。
LCD和UNO之間的通信方式在下面給出的C代碼中逐步說明:
#include <LiquidCrystal.h>// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(0, 1, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PINvoid setup() {// set up the LCD's number of columns and rows: lcd.begin(16, 2); }void loop() { // set the cursor to column 0, line 1 lcd.print(" CIRCUIT DIGEST");//print name lcd.setCursor(0, 1); // set the cursor to column 0, line 2 lcd.print("www.circuitdigest.com");//print name delay(750);//delay of 0.75sec lcd.scrollDisplayLeft();//shifting data on LCD lcd.setCursor(0, 0);// set the cursor to column 0, line1 }總結
以上是生活随笔為你收集整理的将16x2 LCD与Arduino连接方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CS224n课程Assignment3参
- 下一篇: 考研复试-英语问答