【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十五:LCD1602液晶显示屏1602A模块 蓝屏黄绿屏灰屏5V 3.3V焊排针 IIC/I2C

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第1张图片
【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第2张图片
知识点:液晶
某些物质在熔融状态或被溶剂溶解之后,尽管失去固态物质的刚性,却获得了液体的易流动性,并保留着部分晶态物质分子的各向异性有序排列,形成一种兼有晶体和液体的部分性质的中间态, 这种由固态向液态转化过程中存在的取向有序流体称为液晶。液晶是在自然界中出现的一种十分新奇的中间态,并由此引发了一个全新的研究领域。自然界是由各种各样不同的物质组成。以前,人们熟知的是物质存在有3态:固态、液态和气态。而固态又可以分为晶态和非晶态。在晶态固体中分子具有取向有序性和位置有序性,即所谓的长程有序。当然这些分子在平衡位置会发生少许振动,但平均说来,它们一直保持这种高度有序的排列状态。

当通电时导通,排列变得有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。让液晶如闸门般地阻隔或让光线穿透。从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,称为Substrates,中间夹着一层液晶。当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。大多数液晶都属于有机复合物,由长棒状的分子构成。在自然状态下,这些棒状分子的长轴大致平行。将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那些槽非常平行,则各分子也是完全平行的。液晶是一种介于晶体状态和液态状态之间的中间物质。它兼有液体和晶体的某些特点,表现出一些独特的性质。

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第3张图片
液晶显示材料
具有明显的优点:驱动电压低、功耗微小、可靠性高、显示信息量大、彩色显示、无闪烁、对人体无危害、生产过程自动化、成本低廉、可以制成各种规格和类型的液晶显示器,便于携带等。由于这些优点。用液晶材料制成的计算机终端和电视可以大幅度减小体积等。液晶显示技术对显示显像产品结构产生了深刻影响,促进了微电子技术和光电信息技术的发展。液晶显示材料最常见的用途是电子表和计算器的显示板,为什么会显示数字呢?原来这种液态光电显示材料,利用液晶的电光效应把电信号转换成字符、图像等可见信号。液晶在正常情况下,其分子排列很有秩序,显得清澈透明,一旦加上直流电场后,分子的排列被打乱,一部分液晶会改变光的传播方向,液晶屏前后的偏光片会阻挡特定方向的光线,从而产生颜色深浅的差异,因而能显示数字和图象。

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第4张图片
【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第5张图片
LCD 构成
1.背光源(或背光模组)——由于液晶分子自身是无法发光的,因此若想出现画面,液晶显示器需要专门的发光源来提供光线,然后经过液晶分子的偏转来产生不同的颜色。而背光源起到的就是提供光能的作用。之前液晶显示器采用的都是名叫CCFL的冷阴极射线管,其发光原理与日光灯几乎完全相同,而现在新品液晶显示器都采用了更加节能、长寿面的LED背光源。灯管(或LED)发光后藉由导光板将光线分布到各处,通过背面的反射板将所有的光线的方向集中朝向液晶分子。最后光线通过prism sheet以及扩散板将光线均匀的散发出去,避免出现中央亮度过高、四周亮度过低的情况。
2.上下层两个偏光片——偏光片的作用是让光线从单方向通过。
3.上层和下层两块玻璃基板——玻璃基板不仅仅是两块玻璃那么简单,其内侧具有沟槽结构,并附着配向膜,可以让液晶分子沿着沟槽整齐的排列。在上、下两层玻璃两侧会贴有TFT薄膜晶体管和彩色滤光片。
4.ITO透明导电层——其作用是提供导电通路,分为像素电极(P级)和公共电极(M级)。在下一页中我们为大家讲解液晶面板结构更多的内容。
5.薄膜晶体管(就是我们经常所说的TFT)——我们经常说TFT-LCD,其实际上指的就是这个薄膜晶体管,它的作用类似于开关,TFT能够控制IC控制电路上的信号电压,并将其输送到液晶分子中,决定液晶分子偏转的角度大小,因此其是非常重要的一个部件。
6.液晶分子层 ——液晶分子层是改变光线偏光状态最重要的元素,通过电力和弹性力共同决定其排列和偏光状态。
7.彩色滤光片——通过液晶分子偏转的光线只能显示不同的灰阶,但是不能提供红、绿、蓝(RGB)三原色,而彩色滤光片则由RGB三种过滤片组成,通过三者混和调节各个颜色与亮度。液晶面板中每一个像素由红、绿、蓝3个点构成,每种颜色的点各自拥有不同的灰阶变化。

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第6张图片
1602模块电原理图

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第7张图片
IIC/I2C接口LCD1602转接板
控制板IO口只有20个,加些传感器、SD卡啥的,继电器等模块多了,IO口就不够用了,原来的1602屏至少需要7个IO口才能驱动起来,这个模块可以帮你省5个IO口。

参数
1.供电电压:+5V
2.支持I2C协议
3.具有背光灯,和对比度调节电位器
4.4线输出更简单
5.设备地址:0x27

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第8张图片

Arduino实验接线示意图

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第9张图片
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十五:LCD1602液晶显示屏1602A模块 蓝屏黄绿屏灰屏5V 3.3V焊排针 IIC/I2C
LCD1602A扫描I2C地址程序之二
Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
  项目四:LCD1602A扫描I2C地址程序之二
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#include 
void setup() {
  Serial.begin (115200); //  等待串口连接
  while (!Serial) { }
  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
  Wire.begin();
  for (byte i = 8; i < 120; i++) {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0) {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1); // 也许不需要?
    } // 反应良好
  } // for循环的结尾
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
} // 测试结束

void loop() {
}

实验串口返回情况

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第10张图片

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
项目:显示超声波测距开源代码
Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验八十八: LCD1602A液晶屏5V显示模块(IIC/I2C接口)
  项目:显示超声波测距
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#include 
#include 
#include 
double angle_rad = PI / 180.0;
double angle_deg = 180.0 / PI;
float getDistance(int trig, int echo) {
  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
  return pulseIn(echo, HIGH, 30000) / 58.0;
}

byte getLCDaddress() {
  Wire.begin();
  byte LCDaddress = 0x27;
  Wire.beginTransmission(LCDaddress);
  byte resultNumber = Wire.endTransmission();
  if (resultNumber == 0) {
    return LCDaddress;
  } else {
    LCDaddress = 0x3F;
  }
  Wire.beginTransmission(LCDaddress);
  resultNumber = Wire.endTransmission();
  if (resultNumber == 0) {
    return LCDaddress;
  }
}
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x3F, 16, 2);

void setup(){
  lcd = LiquidCrystal_I2C(getLCDaddress(), 16, 2);
  lcd.init(); //初始化LCD
  lcd.backlight(); //打开背光
  lcd.display();
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print(getDistance(7, 8));
  lcd.setCursor(10, 1);
  lcd.print(getDistance(7, 8));
  delay(1 * 1000);
}

Arduino实验场景图

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第11张图片

实验开源图形编程(Mixly、Mind+、编玩边学)

LCD1602A显示超声波测距

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第12张图片

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实程序七:使用微波传感器制作Arduino运动探测器
安装库:IDE—工具—管理库—搜索LiquidCrystal_I2C库—安装
实验接线:微波传感器接D2,D12接蜂鸣器,D13接LED灯
LCD1602A IIC接口A4、A5
Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实程序七:使用微波传感器制作Arduino运动探测器
  安装库:IDE—工具—管理库—搜索LiquidCrystal_I2C库—安装
  实验接线:微波传感器接D2,D12接蜂鸣器,D13接LED灯
           LCD1602A IIC接口A4、A5
*/

#include 
#include 

// 将LCD地址设置为0x27,以显示16个字符和2行
LiquidCrystal_I2C lcd(0x27, 16, 2);
int Sensor = 2;   // D2接微波传感器
int LED = 13;     // D13接LED灯
int Buzzer = 12; // D12接蜂鸣器
int flg = 0;  // 变更检测标志

void setup()
 {
  Serial.begin(9600);
  lcd.init(); //初始化LCD
  lcd.clear();  // 清除LED屏幕
  lcd.print("...MAKER.PRO...");
  delay(2000);
  
  lcd.backlight(); //打开背光
  pinMode (Sensor, INPUT);  // 将微波雷达引脚定义为输入
  pinMode (Buzzer, OUTPUT);    // 定义蜂鸣器为输出
  pinMode (LED, OUTPUT);    // 定义LED为输出
  Serial.println("Waiting for motion");// 准备就绪
}

void loop() 
{
  int val = digitalRead(Sensor); //赋值微波感应信号给变量
  if ((val > 0) && (flg == 0))// 检测到运动信号
  {
    digitalWrite(LED, HIGH);
    digitalWrite(Buzzer, HIGH);
    lcd.clear();
    Serial.println("Motion Detected");
    lcd.print("Motion Detected");
    flg = 1;
  }

  if (val == 0) // 没有检测到运动
  {
    digitalWrite(LED, LOW);
    digitalWrite(Buzzer, LOW);
    lcd.clear(); // 清除LED屏幕
    Serial.println("NO Motion");
    lcd.print("NO Motion "); 
    flg = 0;
  }
  delay(100);
}

程序八开源图形编程(Mind+、编玩边学)

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第13张图片
Arduino实验场景图

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块3_第14张图片

你可能感兴趣的:(嵌入式硬件,Arduino,物联网,机器人,c++,单片机,LCD1602液晶屏模块)