arduino连接lcd1602使用方法软件_arduino 6色液晶

arduino连接lcd1602使用方法软件_arduino 6色液晶接线图[captionid=”attachment_1183″align=”alignnone”width=”1108″]LCD1602A接线图(4位)[/caption]4位接线法[codesyntaxlang=”cpp”]/***VSS…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  • 接线图

LCD1602A接线图(4位)
LCD1602A接线图(4位)

132950fbbbolz4q0qs1bbo

  • 4位接线法

[codesyntax lang=”cpp”]

/**
* VSS GND
* VDD 5V
* V0  GND
* RS  12
* RW  11
* E   10
* D4  9
* D5  8
* D6  7
* D7  6
* A  V5
* K  GND
* from http://surenpi.com
* created 2015/3/23
*/
int LCD1602_RS=12;
int LCD1602_RW=11;
int LCD1602_EN=10;
int DB[] = { 6, 7, 8, 9};

char str1[]="Welcome to";
char str2[]="surenpi";
char str3[]="find me";
char str4[]="surenpi.com";
 
void LCD_Command_Write(int command)
{
  int i,temp;
  digitalWrite( LCD1602_RS,LOW);
  digitalWrite( LCD1602_RW,LOW);
  digitalWrite( LCD1602_EN,LOW);
 
  temp=command & 0xf0;
  for (i=DB[0]; i <= 9; i++)
  {
     digitalWrite(i,temp & 0x80);
     temp <<= 1;
  }
   
  digitalWrite( LCD1602_EN,HIGH);
  delayMicroseconds(1);
  digitalWrite( LCD1602_EN,LOW);
   
  temp=(command & 0x0f)<<4;
  for (i=DB[0]; i <= 9; i++)
  {
     digitalWrite(i,temp & 0x80);
     temp <<= 1;
  }
   
  digitalWrite( LCD1602_EN,HIGH);
  delayMicroseconds(1);
  digitalWrite( LCD1602_EN,LOW);
}

void cleanScreen(int delayTime = 50)
{
   LCD_Command_Write(0x01);
      
   delay(delayTime);
}
 
void LCD_Data_Write(int dat)
{
  int i=0,temp;
  digitalWrite( LCD1602_RS,HIGH);
  digitalWrite( LCD1602_RW,LOW);
  digitalWrite( LCD1602_EN,LOW);
   
  temp=dat & 0xf0;
  for (i=DB[0]; i <= 9; i++)
  {
     digitalWrite(i,temp & 0x80);
     temp <<= 1;
  }
   
  digitalWrite( LCD1602_EN,HIGH);
  delayMicroseconds(1);
  digitalWrite( LCD1602_EN,LOW);
   
  temp=(dat & 0x0f)<<4;
  for (i=DB[0]; i <= 9; i++)
  {
     digitalWrite(i,temp & 0x80);
     temp <<= 1;
  }
   
  digitalWrite( LCD1602_EN,HIGH);
  delayMicroseconds(1);
  digitalWrite( LCD1602_EN,LOW);
}
 
void LCD_SET_XY( int x, int y )
{
  int address;
  if (y ==0)    address = 0x80 + x;
  else          address = 0xC0 + x;
  LCD_Command_Write(address);
}
 
void LCD_Write_Char( int x,int y,int dat)
{
  LCD_SET_XY( x, y );
  LCD_Data_Write(dat);
}
 
void LCD_Write_String(int x,int y,char *s, int delayTime = 50)
{
  LCD_SET_XY(x, y);    //设置地址
  
  int i = 0;
  while(*s && ++i <= 16)             //写字符串
  {
    LCD_Data_Write(*s);   
    s++;
  }
  
  delay(delayTime);
  
  if(*s)
  {
    cleanScreen();
    LCD_Write_String(x, y, s, delayTime);
  }
}
 
void setup (void)
{
  int i = 0;
  for(i = 6; i <= 12; i++)
  {
    pinMode(i,OUTPUT);
  }
  
  delay(100);
  LCD_Command_Write(0x28);//4线 2行 5x7
  delay(50);
  LCD_Command_Write(0x06);
  delay(50);
  LCD_Command_Write(0x0c);
  delay(50);
  LCD_Command_Write(0x80);
  delay(50);
  LCD_Command_Write(0x01);
  delay(50);
}
 
void loop (void)
{
  cleanScreen();
  LCD_Write_String(3,0,str1);//第1行,第4个地址起
  LCD_Write_String(0,1,str2, 3000);//第2行,第2个地址起
  
  cleanScreen();
  LCD_Write_String(0,0,str3);
  LCD_Write_String(0,1,str4, 3000);
}

[/codesyntax]

  •  8位接线法

[codesyntax lang=”cpp”]

/**
* 8 bit
* from http://surenpi.com
*/
int DI = 12;
int RW = 11;
int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚
int Enable = 2;
 
void LcdCommandWrite(int value)
{
  // 定义所有引脚
  int i = 0;
  for (i=DB[0]; i <= DI; i++) //总线赋值
  {
     digitalWrite(i,value & 01);//因为1602液晶信号识别是D7-D0(不是D0-D7),这里是用来反转信号。
     value >>= 1;
  }
  digitalWrite(Enable,LOW);
  delayMicroseconds(1);
  digitalWrite(Enable,HIGH);
  delayMicroseconds(1);  // 延时1ms
  digitalWrite(Enable,LOW);
  delayMicroseconds(1);  // 延时1ms
}
 
void LcdDataWrite(int value)
{
  // 定义所有引脚
  int i = 0;
  digitalWrite(DI, HIGH);
  digitalWrite(RW, LOW);
  
  for (i=DB[0]; i <= DB[7]; i++)
  {
     digitalWrite(i,value & 01);
     value >>= 1;
  }
  
  digitalWrite(Enable,LOW);
  delayMicroseconds(1);
  digitalWrite(Enable,HIGH);
  delayMicroseconds(1);
  digitalWrite(Enable,LOW);
  delayMicroseconds(1);  // 延时1ms
}
 
void setup (void)
{
  int i = 0;
  for(i=Enable; i <= DI; i++)
  {
     pinMode(i,OUTPUT);
  }
  
  delay(100);
  // 短暂的停顿后初始化LCD
  // 用于LCD控制需要
  LcdCommandWrite(0x38);  // 设置为8-bit接口,2行显示,5x7文字大小                     
  delay(64);                     
  LcdCommandWrite(0x38);  // 设置为8-bit接口,2行显示,5x7文字大小                        
  delay(50);                     
  LcdCommandWrite(0x38);  // 设置为8-bit接口,2行显示,5x7文字大小                        
  delay(20);                     
  LcdCommandWrite(0x06);  // 输入方式设定
                           // 自动增量,没有显示移位
  delay(20);                     
  LcdCommandWrite(0x0E);  // 显示设置
                           // 开启显示屏,光标显示,无闪烁
  delay(20);                     
  LcdCommandWrite(0x01);  // 屏幕清空,光标位置归零  
  delay(100);                     
  LcdCommandWrite(0x80);  // 显示设置
                           // 开启显示屏,光标显示,无闪烁
  delay(20);                     
}
 
void loop (void)
{
  LcdCommandWrite(0x01);  // 屏幕清空,光标位置归零  
  delay(10);
  LcdCommandWrite(0x80+3);
  delay(10);                     
  // 写入欢迎信息
  LcdDataWrite('W');
  LcdDataWrite('e');
  LcdDataWrite('l');
  LcdDataWrite('c');
  LcdDataWrite('o');
  LcdDataWrite('m');
  LcdDataWrite('e');
  LcdDataWrite(' ');
  LcdDataWrite('t');
  LcdDataWrite('o');
  delay(10);
  LcdCommandWrite(0xc0+1);  // 定义光标位置为第二行第二个位置  
  delay(10);
  LcdDataWrite('g');
  LcdDataWrite('e');
  LcdDataWrite('e');
  LcdDataWrite('k');
  LcdDataWrite('-');
  LcdDataWrite('w');
  LcdDataWrite('o');
  LcdDataWrite('r');
  LcdDataWrite('k');
  LcdDataWrite('s');
  LcdDataWrite('h');
  LcdDataWrite('o');
  LcdDataWrite('p');
  delay(5000);
  LcdCommandWrite(0x01);  // 屏幕清空,光标位置归零  
  delay(10);
  LcdDataWrite('I');
  LcdDataWrite(' ');
  LcdDataWrite('a');
  LcdDataWrite('m');
  LcdDataWrite(' ');
  LcdDataWrite('h');
  LcdDataWrite('o');
  LcdDataWrite('n');
  LcdDataWrite('g');
  LcdDataWrite('y');
  LcdDataWrite('i');
  delay(3000);
  LcdCommandWrite(0x02); //设置模式为新文字替换老文字,无新文字的地方显示不变。
  delay(10);
  LcdCommandWrite(0x80+5); //定义光标位置为第一行第六个位置
  delay(10);  
  LcdDataWrite('t');
  LcdDataWrite('h');
  LcdDataWrite('e');
  LcdDataWrite(' ');
  LcdDataWrite('a');
  LcdDataWrite('d');
  LcdDataWrite('m');
  LcdDataWrite('i');
  LcdDataWrite('n');
  delay(5000);
}

[/codesyntax]

  • 使用LiquidCrystal库来连接

使用LiquidCrystal这个库的话,代码会简洁很多,而且还封装还一些常用函数。 [codesyntax lang=”cpp”]

/**
7 gpios demo

The circuit:
VSS GND
VDD 5V
V0 10K resistor or GND
RS 12
RW 11
EN 10
D4 9
D3 8
D2 7
D1 6

from www.surenpi.com
created 2015/3/25
*/
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 9, 8, 7, 6);

void setup() {
  lcd.begin(16, 2);
  lcd.print("www.surenpi.com");
}

void loop() {  
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
}

[/codesyntax] 注意:上面的代码中使用了7个GPIO接口,其实把RW接到GND上也行,这样的就可以节省一个GPIO。如果要把RW接GND话,就要使用另外一个构造函数:LiquidCrystal lcd(12, 10, 9, 8, 7, 6)

  • 参考

 树莓派上怎么连接LCD1602呢,请看这里。

转载于:https://my.oschina.net/surenpi/blog/604780

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190509.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nfs默认端口号是多少_nfs怎么访问

    nfs默认端口号是多少_nfs怎么访问默认是2049参考博客:https://www.cnblogs.com/powpoia/p/6553205.html

    2022年4月19日
    145
  • Dlsym_c=α+βy

    Dlsym_c=α+βy为什么80%的码农都做不了架构师?>>>…

    2022年10月27日
    0
  • nvidia显卡无法弹出或拔出_英伟达控制面板显示未连接到gpu

    nvidia显卡无法弹出或拔出_英伟达控制面板显示未连接到gpu上个月在新入手的笔记本上安装了一个CUDA的开发环境,并选择安装了GeForceExperience工具,前两天打开GeForceExperience工具浏览时,工具提醒可以更新NVIDIA显卡驱动,于是便勾选并更新了NVIDIA显卡驱动,更新完成之后就没管它,也没有再使用过CUDA开发环境,直到昨天打开CUDA开发环境准备调试一个应用程序时,突然弹出错误提示框:       

    2022年8月31日
    2
  • c语言位运算符解释_c语言逻辑关系运算符

    c语言位运算符解释_c语言逻辑关系运算符      位操作是程序设计中对位模式按位或二进制数的一元和二元操作,在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。按位取反:~’~’是一元运算符,用来对一个二进制数按位取反,把0变为1,把1变为0。如下例子所示。…

    2022年10月4日
    0
  • 学成在线项目怎么样(学成在线微服务)

    CMS接口开发1项目的功能构架1.1项目背景1.2功能模块1.3项目原型2项目的技术架构2.1技术架构2.2技术栈2.3开发步骤3CMS需求分析3.1什么是CMS3.2静态门户工程搭建3.2.1导入门户工程3.2.2配置虚拟主机 在nginx中配置虚拟主机:3.2.3SSI服务端包含技术3.3CMS页面管理需求4CMS服务端工程搭建注释也是必不可少的KaTeX数学公…

    2022年4月16日
    40
  • Java学习路线总结,搬砖工逆袭Java架构师[通俗易懂]

    前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干活的,缺PM。也许这也是这个行业的现状,也是传说中的“35岁危机”的最好解释,如果你马上35岁了,但是你能干的,毕业生也能干,老板还要你作甚?所以,从今天开始(2021年9月4日),开启《100天进阶高级工程师》系列。Java学习路线我觉得一个Java程序员的学习路线应该是:javase; javaweb; 数据库; ssm; springboot; 数据结构与算法; JVM;

    2022年4月9日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号