OELD显示模块思路 驱动烧录分三步: 初始化 显示位置 显示内容 大小:0.96(例) 像素:128x64(8192个像素点组成)
控制第几排、第几列的LED是亮还是灭来表达控制内容
理解方法:可以拆分成128x64的表格(表格的点控制LED的亮灭)
一、初始化 Oled.c文件(最下面)void OLED_Init(void) \\初始化函数 0xB0--set page address 页面地址 \\初始化只需要这个函数
进入解释
我们用是的IIC (爱放C):
从头开始学 S表示:start; 01110 w/r表示地址读写地址从计; ACK 表示回复一个应答信号 Co字节判断 D/C 命令、数据判断(命令:是void) ACK回复应该应答信号 Conntrol byte 控制字节信息发送完成 ACK回复应该应答信号 Data byte 数据信息发送 ACK回复应该应答信号 P stop 停止信号
*b7-b1是高七位; **b0是读写位,1=R(读)、0=w(写、发送指令); ***b7-b4是四位,b3-b0是四位,所以是0x78 //0表示写 ****Co字节判断 *****D/C 命令、数据判断
如果Co是0的话表示的是字节 如果D/C是0的话表示的是命令;是1的话表示数据;
Void Write_IIC_Data(unsigned char IIC_Data) IIC_Start(); \\第一步-开始信号 Write_IIC_Byte(0x78); \\网上叫从地址,我自己叫读写重新归零 IIC_Wait_Ack(); \\回复一个应答信号 Write_IIC_Byte(0x00); \\这里我们发的是数据所以用0 IIC_Wait_Ack(); \\这里是应该应答序号 Write_IIC_Byte(IIC_Data); //发送数据信息,也就是刚刚开始函数后面的IIC Data IIC_Wait_Ack(); //回复应该应答信号 IIC_Stop(); //停止信号 初始化源码:
写入数据源码:
对比:命令是0x00;数据是0x40.
二、位置和内容
1亮、0灭。 有64行=0~63;128行=0~127.
行:把0~7做为page0;以此类推有八个page;最后面是page7。 解释:八行有把个格,刚刚好代表八个字节。
例如:0x40,0x20 十六进制40=二进制1000000;20=0100000 0x40它是第一个,第一列的第一个led亮;第二个0x20就是第二排的第二个灯亮;(也可能是第二列的第二个led亮,因为我们没有加寻址,下面也会讲到);
这是一个水平寻址模式,自动增加方向; 方向:第一个page寻址到头后,跳到第二个page开始
这是垂直寻址模式,……自己想象;这两个模式寻址较慢,我们选用页寻址模式
整体显示思路:1、选模式(页寻址) 2、确定第几行page 3、确定第几列(col) 4、显示内容(数据、高低位)
1、选寻址模式
Command(命令)下来的Set Memory Addressing Mode(设置内存寻址模式) D/C#中的0 0,代表它是双字节;先要发送20这个命令在发送A[1:0]来判断模式;我们要是第三个模式:页寻址模式,so:0x20;0x02一起发送; 代码展示: Oled_write_Cmd(0x20); Oled_write_Cmd(ox02);
2、确定第几行page
Command中的Set PageStart、Address Address for Page、Addressing Mode(设置页面开始、页面地址、寻址模式)
一共有8个page;前面5个是固定的(也就是1、0、1、1、0);后面的3个刚好对着8个page;
Oled_Write_Cmd(oxbo+i); //设置页地址是(0~7)
3、确定第几列(col)
同上 4、内容 Oled_Write_Cmd(ox00); 低电平全亮 Oled_Write_Cmd(oxff); 高电平全灭
|