STM32学习笔记 HAL库 OLED代码(1)

研究了一下午OLED了,大致搞懂原理了,但还有一堆指令没理解什么意思,今天就写了一点最基本的程序,剩下的后面再搞吧,太懒了。

OLED代码的思路基本都来自江协科技,后面的代码应该也差不多。有想学习OLED模块的兄弟们,强烈推荐去B站上看一下江协科技视频。然后有时间再去看一下SSD1306的数据手册。

uint8_t OLED_DisplayBuf[8][128];//建立缓存数组

/*以 R/W# 为例,#代表低有效,因此表示低电平W,高电平R*/

void OLED_W_Command(uint8_t Command)
{
	IIC_Start();
	IIC_SendByte(0x78);//发送从机地址,设置写(011110+SA0+R/W#)
	IIC_RecAck();
	IIC_SendByte(0x00);//设置写命令,连续模式开启(Co(0代表开启连续模式)+D/C#(D表示数据,C表示命令)+000000)
	IIC_RecAck();
	IIC_SendByte(Command);//发送命令
	IIC_RecAck();
	IIC_Stop();
}

//由于每发送一个图案都需要发送大量的数据,因此在发送数据函数中加入了Count.此外,由于字模是通过数组储存,因此Data使用指针传递。
void OLED_W_Data(uint8_t *Data,uint8_t Count)
{
	uint8_t i;
	IIC_Start();
	IIC_SendByte(0x78);//发送从机地址,设置写(011110+SA0+R/W#)
	IIC_RecAck();
	IIC_SendByte(0x40);//设置写数据,连续模式开启(Co(0代表开启连续模式)+D/C#(D表示数据,C表示命令)+000000)
	IIC_RecAck();
	for (i=0;i<Count;i++)
	{
		IIC_SendByte(Data[i]);//发送数据
		IIC_RecAck();
	}

	IIC_Stop();
}

void OLED_Init(void)
{


	/*此初始化配置,来自数据手册推荐配置*/
	OLED_W_Command(0xAE);	//设置显示开启/关闭,0xAE关闭,0xAF开启

	OLED_W_Command(0xD5);	//设置显示时钟分频比/振荡器频率
	OLED_W_Command(0x80);	//0x00~0xFF

	OLED_W_Command(0xA8);	//设置多路复用率
	OLED_W_Command(0x3F);	//0x0E~0x3F

	OLED_W_Command(0xD3);	//设置显示偏移
	OLED_W_Command(0x00);	//0x00~0x7F

	OLED_W_Command(0x40);	//设置显示开始行,0x40~0x7F

	OLED_W_Command(0xA1);	//设置左右方向,0xA1正常,0xA0左右反置

	OLED_W_Command(0xC8);	//设置上下方向,0xC8正常,0xC0上下反置

	OLED_W_Command(0xDA);	//设置COM引脚硬件配置
	OLED_W_Command(0x12);

	OLED_W_Command(0x81);	//设置对比度
	OLED_W_Command(0xCF);	//0x00~0xFF

	OLED_W_Command(0xD9);	//设置预充电周期
	OLED_W_Command(0xF1);

	OLED_W_Command(0xDB);	//设置VCOMH取消选择级别
	OLED_W_Command(0x30);

	OLED_W_Command(0xA4);	//设置整个显示打开/关闭

	OLED_W_Command(0xA6);	//设置正常/反色显示,0xA6正常,0xA7反色

	OLED_W_Command(0x8D);	//设置充电泵
	OLED_W_Command(0x14);

	OLED_W_Command(0xAF);	//开启显示

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值