这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » STC32G驱动OLED12864,SPI或I2C两种方式

共4条 1/1 1 跳转至

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

助工
2023-06-07 17:19:46     打赏

STC32G12K128驱动OLED12864SPI 或 I2C 两种方式
STC32G8K64    驱动OLED12864SPI 或 I2C 两种方式

整个的演示功能如上所示,其中整个画面均做了缓存处理,可以局部点亮任意一个点,且不会覆盖掉原来的画面。

  1. void OLED_BuffClear(void);                                  //清屏

  2. void OLED_BuffShow(void);                                   //OLED刷新显示

  3. void OLED_BuffShowPoint(unsigned char x,unsigned char y);   //OLED显示一个点

  4. void OLED_BuffShowLine( u8 x1, u8 y1, u8 x2,u8 y2);         //OLED显示一条线

  5. void OLED_BuffShowRectangle(u8 x1, u8 y1, u8 x2, u8 y2);    //OLED显示一个矩形

  6. void OLED_BuffShowCircle(u8 x, u8 y, u8 r);                 //OLED显示一个圆形

  7. void OLED_BuffShowChar(u8 x,u8 y,char asc, u8 mode);        //OLED显示一个8*16字符

  8. void OLED_BuffShowGBK(u8 x,u8 y,char *gbk,u8 mode);         //OLED显示一个16*16汉字

  9. void OLED_BuffShowString(u8 x,u8 y,char *s,u8 mode);        //OLED显示一个16像素的汉字和字符

  10. void OLED_BuffShowNum(u8 x,u8 y,long num,u8 mode);          //OLED显示一个整形变量

  11. void OLED_BuffShowNum02F(u8 x,u8 y,float num,u8 mode);      //OLED显示一个两位小数变量

  12. void OLED_BuffShowChar32(u8  x,u8  y,u8 num, u8 mode) ;     //OLED显示一个16*32的字符   

  13. void OLED_BuffShowBMP(u8 x0, u8 y0,u8 x1, u8 y1,u8 BMP[]);  //OLED显示一个图片

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



延时程序用到的代码如下所示
  1. //-----------------------------------------显示图片-----------------------------------------   

  2.     OLED_BuffClear();                                                       //清除全部缓存

  3.     OLED_BuffShowBMP(0,0,128,8,OLED12864_IMG);                              //显示LOGO图片

  4.     OLED_BuffShow();                                                        //将缓存写入显示屏显示

  5.     delay_ms(DELAY_TIME);                                                   //延时        


  6. //-----------------------------------------显示字符-----------------------------------------   

  7.     OLED_BuffClear();                                                       //清除全部缓存

  8.     OLED_BuffShowString(0,0,"HEELO ,WELCOME TO USE STC32&OLED12864!",0);      //显示数据

  9.     OLED_BuffShow();                                                        //将缓存写入显示屏显示

  10.     delay_ms(DELAY_TIME);                                                   //延时        

  11.    

  12. //-----------------------------------------显示汉字-----------------------------------------   

  13.     OLED_BuffClear();                                                       //清除全部缓存

  14.     OLED_BuffShowString(0,0,"你好,欢迎使用STC 驱\xfd动OLED12864的历程",0);      //显示数据

  15.     OLED_BuffShow();                                                        //将缓存写入显示屏显示

  16.     delay_ms(DELAY_TIME);                                                   //延时               

  17.    

  18. //-----------------------------------------显示点-----------------------------------------   

  19.     OLED_BuffClear();                                                       //清除全部缓存

  20.     OLED_BuffShowString(32,0,"画点测试");                                    //显示数据

  21.     OLED_BuffShow();                                                        //将缓存写入显示屏显示        

  22.     for( i=0;i<64;i++ )                                                     //循环64次

  23.     {

  24.         OLED_BuffShowPoint(i*2,25);                                         //显示一个点

  25.         OLED_BuffShow();                                                    //刷新显示

  26.         delay_ms(50);                                                       //延时

  27.     }

  28.    

  29. //-----------------------------------------显示线-----------------------------------------   

  30.     OLED_BuffClear();                                                       //清除全部缓存

  31.     OLED_BuffShowString(32,0,"画线测试");                                    //显示数据

  32.     OLED_BuffShow();                                                        //将缓存写入显示屏显示        

  33.     for( i=0;i<6;i++ )                                                      //循环6次

  34.     {

  35.         OLED_BuffShowLine(4,16+8*i,124,16+8*i);                             //显示横着6条线

  36.         OLED_BuffShow();                                                    //刷新显示

  37.         delay_ms(100);

  38.     }        

  39.     for( i=0;i<16;i+=1 )                                                    //循环16次

  40.     {

  41.         OLED_BuffShowLine(8*i+4,16,8*i+4,56);                               //显示16条数线

  42.         OLED_BuffShow();                                                    //刷新显示

  43.         delay_ms(100);

  44.     }  


  45. //-----------------------------------------显示圆-----------------------------------------   

  46.     OLED_BuffClear();                                                       //清除全部缓存

  47.     OLED_BuffShowString(32,0,"画圆测试");                                    //显示数据

  48.     OLED_BuffShow();                                                        //将缓存写入显示屏显示        

  49.     for( i=0;i<6;i++ )                                                      //循环6次

  50.     {

  51.        OLED_BuffShowCircle(64,40,5+i*3);                                    //画一个圆   

  52.         OLED_BuffShow();                                                    //刷新显示

  53.         delay_ms(250);

  54.     }         


  55. //-----------------------------------------显示32大字-----------------------------------------   

  56.     OLED_BuffClear();                                                       //清除全部缓存

  57.     OLED_BuffShowString(32,0,"大字测试");                                    //显示数据

  58.     OLED_BuffShowChar32(24,3,1,0);                                          //显示数字1

  59.     OLED_BuffShowChar32(40,3,0,0);                                          //显示数字0

  60.     OLED_BuffShowChar32(56,3,10,0);                                         //显示:

  61.     OLED_BuffShowChar32(72,3,5,0);                                          //显示数字5

  62.     OLED_BuffShowChar32(88,3,5,0);                                          //显示数字5

  63.     OLED_BuffShow();                                                        //将缓存写入显示屏显示        

  64.     delay_ms(DELAY_TIME);                                                   //延时         


  65. //-----------------------------------------反显测试-----------------------------------------   

  66.     OLED_BuffClear();                                                       //清除全部缓存

  67.     OLED_BuffShowString(32,0,"反显测试",0);                                  //显示数据

  68.     OLED_BuffShowString(16,2,"  这是正\xfd显  ",0);                          //显示数据

  69.     OLED_BuffShowString(16,4,"  这是反显  ",1);                              //显示数据

  70.     OLED_BuffShow();                                                        //将缓存写入显示屏显示

  71.     delay_ms(DELAY_TIME);   


  72. //-----------------------------------------变量显示-----------------------------------------   

  73.     OLED_BuffClear();                                                       //清除全部缓存

  74.     OLED_BuffShowString(32,0,"变量显示",0);                                  //显示数据

  75.     OLED_BuffShowNum(0,2,-25169,0) ;                                        //显示数据

  76.     OLED_BuffShowNum02F(0,4,3.14159,0);                                     //显示数据

  77.     OLED_BuffShowNum02F(0,6,dat,1);                                         //显示数据

  78.     OLED_BuffShow();                                                        //将缓存写入显示屏显示

  79.     delay_ms(DELAY_TIME);   

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




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


附件包含了


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


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


3.字库取模软件


感兴趣的自行下载。

STC32G驱动OLED(SPI IIC).rar




关键词: STC32G驱动OLED12864     SPI或I2C    

专家
2023-06-08 01:30:37     打赏
2楼

感谢楼主的分享,很实用了。


专家
2023-06-08 01:34:53     打赏
3楼

感谢楼主的分享,很实用了。


专家
2023-06-08 06:46:42     打赏
4楼

感谢楼主的分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]