深蓝创客

Arduino模块编程 LCD1602液晶显示屏(LiquidCrystal库)

一、简介

  液晶显示屏(LCD)为一个项目提供了方便而廉价的用户界面,目前最流行的LCD是基于日立HD44780芯片的文字屏,本章讲解如何在Arduino系统连接和使用普通的文字和图形LCD屏。Arduino软件包含了LiquidCrystal库用于驱动基于HD44780芯片的1602显示屏,本章节主要讲解Arduino基于LiquidCrystal库对LCD1602显示屏的控制。

  LiquidCrystal库可以在Arduino IDE软件的“工具栏”中的“管理库”下载。

  本章节使用硬件有Arduino UNO,LCD1602显示屏,10K电位器,220Ω电阻。实验在proteus进行仿真,具体如何使用proteus仿真Arduino实验,请参考本博主的有关章节。

二、硬件介绍

01.LCD1602显示屏与Arduino的电路图

  

图01.LCD1602显示屏与Arduino电路图

  由图01可知,10KΩ电位器用于调节显示屏的对比亮度,LCD1602的15和16引脚用于点亮显示屏的背光灯,注意16引脚要连一颗220Ω的电阻。

 

02.LCD1602显示屏和Arduino连接方式

图02 LCD1602与Arduino的连接关系

 

三、程序

3.1 .LiquidCrystal中的API函数

  【01】void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);

    摘要:用于配置LCD1602显示屏。此函数被LiquidCrystal lcd()函数内部调用,一般不在逻辑编程中使用。

    参数:(fourbitmode):配置数据位模式,4位或8位;(rs):配置字符或命令引脚;(enable):配置使能引脚;(d0~d7):数据引脚。

  【02】void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);

    摘要:用于设置显示字符数和行数。字体大小为5x8,在第三个参数已经默认设置字体大小了。

    参数:(cols):每行的字符数;(rows):行数;(charsize):字体大小,已默认设置为5x8;

  【03】void clear();

    摘要:清屏函数。光标位置设置为0。

  【04】void home();

    摘要:光标回到(0,0)位置。

  【05】void noDisplay();

    摘要:关闭显示。

  【06】void display();

    摘要:打开显示。

  【07】void  noBlink();

    摘要:关闭光标闪烁。

  【08】void  blink();

    摘要:打开光标闪烁。

  【09】void noCursor();

    摘要:关闭光标显示。

  【10】void  scrollDisplayLeft();

    摘要:向左移动字符串。

  【11】void scrollDisplayRight();

    摘要:向右移动字符串。

  【12】void leftToRight();

    摘要:从左向右滚动字符串。

  【13】void  rightToLeft();

    摘要:从右向左滚动字符串。

  【14】void autoscroll();

    摘要:从光标位置依次向左输出字符串。使用方式详情请看典例???

  【15】void noAutoscroll();

    摘要:从光标位置依次向右输出字符串。此函数为系统默认设置,使用方式详情请看典例???

  【16】void  createChar(uint8_t, uint8_t[]);

    摘要:创建自定义字符。

    参数:(uint8_t):字符的下标号;(uint8_t[]):自定义字符串数组。

  【17】void setCursor(uint8_t, uint8_t); 

    摘要:设置光标位置。查看典例3.2。

    参数:(uint8_t,uint8_t):光标位置。

3.2 典型例程

典例01:基本显示(打印“helloworld”,打印运行时间)

代码:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);    //rs,en,d4,d5,d6,d7;

void setup() 
{
  lcd.begin(16,2);            //初始化LCD1602,2行,16个字
  lcd.print("hello,world!");
}

void loop() 
{
  lcd.setCursor(0,1);           //设置光标位置
  lcd.print(millis()/1000);     //打印运行时间,单位秒
}

典例02:光标闪烁

代码:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);    //rs,en,d4,d5,d6,d7;

void setup() 
{
  lcd.begin(16,2);
  lcd.print("hello, world!");
}

void loop() 
{
  lcd.noBlink();      //关闭光标闪烁
  delay(3000);
  lcd.blink();        //打开光标闪烁
  delay(3000);
}

典例03:接收串口信息并打印到LCD1602显示屏

代码:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);    //rs,en,d4,d5,d6,d7;

void setup() 
{
  lcd.begin(16,2);            //初始化LCD1602,2行,16个字
  Serial.begin(9600);         //初始化串口,并设置波特率为9600
}

void loop()
{
  if(Serial.available())          //如果接收到字符串
  {
    delay(100);
    lcd.clear();                  //清空屏幕
    while(Serial.available()>0)   //判断接收缓存是否有数据
    {
      lcd.write(Serial.read());   //读取数据并打印
    }
  }
}

 

posted on 2021-06-03 08:20  深蓝创客  阅读(27)  评论(0)    收藏  举报

导航