jinglixixi 发表于 2020-7-11 07:30

【芯圣SDK-HC89F0541测评】+ 2类接口OLED屏的驱动对比

本帖最后由 芯圣电子官方QQ 于 2023-7-20 09:40 编辑

OLED屏大体分为2种,一是基于I2C接口的;另一类则是SPI接口的。为此,用HC89F0541开发板做了一下简单的尝试。该OLED屏与MCU的连接关系为:CS    --- P2_4RST--- P3_5DC   --- P3_4SCLK ---P3_3SDIN ---P1_7
显示字符函数为:void OLED_ShowChar(u8 x,u8 y,u8 chr)
{      
                   unsigned char c=0,i=0;   
                   c=chr-' ';
                   if(x>Max_Column-1){x=0;y=y+2;}
                   if(SIZE ==16)
                   {
                            OLED_Set_Pos(x,y);         
                            for(i=0;i<8;i++)
                            OLED_WR_Byte(F8X16,OLED_DATA);
                            OLED_Set_Pos(x,y+1);
                            for(i=0;i<8;i++)
                            OLED_WR_Byte(F8X16,OLED_DATA);
                   }
                   else
                   {      
                           OLED_Set_Pos(x,y+1);
                           for(i=0;i<6;i++)
                           OLED_WR_Byte(F6x8,OLED_DATA);
                                    
                   }
}
显示字符串的函数为:void OLED_ShowString(u8 x,u8 y,u8 *chr)
{
         unsigned char j=0;
         while (chr!='\0')
         {               OLED_ShowChar(x,y,chr);
                            x+=8;
                            if(x>120){x=0;y+=2;}
                            j++;
         }
}
显示汉字的函数为:void OLED_ShowCHinese(u8 x,u8 y,u8 no)
{                              
         u8 t,adder=0;
         OLED_Set_Pos(x,y);         
         for(t=0;t<16;t++)
         {
                                     OLED_WR_Byte(Hzk,OLED_DATA);
                                     adder+=1;
      }      
         OLED_Set_Pos(x,y+1);      
      for(t=0;t<16;t++)
      {
                                     OLED_WR_Byte(Hzk,OLED_DATA);
                                     adder+=1;
      }
}
若主程序如下:void main(void)
{
         unsigned char i;
         while((CLKCON&0x20)!=0x20);
         CLKSWR = 0x51;
         while((CLKSWR&0xC0)!=0x40);
         CLKDIV = 0x01;
   
         P2M4 = 0xC2;
         P3M5 = 0xC2;
         P3M4 = 0xC2;
         P3M3 = 0xC2;
         P1M7 = 0xC2;
      
      delay_ms(5000);
      OLED_Init();
   
      while(1)
      {
            OLED_Clear();
            OLED_ShowString(22,0,"OLED TEST");
            OLED_ShowString(8,2,"Jinglixixi");
            OLED_ShowString(20,4,"2020/07/01");
            delay_ms(50000);
            OLED_Clear();
            OLED_ShowCHinese(0,0,0);
            OLED_ShowCHinese(18,0,1);
            OLED_ShowCHinese(36,0,2);
            OLED_ShowCHinese(54,0,3);
            OLED_ShowCHinese(72,0,4);
            OLED_ShowCHinese(90,0,5);
            OLED_ShowCHinese(108,0,6);
            delay_ms(50000);
      }
}
则OLED屏显示中文字符,如图1所示。图1 中文显示
显示字符串信息,图2所示。图2 字符串显示
当使用I2C接口的OLED屏时,使OLED屏与MCU的连接关系为:SDA---P3_5 SCK---P3_4
在使用相同中文字库的情况下,也可显示出中文,如图3所示。图3 中文显示
结论:两种接口的OLED屏在SDK-HC89F0541开发板上均可实现显示功能,只是I2C接口的要更节省些GPIO资源。值得注意的是在定义字库时,其存储数组应定义为uc8型,否则容易出现异常。

xiaoqizi 发表于 2020-8-7 13:51

感谢楼主分享

木木guainv 发表于 2020-8-7 13:53

什么叫2类接口啊

磨砂 发表于 2020-8-7 13:53

代码很详细

晓伍 发表于 2020-8-7 13:54

了解了 呵呵

八层楼 发表于 2020-8-7 13:55

现在的并口屏很少用了吧

jinglixixi 发表于 2020-8-7 15:58

木木guainv 发表于 2020-8-7 13:53
什么叫2类接口啊

就是2种接口的OLED屏

jinglixixi 发表于 2020-8-7 15:59

八层楼 发表于 2020-8-7 13:55
现在的并口屏很少用了吧

是的,耗GPIO口。

风凌天 发表于 2021-1-9 14:03

能不能发完整的代码给我啊,谢谢

jinglixixi 发表于 2021-1-9 23:52

风凌天 发表于 2021-1-9 14:03
能不能发完整的代码给我啊,谢谢

已发给你,请查收。

daichaodai 发表于 2021-1-20 18:43

感谢楼主分享

jinglixixi 发表于 2021-1-20 20:47

daichaodai 发表于 2021-1-20 18:43
感谢楼主分享

{:handshake:}

勇者无惧你和我 发表于 2021-1-21 10:51

这个真心的不错,感觉这个板子很好用的。

嵌入小菜菜 发表于 2021-1-21 11:16

太棒了,我恰好缺少这个芯片的资料。

jinglixixi 发表于 2021-1-21 11:38

嵌入小菜菜 发表于 2021-1-21 11:16
太棒了,我恰好缺少这个芯片的资料。

{:handshake:}

两只袜子 发表于 2021-1-21 15:01

很棒的芯片资料

jinglixixi 发表于 2021-1-21 18:52

两只袜子 发表于 2021-1-21 15:01
很棒的芯片资料

感谢支持!!!

zhengshuai888 发表于 2021-1-21 19:34

学习了,感谢楼主分享。

jinglixixi 发表于 2021-1-22 00:26

zhengshuai888 发表于 2021-1-21 19:34
学习了,感谢楼主分享。

多谢鼓励和支持!!!

zhengshuai888 发表于 2021-1-22 12:35

学习了,感谢楼主分享。
页: [1] 2
查看完整版本: 【芯圣SDK-HC89F0541测评】+ 2类接口OLED屏的驱动对比