当前位置:网站首页>IIC驱动OLED
IIC驱动OLED
2022-08-04 19:37:00 【Paradise_Violet】
目录
前言
ESP8266 ⽬前提供作为 I2C 主设备的接⼝,可以对其他 I2C 从设备(例如⼤多数数字传 感器)进⾏控制与读写。
ESP8266 作为 I2C 主机的 SDA 与 SCL 线波形由 GPIO 模拟产⽣,I2C 时钟频率约为 100 kHz。
IIC接口
I2C master 接⼝
初始化
i2c_master_gpio_init:GPIO 硬件初始化。
具体如下:
1. 选择 pin 脚功能,配置为 GPIO
2. 配置 GPIO 为开漏模式
3. 初始化 SDA 与 SCL 为⾼电平
4. 使能 GPIO 中断并复位从机状态。
i2c_master_init(void):复位从机状态
IIC起始
i2c_master_start(void):主机产⽣ I2C 起始条件。
IIC停止
i2c_master_stop(void):主机产⽣ I2C 停⽌条件。
I2C 主机回复 ACK
i2c_master_send_ack(void):设置 I2C 主机应答 ACK。(8266应答从机)
I2C 主机回复 NACK
i2c_master_send_nack(void):设置 I2C 主机回复 NACK。(8266不应答从机)
检查 I2C 从机应答
bool i2c_master_checkAck(void):检查从机应答状态(8266检查从机是否应答)
向 I2C 总线写数据
i2c_master_writeByte(uint8 wrdata):向 I2C 总线写数(8266向iic总线写入一个字节数据)
向 I2C 总线读数据
i2c_master_readByte (void):从 SPI slave 读取⼀个字节(8266从iic总线中读取一个字节数据)
8266原理图
SCL----GPIO14 SDA-------GPIO2
ESP-12模组的led阳极接的是3.3v阴极串联电阻接到GPIO2,当我们使用GPIO2作为iic的SDA作为iic通信时,这个led会亮,正常现象
注:如果想使用IIC_ APl函数,需将 【i2c master.h、i2c master.c】添加到正确的工程文件夹中,并包含头文件
将 【i2c master.h、i2c master.c】 、 [oled.h、 oled.c、oledfonth】文件添加到工程文件夹中。
1、将【i2Cmaster.c】添加到<app/driver>下,将【i2Cmasterh】添加到<app/include/driver>下
如果【oled.h】不是放在<app/include/driver>下,需修改所有包含【i2C_master.h】头文件路径
2、将【oled.c】添加到<app/driver>下,将【oled.h、oledfont.h】添加到<app/include/ driver>下
如果【oled.h】不是放在<app/include/driver>下,需修改所有包含【oled.h】头文件路径
如果【oledfonth】不是放在<app/include/driver>下,需修改所有包含 【oledfont.h】头文件路径
3、如果<user main.c>中没有【delay ms】函数,那么在<user main.c>中添加【delay ms】函数。因为【oled init函数】中需使用【delay ms函数】
如何使用OLED驱动函数
0.96'OLED分辨率二= 128*64,即【每一行有128个点,每一列有64个点】
【oledfont.h】中字符的大小为【8*16】,即:一个字符占【横向8个点、纵向16个点】
只支持ASCI码表中,从【'"】~[’~'】的字符
1、首先在<user init>函数中,执行 「OLED_ Inito:】初始化函数
2、调用【OLED_ Showstring(x,y,"…”)】来显示字符/字符串
注:【x、y从O开始】
3、调用【OLED_ Show/Px,y, A】来显示【点分十进制1P地址】 注:【x、y从0开始】【OLED ShowString(x, y,“....”)】
【x】OLED显示字符串的起始列(1字符占8列) 注:【x】尽量能整除8
如果字符串超过行尾,则会跳到下一个字符行【y】OLED显示字符串的起始页(1页=8行) 注:【y】尽量能整除2
尽量不要超过【6】
宇符显示位置 == (x, y*8)
可以认为OLED是二维坐标系的第四象限(y |-y|,x趋于0、y趋于0,则显示的字符->左上角(原点)【OLED ShowIP(x, y, A)】
注:【u8 A[4]】,A是IP地址数组的首地址,每个元素对应一个<=255的整数
建议:在程序中,初始化OLED后
执行【OLED_ ShowString(x, y. "0123456789ABCDEFGHJKLMN")】,改变【x、y】的值,多试几次就可以了。
一定要定义毫秒延时函数
因为在oled初始化的时候需要使用毫秒延迟函数
// 毫秒延时函数
//===========================================
void ICACHE_FLASH_ATTR delay_ms(u32 C_time)
{ for(;C_time>0;C_time--)
os_delay_us(1000);
}
user_init
在user_init中首先执行oled初始化操作,之后调用oled显示函数来显示字符串或是点分十进制形式的ip地址
OLED显示字符串
8*8=64, IIC_OLED在Project后面所以y不需要改变还是0
// OLED显示字符串
//-------------------------------------------------------------------------------------------------------------------------
OLED_ShowString(0,0,"Project="); // 从(0,0)开始显示
OLED_ShowString(64,0,"IIC_OLED"); // 从(64,0)开始显示 // 因为,【Project=】一共8个字符,横向上占用【64】个点
OLED显示【点分十进制_IP地址】
// OLED显示【点分十进制_IP地址】
//-------------------------------------------------------------------------------------------------------------------------
u8 IP_Address[4];
IP_Address[0] = 192;
IP_Address[1] = 168;
IP_Address[2] = 4;
IP_Address[3] = 1;
// u8 IP_Address[4] = { 192,168,4,1 }; // 数组形式表示【点分十进制_IP地址】
OLED_ShowString(0,2,"IP:"); // 从(0,2)开始显示 // 因为【Project=IIC_OLED】在纵向上占用了【2】页(2*8个点)
OLED_ShowIP(24, 2, IP_Address); // 从(24,2)开始显示 // 因为,【IP:】一共3个字符,横向上占用【24】个点
最后调用oled显示字符串函数来显示一个比较长的字符串来看看如果字符串超过了行尾会发生什么情况
OLED_ShowString(0,4,"0123456789ABCDEFGHIJKLMN"); // 从(0,4)开始显示
// 因为【Project=IIC_OLED】【IP:192.168.4.1】在纵向上占用了【4】页(4*8个点)
边栏推荐
- 简易数据缓存层的建立
- Embrace the Cmake child is simple and practical, but inflexible
- 一些性能测试的要点
- ELECTRA:Pre-training Text Encoders as Discriminators Rather Than Generators
- Switch node version and switch npm source tool
- 指静脉识别-matlab
- 四维图新:子公司首款功能安全 MCU 芯片已陆续送样
- SOA面向服务架构:服务、服务实例、ARXML、服务接口调用以及各参与方
- 七夕福利!中奖名单:书籍免费送!
- 基于YOLOV5行人跌倒检测实验
猜你喜欢
随机推荐
数据库治理的探索与实践
really time ntp service start command
Openharmony code framework (2) the person that
目标检测的发展与现状
四维图新:子公司首款功能安全 MCU 芯片已陆续送样
电脑一键重装系统内存完整性无法打开怎么办
openharmony代码框架初识(2)
Chrome 开发者工具 performance 标签页的用法
【最新资讯】2022下半年软考新增2个地区公布报名时间
华为WLAN技术:AP上线及相关模板的配置实验
Seata source code analysis: various message processing processes of seata server
【HCIP】MPLS WPN 实验
[Awards for Essays] Autumn recruitment special training to create your exclusive product experience
《支付宝体验设计精髓》一书,跟测试相关性知识记录
Ant Group's time series database CeresDB is officially open source
指静脉识别-matlab
Query the published version records of the APP Store
MogDB学习笔记-环境准备及单实例安装
Dragoma (DMA) Metaverse System Development
Order of lds links