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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Arduino驅(qū)動LCD的DIY指南

劉剛 ? 來源:q153605268 ? 作者:q153605268 ? 2023-02-24 09:51 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

利用Arduino驅(qū)動LCD顯示屏

目的

教程描述了如何使用Arduino驅(qū)動LCD顯示屏。

概述

Arduino開發(fā)板屬于非常流行的單片機(jī)開發(fā)板,該板的一個常用功能就是用驅(qū)動LCD屏,通常用來將信息傳遞給用戶。在本教程中,我將教您如何使用Arduino單片機(jī)開發(fā)板和Adafruit I2C/SPI LCD驅(qū)動模塊來驅(qū)動LCD。

設(shè)備

Arduino Uno R3

I2C/SPI LCD 驅(qū)動模塊

RGB LCD 20×4

9V, 1A 電源適配器

跳線

USB 電纜 (A-to-B)

面包板

目錄

電路接線

編寫代碼

配置

設(shè)置

循環(huán)

上傳并運(yùn)行程序

程序

1. 電路接線

LCD通常需要連接很多線才能工作。隨時管理所有這些連接可能既繁瑣又煩人。幸運(yùn)的是,Adafruit制造了一款可兼容大多數(shù)LCD的I2C/SPI LCD驅(qū)動模塊。該驅(qū)動模塊可方便地將您的單片機(jī)和LCD之間的連接數(shù)量減少到4個。

我總是喜歡用Fritzing繪制接線圖(圖1:Arduino-LCD原理圖)。Fritzing是一款開源原理圖設(shè)計(jì)和PCB布線軟件。Fritzing的下載地址(可選)如下:https://fritzing.org/home/

poYBAGPzF8yALGZ7AAIjO6m5-Us564.png

圖1:Arduino-LCD原理圖

LCD上的引腳1連至LCD驅(qū)動模塊上的引腳1。其余引腳按順序連接。這可以在面包板上完成,也可以將驅(qū)動模塊焊接到LCD上,正如我所做的這樣。

I2C和SPI是兩種非常流行的串行接口總線。本教程將介紹使用I2C連接Arduino和LCD驅(qū)動模塊,但是LCD驅(qū)動模塊也可以連接SPI接口。您可以通過跳接驅(qū)動模塊上的焊接跳線(圖2:LCD驅(qū)動模塊上的焊接跳線)來設(shè)置I2C地址(A0、A1、A2)或使能SPI(SPI使能)。本教程中使用I2C的唯一電路是LCD驅(qū)動模塊,所以我們不需要更改當(dāng)前配置。這意味著LCD驅(qū)動模塊的地址為0(0x00)。

poYBAGPzF82AaVElAABvsLGz0-w207.jpg

圖2:LCD驅(qū)動模塊上的焊接跳線

要將LCD驅(qū)動模塊連接到Arduino,應(yīng)將5V和Arduino上的接地引腳連至LCD驅(qū)動模塊上的5V和接地引腳。這會為LCD和LCD驅(qū)動模塊提供電源。注:LCD需要至少5V才能正常工作。接下來的兩個連接是串行數(shù)據(jù)和串行時鐘。串行時鐘連接(橙色線)位于Arduino的SCL引腳和驅(qū)動模塊的CLK引腳之間。串行數(shù)據(jù)連接(藍(lán)線)位于Arduino的SDA引腳和驅(qū)動模塊的DAT引腳之間。

pYYBAGPzF9CAcJZpAADdLtgxF60219.jpg

圖3:LCD驅(qū)動模塊引腳分配

2. 編寫代碼

2.1 配置

代碼的第一部分是包含Adafruit_LiquidCrystal頭文件。然后,您就可以使用該庫中的函數(shù)。由于Arduino IDE會自動下載Adafruit_LiquidCrystal庫,本教程沒有包含Arduino庫的下載步驟。

接下來,我們將LCD驅(qū)動模塊地址設(shè)為0(請記住,我們沒有跨接任何焊接跳線)。

最后,我創(chuàng)建了一個名為timer的全局變量,稍后在代碼的循環(huán)部分中使用。

2.2 設(shè)置

LCD在寫入之前需要進(jìn)行初始化。這可以通過“begin”函數(shù)實(shí)現(xiàn),該函數(shù)會告訴LCD驅(qū)動模塊顯示器上有多少個字符。由于我使用的LCD具有背光功能,因此我也打開背光。

現(xiàn)在LCD已經(jīng)初始化完畢,我寫了“Test Code”來檢查一切是否正常。該代碼將光標(biāo)設(shè)定為起始位置,將“Test”寫入顯示屏,等待2秒鐘,然后清除顯示。

poYBAGPzF9KAMhmVAABaICY60sY419.jpg

圖4:設(shè)置代碼

2.3 循環(huán)

代碼的循環(huán)部分利用millis()函數(shù)并除以1000來計(jì)算程序的運(yùn)行時間。然后代碼使用print和setCursor函數(shù)在LCD上顯示程序時間。隨后,循環(huán)代碼等待一秒鐘,然后重復(fù)。

pYYBAGPzF9OAQ7vlAABuB2wzces316.jpg

圖5:循環(huán)代碼

3. 上傳并運(yùn)行程序

將代碼上傳到Arduino。確保Arduino已經(jīng)連接9V電源適配器,因?yàn)閁SB電源不足以為Arduino和LCD顯示器同時供電。程序開始執(zhí)行后,設(shè)置部分運(yùn)行完成后,您應(yīng)該在LCD顯示屏上看到“Test”字樣(圖6:LCD顯示“Test”)。循環(huán)部分開始執(zhí)行后,您將會看到程序的運(yùn)行時間,而且每秒更新一次(圖7:LCD顯示程序運(yùn)行時間 – 8(s))。恭喜!您現(xiàn)在擁有一款適用于Arduino板的簡單易用LCD顯示屏,并可將其用作未來項(xiàng)目的顯示屏。提示:I2C是一個慢速總線,如果您持續(xù)更新液晶顯示器,那么會影響單片機(jī)執(zhí)行其他任務(wù)的時間。

pYYBAGPzF9eASM_zAAeuUA9GN6Y123.jpg

圖6:LCD顯示 “Test”

poYBAGPzF9qARaf2AAe2zovQ7LE894.jpg

圖7:LCD顯示程序運(yùn)行時間 – 8(s)

pYYBAGPzF96AURpeAAdsf7A4D7Q402.jpg

圖8:LCD顯示程序運(yùn)行時間 – 28(s)

附件:Arduino_LED代碼

/*       Project: Arduino LCD
 *       Written by: Chris Marella                            
 *       Date: January 11, 2018                                                                    
 */                                                         

// include the Adafruit LCD Library:
#include 

// Connect the the LCD Backpack via I2C, default address #0 (A0-A2 not jumpered)
Adafruit_LiquidCrystal lcd(0);

//Global Variables
int timer;    //create a global variable for a timer

void setup() {

  //LCD Configuration
  lcd.begin(19,3);        //The begin function tells the LCD driver the size of your LCD screen (columns x rows)
  lcd.setBacklight(HIGH); //setBacklight controls the LCD backlight

  //Test Code
  lcd.setCursor(0,0);     //setCursor function sets the position of the character cursor (column x row)
  lcd.print("Test");      //Prints "Test" across the LCD
  delay(2000);            //Wait for 2 seconds
  lcd.clear();            //clear function clears the LCD screen

}

void loop() {
  timer = millis()/1000;  //set timer variable to how long program has been running in seconds

  lcd.setCursor(0,0);     //set LCD cursor to 0,0
  lcd.print("Time:");     //print time on LCD row 1
  lcd.setCursor(0,1);     //move LCD cursor to row 2
  lcd.print(timer);       //print the current program run time
  lcd.setCursor(0,2);     //move LCD cursor to row 3
  lcd.print("(s)");       //print "(s)" for seconds
  delay(1000);            //wait 1 second to update
}

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628319
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4363

    瀏覽量

    166184
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4399

    瀏覽量

    73727
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185917
收藏 人收藏

    評論

    相關(guān)推薦

    點(diǎn)陣LCD驅(qū)動編寫指南

    點(diǎn)陣LCD驅(qū)動編寫指南:1. 一些需在提示您的.41.1. 本書更適合什么樣的LCD模塊? .41.2. 這里的LCD
    發(fā)表于 10-04 08:52 ?229次下載

    LCD液晶驅(qū)動PCF8562級聯(lián)應(yīng)用指南

    LCD液晶驅(qū)動PCF8562級聯(lián)應(yīng)用指南
    發(fā)表于 07-23 16:18 ?17次下載

    DIY Arduino巨型Pcb

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino巨型Pcb.zip》資料免費(fèi)下載
    發(fā)表于 07-04 11:54 ?11次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>巨型Pcb

    DIY自己的arduino項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《DIY自己的arduino項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-27 10:17 ?2次下載
    <b class='flag-5'>DIY</b>自己的<b class='flag-5'>arduino</b>項(xiàng)目

    DIY簡單的Arduino鍵盤

    電子發(fā)燒友網(wǎng)站提供《DIY簡單的Arduino鍵盤.zip》資料免費(fèi)下載
    發(fā)表于 08-10 11:11 ?4次下載
    <b class='flag-5'>DIY</b>簡單的<b class='flag-5'>Arduino</b>鍵盤

    DIY ARDUINO UNO板

    電子發(fā)燒友網(wǎng)站提供《DIY ARDUINO UNO板.zip》資料免費(fèi)下載
    發(fā)表于 08-19 09:28 ?7次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>ARDUINO</b> UNO板

    Diy Lillypad Arduino

    電子發(fā)燒友網(wǎng)站提供《Diy Lillypad Arduino.zip》資料免費(fèi)下載
    發(fā)表于 08-22 16:30 ?25次下載
    <b class='flag-5'>Diy</b> Lillypad <b class='flag-5'>Arduino</b>

    DIY Arduino Nano

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino Nano.zip》資料免費(fèi)下載
    發(fā)表于 08-22 16:29 ?68次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b> Nano

    DIY Arduino樂器

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino樂器.zip》資料免費(fèi)下載
    發(fā)表于 11-02 10:44 ?1次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>樂器

    DIY Arduino角燈

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino角燈.zip》資料免費(fèi)下載
    發(fā)表于 11-02 10:46 ?1次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>角燈

    DIY Arduino示波器

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino示波器.zip》資料免費(fèi)下載
    發(fā)表于 11-11 11:06 ?5次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>示波器

    基于Arduino平臺的DIY示波器

    電子發(fā)燒友網(wǎng)站提供《基于Arduino平臺的DIY示波器.zip》資料免費(fèi)下載
    發(fā)表于 11-30 14:23 ?6次下載
    基于<b class='flag-5'>Arduino</b>平臺的<b class='flag-5'>DIY</b>示波器

    Arduino DIY鬧鐘

    電子發(fā)燒友網(wǎng)站提供《Arduino DIY鬧鐘.zip》資料免費(fèi)下載
    發(fā)表于 12-01 09:23 ?0次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>DIY</b>鬧鐘

    DIY Arduino電源擴(kuò)展板

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino電源擴(kuò)展板.zip》資料免費(fèi)下載
    發(fā)表于 12-15 11:22 ?0次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>電源擴(kuò)展板

    DIY Arduino電子沙漏

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino電子沙漏.zip》資料免費(fèi)下載
    發(fā)表于 02-06 11:09 ?10次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>電子沙漏