我们对我们的lcd1062进行一个说明
L—liquid C—Crystal D—Display
16—每一行可以显示16个字符
02—一共两行
这个就是他的连接方法
而这个就是每个管脚所对应的
思路分析:
(1)位置 32个空格
(2)显示内容
两个机器(单片机与1602通过0 1 进行沟通交流)
我们以下面的例子说明
#define RS 12
#define RW 11
#define dpinmin 3
#define dpinmax 10
#define Enable 2
void Ledcommandwrite( int value)
{
digitalWrite(RS, 0);
digitalWrite(RW, 0);
for (int i = dpinmin; i <= dpinmax; i++)
{
digitalWrite(i,value & 01);
value >>= 1;
}
digitalWrite (Enable, 0);
delayMicroseconds(1);
digitalWrite(Enable, 1);
delayMicroseconds(1);
digitalWrite (Enable, 0);
delayMicroseconds(1);
}
void Leddatawrite(int value)
{
digitalWrite(RS, 1);
digitalWrite(RW, 0);
for (int i = dpinmin; i <= dpinmax; i++)
{
digitalWrite(i, value & 01);
value >>= 1;
}
digitalWrite (Enable, 0);
delayMicroseconds(1);
digitalWrite(Enable, 1);
delayMicroseconds(1);
digitalWrite (Enable, 0);
delayMicroseconds(1);
}
void setup(void)
{
for (int i = Enable; i <= RS; i++)
{
pinMode(i, OUTPUT);
}
delay(100);//给lcd初始化时间
Ledcommandwrite(0x38);//8位双行显示,5*7阵
delay(20);
Ledcommandwrite(0x06);//光标右移
delay(20);
Ledcommandwrite(0x0e);//开光标
delay(20);
Ledcommandwrite(0x01);//清屏
delay(20);
Ledcommandwrite(0x02);//光标归位,从第一个开始
delay(100);
}
void loop(void)
{
Ledcommandwrite(0x02);
delay(10);
Leddatawrite('h');
Leddatawrite('e');
Leddatawrite('l');
Leddatawrite('l');
Leddatawrite('o');
Ledcommandwrite(0xc1);
Leddatawrite('L');
Leddatawrite('i');
delay(500);
}
1. #define 这是在大程序里特别好用的函数,例如(#define RS 12)以后我们输入RS就会默认为是12管脚
2.lcdcommandwrite(程序上写的是led,是我写的时候出了错误,不过因为是自己定义,所以没关系)
这就是我们的确定他的位置
3.lcddatawrite
这是我们确定显示的内容
4.lcd1062初始化的一个过程(在上面的代码不同,我在上面的代码里解释)
(1)延时15ms
(2)写指令38H
(3)延时5ms
(4)38H:显示模式设置
(6)01H:显示清屏
(7)06H:显示光标移动
(8)0CH:显示开及光标移动
发生位置和发生命令的最大区别就是RS
(command and data 函数等之后我来给大家补上为啥是这么写)
而这上面的代码,是我们不用我们的库函数来写的,当我们使用我们的库时,可以让我们写的代码更加简单(见 Arudino(九))
#include<LiquidCrystal.h>
int rs =7;
int en = 8;
int d4 = 9;
int d5 =10;
int d6 = 11;
int d7 = 12;
//接下来我们创造我们的液晶对象
//lcd后就是我们要控制的对象
LiquidCrystal lcd(rs,en,d4,d5,d6,d7)
void setup() {
lcd.begin(16,2);//这是我们16个格子,两行的lcd1602
//左上开始,时以为 0,0开始的
}
void loop() {
lcd.setCursor(0,0);//光标移动到的位置,让我们从这里开始写
lcd.print("hello world");//打印一串字符,在lcd上显示
//lcd.print("MY name is Li");
//如果我们直接这么写,格子是不够的
//所以我们如果只想在第一行出现,我们设置的两个就需要都从(0,0)开始,然后延时
delay(1000);
lcd.setCursor(0,0)
lcd.print("My name is Li");
delay(1000);//这是在我们的循环内部,会循环两个打印,但是这样会有部分的子不会盖掉
lcd.clear();//清除我们前面的东西,就不会背盖住了
//如果不加延时,会闪的太快
}
但是我们也要注意一下,我们在做计时器是,lcd.clear()所放的位置