找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2373|回复: 3
打印 上一主题 下一主题
收起左侧

OLED,0.91核心C51单片机 通信iic使用学习过程

[复制链接]
跳转到指定楼层
楼主
ID:816912 发表于 2022-3-18 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                                                                                   OLED,0.91使用学习过程
            oled相比lcd屏两者理解方式差不多。oled有多种驱动方式常见的有iic,spi的对应的oled种类有4pin,6pin,7pin,我常用的4pin(省引脚)。
            oled具体的工作方式可以去看手册,在此只介绍我的学习和使用过程以我的程序为例
           void han_zi(void)  
      {
//显示一个汉字
        uint8 i;
        Oled_Init();
        Oled_Screen_Clear();
        Oled_Write_Cmd(0xb0); //page 0 业数  oled是每8行是一业,一业是长128的灯宽是8个灯
        ,扫描的是一行一行扫的,汉字一般都是上16*8下16*8分两部分构成,所以汉字显示分两行显示
        Oled_Write_Cmd(0x00); //low       //设置显示位置—列低地址
        Oled_Write_Cmd(0x10); //high         //设置显示位置—列高地址。
        for(i=0;i<64;i++){
                Oled_Write_Data(oledTable3[ i]);//写数据oledTable3
        }

        Oled_Write_Cmd(0xb1); //page 1
        Oled_Write_Cmd(0x00); //low
        Oled_Write_Cmd(0x10); //high
        for(i=0;i<80;i++){
                Oled_Write_Data(oledTable4[ i]);//写数据oledTable4
        }
}
// 定义显示汉字
/******************************************************************************/
uint8 code oledTable3[64]  = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //注意数字是两半组成,还有就是数组含有空格和点的编码
                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   
                              0x00,0x20,0x20,0xA8,0x6C,0x2A,0x39,0x28,0x28,0x2A,0x6C,0xA8,0x20,0x20,0x00,0x00,
                              0x20,0x20,0x24,0xA4,0xAC,0xB4,0xA5,0xA6,0xA4,0xB4,0xAC,0xA4,0x24,0x20,0x20,0x00};                             
uint8 code oledTable4[80]  = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                              0x02,0x02,0x41,0x40,0x48,0x49,0x49,0x49,0x49,0x49,0x48,0x40,0x41,0x02,0x02,0x00,
                              0x20,0x20,0x20,0x2F,0x2A,0x2A,0x2A,0xFA,0x2A,0x2A,0x2A,0x2F,0x20,0x20,0x20,0x00,
                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};

上面程序显示了汉字的显示的方在此不多说,其他的也差不多。要注意的是数组生成方式,要和读取方式要相同,

2.常用的指令

第一个命令为0X81,用于设置对比度的,这个命令包含了两个字节,第一个0X81为命令,随后发送的一个字节为要设置的对比度的值。这个值设置得越大屏幕就越亮。
第二个命令为0XAE/0XAF。0XAE为关闭显示命令;0XAF为开启显示命令。
第三个命令为0X8D,该指令也包含2个字节,第一个为命令字,第二个为设置值,第二个字节的BIT2表示电荷泵的开关状态,该位为1,则开启电荷泵,为0则关闭。在模块初始化的时候,这个必须要开启,否则是看不到屏幕显示的。
第四个命令为0XB0~B7,该命令用于设置页地址,其低三位的值对应着GRAM的页地址。发送一个字节,高5位固定。位0-位2, X[2:0]共3位, 值范围0-7对应页0-7地址(共8页)
第五个指令为0X00~0X0F,该指令用于设置显示时的起始列地址低四位。高四位固定,低四位设置列地址起始低四位。
第六个指令为0X10~0X1F,该指令用于设置显示时的起始列地址高四位。高四位固定,低四位设置列地址起始高四位。
其他命令,我就不在这里一一介绍了,大家可以参考SSD1306 datasheet的第28页。从这页开始,对SSD1306的指令有详细的介绍。

后面有时间在补

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:297903 发表于 2022-3-19 08:41 | 只看该作者
我也淘了一块,准备整个自己的显示程序,学习了!
回复

使用道具 举报

板凳
ID:471636 发表于 2022-3-22 10:21 | 只看该作者
实在是没啥营养。
回复

使用道具 举报

地板
ID:816912 发表于 2022-4-20 20:40 | 只看该作者
uvw 发表于 2022-3-22 10:21
实在是没啥营养。

很搞笑我自己记录我需要的,对你没用,何必发出这种话语。干嘛这样,难道这样就可以显示自己高人一等吗?????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表