打印
[STC单片机]

STC32G驱动OLED12864,SPI或I2C两种方式

[复制链接]
1673|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STCMCUNT015|  楼主 | 2023-6-7 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC32G12K128驱动OLED12864, SPI I2C 两种方式
STC32G8K64    驱动OLED12864, SPI I2C 两种方式

整个的演示功能如上所示,其中整个画面均做了缓存处理,可以局部点亮任意一个点,且不会覆盖掉原来的画面。
  • void OLED_BuffClear(void);                                  //清屏
  • void OLED_BuffShow(void);                                   //OLED刷新显示
  • void OLED_BuffShowPoint(unsigned char x,unsigned char y);   //OLED显示一个点
  • void OLED_BuffShowLine( u8 x1, u8 y1, u8 x2,u8 y2);         //OLED显示一条线
  • void OLED_BuffShowRectangle(u8 x1, u8 y1, u8 x2, u8 y2);    //OLED显示一个矩形
  • void OLED_BuffShowCircle(u8 x, u8 y, u8 r);                 //OLED显示一个圆形
  • void OLED_BuffShowChar(u8 x,u8 y,char asc, u8 mode);        //OLED显示一个8*16字符
  • void OLED_BuffShowGBK(u8 x,u8 y,char *gbk,u8 mode);         //OLED显示一个16*16汉字
  • void OLED_BuffShowString(u8 x,u8 y,char *s,u8 mode);        //OLED显示一个16像素的汉字和字符
  • void OLED_BuffShowNum(u8 x,u8 y,long num,u8 mode);          //OLED显示一个整形变量
  • void OLED_BuffShowNum02F(u8 x,u8 y,float num,u8 mode);      //OLED显示一个两位小数变量
  • void OLED_BuffShowChar32(u8  x,u8  y,u8 num, u8 mode) ;     //OLED显示一个16*32的字符
  • void OLED_BuffShowBMP(u8 x0, u8 y0,u8 x1, u8 y1,u8 BMP[]);  //OLED显示一个图片

[color=rgb(51, 102, 153) !important]复制代码

功能函数做了如上所示,可以轻松的实现画点,画线,画圆,写字符,写汉字,显示变量等操作。


延时程序用到的代码如下所示

  • //-----------------------------------------显示图片-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowBMP(0,0,128,8,OLED12864_IMG);                              //显示**图片
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     delay_ms(DELAY_TIME);                                                   //延时
  • //-----------------------------------------显示字符-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(0,0,"HEELO ,WELCOME TO USE STC32&OLED12864!",0);      //显示数据
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     delay_ms(DELAY_TIME);                                                   //延时
  • //-----------------------------------------显示汉字-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(0,0,"你好,欢迎使用STC 驱\xfd动OLED12864的历程",0);      //显示数据
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     delay_ms(DELAY_TIME);                                                   //延时
  • //-----------------------------------------显示点-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(32,0,"画点测试");                                    //显示数据
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     for( i=0;i<64;i++ )                                                     //循环64次
  •     {
  •         OLED_BuffShowPoint(i*2,25);                                         //显示一个点
  •         OLED_BuffShow();                                                    //刷新显示
  •         delay_ms(50);                                                       //延时
  •     }
  • //-----------------------------------------显示线-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(32,0,"画线测试");                                    //显示数据
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     for( i=0;i<6;i++ )                                                      //循环6次
  •     {
  •         OLED_BuffShowLine(4,16+8*i,124,16+8*i);                             //显示横着6条线
  •         OLED_BuffShow();                                                    //刷新显示
  •         delay_ms(100);
  •     }
  •     for( i=0;i<16;i+=1 )                                                    //循环16次
  •     {
  •         OLED_BuffShowLine(8*i+4,16,8*i+4,56);                               //显示16条数线
  •         OLED_BuffShow();                                                    //刷新显示
  •         delay_ms(100);
  •     }
  • //-----------------------------------------显示圆-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(32,0,"画圆测试");                                    //显示数据
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     for( i=0;i<6;i++ )                                                      //循环6次
  •     {
  •        OLED_BuffShowCircle(64,40,5+i*3);                                    //画一个圆
  •         OLED_BuffShow();                                                    //刷新显示
  •         delay_ms(250);
  •     }
  • //-----------------------------------------显示32大字-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(32,0,"大字测试");                                    //显示数据
  •     OLED_BuffShowChar32(24,3,1,0);                                          //显示数字1
  •     OLED_BuffShowChar32(40,3,0,0);                                          //显示数字0
  •     OLED_BuffShowChar32(56,3,10,0);                                         //显示:
  •     OLED_BuffShowChar32(72,3,5,0);                                          //显示数字5
  •     OLED_BuffShowChar32(88,3,5,0);                                          //显示数字5
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     delay_ms(DELAY_TIME);                                                   //延时
  • //-----------------------------------------反显测试-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(32,0,"反显测试",0);                                  //显示数据
  •     OLED_BuffShowString(16,2,"  这是正\xfd显  ",0);                          //显示数据
  •     OLED_BuffShowString(16,4,"  这是反显  ",1);                              //显示数据
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     delay_ms(DELAY_TIME);
  • //-----------------------------------------变量显示-----------------------------------------
  •     OLED_BuffClear();                                                       //清除全部缓存
  •     OLED_BuffShowString(32,0,"变量显示",0);                                  //显示数据
  •     OLED_BuffShowNum(0,2,-25169,0) ;                                        //显示数据
  •     OLED_BuffShowNum02F(0,4,3.14159,0);                                     //显示数据
  •     OLED_BuffShowNum02F(0,6,dat,1);                                         //显示数据
  •     OLED_BuffShow();                                                        //将缓存写入显示屏显示
  •     delay_ms(DELAY_TIME);


[color=rgb(51, 102, 153) !important]复制代码

全部通过函数操作,使用非常的便捷



当然这里需要注意使用汉字的时候一定要建立字库才能使用该汉字,这里字库取模直接这样设置,然后生成的字模直接复制到字库里就可以使用了。




附件包含了

1.STC32G(屠龙刀)通过SPI驱动OLED12864代码

2.STC32G(屠龙刀)通过IIC驱动OLED12864代码

3.字库取模软件

感兴趣的自行下载。








STC32G驱动OLED(SPI IIC).rar

2.54 MB

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

252

帖子

1

粉丝