0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于单片机的SPI接口OLED显示

CHANBAEK 来源:凌云物联网实验室 作者:郭工 2022-12-19 09:23 次阅读

8.1 原理图分析

查看EK-RA6M4的原理图,如下图所示,该开发板上的MikroBus接口上有提供一个SPI接口。

图片

根据原理图可知,SPI接口的四个引脚分别为:

功能 引脚
MISO P202
MOSI P203
SCK P204
CS P205

这里我们将在该SPI接口上连接 SPI OLED显示屏(3.3V供电),该OLED显示屏的接口定义如下:

引脚 功能 EK-RA6M4引脚
GND GND GND
VCC 3.3V 3.3V
D0 SCK P204
D1 MOSI P203
RST 复位(必须要控制 0->1) P207
DC Data(高电平)/Command(低电平) P206
CS 已接地,不用接

8.2 SPI接口配置

首先,在FSP配置中将SPI所用的两个口P203、P204配置成SPI模式。

图片

然后,在FSP配置中将数据命令选择(DC)和两个引脚P206、P207配置成GPIO模式。

图片

图片

接着选择 Stacks ,点击 "New Stack" -> "Connectivity" -> "SPI(r_spi)" 添加 SPI 协议栈。

图片

接下来设置SPI的相关配置,并重新生成代码。

图片

图片

  • 通过 Name 字段可以修改SPI中断的名称为 g_spi0_master,它将在IDE自动生成的文件 ra_gen/hal_data.c/h 中定义SPI操作相关的变量;
  • 通过 Channel 字段可以修改SPI的通道号,这里设置为0,下面的 Pins 将自动选择 P202、P203和 P204 这个引脚;
  • 在这里选择使能所有的SPI中断并设置优先级为2级别,在这里保持默认的SPI的工作模式、工作极性等;
  • 通过 Callback 字段设置SPI收发的中断回调函数 spi0_master_callback ,它将配置在 g_spi0_master_cfg 变量中,该函数需要我们自己实现;
  • 通过 Full or Transmit Only Mode 字段,我们设置SPI工作在 Transmit Only 模式,这是因为我们的MCU会给OLED发送数据,而不会接收;
  • 通过 Bitrate 字段,可以修改SPI的速率。事实上这里设置为默认的16MHz,OLED显示屏也是可以正常工作的。

6.3 源码修改

创建OLED操作相关的头文件 src/bsp_oled.h 如下:

#ifndef BSP_OLED_H_
#define BSP_OLED_H_

#include 

extern void OLED_Init(void);
extern void OLED_Show_Picture(void);

#endif /* BSP_OLED_H_ */

创建OLED操作相关的c文件 src/bsp_oled.c 如下:

#include 
#include 
#include "r_spi_api.h"
#include "hal_data.h"


#define RESET_VALUE         0x00

static volatile spi_event_t spi_event;    // Master Transfer Event completion flag

static fsp_err_t spi_init(void);
static fsp_err_t spi_write(uint8_t *data, uint32_t bytes);
static fsp_err_t spi_read(uint8_t *buf, uint32_t size);

static inline void OLED_WrDat(uint8_t data)
{
    R_BSP_PinWrite(oled_cd, BSP_IO_LEVEL_HIGH);
    spi_write(&data, 1);
}

static inline void OLED_WrCmd(uint8_t cmd)
{
    R_BSP_PinWrite(oled_cd, BSP_IO_LEVEL_LOW);
    spi_write(&cmd, 1);
}

void OLED_Init()
{
    if( FSP_SUCCESS != spi_init() )
        return ;

    printf("Reset and initial OLED panel
");

    R_BSP_PinWrite(oled_rst, BSP_IO_LEVEL_LOW);
    R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);
    R_BSP_PinWrite(oled_rst, BSP_IO_LEVEL_HIGH);

    OLED_WrCmd(0xAE);   //display off
    OLED_WrCmd(0x20);    //Set Memory Addressing Mode
    OLED_WrCmd(0x10);    //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
    OLED_WrCmd(0xb0);    //Set Page Start Address for Page Addressing Mode,0-7
    OLED_WrCmd(0xc8);    //Set COM Output Scan Direction
    OLED_WrCmd(0x00);//---set low column address
    OLED_WrCmd(0x10);//---set high column address
    OLED_WrCmd(0x40);//--set start line address
    OLED_WrCmd(0x81);//--set contrast control register
    OLED_WrCmd(0x7f);
    OLED_WrCmd(0xa1);//--set segment re-map 0 to 127
    OLED_WrCmd(0xa6);//--set normal display
    OLED_WrCmd(0xa8);//--set multiplex ratio(1 to 64)
    OLED_WrCmd(0x3F);//
    OLED_WrCmd(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
    OLED_WrCmd(0xd3);//-set display offset
    OLED_WrCmd(0x00);//-not offset
    OLED_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequency
    OLED_WrCmd(0xf0);//--set divide ratio
    OLED_WrCmd(0xd9);//--set pre-charge period
    OLED_WrCmd(0x22); //
    OLED_WrCmd(0xda);//--set com pins hardware configuration
    OLED_WrCmd(0x12);
    OLED_WrCmd(0xdb);//--set vcomh
    OLED_WrCmd(0x20);//0x20,0.77xVcc
    OLED_WrCmd(0x8d);//--set DC-DC enable
    OLED_WrCmd(0x14);//
    OLED_WrCmd(0xaf);//--turn on oled panel

    R_BSP_SoftwareDelay(5, BSP_DELAY_UNITS_MILLISECONDS);
}

/*+--------------------+
 *|   Show Picture API |
 *+--------------------+
 */
uint8_t picture_code[]=
{
0x00,0x06,0x0A,0xFE,0x0A,0xC6,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0xFE,0x7D,0xBB,0xC7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC7,0xBB,0x7D,
0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x0C,0xFE,0xFE,0x0C,0x08,0x20,0x60,0xFE,0xFE,0x60,0x20,0x00,0x00,0x00,0x78,0x48,
0xFE,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xFE,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,0x00,0x00,0xFE,0xFF,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0xC0,0xC0,
0xC0,0x00,0x00,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0xFF,0xFE,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,
0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,
0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,0xFF,0x00,0x00,0x00,0x00,0xE1,0xE1,
0xE1,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,
0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xE2,0x92,0x8A,0x86,0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,
0x00,0xFE,0x00,0x82,0x92,0xAA,0xC6,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
0x7C,0x00,0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
0x7C,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x24,0xA4,0x2E,0x24,0xE4,0x24,0x2E,0xA4,0x24,0x00,0x00,0x00,0xF8,0x4A,0x4C,
0x48,0xF8,0x48,0x4C,0x4A,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,
0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,0x20,0x10,0x10,0x10,0x10,0x20,0xC0,0x00,0x00,
0x00,0x12,0x0A,0x07,0x02,0x7F,0x02,0x07,0x0A,0x12,0x00,0x00,0x00,0x0B,0x0A,0x0A,
0x0A,0x7F,0x0A,0x0A,0x0A,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x40,
0x40,0x50,0x20,0x5F,0x80,0x00,0x1F,0x20,0x40,0x40,0x40,0x50,0x20,0x5F,0x80,0x00,
};

void OLED_Show_Picture(void)
{
  unsigned char x,y;
  unsigned int i=0;
  for(y=0;y<8;y++)
    {
      OLED_WrCmd(0xb0+y);
      OLED_WrCmd(0x00);
      OLED_WrCmd(0x10);
      for(x=0;x<128;x++)
        {
          OLED_WrDat(picture_code[i++]);
        }
    }
}

/*+--------------+
 *|   SPI API    |
 *+--------------+
 */
static fsp_err_t spi_init(void)
{
    fsp_err_t err = FSP_SUCCESS;

    err = R_SPI_Open (&g_spi0_master_ctrl, &g_spi0_master_cfg);
    if (FSP_SUCCESS != err)
    {
        printf("** R_SPI_Open API for SPI Master failed ** 
");
        return err;
    }

    return err;
}

void spi0_master_callback(spi_callback_args_t * p_args)
{
    if (SPI_EVENT_TRANSFER_COMPLETE == p_args->event)
    {
        spi_event = SPI_EVENT_TRANSFER_COMPLETE;
    }
    else
    {
        spi_event = SPI_EVENT_TRANSFER_ABORTED;
    }
}

static inline fsp_err_t validate_spi_event(void)
{
    uint32_t local_time_out = UINT32_MAX;

    while( SPI_EVENT_TRANSFER_COMPLETE != spi_event )
    {
        --local_time_out;
        if(RESET_VALUE == local_time_out)
        {
            spi_event = (spi_event_t)RESET_VALUE;
            return FSP_ERR_TIMEOUT;
        }
    }

    if(spi_event == SPI_EVENT_TRANSFER_COMPLETE)
    {
        spi_event = (spi_event_t)RESET_VALUE;
        return FSP_SUCCESS;
    }

    spi_event = (spi_event_t)RESET_VALUE;
    return FSP_ERR_TRANSFER_ABORTED;
}

static fsp_err_t spi_write(uint8_t *data, uint32_t bytes)
{
    fsp_err_t err = FSP_SUCCESS;

    /* resetting call back event capture variable */
    spi_event = (spi_event_t)RESET_VALUE;

    err = R_SPI_Write(&g_spi0_master_ctrl, data, bytes, SPI_BIT_WIDTH_8_BITS);
    if(FSP_SUCCESS != err)
    {
        printf("Master R_SPI_Write() failed
");
        return err;
    }

    err = validate_spi_event();
    if (FSP_SUCCESS != err)
    {
        printf("** SPI write validate failed, err=%d ** 
", err);
        return err;
    }

    return FSP_SUCCESS;
}

__attribute__((unused)) static fsp_err_t spi_read(uint8_t *buf, uint32_t size)
{
    fsp_err_t err = FSP_SUCCESS;

    /* resetting call back event capture variable */
    spi_event = (spi_event_t)RESET_VALUE;

    err = R_SPI_Read(&g_spi0_master_ctrl, buf, size, SPI_BIT_WIDTH_8_BITS);
    if(FSP_SUCCESS != err)
    {
        printf("Master R_SPI_Write() failed
");
        return err;
    }

    err = validate_spi_event();
    if (FSP_SUCCESS != err)
    {
        printf("** SPI write validate failed, err=%d ** 
", err);
        return err;
    }

    return FSP_SUCCESS;
}

修改 src/hal_entry.c 源文件,在里面添加 OLED 初始化和显示的代码。

... ...
#include "bsp_oled.h"
... ...
void hal_entry(void)
{    
    ... ...

     OLED_Init();
    OLED_Show_Picture();

    while (1)
    {
    ... ...
}

8.4 编译运行

代码修改完成后,在开发板上编译运行。这时可以看到OLED上显示图片如下:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634635
  • OLED
    +关注

    关注

    119

    文章

    6198

    浏览量

    224098
  • 接口
    +关注

    关注

    33

    文章

    8575

    浏览量

    151015
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91505
收藏 人收藏

    评论

    相关推荐

    单片机OLED显示系统设计与实现

    该文以宏晶公司的STC89C52单片机为控制核心,信意电子科技提供的0.96寸OLED模块为显示输出设备,在Keil环境下编写OLED显示
    发表于 01-27 11:44 1.9w次阅读

    用51单片机驱动oled显示

    文章目录51单片机一.前言二.代码三.总结51单片机一.前言说起51,可以说是老古董了,刚开始接触单片机就是从51开始,今天就来用51单片机驱动ol
    发表于 07-15 07:11

    AVR单片机与串行AD的SPI接口设计

    为了解决信号采集系统的同步串行通讯问题,在理解AVR 单片机SPI接口的通讯原 理和方法的基础上,分析了AVR 单片机SPI
    发表于 02-18 16:07 211次下载
    AVR<b class='flag-5'>单片机</b>与串行AD的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>设计

    基于单片机OLED显示系统设计与实现

    为了提高图形信息的显示速度,并得到更多的显示效果,文章基于FG_V1.2单片机开发板,依据OLED12864显示屏的操作时序要求,用51
    发表于 12-31 09:20 23次下载

    基于单片机OLED显示系统设计与实现

    基于单片机OLED显示系统设计与实现,没有例程
    发表于 06-21 15:39 16次下载

    OLED显示模块与C8051F单片机接口设计

    OLED显示模块与C8051F单片机接口设计
    发表于 02-08 02:11 27次下载

    基于AVR单片机SPI的串行ADC接口设计

    基于AVR单片机SPI的串行ADC接口设计(开关电源技术与设计pdf百度云)-该文档为基于AVR单片机SPI的串行ADC
    发表于 09-22 17:24 5次下载
    基于AVR<b class='flag-5'>单片机</b><b class='flag-5'>SPI</b>的串行ADC<b class='flag-5'>接口</b>设计

    利用51单片机+0.96寸iic接口oled显示图片或动图

    ~利用51单片机+0.96寸iic接口oled显示图片或动图
    发表于 11-10 17:21 34次下载
    利用51<b class='flag-5'>单片机</b>+0.96寸iic<b class='flag-5'>接口</b><b class='flag-5'>oled</b><b class='flag-5'>显示</b>图片或动图

    MSP430 F5529 硬件SPI OLED 单片机 0.96英寸7针OLED SPI 6针OLED

    MSP430 F5529 硬件SPI OLED 单片机 0.96英寸7针OLED SPI 6针OLED
    发表于 11-19 20:51 44次下载
    MSP430 F5529 硬件<b class='flag-5'>SPI</b> <b class='flag-5'>OLED</b> <b class='flag-5'>单片机</b> 0.96英寸7针<b class='flag-5'>OLED</b> <b class='flag-5'>SPI</b> 6针<b class='flag-5'>OLED</b>

    51单片机 OLED Proteus SPI 仿真

    51单片机 OLED Proteus SPI 仿真
    发表于 11-20 11:21 46次下载
    51<b class='flag-5'>单片机</b> <b class='flag-5'>OLED</b> Proteus <b class='flag-5'>SPI</b> 仿真

    基于SPI协议接口OLED数据显示

    基于SPI协议接口OLED数据显示文章目录基于SPI协议接口
    发表于 12-22 19:38 27次下载
    基于<b class='flag-5'>SPI</b>协议<b class='flag-5'>接口</b>的<b class='flag-5'>OLED</b>数据<b class='flag-5'>显示</b>

    基于51单片机OLED显示图片文字

    基于51单片机OLED屏幕显示,可显示图片文字字母等。
    的头像 发表于 06-12 00:43 1.4w次阅读
    基于51<b class='flag-5'>单片机</b>的<b class='flag-5'>OLED</b><b class='flag-5'>显示</b>图片文字

    基于STM32单片机OLED显示使用库文件设计源代码

    基于STM32单片机OLED显示使用库文件设计源代码
    发表于 04-26 14:59 3次下载

    单片机软件模拟SPI接口的解决方案

    电子发烧友网站提供《单片机软件模拟SPI接口的解决方案.pdf》资料免费下载
    发表于 10-13 11:31 2次下载
    <b class='flag-5'>单片机</b>软件模拟<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的解决方案

    基于单片机的全彩OLED静态显示驱动接口电路

    电子发烧友网站提供《基于单片机的全彩OLED静态显示驱动接口电路.pdf》资料免费下载
    发表于 10-20 11:36 1次下载
    基于<b class='flag-5'>单片机</b>的全彩<b class='flag-5'>OLED</b>静态<b class='flag-5'>显示</b>驱动<b class='flag-5'>接口</b>电路