找回密码
 立即注册
楼主: 浦江***

32G12K128驱动OLED12864,用普通IO模拟SPI或硬件SPI接口方式+双页显示

[复制链接]
  • TA的每日心情
    开心
    昨天 08:40
  • 签到天数: 318 天

    [LV.8]以坛为家I

    21

    主题

    197

    回帖

    1902

    积分

    金牌会员

    积分
    1902
     楼主| 发表于 2024-3-7 13:06:38 | 显示全部楼层
    关于6楼的视频再说明一下:
    视频显示了双页切换的动态过程,体现的是一种水平滑动的效果。别以为是双页显示,这么迟钝,很不可取。
    实际双页切换就是一句话,瞬间切换的。
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:04
  • 签到天数: 273 天

    [LV.8]以坛为家I

    12

    主题

    917

    回帖

    2012

    积分

    金牌会员

    积分
    2012
    发表于 2024-3-27 08:50:56 | 显示全部楼层
    把OLED12864玩的真遛,学习了。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-6-26 22:01
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    1

    主题

    22

    回帖

    205

    积分

    中级会员

    积分
    205
    发表于 2024-3-30 16:23:28 | 显示全部楼层
    正在学习中 非常感谢
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-7-16 08:38
  • 签到天数: 33 天

    [LV.5]常住居民I

    0

    主题

    24

    回帖

    278

    积分

    中级会员

    积分
    278
    发表于 2024-4-24 09:14:42 | 显示全部楼层
    浦江一水 发表于 2024-3-7 12:58
    楼上朋友您好,谢谢您对本帖的浏览。
    关于硬件SPI驱动的方法,源程序中是包含有的,可能是我没有说明清楚。 ...

    新人请教,普通IO模拟SPI或硬件SPI接口方式二者在应用上有什么不同?
    看了看你分享的代码,除了硬件SPI接线SCLK和MOSI是固定IO的,就是写入代码有一点点区别
    #if(UseSPI)
      SPDAT = Dat;
      while(SPIF == 0);
      SPIF = 1;   //清SPIF标志
      WCOL = 1;   //清WCOL标志
    #else
      for(i=0;i<8;i++)
      { if(Dat&0x80)OLED_SDA=1;
        else        OLED_SDA=0;
        Dat <<= 1;    //左移位
        OLED_SCK = 1;
        OLED_SCK = 0;
      }
    #endif  

    刚刚接触这种点阵的显示方法,独自摸索免强能点亮却不知其然,是不是这种7脚串口显示屏都能改成硬件SPI驱动?
    20240424_070219.jpg
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:40
  • 签到天数: 318 天

    [LV.8]以坛为家I

    21

    主题

    197

    回帖

    1902

    积分

    金牌会员

    积分
    1902
     楼主| 发表于 2024-4-24 17:02:22 | 显示全部楼层
    cadplus 发表于 2024-4-24 09:14
    新人请教,普通IO模拟SPI或硬件SPI接口方式二者在应用上有什么不同?
    看了看你分享的代码,除了硬件SPI ...

    楼上朋友,谢谢浏览回复.
    说到普通IO模拟SPI或硬件SPI接口方式上有何不同,我个人理解是:
    主要就是在输出字节的方式有所不同, 速度不同.
    硬件SPI方式, 输出一个字节,一次写出一字节, 剩下的就是硬件按既定时序发送了, 速度快, 源码简单. (但要了解各种CUP的SPI寄存器定义用法, 并且要确定所选用的IO口,必须是具有硬件SPI功能的口.)
    普通IO模拟SPI方式, 要完成输出一个字节, 就是循环八次,每次只将一个位移出,消耗的指令周期长了. 所以速度就慢了. (端口不需要一定具有硬件SPI功能,便于移植)


    现就以下这段代码, 加上注释, 再看不同点...

    #if(UseSPI)                               //如果是选择硬件SPI方式.
      SPDAT = Dat;                         //将一个字节数据放入寄存器SPDAT中,
      while(SPIF == 0);                   //等待硬件SPI发送完毕...(要了解SPIF标志位的定义用法)
      SPIF = 1;                                //清SPIF标志
      WCOL = 1;                              //清WCOL标志
    #else                                        //如果采用普通IO模拟SPI方式
      for(i=0;i<8;i++)                     //循环八次
      { if(Dat&0x80)OLED_SDA=1;   //根据最高位是1,输出端口电平为1
        else              OLED_SDA=0;  //根据最高位是0,输出端口电平为0
        Dat <<= 1;                         //左移一位
        OLED_SCK = 1;                   //给个脉冲推出: 时钟0->1跳变  
        OLED_SCK = 0;                   //时钟1->0跳变   
      }                                          //完成一字节的输出...
    #endif                                    //结束条件编译...

    两种方式各有特点: 模拟方式,便于移植,速度慢. 硬件方式,速度快,对端口功能有要求.
    设计具体项目时,条件允许的话,优先选用硬件SPI方式.
    仅供参考...
      


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-7-16 08:38
  • 签到天数: 33 天

    [LV.5]常住居民I

    0

    主题

    24

    回帖

    278

    积分

    中级会员

    积分
    278
    发表于 2024-4-25 13:06:53 | 显示全部楼层
    浦江一水 发表于 2024-4-24 17:02
    楼上朋友,谢谢浏览回复.
    说到普通IO模拟SPI或硬件SPI接口方式上有何不同,我个人理解是:
    主要就是在输出字 ...

    多谢解惑
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    1

    主题

    12

    回帖

    79

    积分

    注册会员

    积分
    79
    发表于 2024-5-6 14:41:42 来自手机 | 显示全部楼层
    读呢?
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:41
  • 签到天数: 129 天

    [LV.7]常住居民III

    1

    主题

    81

    回帖

    621

    积分

    高级会员

    积分
    621
    发表于 2024-5-20 16:26:17 | 显示全部楼层
    mark,好好学习一下
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:06
  • 签到天数: 151 天

    [LV.7]常住居民III

    1

    主题

    63

    回帖

    197

    积分

    注册会员

    积分
    197
    发表于 2024-5-20 17:02:40 来自手机 | 显示全部楼层
    前两天刚通过iic方式,模拟或者硬件驱动ssd1306的12864oled屏,想把滚屏的驱动代码也加上,博主有没有研究过呢?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:40
  • 签到天数: 318 天

    [LV.8]以坛为家I

    21

    主题

    197

    回帖

    1902

    积分

    金牌会员

    积分
    1902
     楼主| 发表于 2024-5-21 07:41:36 | 显示全部楼层
    Rain_Personal 发表于 2024-5-20 17:02
    前两天刚通过iic方式,模拟或者硬件驱动ssd1306的12864oled屏,想把滚屏的驱动代码也加上,博主有没有研究 ...

    谢谢楼上坛友的浏览回复.

    不知"滚屏"是如何定义?  看一下6楼的视频, 算不算是"滚屏"了?
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-11-1 07:55 , Processed in 0.081619 second(s), 87 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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