LCD 1602A

1.直接与Arduino相连

2.通过转接板利用I2C的方式与Arduino相连

1. 直接与Arduino相连

直接与Arduino相连的好处是不用现另外购买转接板,但这样造成的后果就是要大量占用Arduino的IO口。如果你的项目外接的传感器不多,那还好,但如果你需要外接很多个传感器或者其他配件,那你的IO口就会告急了~

所需材料

  • 1x Arduino UNO
  • 1x LCD 16x2
  • 1x 10KΩ旋转变阻器
  • 1x 面包板

接线示意图

加载库文件

  • 在Arduino IDE 1.6.2 或者以上版本中, 项目->加载库->管理库中搜索LiquidCrystal,然后安装即可。

示例代码

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD‘s number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

参考文献

https://www.arduino.cc/en/Reference/LiquidCrystal

2.通过PCF8574T转接板与Arduino相连

通过此种方式,可以大大节省Arduino的IO口,前提是你还得购买一块PCF8574T转接板。

所需要材料

  • 1x Arduino UNO
  • 1x LCD 16x2
  • 1x PCF8574T转接板
  • 电烙铁、焊锡、松香等

接线

首先,把转接板焊接到LCD显示屏上(方向如上图)

  • SCL -> 最上面的口
  • SDA -> 第二个口

扫描I2C地址

将以下代码拷贝到Arduino IDE,并执行。然后选择工具->串口监视器,把右下角的波特率改为115200,即可读出I2C地址,如下图。

// I2C Scanner
// Written by Nick Gammon
// Date: 20th April 2011
#include <Wire.h>
void setup() {
    Serial.begin (115200); // Leonardo: wait for serial port to connect
    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); // maybe unneeded?
        } // end of good response
    } // end of for loop
    Serial.println ("Done.");
    Serial.print ("Found ");
    Serial.print (count, DEC);
    Serial.println (" device(s).");
} // end of setup
void loop() {}

加载库文件

这里下载最新的New LiquidCrystal,手动添加到你的 Arduino IDE中。(ps:记得修改你的I2C地址,把LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7);0x3F改为你的真实地址)

示例代码

/* Demonstration sketch for PCF8574T I2C LCD Backpack Uses library from https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads GNU General Public License, version 3 (GPL-3.0) */
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified backpack
void setup() { // activate LCD module
  lcd.begin (16,2); // for 16 x 2 LCD module
  lcd.setBacklightPin(3,POSITIVE);
  lcd.setBacklight(HIGH);
}
void loop() {
  lcd.home (); // set cursor to 0,0
  lcd.print(" tronixlabs.com");
  lcd.setCursor (0,1); // go to start of 2nd line
  lcd.print(millis());
  delay(1000);
  lcd.setBacklight(LOW); // Backlight off delay(250);
  lcd.setBacklight(HIGH); // Backlight on delay(1000);
}

参考文献

http://www.instructables.com/id/Using-PCF8574-backpacks-with-LCD-modules-and-Ardui/?ALLSTEPS

本文摘自:http://www.jianshu.com/p/eee98fb5e68f

在这里感谢作者的贡献。

时间: 2024-11-05 16:36:09

LCD 1602A的相关文章

重学STM32---(七) FSMC+LCD

关于FSMC+LCD第一次学习完时候,自己也还是对这个不清不白,时而清楚,时而糊涂.这一次再次学习的话,不能在这样了,仔仔细细把STM32参考手册,原子的LCD实验看了一遍,又在网上找了好些关于FSMC+LCD的资料,终于彻底明白了,,,当然,叫我完全一个人独立的把这个LCD显示实验程序写出来还是不可能的,C语言还是有待提高,实战还是太少,看到别人写的代码,有些细节根本一点都想不到,更何况让自己去写.... 收集的资料: LCD有如下控制线: CS:Chip Select 片选,低电平有效 RS

单片机第14课:LCD使用

下面是LCD的电路,其中RD接P2^6;LCDE接P2^7,WR接P2^5. #include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit lcd_E = P2^7; sbit lcd_RS = P2^6; sbit lcd_WR = P2^5; uchar code table_show1[] = "Hello!"; uchar code table_show2[] = "

RT-Thread-v2.0.0移植到STM32及驱动LCD和测温

先简单记录下安装: 1. 安装 sourcery工具链或 keil都行 安装python 和 scons: 配置这些工具路径以及RT-Thread源码路径RTT_ROOT,添加到环境变量 2. 开始编译 bsp\stm32f10x工程,在编译以前需要稍微修改如下几个文件 rtconfig.py 此文件必须修改 rtconfig.h 此文件用于裁剪rt-thread(根据需要修改) 比如使用 keil工具来编译: 修改rtconfig.py, CROSS_TOOL='keil' EXEC_PATH

Linux LCD驱动(三)--图形显示

3.  BMP和JPEG图形显示程序3.1  在LCD上显示BMP或JPEG图片的主流程图首先,在程序开始前.要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0.命令如下:mknod fb0 c 29 0在LCD上显示图象的主流程图如图3.1所示.程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形文件数据,把图象的RGB值映射到显存中,这部分是图象显示的核心.对于JPEG格式的图片,要先经过JPE

Linux LCD驱动(四)--驱动的实现

目录(?)[-] 基本原理 写 framebuffer 驱动程序要做什么 LCD 模块 驱动程序 控制器 什么是 frame buffer 设备 Linux Frame Buffer 驱动程序层次结构 数据结构 接口 一个 LCD controller 驱动程序 分配系统内存作为显存 实现 fb_ops 结构 基本原理 通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来: 驱动程序分配系统内存作为显存:实现

linux 2440 LCD 应用程序编程

一.Linux的帧缓冲设备 帧缓冲(framebuffer)是 Linux 为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.这种操作是抽象的,统一的.用户不必关心物理显存的位置.换页机制等等具体细节.这些都是由Framebuffer 设备驱动来完成的.帧缓冲驱动的应用广泛,在 linux 的桌面系统中,Xwindow 服务器就是利用帧缓冲进行窗口的绘制.尤其是通过帧缓冲可显示汉字点阵,成为 Linux汉化的唯一可行方案. 帧缓冲设备对

u-boot命令行调试LCD简单记录

一般来说,调试uboot最好的方式是使用openjtag,因为uboot说到底就是一段裸机程序,只不过比较复杂.但是受实际环境限制,实际工作中使用较多的调试技巧主要有两种:打印和直接在命令行测试,打印比较常见也比较简单,直接使用printf即可,这里就以最近这段时间调试uboot下面lcd为例,简单说说命令行调试. 平台: am335x,u-boot 2010.09,linux 3.10 问题: 由于此版本u-boot比较旧,没有整套framebuffer子系统框架,所以采取的是移植好官方裸机驱

S5PV210-arm裸机-LCD

LCD : LCD是一种液晶晶体显示器,他本身是不发光的,属于被动发光,而LED显示器,CRT显示器(老式的砖头电脑)是主动发光的. LCD是被动发光的,自己本身不会发光,我们在液晶面板上给他一个白光,背光.之后在电信号的驱动下,里面的液晶分子就会旋转,会透出不同程度的光.在配合滤光片的滤光,就可以让我们看来有不同颜色的光.因此LCD需要一个背光和滤光片作为辅助才可以. LCD的接口本质上是TTL电平的.5V表示逻辑1,0V表示逻辑0: SOC的LCD控制器是TTL电平的,LCD的接口也是TTL

LCD驱动分析(三)时序分析

参考:S3C2440 LCD驱动(FrameBuffer)实例开发<一>   S3C2440 LCD驱动(FrameBuffer)实例开发<二>