找回密码
 立即注册
查看: 15529|回复: 88

32G12K128驱动OLED12864,SPI或I2C两种方式

  [复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

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

积分
8058
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, 下载次数: 1083

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

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



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:405
  • 最近打卡:2025-04-16 13:31:35
已绑定手机

5

主题

98

回帖

1938

积分

金牌会员

积分
1938
发表于 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同学/同事/老师/研发人员


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-01 21:17:28

8

主题

25

回帖

452

积分

中级会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-07-27 20:01:09

11

主题

18

回帖

171

积分

注册会员

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

我改了头文件    还是有问题

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

点评

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

使用道具 举报 送花

0

主题

3

回帖

94

积分

注册会员

积分
94
发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

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

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

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

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

我改了头文件    还是有问题



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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

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

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




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

使用道具 举报 送花

0

主题

3

回帖

94

积分

注册会员

积分
94
发表于 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, 2025-5-2 04:02 , Processed in 0.150494 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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