Arduino(七)——lcd1062液晶显示

我们对我们的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()所放的位置

猜你喜欢

转载自blog.csdn.net/ArtoriaLili/article/details/121503935