找回密码
 立即注册
查看: 6438|回复: 60

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

[复制链接]
  • TA的每日心情
    开心
    前天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6755

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6755
    QQ
    发表于 2023-6-7 16:36:44 | 显示全部楼层 |阅读模式
    STC32G驱动OLED12864,SPI或I2C两种方式-1.png STC32G驱动OLED12864,SPI或I2C两种方式-1.png
    STC32G12K128驱动OLED12864, SPI 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);   
    80.         
    81.         
    复制代码
    全部通过函数操作,使用非常的便捷



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

    STC32G驱动OLED12864(SPI+IIC两种方式)-1.png


    附件包含了

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

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

    3.字库取模软件

    感兴趣的自行下载。

    STC32G驱动OLED12864(SPI+IIC两种方式)-2.png
    STC32G驱动OLED12864(SPI+IIC两种方式)-3.png
    STC32G驱动OLED12864(SPI+IIC两种方式)-4.png
    STC32G驱动OLED12864(SPI+IIC两种方式)-5.png
    STC32G驱动OLED12864,SPI或I2C两种方式-1.png

    STC32G驱动OLED(SPI IIC).rar

    2.54 MB, 下载次数: 554

    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    回复 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9222

    回帖

    1万

    积分

    管理员

    积分
    13916
    发表于 2023-6-8 07:43:34 | 显示全部楼层
    STC32G12K128驱动OLED12864, SPI I2C 两种方式 演示视频



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:33
  • 签到天数: 135 天

    [LV.7]常住居民III

    4

    主题

    70

    回帖

    1069

    积分

    金牌会员

    积分
    1069
    发表于 2023-6-8 08:39:55 | 显示全部楼层
    学习了
    ===========================================================================================

    USB / CAN 专题免费教学会议通知:
    USB 原理实战16课时10月/9号, 10月/11号; 10/16, 10/18;
    CAN 原理实战12课时10月/23号, 10月/25号; 10月/30;
    线上视频授课:周一
    下午/周三下午14:00 ~ 17:00;  
    腾讯会议号885-5858-2739; (安装腾讯会议软件后,输入会议号即可)

    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4526&extra=&page=1
    参会学习立即【免费+包邮USB核心功能实验板
    参会学习立即【免费+包邮CAN核心功能实验板,模拟的CAN收发器您自己补上

    请帮忙转发给可能需要:从0开始了解USBCAN同学/同事/老师/研发人员


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-18 09:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    8

    主题

    25

    回帖

    216

    积分

    中级会员

    积分
    216
    发表于 2023-7-8 17:38:43 | 显示全部楼层
    STC8H8K64U 兼容么?

    点评

    稍微改几行就兼容了  详情 回复 发表于 2023-7-19 09:29
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-29 13:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    10

    主题

    17

    回帖

    144

    积分

    注册会员

    积分
    144
    发表于 2023-7-18 12:00:17 | 显示全部楼层
    编译完报错     不知是什么问题

    我改了头文件    还是有问题

    图片上是报错信息
    微信图片_20230718115804.png

    点评

    乱码了,把路径里的中文去掉  详情 回复 发表于 2023-7-19 09:30
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    回帖

    84

    积分

    注册会员

    积分
    84
    发表于 2023-7-18 23:03:33 | 显示全部楼层
    有妖气 发表于 2023-7-18 12:00
    编译完报错     不知是什么问题

    我改了头文件    还是有问题

    Rebuild started: Project: stc_usb_ser
    Rebuild target 'Target 1'
    compiling main.c...
    C251 FATAL-ERROR -
      ACTION:  OPENING INPUT-FILE
      FILE:    \Users\sheng\Desktop\STC32G12K128\布丁橘长STC32屠龙刀\STC32G嵌疧LED(SPI IIC)\STC32G_IIC_OLED12864\ware\iic.h
      ERROR:   FILE DOES NOT EXIST
    C251 TERMINATED.
    Target not created.
    Build Time Elapsed:  00:00:01

    点评

    乱码了,把路径里的中文去掉  详情 回复 发表于 2023-7-19 09:31
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6755

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6755
    QQ
     楼主| 发表于 2023-7-19 09:29:21 | 显示全部楼层
    zhigao1986 发表于 2023-7-8 17:38
    STC8H8K64U 兼容么?

    稍微改几行就兼容了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6755

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6755
    QQ
     楼主| 发表于 2023-7-19 09:30:15 | 显示全部楼层
    有妖气 发表于 2023-7-18 12:00
    编译完报错     不知是什么问题

    我改了头文件    还是有问题



    乱码了,把路径里的中文去掉
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6755

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6755
    QQ
     楼主| 发表于 2023-7-19 09:31:02 | 显示全部楼层
    shengzhen2007 发表于 2023-7-18 23:03
    Rebuild started: Project: stc_usb_ser
    Rebuild target 'Target 1'
    compiling main.c...




    乱码了,把路径里的中文去掉
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    回帖

    84

    积分

    注册会员

    积分
    84
    发表于 2023-7-19 11:29:47 | 显示全部楼层
    ware\oled.c(354): warning C188: 'parameter 1': value truncated
    ware\oled.c(354): warning C188: 'parameter 2': value truncated
    ware\oled.c(355): warning C188: 'parameter 1': value truncated
    ware\oled.c(355): warning C188: 'parameter 2': value truncated
    ware\oled.c(480): warning C96: 'OLED_BuffShowString': too few actual parameters
    ware\oled.c(475): warning C47: 'mode': unreferenced parameter
    compiling iic.c...
    linking...
    Program Size: data=8.0 edata+hdata=308 xdata=1037 const=169 code=10191
    creating hex file from ".\obj\stc_usb_ser"...
    ".\obj\stc_usb_ser" - 0 Error(s), 30 Warning(s).
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-27 16:14 , Processed in 0.082008 second(s), 70 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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