一、I2C简介
1、I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
2、总线特点:I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
3、 I2C串行总线概述
I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。
I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
每个接到I2C总线上的器件都有唯一的地址。主机与其他器件间的数据传送可以是由主机发送数据到其他器件,这时主机即为发送器。由总线上接收数据的器件即为接收器。
在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。
二、I2C接口实验
1、准备工作
按照下图路径打开下载的第一个安装包,打开OLED
2、生成字模
点击设置更改为下列设置
输入了自己想要的字之后点生成字模,然后将生成后的复制到程序代码中
生成自己的名字(汉字用英文字母代替)
{0x40,0x00,0x47,0xC2,0x44,0x41,0x44,0x42,0x7C,0x7C,0x01,0x00,0x01,0x00,0xFF,0xFF,0x01,0x02,0x05,0x84,0x09,0x60,0x11,0x10},
{0x61,0x08,0x01,0x04,0x01,0x02,0x00,0x00},/“Z”,0/
{0x08,0x20,0x08,0x22,0x08,0x41,0xFF,0xFE,0x08,0x80,0x09,0x00,0x20,0x10,0x2F,0xD0,0x2A,0x98,0x2A,0x96,0xFF,0xD0,0x2A,0x91},
{0xAA,0xBF,0x6F,0xD0,0x20,0x10,0x00,0x00},/“B”,1/
{0x00,0x00,0x3F,0xF0,0x22,0x20,0x22,0x20,0x22,0x20,0x3F,0xF1,0x00,0x02,0x00,0x0C,0x7F,0xF0,0x44,0x40,0x44,0x40,0x44,0x42},
{0x44,0x41,0x7F,0xFE,0x00,0x00,0x00,0x00},/“M”,2/
{0x00,0x10,0x00,0x10,0x00,0x10,0x0F,0xD0,0x0A,0x90,0x0A,0x90,0x0A,0x90,0xFA,0xFF,0x4A,0x90,0x4A,0x90,0x4A,0x90,0x4F,0xD0},
{0x40,0x10,0x40,0x10,0x00,0x10,0x00,0x00},/“Z”,3/
3、修改代码
再打开第一步打开的keil代码
将生成的字模复制过去
再打开main.c,修改下列代码
showchinese函数用来显示汉字
showstring函数用来显示字符串
4、将IIC连接到开发板
5、运行程序
将刚刚修改的程序下载到开发板中
显示结果:
6、显示温湿度
接着上篇的工程,将之前温湿度模块中的myiic.c和hemtem.c文件移植到这个工程里,并添加路径,得到如下:
修改主程序如下:
#include "delay.h"
#include "sys.h"
#include "oled.h"