使用Arduino驅動LCD的DIY指南

利用Arduino驅動LCD顯示幕

目的

本教程描述了如何使用Arduino驅動LCD顯示幕。

概述

Arduino研發板屬於非常流行的單片機研發板,該板的一個常用功能就是用驅動LCD屏,通常用來將資訊傳遞給使用者。在本教程中,我將教您如何使用Arduino單片機研發板和Adafruit I2C/SPI LCD驅動模組來驅動LCD。

裝置

  1. Arduino Uno R3https://www.adafruit.com/product/50
  2. I2C/SPI LCD 驅動模組https://www.adafruit.com/product/292
  3. RGB LCD 20×4https://www.adafruit.com/product/499
  4. 9V, 1A 電源合適器https://www.adafruit.com/product/63
  5. 跳線https://www.amazon.com/GenBasic-Female-Solderless-Breadboard-Prototyping/dp/B01MS9GY7W/ref=sr_1_1_sspa?s=electronics&ie=UTF8&qid=1515705634&sr=1-1-spons&keywords=jumper+wires&psc=1
  6. USB 電纜(A-to-B)https://www.amazon.com/AmazonBasics-USB-2-0-Cable-Male/dp/B00NH11KIK
  7. 麵包板 https://www.amazon.com/Elegoo-Breadboard-Solderless-Distribution-Connecting/dp/B01EV6LJ7G/ref=sr_1_1_sspa?s=electronics&ie=UTF8&qid=1515705714&sr=1-1-spons&keywords=breadboard&psc=1

目錄

  1. 電路接線
  2. 編寫代碼
    1. 配置
    2. 設定
    3. 迴圈
  3. 上傳並運行程式

程式

1. 電路接線

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

我總是喜歡用Fritzing繪製接線圖(圖1:Arduino-LCD原理圖)。Fritzing是一款開源原理圖設計和PCB佈線軟體。Fritzing的下載位址(可選)如下:http://fritzing.org/home/

圖1:Arduino-LCD原理圖

LCD上的引腳1連至LCD驅動模組上的引腳1。其餘引腳按順序連接。這可以在麵包板上完成,也可以將驅動模組焊接到LCD上,正如我所做的這樣。

I2C和SPI是兩種非常流行的序列介面匯流排。本教程將介紹使用I2C連接Arduino和LCD驅動模組,但是LCD驅動模組也可以連接SPI介面。您可以通過跳接驅動模組上的焊接跳線(圖2:LCD驅動模組上的焊接跳線)來設定I2C位址(A0、A1、A2)或使能SPI(SPI使能)。本教程中使用I2C的唯一電路是LCD驅動模組,所以我們不需要更改當前配置。這意味著LCD驅動模組的位址為0(0x00)。

圖2:LCD驅動模組上的焊接跳線

要將LCD驅動模組連接到Arduino,應將5V和Arduino上的接地引腳連至LCD驅動模組上的5V和接地引腳。這會為LCD和LCD驅動模組提供電源。注:LCD需要至少5V才能正常工作。接下來的兩個連接是序列資料和序列時脈。序列時脈連接(橙色線)位於Arduino的SCL引腳和驅動模組的CLK引腳之間。序列資料連接(藍線)位於Arduino的SDA引腳和驅動模組的DAT引腳之間。

圖3:LCD驅動模組引腳分配

2. 編寫代碼

2.1 配置

代碼的第一部分是包含Adafruit_LiquidCrystal標頭檔。然後,您就可以使用該庫中的函數。由於Arduino IDE會自動下載Adafruit_LiquidCrystal庫,本教程沒有包含Arduino庫的下載步驟。

接下來,我們將LCD驅動模組位址設為0(請記住,我們沒有跨接任何焊接跳線)。

最後,我創建了一個名為timer的全域變數,稍後在代碼的迴圈部分中使用。

2.2 設定

LCD在寫入之前需要進行初始化。這可以通過“begin”函數實現,該函數會告訴LCD驅動模組顯示器上有多少個字元。由於我使用的LCD具有背光功能,因此我也打開背光。

現在LCD已經初始化完畢,我寫了“Test Code”來檢查一切是否正常。該代碼將游標設定為起始位置,將“Test”寫入顯示幕,等待2秒鐘,然後清除顯示。

圖4:設定代碼

2.3 迴圈

代碼的迴圈部分利用millis()函數並除以1000來計算程式的執行時間。然後代碼使用print和setCursor函數在LCD上顯示程式時間。隨後,迴圈代碼等待一秒鐘,然後重複。

圖5:迴圈代碼

3. 上傳並運行程式

將代碼上傳到Arduino。確保Arduino已經連接9V電源合適器,因為USB電源不足以為Arduino和LCD顯示器同時供電。程式開始執行後,設定部分運行完成後,您應該在LCD顯示幕上看到“Test”字樣(圖6:LCD顯示“Test”)。迴圈部分開始執行後,您將會看到程式的執行時間,而且每秒更新一次(圖7:LCD顯示程式執行時間 – 8(s))。恭喜!您現在擁有一款適用於Arduino板的簡單易用LCD顯示幕,並可將其用作未來項目的顯示幕。提示:I2C是一個慢速匯流排,如果您持續更新液晶顯示器,那麼會影響單片機執行其他任務的時間。

圖6:LCD顯示 “Test”

圖7:LCD顯示程式執行時間 – 8(s)

圖8:LCD顯示程式執行時間 – 28(s)

附件: Arduino_LED 代碼