#include "oled.h"
#include "i2c.h"
#include "oledfont.h"
uint8_t CMD_Data[] = {
0xAE, 0x00, 0x10, 0x40, 0xB0, 0x81, 0xFF, 0xA1, 0xA6, 0xA8, 0x3F,
0xC8, 0xD3, 0x00, 0xD5, 0x80, 0xD8, 0x05, 0xD9, 0xF1, 0xDA, 0x12,
0xD8, 0x30, 0x8D, 0x14, 0xAF};
void WriteCmd(void)
{
uint8_t i = 0;
for (i = 0; i < 27; i++)
{
HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, CMD_Data + i, 1, 0x100);
}
}
void OLED_WR_CMD(uint8_t cmd)
{
HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, &cmd, 1, 0x100);
}
void OLED_WR_DATA(uint8_t data)
{
HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT, &data, 1, 0x100);
}
void OLED_Init(void)
{
HAL_Delay(200);
WriteCmd();
}
void OLED_Clear(void)
{
uint8_t i, n;
for (i = 0; i < 8; i++)
{
OLED_WR_CMD(0xb0 + i);
OLED_WR_CMD(0x00);
OLED_WR_CMD(0x10);
for (n = 0; n < 128; n++)
{
OLED_WR_DATA(0);
}
}
}
void OLED_Display_On(void)
{
OLED_WR_CMD(0X8D);
OLED_WR_CMD(0X14);
OLED_WR_CMD(0XAF);
}
void OLED_Display_Off(void)
{
OLED_WR_CMD(0X8D);
OLED_WR_CMD(0X10);
OLED_WR_CMD(0XAE);
}
void OLED_Set_Pos(uint8_t x, uint8_t y)
{
OLED_WR_CMD(0xb0 + y);
OLED_WR_CMD(((x & 0xf0) >> 4) | 0x10);
OLED_WR_CMD(x & 0x0f);
}
void OLED_On(void)
{
uint8_t i, n;
for (i = 0; i < 8; i++)
{
OLED_WR_CMD(0xb0 + i);
OLED_WR_CMD(0x00);
OLED_WR_CMD(0x10);
for (n = 0; n < 128; n++)
{
OLED_WR_DATA(1);
}
}
}
unsigned int oled_pow(uint8_t m, uint8_t n)
{
unsigned int result = 1;
while (n--)
{
result *= m;
}
return result;
}
void OLED_ShowNum(uint8_t x, uint8_t y, unsigned int num, uint8_t len, uint8_t size2)
{
uint8_t t, temp;
uint8_t enshow = 0;
for (t = 0; t < len; t++)
{
temp = (num / oled_pow(10, len - t - 1)) % 10;
if (enshow == 0 && t < (len - 1))
{
if (temp == 0)
{
OLED_ShowChar(x + (size2 / 2) * t, y, ' ', size2);
continue;
}
else
{
enshow = 1;
}
}
OLED_ShowChar(x + (size2 / 2) * t, y, temp + '0', size2);
}
}
void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t Char_Size)
{
unsigned char c = 0, i = 0;
c = chr - ' ';
if (x > 128 - 1)
{
x = 0;
y = y + 2;
}
if (Char_Size == 16)
{
OLED_Set_Pos(x, y);
for (i = 0; i < 8; i++)
{
OLED_WR_DATA(F8X16[c * 16 + i]);
}
OLED_Set_Pos(x, y + 1);
for (i = 0; i < 8; i++)
{
OLED_WR_DATA(F8X16[c * 16 + i + 8]);
}
}
else
{
OLED_Set_Pos(x, y);
for (i = 0; i < 6; i++)
{
OLED_WR_DATA(F6x8[c][i]);
}
}
}
void OLED_ShowString(uint8_t x, uint8_t y, uint8_t *chr, uint8_t Char_Size)
{
unsigned char j = 0;
while (chr[j] != '\0')
{
OLED_ShowChar(x, y, chr[j], Char_Size);
x += 8;
if (x > 120)
{
x = 0;
y += 2;
}
j++;
}
}
void OLED_ShowChinese(uint8_t x, uint8_t y, uint8_t no)
{
uint8_t t, adder = 0;
OLED_Set_Pos(x, y);
for (t = 0; t < 32; t++)
{
OLED_WR_DATA(Hzk[2 * no][t]);
adder += 1;
}
OLED_Set_Pos(x, y + 1);
for (t = 0; t < 32; t++)
{
OLED_WR_DATA(Hzk[2 * no + 1][t]);
adder += 1;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源介绍】 基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip 【备注】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于HAL库开发的0.96英寸OLED(12864)屏幕的驱动程序源码.zip (3个子文件)
Drivers
oled.c 3KB
oled.h 636B
oledfont.h 19KB
共 3 条
- 1
资源评论
manylinux
- 粉丝: 4538
- 资源: 2484
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功