找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2739|回复: 9
收起左侧

STM32F103+OLED的问题 第二页内容显示异常

[复制链接]
ID:933150 发表于 2021-7-22 22:33 | 显示全部楼层 |阅读模式
            最近用STM32F103在做OLED屏幕调试出现了一些问题,问题:第一页的显示的文字是正常的,但是到了第二也就不正常了,也试着从网上找方法解决,都试了,没有用,求各位网友解答迷惑,谢谢大家.
          第一页的显示内容:正常显示
         第二页的显示内容:异常显示
部分代码如下:
这个是修改过的汉字显示代码
//显示汉字
void OLED_ShowCHinese(u8 x,u8 y,u8 no)
{                     
    u8 t,adder=0;
    OLED_Set_Pos(x,y);
        if(no < 32)
        {
    for(t=0;t<16;t++)
        {
                OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
                adder+=1;
     }   
        OLED_Set_Pos(x,y+1);   
    for(t=0;t<16;t++)
            {   
                OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
                adder+=1;
      }
        }   
            if(no >= 32)
            {
                 for(t=0;t<16;t++)
        {
                OLED_WR_Byte(Hzk[2*no-1][t],OLED_DATA);  //处理所存放的第33个汉字时,首先写入第二行数据
                adder+=1;
     }   
        OLED_Set_Pos(x,y+1);   
    for(t=0;t<16;t++)
            {   
                OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
                adder+=1;
      }
            }
}

主程序代码:
    OLED_Init();
   OLED_Clear();
    OLED_ShowCHinese(0,0,8);  //显示汉字   欢
    OLED_ShowCHinese(16,0,9); //显示汉字   迎
    OLED_ShowCHinese(32,0,10);  //显示汉字 使
    OLED_ShowCHinese(48,0,11); //显示汉字  用
    OLED_ShowCHinese(64,0,12);  //显示汉字 智
    OLED_ShowCHinese(80,0,13); //显示汉字  能
    OLED_ShowCHinese(96,0,14);  //显示汉字 小
    OLED_ShowCHinese(112,0,15); //显示汉字 车
    Delay_ms(1000);
    OLED_Clear();
    OLED_ShowCHinese(32,0,16);  //显示汉字 设
    OLED_ShowCHinese(48,0,17); //显示汉字 计
    OLED_ShowCHinese(64,0,18);  //显示汉字 者
    OLED_ShowCHinese(80,0,19); //显示汉字 :
    OLED_ShowCHinese(32,3,20);  //显示汉字
    OLED_ShowCHinese(62,3,21); //显示汉字  
    OLED_ShowCHinese(92,3,22);  //显示汉字
    Delay_ms(1000);
    OLED_Clear();
    OLED_ShowCHinese(0,0,2);  //显示汉字 车
    OLED_ShowCHinese(16,0,3); //显示汉字 速
谢谢大家了




第二页内容:异常显示

第二页内容:异常显示

第一张内容:正常显示

第一张内容:正常显示
回复

使用道具 举报

ID:622960 发表于 2021-7-23 09:41 | 显示全部楼层
看下正点原子的例程,里面有现成的copy即可
回复

使用道具 举报

ID:34643 发表于 2021-7-23 10:18 | 显示全部楼层
汉字取模方式不对,重新试试.
回复

使用道具 举报

ID:933150 发表于 2021-7-23 10:24 | 显示全部楼层
51mcu 发表于 2021-7-23 10:18
汉字取模方式不对,重新试试.

那为什么第一页的内容显示正常
回复

使用道具 举报

ID:933150 发表于 2021-7-23 10:25 | 显示全部楼层
qj3518111 发表于 2021-7-23 09:41
看下正点原子的例程,里面有现成的copy即可

我的四线的OLED来的,参考不了
回复

使用道具 举报

ID:824490 发表于 2021-7-23 15:01 | 显示全部楼层
X坐标取0-127,按16*16字体,显示8个汉字
Y坐标取0-7页,汉显第一行Y=0 ,第2行Y=2,第3行Y=4,第4行Y=6,一个汉字占2行,全屏显示8*4个汉字
如果行1从页1开始,就行2就取页3,余下类推。
明白这个就行了。
回复

使用道具 举报

ID:933150 发表于 2021-7-23 15:03 | 显示全部楼层
名字不是重点 发表于 2021-7-23 15:01
X坐标取0-127,按16*16字体,显示8个汉字
Y坐标取0-7页,汉显第一行Y=0 ,第2行Y=2,第3行Y=4,第4行Y=6, ...

谢谢了,我先看看哈
回复

使用道具 举报

ID:401564 发表于 2021-7-23 18:06 | 显示全部楼层
这本就不是什么多难的事,因为,第二行已经有字的形状出来了,不是取模的问题就是页面的地址不对
看一下数据手册,你至少是要知道怎么去操作这个驱动
SH1106和SSD1306只是初始化代码一样而已,显示原理是不一样,不是完全兼容的,你要看一下自己 的驱动IC是什么型号的
SH1106的列显示并不是0-127,是2-129,
如果是左右扫描的话,SSD1306是要指定列地址的,如果是上下扫描显示的话,就要指定页面地址
而SH1106是不用的
回复

使用道具 举报

ID:933150 发表于 2021-7-23 18:10 | 显示全部楼层
Y_G_G 发表于 2021-7-23 18:06
这本就不是什么多难的事,因为,第二行已经有字的形状出来了,不是取模的问题就是页面的地址不对
看一下数据 ...

感谢大佬的指导,我去看看
回复

使用道具 举报

ID:901068 发表于 2021-7-24 10:03 | 显示全部楼层
取模的问题,去瞅瞅中景园的oled例程把
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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