一、实验目的
通过本实验,熟悉LCD的工作原理、应用场景及安装使用过程,掌握在Arduino项目中使用LCD屏幕输出字符的方法,并能使用电位器、倾斜开关等控制LCD的屏幕对比度及显示内容等。
二、实验要求
1、使用ESP 8266电路板、LCD1602(如图所示,它可以显示2行,每行显示16个字符)、供电模块(实验5中使用过的可以输出3.3V或5V电源的模块)和导线搭建实验电路,并编写相应Arduino程序代码,实现在LCD屏幕上输出显示字符信息的效果。
图13-1 LCD1602
2、在第1步实验中添加1个电位器和1个倾斜开关,并使用导线搭建实验电路,修改程序代码,实现通过电位器调节LCD屏幕对比度、通过改变倾斜开关状态改变LCD屏幕输出内容的效果。
三、实验过程
1、在LCD上输出字符信息
(1)放置1个供电模块在面包板上,设置其中一侧电源输出为5V,另一侧输出电源为OFF。分别使用2组各6根公母线(公头插入面包板,母头接在LCD上)连接LCD1602的各针脚,具体接法如下:
LCD上标注VSS的1号针脚连接到面包板5V电源总线负极;
标注VDD的2号针脚连接到面包板5V电源总线正极;
标注V0的3号针脚连接到面包板5V电源总线负极;
标注RS的4号针脚连接到电路板D6(GPIO12)接口;
标注RW的5号针脚连接到面包板5V电源总线负极;
标注E的6号针脚连接到电路板D5(GPIO14)接口;
标注D4的11号针脚连接到电路板D1(GPIO5)接口;
标注D5的12号针脚连接到电路板D2(GPIO4)接口;
标注D6的13号针脚连接到电路板RX(GPIO3)接口;
标注D7的14号针脚连接到电路板D4(GPIO2)接口;
标注A的15号针脚连接到面包板5V电源总线正极;
标注K的16号针脚连接到面包板5V电源总线负极。
电路连接如图所示。
图13-2实验电路连接图
(2)在新建的Arduino程序窗口中输入如下代码:
#include <LiquidCrystal.h>
//定义LCD上各针脚连接的电路板接口号,下面括号内数字分别对应LCD针脚(RS,E,D4,D5,D6,D7)
LiquidCrystal lcd(12,14,5,4,3,2);
void setup() {
lcd.begin(16,2);//LCD显示每行16个字符,共2行,与物理设备相同
lcd.print("Hello World");//在第1行输出字符
}
void loop() {
lcd.setCursor(0,1);//光标定位到第2行的第1个字符
lcd.print(millis()/1000);//每秒输出当前秒数,即每秒加1显示1个数字
}
(3)将USB线缆插入计算机,打开供电模块电源,待程序上传成功后观察LCD屏幕的输出内容。
该实验的结果是:LCD屏幕第1行显示文字“Hello World”,第2行显示数字,从0开始每秒加1。若LCD屏幕没有显示字符或显示的是乱码,可拔下USB线缆重新插入计算机;若显示的是一行小方块,可以尝试将供电模块去除,改由电路板的3.3V电源供电(此时LCD屏幕的亮度会有所降低)。
2、电位器和倾斜开关控制LCD屏幕对比度和显示内容
(1)使用导线分别连接面包板(供电模块未输出电源的一侧)电源总线正极和负极到电路板的3V3和GND接口;放置1个倾斜开关在面包板上,其中负极(标注了“-”的针脚)连接到面包板3.3V电源总线负极,正极(中间针脚)连接到面包板3.3V电源总线正极,标注了S的针脚连接到电路板D8(GPIO15)接口;放置1个电位器在面包板上,负极(标注了数字1)连接到面包板3.3V电源总线负极,正极(标注了数字3)连接到面包板3.3V电源总线正极,将插入LCD的V0(即3号)针脚的导线另一端(原连接到面包板5V电源负极总线)连接到电位器中间针脚。电路连接如图所示。
图13-3实验电路连接图
(2)在新建的Arduino程序窗口中输入如下代码:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,14,5,4,3,2);
const int switchPin=15;//定义倾斜开关连接的电路板端口号
int switchState=0;//存储倾斜开关当前状态
int prevSwitchState=0;//存储倾斜开关状态改变前的状态
int reply;//存储1个随机数字,用于输出要显示的内容
void setup() {
lcd.begin(16,2);
pinMode(switchPin,INPUT);
lcd.print("Ask the");
lcd.setCursor(0,1);
lcd.print("Crystal Ball");
}
void loop() {
switchState=digitalRead(switchPin);
if(switchState!=prevSwitchState){//当倾斜开关状态改变时执行下述代码
if(switchState==LOW){
reply=random(8);//产生0-7之间(含)的随机整数
lcd.clear();//清楚LCD屏幕内容
lcd.setCursor(0,0);
lcd.print("The ball says:");
lcd.setCursor(0,1);
switch(reply){//根据随机数的值确定要输出的字符内容
case 0:
lcd.print("Yes");
break;
case 1:
lcd.print("Most likely");
break;
case 2:
lcd.print("Certainly");
break;
case 3:
lcd.print("Outlook good");
break;
case 4:
lcd.print("Unsure");
break;
case 5:
lcd.print("Ask again");
break;
case 6:
lcd.print("Doubtful");
break;
case 7:
lcd.print("No");
break;
}
}
}
prevSwitchState=switchState;
}
(3)将USB线缆插入计算机,打开供电模块电源,待程序上传成功后观察LCD屏幕的输出内容。
该实验的结果是:LCD屏幕第1行显示文字“Ask the”,第2行显示文字“Crystal Ball”;旋转电位器的按钮,可改变LCD屏幕的对比度;改变倾斜开关的状态,LCD屏幕第1行显示文字“The ball says:”,第2行随机显示“Yes”、“No”等共8种文字(具体内容可在代码中进行修改,也可更改预设显示内容个数)。
若LCD屏幕没有显示字符或显示的是乱码,可拔下USB线缆重新插入计算机;若显示的是一行小方块,可以尝试将供电模块去除,改由电路板的3.3V电源供电(此时LCD屏幕的亮度会有所降低)。