[通用8051核FLASH系列] 【芯圣SDK-HC89F0541测评】+ 2类接口OLED屏的驱动对比

[复制链接]
3766|32
 楼主| jinglixixi 发表于 2020-7-11 07:30 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-20 09:40 编辑

OLED屏大体分为2种,一是基于I2C接口的;另一类则是SPI接口的。
为此,用HC89F0541开发板做了一下简单的尝试
OLED屏与MCU的连接关系为:
CS    --- P2_4
RST  --- P3_5
DC   --- P3_4
SCLK ---P3_3
SDIN ---P1_7

显示字符函数为:
  1. void OLED_ShowChar(u8 x,u8 y,u8 chr)
  2. {        
  3.                    unsigned char c=0,i=0;   
  4.                    c=chr-' ';
  5.                    if(x>Max_Column-1){x=0;y=y+2;}
  6.                    if(SIZE ==16)
  7.                    {
  8.                             OLED_Set_Pos(x,y);         
  9.                             for(i=0;i<8;i++)
  10.                             OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
  11.                             OLED_Set_Pos(x,y+1);
  12.                             for(i=0;i<8;i++)
  13.                             OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
  14.                    }
  15.                    else
  16.                    {      
  17.                            OLED_Set_Pos(x,y+1);
  18.                            for(i=0;i<6;i++)
  19.                            OLED_WR_Byte(F6x8[c][i],OLED_DATA);
  20.                                     
  21.                    }
  22. }

显示字符串的函数为:
  1. void OLED_ShowString(u8 x,u8 y,u8 *chr)
  2. {
  3.          unsigned char j=0;
  4.          while (chr[j]!='\0')
  5.          {                 OLED_ShowChar(x,y,chr[j]);
  6.                             x+=8;
  7.                             if(x>120){x=0;y+=2;}
  8.                             j++;
  9.          }
  10. }

显示汉字的函数为:
  1. void OLED_ShowCHinese(u8 x,u8 y,u8 no)
  2. {                                
  3.          u8 t,adder=0;
  4.          OLED_Set_Pos(x,y);         
  5.          for(t=0;t<16;t++)
  6.          {
  7.                                      OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
  8.                                      adder+=1;
  9.         }      
  10.          OLED_Set_Pos(x,y+1);      
  11.         for(t=0;t<16;t++)
  12.         {
  13.                                      OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
  14.                                      adder+=1;
  15.         }
  16. }

若主程序如下:
  1. void main(void)
  2. {
  3.          unsigned char i;
  4.          while((CLKCON&0x20)!=0x20);
  5.          CLKSWR = 0x51;
  6.          while((CLKSWR&0xC0)!=0x40);
  7.          CLKDIV = 0x01;
  8.    
  9.          P2M4 = 0xC2;
  10.          P3M5 = 0xC2;
  11.          P3M4 = 0xC2;
  12.          P3M3 = 0xC2;
  13.          P1M7 = 0xC2;
  14.         
  15.         delay_ms(5000);
  16.         OLED_Init();
  17.    
  18.         while(1)
  19.         {
  20.             OLED_Clear();
  21.             OLED_ShowString(22,0,"OLED TEST");
  22.             OLED_ShowString(8,2,"  Jinglixixi");
  23.             OLED_ShowString(20,4,"2020/07/01");
  24.             delay_ms(50000);
  25.             OLED_Clear();
  26.             OLED_ShowCHinese(0,0,0);
  27.             OLED_ShowCHinese(18,0,1);
  28.             OLED_ShowCHinese(36,0,2);
  29.             OLED_ShowCHinese(54,0,3);
  30.             OLED_ShowCHinese(72,0,4);
  31.             OLED_ShowCHinese(90,0,5);
  32.             OLED_ShowCHinese(108,0,6);
  33.             delay_ms(50000);
  34.       }
  35. }

OLED屏显示中文字符,如图1所示。
1.png
1 中文显示

显示字符串信息,图2所示。
2.png
2 字符串显示

当使用I2C接口的OLED屏时,使OLED屏与MCU的连接关系为:
SDA  ---  P3_5
SCK  ---  P3_4

在使用相同中文字库的情况下,也可显示出中文,如图3所示。
3.png
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 | 显示全部楼层

就是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 | 显示全部楼层
勇者无惧你和我 发表于 2021-1-21 10:51 | 显示全部楼层
这个真心的不错,感觉这个板子很好用的。
嵌入小菜菜 发表于 2021-1-21 11:16 | 显示全部楼层
太棒了,我恰好缺少这个芯片的资料。
 楼主| jinglixixi 发表于 2021-1-21 11:38 | 显示全部楼层
嵌入小菜菜 发表于 2021-1-21 11:16
太棒了,我恰好缺少这个芯片的资料。

两只袜子 发表于 2021-1-21 15:01 | 显示全部楼层
很棒的芯片资料
 楼主| jinglixixi 发表于 2021-1-21 18:52 | 显示全部楼层

感谢支持!!!
zhengshuai888 发表于 2021-1-21 19:34 来自手机 | 显示全部楼层
学习了,感谢楼主分享。
 楼主| jinglixixi 发表于 2021-1-22 00:26 | 显示全部楼层
zhengshuai888 发表于 2021-1-21 19:34
学习了,感谢楼主分享。

多谢鼓励和支持!!!
zhengshuai888 发表于 2021-1-22 12:35 来自手机 | 显示全部楼层
学习了,感谢楼主分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部