使用Arduino驱动LCD的DIY指南

电子说

1.3w人已加入

描述

这篇文章来源于DevicePlus.com英语网站的翻译稿。

利用Arduino驱动LCD显示屏

目的

本教程描述了如何使用Arduino驱动LCD显示屏。

概述

Arduino开发板属于非常流行的单片机开发板,该板的一个常用功能就是用驱动LCD屏,通常用来将信息传递给用户。在本教程中,我将教您如何使用Arduino单片机开发板和Adafruit I2C/SPI LCD驱动模块来驱动LCD。

设备

Arduino Uno R3

I2C/SPI LCD 驱动模块

RGB LCD 20×4

9V, 1A 电源适配器

跳线

USB 电缆 (A-to-B)

面包板

目录

电路接线

编写代码

配置

设置

循环

上传并运行程序

程序

1. 电路接线

LCD通常需要连接很多线才能工作。随时管理所有这些连接可能既繁琐又烦人。幸运的是,Adafruit制造了一款可兼容大多数LCD的I2C/SPI LCD驱动模块。该驱动模块可方便地将您的单片机和LCD之间的连接数量减少到4个。

我总是喜欢用Fritzing绘制接线图(图1:Arduino-LCD原理图)。Fritzing是一款开源原理图设计和PCB布线软件。Fritzing的下载地址(可选)如下:https://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代码

 

/*       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
}

 

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分