利用STC16的逐飞库驱动IIC协议的四针OLED模块

刘小凡114 2024-10-29 23:06:49

如何利用STC16的逐飞库驱动IIC协议的四针OLED模块,求代码

...全文
179 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
DuHz 2024-10-30
  • 打赏
  • 举报
回复 1
#include <stc16.h>
#include "iic.h" // 假设逐飞库中有一个包含IIC功能的头文件

#define OLED_ADDRESS 0x78 // OLED的I2C地址

void OLED_WriteCmd(unsigned char cmd) {
    IIC_Start();
    IIC_SendByte(OLED_ADDRESS); // 发送OLED的地址
    IIC_WaitAck();
    IIC_SendByte(0x00); // 表示接下来是命令
    IIC_WaitAck();
    IIC_SendByte(cmd); // 发送命令
    IIC_WaitAck();
    IIC_Stop();
}

void OLED_WriteData(unsigned char data) {
    IIC_Start();
    IIC_SendByte(OLED_ADDRESS); // 发送OLED的地址
    IIC_WaitAck();
    IIC_SendByte(0x40); // 表示接下来是数据
    IIC_WaitAck();
    IIC_SendByte(data); // 发送数据
    IIC_WaitAck();
    IIC_Stop();
}

void OLED_Init() {
    OLED_WriteCmd(0xAE); // 关闭显示
    OLED_WriteCmd(0x00); // 设置低列地址
    OLED_WriteCmd(0x10); // 设置高列地址
    OLED_WriteCmd(0x40); // 设置起始行地址
    OLED_WriteCmd(0x81); // 设置对比度控制
    OLED_WriteCmd(0xCF);
    OLED_WriteCmd(0xA1); // 段重映射
    OLED_WriteCmd(0xC8); // COM输出扫描方向
    OLED_WriteCmd(0xA6); // 设置显示模式:正常显示
    OLED_WriteCmd(0xA8); // 设置复用率
    OLED_WriteCmd(0x3F);
    OLED_WriteCmd(0xD3); // 设置显示偏移
    OLED_WriteCmd(0x00);
    OLED_WriteCmd(0xD5); // 设置时钟分频因子/振荡频率
    OLED_WriteCmd(0x80);
    OLED_WriteCmd(0xD9); // 设置预充电周期
    OLED_WriteCmd(0xF1);
    OLED_WriteCmd(0xDA); // 设置COM引脚硬件配置
    OLED_WriteCmd(0x12);
    OLED_WriteCmd(0xDB); // 设置VCOMH
    OLED_WriteCmd(0x40);
    OLED_WriteCmd(0x20); // 设置内存寻址模式
    OLED_WriteCmd(0x02);
    OLED_WriteCmd(0x8D); // 设置充电泵
    OLED_WriteCmd(0x14);
    OLED_WriteCmd(0xAF); // 开启显示
}

void OLED_Clear() {
    unsigned char i, j;
    for (i = 0; i < 8; i++) {
        OLED_WriteCmd(0xB0 + i); // 设置页地址(0~7)
        OLED_WriteCmd(0x00);     // 设置显示位置—列低地址
        OLED_WriteCmd(0x10);     // 设置显示位置—列高地址
        for (j = 0; j < 128; j++) {
            OLED_WriteData(0x00); // 清除屏幕
        }
    }
}

void main() {
    IIC_Init(); // 初始化I2C
    OLED_Init(); // 初始化OLED
    OLED_Clear(); // 清屏

    while (1) {
        // 主循环,可以在此处添加其他代码控制OLED显示
    }
}

378

社区成员

发帖
与我相关
我的任务
社区描述
全国大学生智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。
微信微信公众平台 高校 北京·海淀区
社区管理员
  • 卓晴
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧