LCD1602液晶显示屏是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏,控制驱动主电路及其扩展驱动电路,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。
字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式LCD,常用16×1,16×2,20×2和40×2等的模块。
STEM KIT学习板用的LCD1602液晶显示屏,可以显示16x2个字符。(注意:一个汉字将占用2个字符宽度,但是显示汉字需要字库,在没有字库支持的情况下只能显示英文。)
如果我们需要知道电位器的值,可以用LCD显示屏来显示出来。只需简单的配置,就能让LCD显示字符。
# 部署
1.把滑块电位器slider1
接到OSEPP UNO的A0
引脚。
2.LCD的接口RS-D7
分别连接到OSEPP UNO的2~7
号引脚。
# 程序搭建
- oseppBlock 积木知识
LCD积木,定义显示屏的名称引脚号。
对应的端口名称要与主板的端口名称对应,引脚号码可以更改,但连接时要对应名称连接。
LCD清屏积木,就是把屏幕所有的显示内容都清除。类似于我们要在黑板写字时,把黑板都擦干净。
显示定位积木,就是指定接下来要显示字符的起始位置。LCD有16
列2
行对应的是0-15
列,0-1
行。如果从第一行第一列显示就是0,0
, 第二行第一列显示就是0,1
。
LCD要显示的内容,这里显示的是字符"hello!",如果要显示滑块电位器的值,就把电位器的电压值图标拖入到框内。
oseppBlock程序
Arduino程序
#include <LiquidCrystal.h> LiquidCrystal lcd1(2, 3, 4, 5, 6, 7); //定义LCD的引脚 void setup() { lcd1.begin(16, 2); //LCD初始化 //slider1 pinMode(A0, INPUT); //定义滑块电位器连接的引脚为输入模式 } void loop() { lcd1.clear(); //清屏 lcd1.setCursor(0, 0); //设置光标位置在0行,0列(左上角) lcd1.print(analogRead(A0)); //显示滑块电位器的值 delay(1000); //延时1000毫秒 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 运行结果
LCD的显示屏上面会显示滑块电位器的值,数值在0-1023
之间。调节滑块电位器,这个数值也会跟着变化。我们在程序后面加了一个延时1秒,延时这1秒内程序会暂停,所以我们调节起来会感觉反应很慢。如果显示不清晰,可以用螺丝刀调节LCD接线端子旁边的电位器,直到显示字符清晰。
# 操作视频
# 解析
此时LCD每秒就会刷新一次滑块的电压值。我们看到LCD显示的是0-1023
的数字,就是Arduino把从A0
读取到的电压值0-5V
映射成0-1023
来显示。如果要显示成0-5V
的电压,需要通过程序计算,下面展示两种计算方法:
方法一:
用1023
的值表示5000mV
,每个单位代表5000/1023mV
(即4.89mV
)
analogRead(A0)
的值乘以每个单位(即4.89mV
)就是实际的毫伏值, 整除1000
舍掉后面的小数点就是整伏数,后面用模除算出的余数就是mV
部分。oseppBlock程序
Arduino程序
#include <LiquidCrystal.h>
LiquidCrystal lcd1(2, 3, 4, 5, 6, 7); //定义LCD的引脚
void setup()
{
lcd1.begin(16, 2); //LCD初始化
//slider1
pinMode(A0, INPUT); //定义滑块电位器连接的引脚为输入模式
}
void loop()
{
lcd1.clear(); //清屏
lcd1.setCursor(0, 0); //显示光标定位
lcd1.print((analogRead(A0) * (5000 / 1023)) / 1000); //计算整数部分
lcd1.print("."); //添加一个小数点
lcd1.print((analogRead(A0) * (5000 / 1023)) % 1000); //用模除计算小数部分
delay(1000); //延时1000毫秒
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
这时LCD显示的就是滑块的实际电压值。
# 操作视频
方法二:
直接把analogRead(A0)
的值映射到毫伏,整除1000
舍掉后面的小数点就是整伏数,后面用模除算出的余数就是mV
部分。oseppBlock程序
- Arduino程序
#include <LiquidCrystal.h>
LiquidCrystal lcd1(2, 3, 4, 5, 6, 7); //定义LCD的引脚
void setup()
{
lcd1.begin(16, 2); //LCD初始化
//slider1
pinMode(A0, INPUT); //定义滑块电位器连接的引脚为输入模式
}
void loop()
{
lcd1.clear(); //清屏
lcd1.setCursor(0, 0); //显示光标定位
lcd1.print(map(analogRead(A0), 0, 1023, 0, 5000) / 1000); //计算整数部分
lcd1.print("."); //添加一个小数点
lcd1.print(map(analogRead(A0), 0, 1023, 0, 5000) % 1000); //用模除计算小数部分
delay(1000); //延时1000毫秒
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
当没有设定特殊变量时,Arduino程序都是以整数进行运算的。为了计算后面小数部分我们用了模除(%
),模除的结果的是一个数除以另一个数的余数。
- Arduino的数学运算
两个数相加
第一个数减去第二个数
两个数相乘
第一个数除以第二个数
第一个数除以第二个数的余数