這篇文章來(lái)源于DevicePlus.com英語(yǔ)網(wǎng)站的翻譯稿。
利用Arduino驅(qū)動(dòng)LCD顯示屏
目的
本教程描述了如何使用Arduino驅(qū)動(dòng)LCD顯示屏。
概述
Arduino開(kāi)發(fā)板屬于非常流行的單片機(jī)開(kāi)發(fā)板,該板的一個(gè)常用功能就是用驅(qū)動(dòng)LCD屏,通常用來(lái)將信息傳遞給用戶。在本教程中,我將教您如何使用Arduino單片機(jī)開(kāi)發(fā)板和Adafruit I2C/SPI LCD驅(qū)動(dòng)模塊來(lái)驅(qū)動(dòng)LCD。
設(shè)備
Arduino Uno R3
I2C/SPI LCD 驅(qū)動(dòng)模塊
RGB LCD 20×4
9V, 1A 電源適配器
跳線
USB 電纜 (A-to-B)
面包板
目錄
電路接線
編寫(xiě)代碼
配置
設(shè)置
循環(huán)
上傳并運(yùn)行程序
程序
1. 電路接線
LCD通常需要連接很多線才能工作。隨時(shí)管理所有這些連接可能既繁瑣又煩人。幸運(yùn)的是,Adafruit制造了一款可兼容大多數(shù)LCD的I2C/SPI LCD驅(qū)動(dòng)模塊。該驅(qū)動(dòng)模塊可方便地將您的單片機(jī)和LCD之間的連接數(shù)量減少到4個(gè)。
我總是喜歡用Fritzing繪制接線圖(圖1:Arduino-LCD原理圖)。Fritzing是一款開(kāi)源原理圖設(shè)計(jì)和PCB布線軟件。Fritzing的下載地址(可選)如下:https://fritzing.org/home/
圖1:Arduino-LCD原理圖
LCD上的引腳1連至LCD驅(qū)動(dòng)模塊上的引腳1。其余引腳按順序連接。這可以在面包板上完成,也可以將驅(qū)動(dòng)模塊焊接到LCD上,正如我所做的這樣。
I2C和SPI是兩種非常流行的串行接口總線。本教程將介紹使用I2C連接Arduino和LCD驅(qū)動(dòng)模塊,但是LCD驅(qū)動(dòng)模塊也可以連接SPI接口。您可以通過(guò)跳接驅(qū)動(dòng)模塊上的焊接跳線(圖2:LCD驅(qū)動(dòng)模塊上的焊接跳線)來(lái)設(shè)置I2C地址(A0、A1、A2)或使能SPI(SPI使能)。本教程中使用I2C的唯一電路是LCD驅(qū)動(dòng)模塊,所以我們不需要更改當(dāng)前配置。這意味著LCD驅(qū)動(dòng)模塊的地址為0(0x00)。
圖2:LCD驅(qū)動(dòng)模塊上的焊接跳線
要將LCD驅(qū)動(dòng)模塊連接到Arduino,應(yīng)將5V和Arduino上的接地引腳連至LCD驅(qū)動(dòng)模塊上的5V和接地引腳。這會(huì)為L(zhǎng)CD和LCD驅(qū)動(dòng)模塊提供電源。注:LCD需要至少5V才能正常工作。接下來(lái)的兩個(gè)連接是串行數(shù)據(jù)和串行時(shí)鐘。串行時(shí)鐘連接(橙色線)位于Arduino的SCL引腳和驅(qū)動(dòng)模塊的CLK引腳之間。串行數(shù)據(jù)連接(藍(lán)線)位于Arduino的SDA引腳和驅(qū)動(dòng)模塊的DAT引腳之間。
圖3:LCD驅(qū)動(dòng)模塊引腳分配
2. 編寫(xiě)代碼
2.1 配置
代碼的第一部分是包含Adafruit_LiquidCrystal頭文件。然后,您就可以使用該庫(kù)中的函數(shù)。由于Arduino IDE會(huì)自動(dòng)下載Adafruit_LiquidCrystal庫(kù),本教程沒(méi)有包含Arduino庫(kù)的下載步驟。
接下來(lái),我們將LCD驅(qū)動(dòng)模塊地址設(shè)為0(請(qǐng)記住,我們沒(méi)有跨接任何焊接跳線)。
最后,我創(chuàng)建了一個(gè)名為timer的全局變量,稍后在代碼的循環(huán)部分中使用。
2.2 設(shè)置
LCD在寫(xiě)入之前需要進(jìn)行初始化。這可以通過(guò)“begin”函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)告訴LCD驅(qū)動(dòng)模塊顯示器上有多少個(gè)字符。由于我使用的LCD具有背光功能,因此我也打開(kāi)背光。
現(xiàn)在LCD已經(jīng)初始化完畢,我寫(xiě)了“Test Code”來(lái)檢查一切是否正常。該代碼將光標(biāo)設(shè)定為起始位置,將“Test”寫(xiě)入顯示屏,等待2秒鐘,然后清除顯示。
圖4:設(shè)置代碼
2.3 循環(huán)
代碼的循環(huán)部分利用millis()函數(shù)并除以1000來(lái)計(jì)算程序的運(yùn)行時(shí)間。然后代碼使用print和setCursor函數(shù)在LCD上顯示程序時(shí)間。隨后,循環(huán)代碼等待一秒鐘,然后重復(fù)。
圖5:循環(huán)代碼
3. 上傳并運(yùn)行程序
將代碼上傳到Arduino。確保Arduino已經(jīng)連接9V電源適配器,因?yàn)閁SB電源不足以為Arduino和LCD顯示器同時(shí)供電。程序開(kāi)始執(zhí)行后,設(shè)置部分運(yùn)行完成后,您應(yīng)該在LCD顯示屏上看到“Test”字樣(圖6:LCD顯示“Test”)。循環(huán)部分開(kāi)始執(zhí)行后,您將會(huì)看到程序的運(yùn)行時(shí)間,而且每秒更新一次(圖7:LCD顯示程序運(yùn)行時(shí)間 – 8(s))。恭喜!您現(xiàn)在擁有一款適用于Arduino板的簡(jiǎn)單易用LCD顯示屏,并可將其用作未來(lái)項(xiàng)目的顯示屏。提示:I2C是一個(gè)慢速總線,如果您持續(xù)更新液晶顯示器,那么會(huì)影響單片機(jī)執(zhí)行其他任務(wù)的時(shí)間。
圖6:LCD顯示 “Test”
圖7:LCD顯示程序運(yùn)行時(shí)間 – 8(s)
圖8:LCD顯示程序運(yùn)行時(shí)間 – 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 }
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6044文章
44631瀏覽量
639078 -
lcd
+關(guān)注
關(guān)注
34文章
4439瀏覽量
168509 -
顯示屏
+關(guān)注
關(guān)注
28文章
4513瀏覽量
74792 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187985
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
點(diǎn)陣LCD驅(qū)動(dòng)編寫(xiě)指南
LCD液晶驅(qū)動(dòng)PCF8562級(jí)聯(lián)應(yīng)用指南
DIY自己的arduino項(xiàng)目
![<b class='flag-5'>DIY</b>自己的<b class='flag-5'>arduino</b>項(xiàng)目](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DIY簡(jiǎn)單的Arduino鍵盤(pán)
![<b class='flag-5'>DIY</b>簡(jiǎn)單的<b class='flag-5'>Arduino</b>鍵盤(pán)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Diy Lillypad Arduino
![<b class='flag-5'>Diy</b> Lillypad <b class='flag-5'>Arduino</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
基于Arduino平臺(tái)的DIY示波器
![基于<b class='flag-5'>Arduino</b>平臺(tái)的<b class='flag-5'>DIY</b>示波器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DIY Arduino電源擴(kuò)展板
![<b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>電源擴(kuò)展板](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論