OLED显示模块 IIC接口

思路分析

1.初始化
2.显示位置
3.显示内容

IIC的相关内容

IIC的上拉电阻 把scl和sda 拉成高电平
在这里插入图片描述
IIC的速率
在这里插入图片描述
在这里插入图片描述
如果是标准模式速度为(100kb/s) 在一个周期内(10us 1/100000)绿色框起来 传输一个位 一个bit的数据 要是想传一个字节的数据 就再八个周期里完成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.初始化

把OLED看成是12864个LED组成
把led人为的分为两个部分
1.128
64的led灯
2. 128*64的表格 要是往表格中写入1 对应的第一部分的led就亮
3. 在这里插入图片描述

在每一个单元格中写1对应的led灯就亮
举例;在屏幕的任意位置显示一个点 要显示数字,字符 汉字图形 这些图案的基本组成单元都是点

1.初始化

在这里插入图片描述
第一个iic的初始信号 start
在这里插入图片描述
IIC开始信号 第二步承接地址
在这里插入图片描述
高七位 最后一位b0 b0为1就是读取 为0就是写(发送)这里我们要写入就是0 转化成16进制
在这里插入图片描述
这里就是 在这里插入图片描述
第三步.经过slave address后到达ack 回复一个ack信号
在这里插入图片描述
在这里插入图片描述
第四步
在这里插入图片描述
c0为0表示发送字节(数据字节) D/C为0表示发送命令 为1表示发送数据 这里我们要发送命令故为0
后面都为0
在这里插入图片描述
同样 在赋值完control byte 后还需要一个ack应答信号
第四步
在这里插入图片描述
在contro byte 完成后 ack应答信号完成后 进入data byte 字节 写入命令 这里要写入的命令是cmd
在这里插入图片描述
同样写完一个data byte后要写入一个ack应答信号 最后是IIC的停止 Stop
整个初始化的命令函数为
在这里插入图片描述
同理发送数据的函数如下

2.显示位置

之前说过 把OLED人为的分为两部分 1是带有12864个的led 2是一个12864的单元表格 表格中每一个单元格对应着以一个小led灯 为0就灭 为1就亮
在这里插入图片描述
表格如图所示 令0-7行为page 8-14行为page1 每个8行都取名page 一共有64行 所以一共有page0-page7 那么这样就可以便于分一个字节
在这里插入图片描述
写一个0x08进去 可能对应的oled的 col0的第四个led就亮(转化为二进制去看)如果再次写入一个0x08进去可能是想下或向有的第二行或第一列的led灯亮
在这里插入图片描述
如图 再写入一个0x08可能是向右边一列 或向下一行
这里我们以向右为例子 一直写入0x08则一行的led灯都亮起来 那到底是向右边还是向下 就涉及的了寻址模式

寻址模式

这里我们选用页寻址模式
在这里插入图片描述
确定第几列 col 然后要写入到的数据
在这里插入图片描述
确定页寻址模式 page模式 就是要选中page
在这里插入图片描述
说明书上的page模式 最高四位1011(对应的16进制为b) 后面四位就是选取page 0xb0就是选取page0
0xb0+i i=0就是选取page0 i=1就是选取page1 依次选取
在这里插入图片描述
选定page之后 选定第几列 (不细说)在这里插入图片描述
然后写入数据
在这里插入图片描述
点的显示完成了 要实现字符 汉字之类的要借助字模工具

IIC代码的模拟

#include "IIC.h"
#include "reg52.h" 
#include "main.h"
#include "Delay.h"
#include "reg52.h"	
void IIC_Start()
{
	IIC_SCL=1;//模拟iic的起始拉高
	IIC_SDA=1;
	Delay5us();
	IIC_SDA=0;
	Delay5us();
	IIC_SCL=0;

}
void IIC_Stop()//模拟iic的停止
{
	IIC_SCL=1;
	IIC_SDA=0;
	Delay5us();
	IIC_SDA=1;
	Delay5us();

}
void IIC_Write_byte(unsigned char byte)//模拟iic的写入数据
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		byte<<1;
		IIC_SDA=CY;//传进来的byte数据左移一位 把最高位丢掉 cy就是把最高位拿回给IIC_SDA
	  IIC_SCL=1;
		Delay5us();
		IIC_SCL=0;
		Delay5us();
	}
 IIC_SCL=1;//模仿IIC的应答
 Delay5us();
 IIC_SCL=0;
 Delay5us();

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值