SSD1306-7针脚OLED的使用心得

这篇具有很好参考价值的文章主要介绍了SSD1306-7针脚OLED的使用心得。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        最近,想捣鼓捣鼓显示屏,本来想试着把TFT移植到32,试了好久不行,因为我太菜了。所以想着先从OLED开始,因为之前移植成功过。但是想深入了解一下,就细看了一下工程的底层代码。下面我写一下我的体会,如有不对的地方请批评指正。

        首先,对于显示屏来说,我觉得归根结底就两个方面,一个是写指令,一个是写数据(这个概念应该要有)。至于什么是写指令,什么是写数据。你在纸上写字,第一步应该要想写在哪个地方对吧,第二步再写字。所以简单来说,写指令就像是第一步,把你想写的位置告诉显示屏的芯片。学数据是第二步写字的过程,把要写的数据告诉显示屏的芯片。当然写指令还有着其他的意义。这就要具体对照数据手册来看了。

	OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
	OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
	OLED_WR_Byte(0x10,OLED_CMD);//---set high column address

          比如上述三行代码,是我从OLED初始化函数中截出来的,就是写命令的例子,把后面注释翻译过来便是本条指令的意义。下面便是SSD1306手册中的基本指令表,最后一行我们可以找到0xAE,所表示的意义和注释中的一样,这便是写命令的意义。

SSD1306-7针脚OLED的使用心得

        说完写命令到底是干什么的,我们来看看代码中是怎么实现写命令的,一般OLED分为4线,7线,7线中又分为3SPI、4SPI、IIC这三种通信协议,不熟悉通信模式的可以看看别的博主的讲解,我觉得看看时序图就可以理解了。

        这里我稍微讲一下4线SPI。 了解的可以跳过这一段。我们都知道通信分为同步通信和异步通信。同步通信就是有时钟信号作为参考,SPI属于同步通信。4线SPI的话四线就是时钟信号、MOSI(主机发送从机接收)、MISO(主机接收从机发送)、片选信号SS/CS。3线SPI便是把MOSI和MISO作为一根线引入。OLED的通信模式通过背面的电阻连接来决定。你们的OLED后面应该都有。显示哪几个电阻,就用0欧姆的电阻连接或者直接用锡连接。然后时钟信号滴答滴答自己跳,片选信号选中芯片,我们只需要在合适的时间改变我们要发送的值是不是就可以通信了呢?这就是SPI的大概了。

        回到OLED,我的OLED选择了3线SPI。并且通过软件模拟SPI的通信过程。何为软件模拟,就是把通信过程中高低电平的变化通过软件模拟出来。通过普通IO口就可以实现。可以节省硬件资源,让别的引脚干别的更重要的事情。比如高低电平转换是不是可以模拟时钟。MOSI、MISO的高低电平是不是可以代表我们发送的数据?这个地方卡了我一段时间,因为我SPI没学好。哈哈哈哈。所以这里听不懂的建议再去了解一下通信过程。

        最后接好线,讲一下这七根线分别是VCC(3.3V)、GND、D0(SCL)、D1(SDA)、RES(复位)、DC(写命令或者写数据上文讲的)、CS(片选)。VCC、GND不用我多说吧,供电引脚;D0、D1、CS是我前文提到的三线SPI。一般情况使用软件实现的。我认为应该是为了增强可移植性。你想别的芯片那个引脚可能没有特定功能但是一定可以作为普通IO口输出对吧。

        OK,根据你设置的GPIO引脚或者别的开源的库的引脚来连接。然后可以通过编写软件来模拟SPI给显示屏写指令或者数据了。下面是一个函数的例子。

void OLED_WR_Byte(u8 dat,u8 cmd)
{	
	u8 i;			  
	if(cmd)
	  OLED_DC_Set();//高电平
	else 
	  OLED_DC_Clear();//低电平  
	OLED_CS_Clear();//低电平
	for(i=0;i<8;i++)
	{			  
		OLED_SCLK_Clear();//低电平
		if(dat&0x80)
		   OLED_SDIN_Set();//高电平
		else 
		   OLED_SDIN_Clear();//低电平
		OLED_SCLK_Set();//高电平
		dat<<=1;   
	}				 		  
	OLED_CS_Set();//高电平
	OLED_DC_Set();//高电平   	  
} 

        其中两个参数,一个作为8位的数据,进行传输;一个cmd作为写命令或者写数据;如果cmd为1,DC引脚电平拉高,反之拉低;CS拉低片选中OLED;for循环里进行数据传输;里面的代码就是模拟的3线SPI传输的过程。data左移为一位一位传输。最后片选和DC拉高为默认状态。

        OK,写命令写数据的函数相信大家应该大概明白了。之后初始化里面的内容大家随便找一个开源库都可以看到是这个函数的集合,就是把芯片初始化的命令写到里面去,OLED才能正常使用,就像单片机一些引脚要初始化一样。写数据的函数也是一样。大家理解上面这个函数相信别的函数也就迎刃而解。最后附一张我的OLED图片。SSD1306-7针脚OLED的使用心得

        好的,今天的使用体会就写到这,请大家批评指正。嘻嘻文章来源地址https://www.toymoban.com/news/detail-425673.html

到了这里,关于SSD1306-7针脚OLED的使用心得的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP8266基于Lua开发使用U8g2模块驱动 i2c ssd1306 OLED显示

    📍相关篇《ESP8266基于Lua开发点灯示例》 📖U8g2对应的API接口函数: https://nodemcu.readthedocs.io/en/release/modules/u8g2/ 📺驱动显示效果: 🔖官方U8g2驱动Demo : https://github.com/nodemcu/nodemcu-firmware/blob/release/lua_examples/u8g2/graphics_test.lua ✨在使用U8g2时,可能会出现上传过程中报错的问题:

    2024年02月06日
    浏览(34)
  • STC单片机DS1307+ssd1306 oled时钟显示

    📌相关篇《STC单片机DS1302+ssd1306 oled时钟显示》 📍《STC单片机对DS1307读写操作》 ✨效果演示: 🌿实验对象:STC12C5A60S2 🌿屏幕型号:I2C ssd1306 0.96“ oled 🌿晶振频率:11.059MHz 🌿串口波特率:9600 📜串口打印读取信息: 🛠引脚说明 ✨由于屏幕接口ssd1306 0.96“ oled和DS1307的接

    2023年04月09日
    浏览(34)
  • 0.96寸OLED(SSD1306)屏幕显示(二)——超长文字水平滚动

    (一)基础功能介绍 (二)超长文字水平滚动 (三)屏幕垂直水平滚动 文章目录 前言 一、内置水平滚动方法 二、自定义水平滚动方法 总结 最近,我突发奇想去翻阅了一些我本科期间所做的一些小项目,发现都挺有意思的!当年做这些项目的时候可走了很多弯路,所以想

    2023年04月08日
    浏览(31)
  • 【STM32CubeMX】教程二_IIC驱动0.96oled屏幕(SSD1306)

    本篇博客涉及以下内容 IIC通讯原理讲解、代码编写 SSD1306驱动芯片datasheet讲解、驱动代码编写、0.96oled模块原理图说明 STM32CubeMX配置IIC 使用硬件:STM32F103C8T6 使用软件:STM32CubeMX、keil5(MDK)、VSCode(搭载keil assistant插件) 提示:以下是本篇文章正文内容   在计算机科学里,大

    2023年04月21日
    浏览(39)
  • 【STM32】 硬件IIC 驱动SSD1306(0.96 OLED模块) -- 1/4 库函数 学习

    经过了对于STM32的学习,但是大多数时候都还是以移植别人的历程然后修修改改为主。为了更好的巩固自己的学习能力。 所以此篇文章将会以记录我个人学习 硬件IIC 为案例,学习驱动IIC总线设备的能力。 1.《STM32F10x-中文参考手册》 2.《SSD1306芯片手册》 《STM32F10x-中文参考手

    2024年02月01日
    浏览(35)
  • 【WCH】CH32F203基于内部RTC+I2C SSD1306 OLED时钟和温度显示

    📌相关篇《【WCH】CH32F203基于内部RTC时钟+I2C SSD1306 OLED显示》 📺显示效果: ✨主要是在其基础 上增加温度显示,温度数据来源于DS18B20,更换了OLED驱动显示字体相关内容。 🔰仅作为功能演示,内部RTC精度不高,长时间运行需要依赖第三方数据校准才行。 🔖代码是从STM32工

    2023年04月26日
    浏览(41)
  • micropython SSD1306/SSD1315驱动

    目录 简介 代码 功能 显示ASCII字符 ​编辑 画任意直线  画横线  画竖线  画矩形  画椭圆  画立方体  画点阵图  翻转  反相  滚动 横向滚动 纵向滚动 奇葩滚动 我重新写了一个驱动,增加了一些功能,由于我的硬件是 128*64oled单色I2C, 我只适配了我的硬件。如果你的硬件

    2024年02月12日
    浏览(21)
  • ARDUINO STM32 SSD1306

    STM32F103XX系列SPI接口位置 在ARUDINO 下,(不需要设置引脚功能,不需要开启时钟设置,ARDUINO已经帮我们处理了) stm32f103c6t6 flash不足,不足以运行U8G2,产生错误(STM32F103C8T6 FLASH ram足够,直接运行示列) 改用U8X8,后将字体改为u8x8_font_artosserif8_n ,可以简单程序 使用U8X8可以显示

    2024年02月10日
    浏览(26)
  • 使用树莓派Pico、DHT11和SSD1306搭建一个温度湿度计(只使用官方库,以及官方案例代码的错误之处和解决方案)

    最近想树莓派 Pico、DHT11 温湿度传感器和 SSD1306 OLED 屏幕做一个温度湿度计,树莓派官方案例也分别有这两个设备的案例,我就想做个简单的温度湿度计作为学习微控制器的开始,结果遇到了一个大坑,所以写本文记录一下整个过程。 本文最后会实现一个能在 SSD1306 OLED 屏幕上

    2024年02月11日
    浏览(29)
  • stm32矩形按键(4*4)7针脚oled屏密码锁(入门级)

    本文采用7针脚0.96的OLED屏作为输出显示,以矩形按键作为输入,做一个简易的密码锁。 不同于其他文章,本文所介绍的密码锁,就单纯使用OLED屏与矩形按键,但由于本人也是初学者,还有一些功能没有实现,目前本工程仅实按键输入、OLED屏输出以及一个密码判断。 源码链接

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包