实验十三 LCD应用

实验十三 LCD应用


一、实验目的

通过本实验,熟悉LCD的工作原理、应用场景及安装使用过程,掌握在Arduino项目中使用LCD屏幕输出字符的方法,并能使用电位器、倾斜开关等控制LCD的屏幕对比度及显示内容等。


二、实验要求

 1、使用ESP 8266电路板、LCD1602(如图所示,它可以显示2行,每行显示16个字符)、供电模块(实验5中使用过的可以输出3.3V5V电源的模块)和导线搭建实验电路,并编写相应Arduino程序代码,实现在LCD屏幕上输出显示字符信息的效果。

13-1 LCD1602

 2、在第1步实验中添加1个电位器和1个倾斜开关,并使用导线搭建实验电路,修改程序代码,实现通过电位器调节LCD屏幕对比度、通过改变倾斜开关状态改变LCD屏幕输出内容的效果。


三、实验过程

 1、在LCD上输出字符信息

1)放置1个供电模块在面包板上,设置其中一侧电源输出为5V,另一侧输出电源为OFF。分别使用2组各6根公母线(公头插入面包板,母头接在LCD上)连接LCD1602的各针脚,具体接法如下:

  • LCD上标注VSS1号针脚连接到面包板5V电源总线负极;

  • 标注VDD2号针脚连接到面包板5V电源总线正极;

  • 标注V03号针脚连接到面包板5V电源总线负极;

  • 标注RS4号针脚连接到电路板D6GPIO12)接口;

  • 标注RW5号针脚连接到面包板5V电源总线负极;

  • 标注E6号针脚连接到电路板D5GPIO14)接口;

  • 标注D411号针脚连接到电路板D1GPIO5)接口;

  • 标注D512号针脚连接到电路板D2GPIO4)接口;

  • 标注D613号针脚连接到电路板RXGPIO3)接口;

  • 标注D714号针脚连接到电路板D4GPIO2)接口;

  • 标注A15号针脚连接到面包板5V电源总线正极;

  • 标注K16号针脚连接到面包板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)使用导线分别连接面包板(供电模块未输出电源的一侧)电源总线正极和负极到电路板的3V3GND接口;放置1个倾斜开关在面包板上,其中负极(标注了“-”的针脚)连接到面包板3.3V电源总线负极,正极(中间针脚)连接到面包板3.3V电源总线正极,标注了S的针脚连接到电路板D8GPIO15)接口;放置1个电位器在面包板上,负极(标注了数字1)连接到面包板3.3V电源总线负极,正极(标注了数字3)连接到面包板3.3V电源总线正极,将插入LCDV0(即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屏幕的亮度会有所降低)。