在开始之前,我们先了解一下什么是IIC。我们长话短说,只让大家了解就行了。IIC就是一种通信协议,他只需要两根线就可以让外围设备与单片机进行通信,所以硬件连接非常的方便。他也是一种总线的结构。
所以说到总线,他这两根线上面是可以连接很多设备的。这些设备用地址位来驱动。所以IIC设备必须要有一个地址。比如我们常见的存储芯片AT24C02。
AT24C02芯片 DIP8直插封装实物图
原理图及典型电路
I2C设备地址
协议格式中第一个字节(为slave address)由7位地址和一位R/W读写位组成的,这字节是个器件地址。
常用IIC接口通用器件的器件地址是由种类型号,及寻址码组成的,共7位。
如格式如下:D7 D6 D5 D4 D3 D2 D1 D0
1、器件类型:D7-D4 共4位决定的。这是由半导公司生产时就已固定此类型的了,也就是说这4位已是固定的。
2、用户自定义地址码:D3-D1共3位。这是由用户自己设置的,通常的作法如EEPROM这些器件是由外部IC的3个引脚所组合电平决定的(用常用的名字如A0,A1,A2)。这也就是寻址码。所以为什么同一IIC总线上同一型号的IC只能最多共挂8片同种类芯片的原因了。
3、最低一位就是R/W位,,“0”表示写,“1”表示读(通常读写信号中写上面有一横线,表示低电平)。所以I2C设备通常有两个地址,即读地址和写地址。
1602液晶常用库和函数
我们用1602液晶时,首先要将一个文件夹LiquidCrystal_I2C复制到Arduino安装路径里面的库文件夹中,因为默认安装的时候是没有带这个库的。如果不拷贝,编译的时候程序就会有错误提示。
以下是常用的关于1602液晶的函数
lcd.setCursor(0,1); //设置列和行,都是从0开始。
lcd.print(); //显示
lcd.print(num); //显示变量 lcd.print(‘9’);//显示单片字符
lcd.print(“hello!”); //显示字符串
lcd.cursor(); //显示光标 lcd.noCursor(); //关光标
lcd.blink(); //开闪烁 lcd.noBlink(); //关闪烁
lcd.display(); //显示
lcd.noDisplay(); //不显示
lcd.clear(); //清屏
lcd.backlight(); //开背光
lcd.noBacklight(); //关背光
IIC-1602液晶程序
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // 将LCD地址设置为0x27以显示16个字符和2行
void setup()
{
lcd.init(); // 初始化
lcd.backlight(); //开背光灯,这个功能如果用普通的1602是没有的
}
void loop()
{
lcd.setCursor(0,0); //从第1行,1列开始显示
lcd.print(“Arduino Display!”); // 显示字符串
lcd.setCursor(0,1); //从第2行,1列开始显示
lcd.print(“Hello,World!”); // 显示字符串
delay(3000); // 延时5S
lcd.clear(); //清除屏幕显示
delay(1000); // 延时1S
}
程序界面
显示效果
程序开机显示3S,过后。屏幕清除,清除过1S后。再显示。
显示效果
清屏效果
上面我们介绍了液晶的很多常用函数,网友们可以自己把这些常用函数加载进去试一下效果。这样通过不断的试验和练习,编程水平就会慢慢的提升起来。记住,世界上任何一门技能都没法速成。所以大家在学习的时候,要坚持再坚持。日拱一卒。如果学习的过程中有什么疑问了,也可以私信我们。后面,我们也会推出视频,详细的讲解本章节的内容。
本章节所有资料和软件都可以找我索取,请在私信或者发邮件时。注明资料编号:A008。一定要注明编号,要不然,我不知道大家需要什么资料。因为每天找我要软件和代码的网友太多了。
也不用说谢谢,如果您喜欢我们。请多多点赞和转发。让每一个人都享受编程带来的乐趣。