Esp8266 进阶之路31【外设篇】分享一个乐鑫esp8266 SDK编程使用 IIC总线驱动 0.96寸的OLED显示屏,显示天气预报信息。(附带Demo)

版权声明:本文为博主半颗心脏一心一血敲出来的原创作品,未经博主允许不得转载,多谢支持。 https://blog.csdn.net/xh870189248/article/details/83443614


一、前言;


在这里插入图片描述

  •    最近在我的技术群里看到蛮多人要求我出个开发板,好吧!那我抽个时间和群里的管理员出个开发板,带领大家去学习这个物联网黑马芯片esp8266的详细教程,当然是个人组织的,会方方面面介绍怎么入门,进阶,怎么学习网络协议栈,更好地开发自己的产品或者大学生比赛用到!当然了,最终还是会提到怎么接入阿里智能京东微联这些大平台!

  •     今天有幸整理下esp8266 使用IIC总线驱动 0.96寸的OLED显示屏,在之前的原生乐鑫SDK高级使用之封装Post与Get请求云端,拿到“天气预报信息”,我提到可以拿到信息之后,可以显示在显示屏上面,现在我准备开源这个步骤和代码,至于怎么解析json数据,大家可以去看看我另外一篇博客esp8266解析CJSON,之后显示加载出来就可以了!


二、esp8266iic接口?


  •     esp8266没有硬件iic接口,都是软件模拟出来的!而且ESP8266 ⽬目前提供作为 I2C 主设备的接⼝口,可以对其他 I2C 从设备(例如⼤大多数数字传感器)进⾏行控制与读写。

总的来说,官方对此有说明如下:

  1. 同时,芯⽚片内部提供上拉电阻,以节省外部的上拉电阻。
  2. ESP8266 作为 I2C 主机的 SDA 与 SCL 线波形由 GPIO 模拟产⽣生,在 SCL 的上升沿之后 SDA 取数。SCL⾼高低电平各保持 5us,因此 I2C 时钟频率约为 100KHz。
  3. 每个 GPIO 管脚内部都可以配置为开漏模式(open-drain),从⽽而可以灵活的将 GPIO ⼝口⽤用作 I2C data 或 clock 功能。

三、如何显示中文文字在显示屏?


  • 第一步:这个步骤相信大家都清楚,首先要取模,我这里先从Windows系统新建一个.bmp格式的图片,注意文件像素大小是128*64,因为我们的oled像素就是这个!

在这里插入图片描述


  • 第二步:打开取模软件小工具,我这里使用的是PCtoLCD2002,打开一个文件,选择我们上面的.bmp文件。如图:

在这里插入图片描述


  • 第三步:注意保存的取模数据的格式,选项如下:

在这里插入图片描述


  • 第四步:在软件下面有个生成字模,然后我们保存为.txt文档,后面代码工程会用到!

四、修改工程


  • 我分享的工程代码是弄好了字模数组的,大家只要修改下即可,在bmp.h头文件下面的BMP[]数组,您只需要替换为您的字模即可!注意数组格式!!

  • 下面贴下部分代码:
void user_init(void) {

	i2c_master_gpio_init();
	OLED_Init(); //oled初始化
	OLED_ShowStr(0, 3, "System Start", 2); //显示System Start

	//	显示延时10秒
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	os_delay_us(60000);
	//	清屏
	OLED_CLS();
	//	显示位图,自左上角0,0,位置分辨率点起,至第128个分辨率点、第8行的右下角,显示图片“esp8266 天气预报”的位图数据
	OLED_DrawBMP(0, 0, 128, 8, BMP);

}
  • 因为是软件模拟出来的,所以,可以任意修改为你想要的gpio口,我都为您宏定义好了!您只需要在i2c_master.h头文件重新修改即可!注意下管脚对应的寄存器哈!下面是我自己的定义!
#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO4_U
#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_GPIO5_U
#define I2C_MASTER_SDA_GPIO 4
#define I2C_MASTER_SCL_GPIO 5
#define I2C_MASTER_SDA_FUNC FUNC_GPIO4
#define I2C_MASTER_SCL_FUNC FUNC_GPIO5

五、一些必要的函数说明!


在这里插入图片描述

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/xh870189248/article/details/83443614