找回密码
 立即注册
查看: 626|回复: 10

OLED12824-I2C/SPI协议-0.96寸/1.3寸-画点线面-带ASCII字库

[复制链接]
  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 79 天

    [LV.6]常住居民II

    4

    主题

    44

    回帖

    529

    积分

    高级会员

    积分
    529
    发表于 2024-1-13 13:21:06 | 显示全部楼层 |阅读模式
    STC32G--OLED12864--I2C/SPI协议
    ===兼容0.96(I2C/SPI)/1.3寸(I2C)
    ===绘制点线面--带ASCII字库
    函数是我参考网络上大部分0.96寸OLED的资料,学习改编而来,I2C协议是通过冲哥视频学习的
    特别是B站上“大明狐”老师的教学视频(十分推荐去看看,讲的很清晰易懂)
    对我理解OLED屏幕提供了很大的启示帮助。


    目前包含了8*128级缓存和1024级缓存绘制图形以及显示文字的部分(包含点、虚线、实线、矩形、圆形等等),还有通过指令写数据的方式直接显示文字的函数。

    演示视频二选一:


    3_000_IIC点亮0LED屏 - 汐.zip (2.36 MB, 下载次数: 55)
    3_000_SPI点亮0LED屏 - 汐.zip (2.42 MB, 下载次数: 38)
    今天刚好有空,画了一点点时间,把SPI的也搞了一下,目前发现SPI绘制的速度比IIC的快好多喔!!
    IIC我用STC32G实验箱测试的,SPI我用的屠龙刀测试的。
    截图202402061708531570.jpg   
    截图202402061710074783.jpg
    IIC协议使用的引脚(实验箱)
    截图202402061712306080.jpg   
    截图202402061711129662.jpg
    SPI使用的引脚(屠龙刀)


    #ifndef __IIC_H_
    #define __IIC_H_


    #include "stc32g.h"
    #include "stc32_stc8_usb.h"

    #define IIC_MODE    1       //0:软件IIC  1:硬件IIC(仅4脚)
    #define IIC_PIN     0       //0:四针IIC  1:七针IIC
    #define SLAVE_24C02         0XA0

    //------------------------------引脚定义------------------------------

    // #if     IIC_PIN == 0

    //     #define SCL P25
    //     #define SDA P24

    // #elif   IIC_PIN == 1

        #define SCL P25
        #define SDA P24
        #define RES P23
        #define DC  P34
        #define CS  P11

    // #endif

    #ifndef __OLED12824_IIC_H_
    #define __OLED12824_IIC_H_


    #include "stc32g.h"
    #include "stc32_stc8_usb.h"

    /*选择OLED的尺寸
        0:0.96寸4P/7P
        1:1.30寸4P
    */
    #define OLED_SIZE   1

    #define OLED_GRAM_Mode 0            //0:8*128级缓存 1:1024级缓存 2:指令模式


    //------------------------------变量声明------------------------------

    #define SLAVE_OLED_12864    0X78    //128*64_OLED屏幕IIC地址
    #define OLED_WriteCom_Addr        0x00        //从机写指令地址
    #define OLED_WriteData_Addr        0x40        //从机写数据地址

    #define OLED_CMD  0        //写命令
    #define OLED_DATA 1        //写数据

    #define Max_Column                        128
    #define Max_Row                                64
    #define        Brightness                        0xFF    //亮度0~255

    extern char xdata WaveData[128];

    #if     OLED_GRAM_Mode == 0             //0:8*128级缓存
        extern u8 OLED_GRAM[8][128];         // OLED全局缓存

    #elif   OLED_GRAM_Mode == 1             //1:1024级缓存
        extern u8 OLED_GRAM[1024];           // OLED全局缓存

    #else                                   //2:指令模式

    #endif



    //------------------------------引脚定义------------------------------






    //------------------------------函数声明------------------------------

    void OLED_Write_Byte(u8 dat, u8 cmd);               // 写入一个字节
    void OLED_Init(void);                               // 初始化OLED
    void OLED_Set_Pos(u8 x, u8 y);                      // OLED设置显示位置
    void OLED_Display_On(void);                         // 开启OLED显示
    void OLED_Display_Off(void);                        // 关闭OLED显示
    void OLED_LightSet(u8 num);                         // 亮度设置
    void OLED_Clear(bit mode);                          // 清屏函数

    #if     OLED_GRAM_Mode == 0 || OLED_GRAM_Mode == 1           //0:8*128级缓存//1:1024级缓存

    // #elif   OLED_GRAM_Mode == 1            

        void OLED_GRAM_Clear(bit mode);                                         // 通过缓冲数组,OLED屏幕全亮全灭
        void OLED_Refresh_Gram(void);                                           // OLED刷新显示
        void OLED_RefreshPart_Gram(u8 xstart, u8 ystart, u8 width, u8 height);  // OLED局部刷新显示

        void OLED_DrawPoint(u8 x, u8 y, bit mode);                              // OLED画一个点,0:熄灭 1:点亮
        void OLED_FourPoints(u8 x0, u8 y0, bit mode);                           // 4个像素点为一组,控制亮灭
        void OLED_Mask_Gray(u8 x0, u8 y0, u8 BMP[], bit mode);                  // 蒙版函数,衍生于OLED_FourPoints函数
        // void OLED_DrawLineG(u8 x1, u8 y1, u8 x2, u8 y2, bit mode);              // OLED画一条线,0:熄灭 1:点亮
        void OLED_DrawLineG_Dot(u8 x1, u8 y1, u8 x2, u8 y2, bit mode, u8 dot);  // OLED画一条虚实线,0:熄灭 1:点亮
        // void OLED_DrawRectangleG(u8 x1, u8 y1, u8 x2, u8 y2, bit mode);         // OLED画一个矩形
        void OLED_DrawFrameG(u8 x0, u8 y0, u8 x1, u8 y1, bit mode);             // OLED画一个方框
        void OLED_DrawBlockG(u8 x0, u8 y0, u8 x1, u8 y1, bit mode);             // OLED画一个实心框
        void OLED_DrawBox(u8 x0, u8 y0, u8 x1, u8 y1, u8 fill, bit mode);       // OLED画空实心矩形
        void OLED_DrawCircleG(u8 x, u8 y, u8 r, bit mode);                      // OLED画一个圆形
        void OLED_DrawEllipticG(u8 x0, u8 y0, u8 R1, u8 R2, bit mode);          // OLED画一个椭圆形
        void OLED_DrawCircleG_Distance(u8 x0, u8 y0, u8 R, bit mode);           // OLED画一个圆形(勾股定理法)
        void OLED_DrawBlockCircleG_Distance(u8 x0, u8 y0, u8 R, bit mode);      // OLED画一个实心圆形(勾股定理法)
        void OLED_DrawCircleG_Bresenham(u8 x, u8 y, u8 r, bit mode);            // OLED画一个圆形(Bresenham法)
        void OLED_DrawBlockCircleG_Bresenham(u8 x, u8 y, u8 r, bit mode);       // OLED画一个实心圆形(Bresenham法)
        void OLED_DrawRoundRectangleG(u8 x0, u8 y0, u8 x1, u8 y1, u8 R, u8 fill, bit mode);       // OLED画一个圆角矩形(Bresenham法)
        void OLED_DrawWidthRoundRectangleG(u8 x0, u8 y0, u8 x1, u8 y1, u8 R, u8 width, bit mode); // OLED画一个宽边圆角矩形(Bresenham法)

        void OLED_DrawSin();                                                        // 画正弦函数
        void ButtonWave();                                                          // 按键控制显示方波

        void OLED_ShowCharG(u8 x, u8 y, u8 chr, u8 charSize, u8 Is_Reverse);        // 缓存显示一个字符
        void OLED_ShowStringG(u8 x, u8 y, char *chr, u8 charSize, u8 Is_Reverse);   // 缓存显示一个字符号串
        void OLED_ShowNumG(u8 x, u8 y, u32 num, u8 len, u8 Size, u8 Is_Reverse);    // 缓存显示一串数字
        void OLED_ShowChineseG(u8 x, u8 y, u8 no, u8 Is_Reverse);                   // 缓存显示汉字
        void OLED_ShowBMPG(u8 x0, u8 y0, u8 x1, u8 y1, u8 BMP[], u8 Is_Reverse);    // 缓存显示BMP图片

    #else                                   //2:指令模式
    #endif

        void OLED_ShowChar(u8 x, u8 y, u8 chr, u8 charSize, u8 Is_Reverse);         // 早指定位置显示一个字符
        void OLED_ShowString(u8 x, u8 y, char *chr, u8 charSize, u8 Is_Reverse);    // 显示一个字符号串
        u32  OLED_Index(u8 m, u8 n);                                                // m^n函数
        void OLED_ShowNum(u8 x, u8 y, u32 num, u8 len, u8 Size, u8 Is_Reverse);     // 显示一串数字
        void OLED_ShowChinese(u8 x, u8 y, u8 no, u8 Is_Reverse);                    // 显示汉字
        void OLED_ShowBMP(u8 x0, u8 y0, u8 x1, u8 y1, u8 BMP[], u8 Is_Reverse);     // 显示BMP图片

    #endif



    主函数如下:

    1. <font face="新宋体"><b>#include <intrins.h>
    2. #include <stdio.h>
    3. #include <string.h>
    4. #include <stdlib.h>
    5. #include "stc32g.h"
    6. #include "stc32_stc8_usb.h"
    7. #include "iic.h"
    8. #include "oled12824_iic.h"
    9. #include "oled_bmp.h"
    10. // #define  MAIN_Fosc      24000000UL  //ISP下载时需将工作频率设置为24MHz
    11. char *USER_DEVICEDESC = NULL;
    12. char *USER_PRODUCTDESC = NULL;
    13. char *USER_STCISPCMD = "@STCISP#";       //不停电自动ISP下载命令
    14. // bit TIME_10ms_flag;         //10ms的标志位
    15. void delay_ms(u16 ms)
    16. {
    17.     u16 i;
    18.     do
    19.     {
    20.         i = MAIN_Fosc / 6000;
    21.         while(--i);
    22.     } while (--ms);
    23. }
    24. void sys_init();           // 函数声明
    25. void main()
    26. {
    27. //—————————————————主程序参数定义———————————————————————————//
    28. u8 i;
    29. //—————————————————主程序参数初始化—————————————————————————//
    30. sys_init(); // 使能USB功能,IO口初始化
    31. usb_init(); // USB初始化     //调用USB CDC初始化库函数
    32. EUSB = 1;   // 使能USB中断
    33. EA = 1;     // 总中断开
    34. while (DeviceState != DEVSTATE_CONFIGURED); // 等待USB完成配置
    35. delay_ms(1000);
    36. OLED_Init();
    37. // —————————————————主程序循环开始———————————————————//
    38. while (1)
    39. {
    40.    
    41.     // —————————————————以下为USB_CDC串口代码———————————————————//
    42.     delay_ms(2);        //延时等待USB稳定
    43.     // // 当硬件接收完成上位机通过串口助手发送数据后,会自动将bUsbOutReady置1
    44.     // // 接收的数据字节数保存在OutNumber变量中,接收的数据保存在UsbOutBuffer缓冲区
    45.     // if (bUsbOutReady)
    46.     // {
    47.     //     // 使用USB_SendData库函数可向上位机发送数据,这里的测试代码为将接收数据原样返回
    48.     //     // USB_SendData(UsbOutBuffer,OutNumber);
    49.     //     // ——————在这里写代码,单片机USB_CDC接受到数据后才会执行———————//
    50.         
    51.     // }
    52.     // —————————————————此处开始写代码———————————————————//
    53.    
    54.     //—————————————————点亮一颗LED灯———————————————————//
    55.     P40 = 0;
    56.     P60 = 0;
    57.     delay_ms(1000);
    58.     //—————————————————点亮一排OLED灯———————————————————//
    59.     OLED_GRAM_Clear(0);
    60. #if     OLED_GRAM_Mode == 0             //0:8*128级缓存
    61.     OLED_GRAM[0][0] = 0xff;             // OLED全局缓存
    62. #elif   OLED_GRAM_Mode == 1             //1:1024级缓存
    63.     OLED_GRAM[0] = 0xff;                // OLED全局缓存
    64. #endif
    65.     OLED_Refresh_Gram();
    66.     delay_ms(1000);
    67.     //—————————————————一排OLED灯流水灯———————————————————//
    68.     OLED_GRAM_Clear(0);
    69.     for ( i = 0; i < 8; i++)
    70.     {
    71.         OLED_DrawPoint(0, i, 1);
    72.         OLED_Refresh_Gram();
    73.         OLED_DrawPoint(0, i , 0);
    74.         OLED_Refresh_Gram();
    75.     }
    76.     OLED_GRAM_Clear(0);
    77.     OLED_Refresh_Gram();
    78.     for ( i = 0; i < 8; i++)
    79.     {
    80.         OLED_DrawPoint(0, i, 1);
    81.         OLED_Refresh_Gram();
    82.     }
    83.     delay_ms(1000);
    84.     //—————————————————画线———————————————————//
    85.     OLED_GRAM_Clear(0);
    86.     OLED_DrawPoint(0, 0, 1);
    87.     OLED_DrawLineG_Dot(0, 3, 127, 3, 1, 1);     //直线
    88.     OLED_DrawLineG_Dot(33, 5, 78, 27, 1, 1);    //斜线
    89.     OLED_DrawLineG_Dot(22, 29, 56, 23, 1, 3);   //虚斜线
    90.     OLED_DrawLineG_Dot(0, 63, 63, 0, 1, 1);     //斜率为1的斜线
    91.     OLED_DrawLineG_Dot(0, 7, 127, 7, 1, 5);
    92.     OLED_DrawLineG_Dot(0, 9, 127, 9, 1, 9);
    93.     OLED_DrawLineG_Dot(0, 11, 127, 11, 1, 11);
    94.     OLED_DrawLineG_Dot(0, 13, 127, 13, 1, 13);
    95.     for ( i = 0; i < 64; i+=8)
    96.     {
    97.         OLED_DrawLineG_Dot(0, 32, 127, i, 1, 1);
    98.     }
    99.     delay_ms(1000);
    100.     //—————————————————画矩形———————————————————//
    101.     OLED_GRAM_Clear(0);
    102.     for ( i = 0; i < 127; i+=4)
    103.     {
    104.         OLED_DrawFrameG(i, i / 2, 127 - i, 63 - i / 2, 1);
    105.         OLED_Refresh_Gram();
    106.     }
    107.     delay_ms(1000);
    108.     //—————————————————画实心矩形———————————————————//
    109.     OLED_GRAM_Clear(0);
    110.     OLED_DrawBlockG(0, 0, 10, 10, 1);
    111.     OLED_DrawBlockG(30, 20, 70, 40, 1);
    112.     OLED_GRAM_Clear(1);
    113.     OLED_Refresh_Gram();
    114.     OLED_DrawBlockG(30, 22, 70, 57, 0);
    115.     OLED_DrawBlockG(0, 0, 127, 63, 0);
    116.     delay_ms(1000);
    117.     //—————————————————画呼吸矩形———————————————————//
    118.     OLED_GRAM_Clear(0);
    119.     for ( i = 0; i < 10; i++)
    120.     {
    121.         OLED_DrawFrameG(10 + i, 3 + i, 29 - i, 22 - i, 1);
    122.         OLED_Refresh_Gram();
    123.     }
    124.     for ( i = 0; i < 10; i++)
    125.     {
    126.         OLED_DrawFrameG(19 - i, 12 - i, 20 + i, 13 + i, 0);
    127.         OLED_Refresh_Gram();
    128.     }
    129.     for ( i = 0; i < 20; i++)
    130.     {
    131.         OLED_DrawFrameG(50 + i, 10 + i, 89 - i, 49 - i, 1);
    132.         OLED_Refresh_Gram();
    133.     }
    134.     for ( i = 0; i < 20; i++)
    135.     {
    136.         OLED_DrawFrameG(69 - i, 29 - i, 70 + i, 30 + i, 0);
    137.         OLED_Refresh_Gram();
    138.     }
    139.     delay_ms(1000);
    140.     // —————————————————画圆形———————————————————//
    141.     OLED_GRAM_Clear(0);
    142.     OLED_DrawCircleG_Distance(32, 32, 30, 1);
    143.     OLED_DrawCircleG_Bresenham(96, 32, 30, 1);
    144.     delay_ms(1000);
    145.     //—————————————————画实心圆形———————————————————//
    146.     OLED_GRAM_Clear(0);
    147.     OLED_DrawBlockCircleG_Distance(32, 32, 30, 1);
    148.     OLED_DrawBlockCircleG_Bresenham(96, 32, 30, 1);
    149.     delay_ms(1000);
    150.     //—————————————————画呼吸圆形———————————————————//
    151.     OLED_GRAM_Clear(0);
    152.     for ( i = 0; i < 30; i++)
    153.     {
    154.         OLED_DrawCircleG(64, 32, i, 1);
    155.     }
    156.     for ( i = 0; i < 30; i++)
    157.     {
    158.         OLED_DrawCircleG(64, 32, 30-i, 0);
    159.     }
    160.     for ( i = 0; i < 20; i++)
    161.     {
    162.         OLED_DrawCircleG(20, 20, 19-i, 1);
    163.     }
    164.     for ( i = 0; i < 20; i++)
    165.     {
    166.         OLED_DrawCircleG(20, 20, i, 0);
    167.     }
    168.     delay_ms(1000);
    169.     //—————————————————画呼吸椭圆形———————————————————//
    170.     OLED_GRAM_Clear(0);
    171.     OLED_DrawEllipticG(64, 32, 40, 20, 1);
    172.     delay_ms(1000);
    173.     OLED_DrawEllipticG(64, 32, 40, 20, 0);
    174.     for ( i = 0; i < 30; i++)
    175.     {
    176.         OLED_DrawEllipticG(64, 32, 2*i, i, 1);
    177.     }
    178.     for ( i = 0; i < 30; i++)
    179.     {
    180.         OLED_DrawEllipticG(64, 32, 2*(30-i), i, 0);
    181.     }
    182.     delay_ms(1000);
    183.     //—————————————————画圆角矩形———————————————————//
    184.     OLED_GRAM_Clear(0);
    185.     OLED_DrawRoundRectangleG(10, 5, 100, 60, 5, 0, 1);
    186.     OLED_Refresh_Gram();
    187.     delay_ms(1000);
    188.     OLED_DrawRoundRectangleG(10, 5, 100, 60, 5, 1, 1);
    189.     OLED_Refresh_Gram();
    190.     delay_ms(1000);
    191.     OLED_GRAM_Clear(0);
    192.     OLED_DrawRoundRectangleG(10, 5, 100, 60, 12, 0, 1);
    193.     OLED_Refresh_Gram();
    194.     delay_ms(1000);
    195.     OLED_DrawRoundRectangleG(10, 5, 100, 60, 12, 1, 1);
    196.     OLED_Refresh_Gram();
    197.     delay_ms(1000);
    198.     //—————————————————画宽边圆角矩形———————————————————//
    199.     for ( i = 0; i < 10; i++)
    200.     {
    201.         OLED_GRAM_Clear(0);
    202.         OLED_DrawWidthRoundRectangleG(0+i, 0+i, 100-i, 60-i, 10, 1+i, 1);
    203.         OLED_Refresh_Gram();
    204.         delay_ms(1000);
    205.     }
    206.     delay_ms(1000);
    207.     —————————————————画正弦函数———————————————————//
    208.     OLED_GRAM_Clear(1);
    209.     OLED_Refresh_Gram();
    210.     OLED_GRAM_Clear(0);
    211.     OLED_Refresh_Gram();
    212.     OLED_ShowString(0, 0, "----SineWave----", 6, 0);
    213.     OLED_ShowString(0, 7, "Rad=", 6, 0);
    214.     OLED_ShowChinese(5, 1, 5, 1);
    215.     OLED_ShowChinese(5, 3, 6, 1);
    216.     OLED_ShowChinese(5, 5, 7, 1);
    217.     OLED_ShowChinese(112, 0, 0, 0);
    218.     OLED_ShowChinese(112, 2, 1, 0);
    219.     OLED_ShowChinese(112, 4, 2, 0);
    220.     OLED_ShowChinese(112, 6, 3, 0);
    221.    
    222.     while (1)
    223.     {
    224.         OLED_GRAM_Clear(0);
    225.         OLED_DrawLineG_Dot(0, 32, 127, 32, 1, 1);
    226.         OLED_DrawLineG_Dot(62, 0, 62, 63, 1, 1);
    227.         OLED_DrawSin();
    228.         delay_ms(1000);
    229.     }
    230. }
    231. }
    232. void sys_init()
    233. {
    234.     WTST = 0;  // 设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    235.     EAXFR = 1; // 扩展寄存器(XFR)访问使能
    236.     CKCON = 0; // 提高访问XRAM速度
    237.     P0M1 = 0x30;        P0M0 = 0x30; // 设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
    238.     P1M1 = 0x32;        P1M0 = 0x32; // 设置P1.1、P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V), P1.1在PWM当DAC电路通过电阻串联到P2.3
    239.     P2M1 = 0x3c;        P2M0 = 0x3c; // 设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V),设置开漏模式需要断开PWM当DAC电路中的R2电阻
    240.     P3M1 = 0x50;        P3M0 = 0x50; // 设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
    241.     P4M1 = 0x3c;        P4M0 = 0x3c; // 设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
    242.     P5M1 = 0x0c;        P5M0 = 0x0c; // 设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
    243.     P6M1 = 0xff;        P6M0 = 0xff; // 设置为漏极开路(实验箱加了上拉电阻到3.3V)
    244.     P7M1 = 0x00;        P7M0 = 0x00; // 设置为准双向口
    245.     // P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    246.     // P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    247.     // P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    248.     // P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    249.     // P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    250.     // P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    251.     // P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    252.     // P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    253.         
    254.         P3M0&= ~0x03;                //P3.0/P3.1和USB的D-/D+共用PIN脚,
    255.     P3M1|= 0x03;
    256.     USBCON = 0X00;              //USB初始化,断开USB
    257.     USBCLK = 0X00;
    258.     IRC48MCR = 0X00;
    259.     delay_ms(10);
    260.     // // 设置USB使用的时钟源
    261.     IRC48MCR = 0x80; // 使能内部48M高速IRC
    262.     while (!(IRC48MCR & 0x01)); // 等待时钟稳定
    263.     USBCLK = 0x00; // 使用CDC功能需要使用这两行,HID功能禁用这两行。
    264.     USBCON = 0x90;
    265. }</b></font>
    复制代码
    进过测试,两张缓存方式都可以实现。


    截图202401131308342963.jpg

    特别声明:我的时钟频率移动到STC32G.H文字中声明了,大家可根据自身情况修改。

    截图202401131311006584.jpg

    文件包含工程文件和取模工具,大家可自行下载。

    截图202401131312113272.jpg

    取模软件的配置情况:阴码、列行式、逆向


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

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 79 天

    [LV.6]常住居民II

    4

    主题

    44

    回帖

    529

    积分

    高级会员

    积分
    529
     楼主| 发表于 2024-3-23 23:45:32 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 79 天

    [LV.6]常住居民II

    4

    主题

    44

    回帖

    529

    积分

    高级会员

    积分
    529
     楼主| 发表于 2024-1-13 18:16:20 | 显示全部楼层
    写帖复制主函数的时候,不小心吧主函数里面“画正弦函数”那里注释双斜线搞没了,大家看看压缩包里面的有没有漏掉,如果出现编译报错,补一下就好了。
    还有那个头文件的名称应该“OLED_12864.h”应该是之前整个工程替换的时候按错了一个键导致全部的错了,不过因为是全部同时替换的,所以不影响使用,强迫症的友友可以替换自己喜欢的名字
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 96 天

    [LV.6]常住居民II

    11

    主题

    133

    回帖

    1133

    积分

    荣誉版主

    积分
    1133
    发表于 2024-1-14 19:51:40 | 显示全部楼层

    点评

    喔!!抓到新鲜的了(✪ω✪)  发表于 2024-1-14 20:04
    能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 08:24
  • 签到天数: 65 天

    [LV.6]常住居民II

    0

    主题

    14

    回帖

    308

    积分

    中级会员

    积分
    308
    发表于 2024-1-15 10:42:01 | 显示全部楼层
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 08:36
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    11

    主题

    183

    回帖

    1802

    积分

    版主

    积分
    1802
    QQ
    发表于 2024-1-15 13:47:19 | 显示全部楼层

    QQ:1638975601
    手机:19952583876
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 52 天

    [LV.5]常住居民I

    10

    主题

    28

    回帖

    232

    积分

    中级会员

    积分
    232
    发表于 2024-3-18 17:26:24 | 显示全部楼层
    正在学习中 非常感谢
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    22 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    0

    主题

    182

    回帖

    354

    积分

    中级会员

    积分
    354
    发表于 2024-3-18 18:07:16 | 显示全部楼层
    不错学习了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 156 天

    [LV.7]常住居民III

    0

    主题

    46

    回帖

    251

    积分

    中级会员

    积分
    251
    发表于 2024-3-20 05:54:51 | 显示全部楼层
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 24 天

    [LV.4]偶尔看看III

    2

    主题

    10

    回帖

    182

    积分

    注册会员

    积分
    182
    发表于 5 天前 | 显示全部楼层
    学习中...
    回复 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 22:49 , Processed in 0.079414 second(s), 72 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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