使用Arduino驱动LCD的DIY指南

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

利用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的下载地址(可选)如下:https://fritzing.org/home/

使用Arduino驱动LCD的DIY指南 Arduino-LCD原理图

图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)。

使用Arduino驱动LCD的DIY指南 LCD驱动模块上的焊接跳线

图2:LCD驱动模块上的焊接跳线

要将LCD驱动模块连接到Arduino,应将5V和Arduino上的接地引脚连至LCD驱动模块上的5V和接地引脚。这会为LCD和LCD驱动模块提供电源。注:LCD需要至少5V才能正常工作。接下来的两个连接是串行数据和串行时钟。串行时钟连接(橙色线)位于Arduino的SCL引脚和驱动模块的CLK引脚之间。串行数据连接(蓝线)位于Arduino的SDA引脚和驱动模块的DAT引脚之间。

使用Arduino驱动LCD的DIY指南 LCD驱动模块引脚分配

图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秒钟,然后清除显示。

使用Arduino驱动LCD的DIY指南 设置代码

图4:设置代码

2.3 循环

代码的循环部分利用millis()函数并除以1000来计算程序的运行时间。然后代码使用print和setCursor函数在LCD上显示程序时间。随后,循环代码等待一秒钟,然后重复。

使用Arduino驱动LCD的DIY指南 循环代码

图5:循环代码

3. 上传并运行程序

将代码上传到Arduino。确保Arduino已经连接9V电源适配器,因为USB电源不足以为Arduino和LCD显示器同时供电。程序开始执行后,设置部分运行完成后,您应该在LCD显示屏上看到“Test”字样(图6:LCD显示“Test”)。循环部分开始执行后,您将会看到程序的运行时间,而且每秒更新一次(图7:LCD显示程序运行时间 – 8(s))。恭喜!您现在拥有一款适用于Arduino板的简单易用LCD显示屏,并可将其用作未来项目的显示屏。提示:I2C是一个慢速总线,如果您持续更新液晶显示器,那么会影响单片机执行其他任务的时间。

使用Arduino驱动LCD的DIY指南 LCD显示 “Test”

图6:LCD显示 “Test”

使用Arduino驱动LCD的DIY指南 LCD显示程序运行时间 – 8(s)

图7:LCD显示程序运行时间 – 8(s)

使用Arduino驱动LCD的DIY指南 LCD显示程序运行时间 – 28(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
}

 

DevicePlus 编辑团队
DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

在Fritzing中创建自定义元件

采用ROHM传感器套件的DIY Arduino家庭安防系统 第1部分-机制

相关文章

  1. how-to-make-eobot_02_19

    “魅力四射”的机器人制作【下篇】

  2. “魅力四射”的机器人制作【上篇】

  3. 用Arduino和TOF距离传感器制作甜甜圈播放器【后篇】

  4. 用Arduino和TOF距离传感器制作甜甜圈播放器【前篇】

  5. 1-1

    Arduino电子制作总结!基于微控制器的电子制作基础之基础篇

  6. 用Arduino制作的太阳能电池板供电数字养殖箱【前篇】

    用Arduino制作的太阳能电池板供电数字养殖箱【前篇】

  7. 使用D/A转换器灵活控制电压并使用Arduino输出模拟信号的方法

  8. 在最后一刻停下来!用Arduino和距离传感器制作小鸡赛车!(第3篇•最终篇)

Arduino入门指南

基础知识

EMC


TECH INFO

  • Sugiken老师的电机驱动器课堂
  • 重点必看
  • 技术分享
  • Arduino入门指南
  • Raspberry Pi初学者指南
  • 技术动态
PAGE TOP