搜索
热搜: ROHM 模拟 车载
查看: 1974|回复: 0

使用Arduino驱动LCD的DIY指南

[复制链接]

该用户从未签到

64

主题

101

帖子

0

精华

高级会员

最后登录
2019-6-21
发表于 2019-5-23 09:34:41 | 显示全部楼层 |阅读模式
利用Arduino驱动LCD显示屏
目的
本教程描述了如何使用Arduino驱动LCD显示屏。
概述
Arduino开发板属于非常流行的单片机开发板,该板的一个常用功能就是用驱动LCD屏,通常用来将信息传递给用户。在本教程中,我将教您如何使用Arduino单片机开发板和Adafruit I2C/SPI LCD驱动模块来驱动LCD。
目录
  • 电路接线
  • 编写代码
    • 配置
    • 设置
    • 循环
  • 上传并运行程序
程序
1. 电路接线
LCD通常需要连接很多线才能工作。随时管理所有这些连接可能既繁琐又烦人。幸运的是,Adafruit制造了一款可兼容大多数LCD的I2C/SPI LCD驱动模块。该驱动模块可方便地将您的单片机和LCD之间的连接数量减少到4个。
我总是喜欢用Fritzing绘制接线图(图1:Arduino-LCD原理图)。Fritzing是一款开源原理图设计和PCB布线软件。

图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)
  1. /*       Project: Arduino LCD
  2. *       Written by: Chris Marella                           
  3. *       Date: January 11, 2018                                                                    
  4. */                                                         

  5. // include the Adafruit LCD Library:
  6. #include

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

  9. //Global Variables
  10. int timer;    //create a global variable for a timer

  11. void setup() {

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

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

  20. }

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

  23.   lcd.setCursor(0,0);     //set LCD cursor to 0,0
  24.   lcd.print("Time:");     //print time on LCD row 1
  25.   lcd.setCursor(0,1);     //move LCD cursor to row 2
  26.   lcd.print(timer);       //print the current program run time
  27.   lcd.setCursor(0,2);     //move LCD cursor to row 3
  28.   lcd.print("(s)");       //print "(s)" for seconds
  29.   delay(1000);            //wait 1 second to update
  30. }
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2024-4-20 22:03 , Processed in 0.087686 second(s), 11 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表