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()); //读取数据并打印 } } }
浙公网安备 33010602011771号