ssd1315驱动oled屏_oled屏幕的手机有哪些

ssd1315驱动oled屏_oled屏幕的手机有哪些淘宝隔壁老王家的OLED运动手环,非常的便宜2RMB一个。###Part0:可用器件列表0x00:OLDE屏幕:0.91inch,分辨率:12832,主控:SSD1306,接口:SPI,颜色:

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

淘宝隔壁老王家的OLED运动手环,非常的便宜2RMB一个。
ssd1315驱动oled屏_oled屏幕的手机有哪些

Part0:可用器件列表

0x00: OLDE屏幕:0.91 inch,分辨率:128*32,主控:SSD1306,接口:SPI,颜色:亮白
ssd1315驱动oled屏_oled屏幕的手机有哪些

0x01: CP2104 USB转串口芯片,I/O电压:3V ~ 3.6V,功能:桥,USB 至 UART,数据速率:2Mbps
这个芯片,JLC单卖9元左右,可以说2元买来只要USB2UART芯片是好的就能回本的。
ssd1315驱动oled屏_oled屏幕的手机有哪些ssd1315驱动oled屏_oled屏幕的手机有哪些
ssd1315驱动oled屏_oled屏幕的手机有哪些

0x02: 24C256 EEPROM存储芯片,32KB,品牌未知,数据手册可以参考ISSI24C256,I2C接口。
ssd1315驱动oled屏_oled屏幕的手机有哪些
ssd1315驱动oled屏_oled屏幕的手机有哪些

0x03: 其他元件,8M晶振,三线震动开关(计步用?),LTH7 4.2V单节锂电充电芯片,单片机型号抹了丝印无从查起:(…
ssd1315驱动oled屏_oled屏幕的手机有哪些

Part1:0.91inch OLED驱动

先上效果图,5*7 ASCII字体显示温湿度信息。
ssd1315驱动oled屏_oled屏幕的手机有哪些

屏幕引脚定义:
ssd1315驱动oled屏_oled屏幕的手机有哪些
ssd1315驱动oled屏_oled屏幕的手机有哪些
飞线进行连接,需要连接的引脚有(VDDB、VDD接3.3V)、(VSS接地)、(CS#片选)、(RES#复位)、(D/C#数据/命令控制线)、(SCLK SPI时钟)、(SDIN SPI的MOSI)
C2P-C2N、C1P-C1N接1000nF无极性电容,IREF 串接400K欧姆电阻接地,VCOMH、VCC串接2uF无极性电容接地,屏幕驱动测试这些都可以用板子上的,参数仅作为后期制作转接板参考用。
ssd1315驱动oled屏_oled屏幕的手机有哪些
驱动程序见我的github:https://github.com/Yanye0xFF/ESP8266-SSD1306

SSD1306驱动解析
上电时序:
ssd1315驱动oled屏_oled屏幕的手机有哪些
第一步:给屏幕VDD脚加电,这里同时也给VDDB脚加电。
ssd1315驱动oled屏_oled屏幕的手机有哪些
第二步:拉低RES#脚至少3微秒,然后再拉高,产生一个上升沿复位脉冲。
第三步:执行初始化步骤,设置显示时钟,内置buffer偏移地址,屏幕亮度等,具体可以参考上方git代码与SSD1306手册。

/**
 * @brief 屏幕复位,拉低RES#至少3us后拉高。
 * */
void ICACHE_FLASH_ATTR ssd1306Reset() {
	GPIO_OUTPUT_SET(RESET_PIN_NUM, GPIO_PIN_LOW);
	os_delay_us(10);
	GPIO_OUTPUT_SET(RESET_PIN_NUM, GPIO_PIN_HIGH);
}
#define CMD_CONTRAST       (0x81u)
#define CMD_DISPLAY_ON     (0xAFu)
#define CMD_DISPLAY_OFF    (0xAEu)
#define CMD_DISPLAY_OFFSET    (0xD3u)
#define CMD_DISPLAY_CLK_DIV   (0xD5u)

static const uint32_t INIT_CMD_LEN = 22;
static const uint8_t INIT_COMMANDS[] = {CMD_DISPLAY_OFF, CMD_DISPLAY_CLK_DIV, 0x80, 0xA8, 0x1F, CMD_DISPLAY_OFFSET,
		0x00, 0x40, 0x8D, 0x14, 0xA0, 0xC0, 0xDA, 0x02, CMD_CONTRAST, 0x00, 0xD9, 0xF1, 0xDB, 0x64, 0xA4, 0xA6};
/**
 * @brief SSD1306初始化,先发送0xAE关闭显示,再则放初始化数据,然后填充数据清屏,最后发送0xAF打开显示。
 * */
void ICACHE_FLASH_ATTR ssd1306Init() {
	uint32_t i = 0, j = 0;
	// send init commands
	for(; i < INIT_CMD_LEN; i++) {
		ssd1306SendCmd(*(INIT_COMMANDS + i));
	}
	// clear oled display data;
	for(i = 0; i < 4; i++) {
		ssd1306SendCmd(0xB0 + i);
		for(j = 0; j < 128; j++) {
			ssd1306SendData(0x00);
		}
	}
	// turn on display
	ssd1306SendCmd(0xAF);
}

SSD1306 内置显存组织:
ssd1315驱动oled屏_oled屏幕的手机有哪些
由于该屏幕物理分辨率为128*32,因此片内显存只使用了Page0~Page3,扫描方式最小区域是一个Page,由于SSD1306支持显存地址重映射(方便实现镜像功能),在本文的驱动代码中使用的是默认地址,即上图黑色字体部分。
扫描方式:
ssd1315驱动oled屏_oled屏幕的手机有哪些
MCU内存刷新到显存方式:
monochrom模式 1bit颜色,一个字节表示8像素。

#define DISPLAY_WIDTH    128
#define DISPLAY_HEIGHT   32
#define DISPLAY_PAGE     4
static uint8_t *DISPLAY_BUFFER;
DISPLAY_BUFFER = (uint8_t *)os_malloc(sizeof(uint8_t) * (DISPLAY_WIDTH >> 3) * DISPLAY_HEIGHT);

/**
 * @brief Page0的地址为B0,一个page为128*8像素,单个page内纵向扫描,一次发送一字节;由此依次进行Page1,Page2...
 * */
void ssd1306Flush() {
	uint32_t page, column, i;
	uint8_t data, byte;
	for(page = 0; page < DISPLAY_PAGE; page++) {
		ssd1306SendCmd(0xB0 + page);
		for(column = 0; column < DISPLAY_WIDTH; column++) {
			// cat data
			for(i = 0, data = 0x00; i < 8; i++) {
				byte = *(DISPLAY_BUFFER + (page * 128) + (i << 4) + (column >> 3));
				data |= (((byte >> (column % 8)) & 0x1) << i);
			}
			ssd1306SendData(data);
		}
	}
}

Part2:制作USB2UART转接小板

这一步非常简单,按照CP2104原理图飞线即可,这里我仅接出了TXD、RXD和必要的电源与地,需要流控信号的还可以从芯片引脚上飞出DTR、DSR、RTS…
ssd1315驱动oled屏_oled屏幕的手机有哪些

Part3:SSD1306、CP2104技术手册下载

ssd1315驱动oled屏_oled屏幕的手机有哪些
https://files.cnblogs.com/files/yanye0xff/doc.zip

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167746.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • C++——随机数算法

    C++——随机数算法前言:在这里,我们要明确,计算机随机化出来的数字都是伪随机数字,就是近似于随机数,简单来说这个伪随机数需要依靠一个种子来决定这个数值的大小。默认情况下,这个种子的值是1。这造成了如果不改变种子的值,我们生成的随机数就会是同一个值。所以,我们就要设置种子C语言版本在C语言里,产生随机数主要用上两个函数,一个是srand(),另外一个是rand()函数。这个也没啥介绍的,具体看代码,就传递几个参数。rand()函数会返回一个范围在0到RAND_MAX(至少是32767,我的机器上是int的最大值)之间的

  • Android hybrid_android混合开发

    Android hybrid_android混合开发关于混合开发常问道的问题:Android如何嵌套h5页面?h5一般调用哪些Android哪些接口功能?Android如何调用网页(js)功能?问题1.ndroid如何嵌套h5页面答案:当我们用vue开发完项目,执行nmprunbuild打包生产dist目录,如何嵌套在Android框架中创建网页存放文件夹,在Android工程res下面添加assets文件夹,把dist目录内容拷贝到assets下。找到Android项目中.xml布局文件,添加webview组件及设置web

  • 使用javascript下载网络图片「建议收藏」

    使用javascript下载网络图片「建议收藏」**因为某些原因需要使用js下载网站上的图片,查了万恶的某度,结果解决方案都是一样的,试了试,果然不行。于是乎,上stackoverflow一查,答案就出来了。直接上代码,很简单,答案使用jquery,改成原生js也不难的**functiondownloadImage(src){vara=$("&lt;a&gt;&lt;/a&gt;").attr("href",…

  • ubuntu-apache下隐藏thinkphp入口文件index.php

    ubuntu-apache下隐藏thinkphp入口文件index.php

  • python字符串转化列表_Python列表到字符串的转换[通俗易懂]

    python字符串转化列表_Python列表到字符串的转换[通俗易懂]python字符串转化列表Sometimeswewanttoconvertthelisttoastringsothatwecanprintitorlogitfordebuggingpurposes.Inthistutorial,wewilllearnhowtoconvertalisttostringinaPythonpro…

  • make menuconfig学习

    make menuconfig学习1.简介menuconfig是一套图像化配置工具,由ncurses库提供软件支持。ncurses库提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。menuconfig本身的软件只负责提供menuconfig工作的这一套逻辑,比如说通过上下左右调整光标,Enter选中等,并不负责提供内容。menuconfig运行之后会读取Kconfig、读取/写入.config文件,Kconfi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号