3960|4

1510

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

[ESP32-Audio-Kit音频开发板测评]OLED屏显示驱动 [复制链接]

ESP32-Audio-Kit音频开发板为用户提供的扩展资源实在称得上是紧缺,用扩展接口提供的引脚也多是复用的。要是使用个SPI接口啥的,估计能都给整没了!

为了显示的需要,这里就为它配置一个I2C接口OLED屏来显示。

该显示屏是一款0.91寸的单色屏,其显示效果如图1所示。

图1显示效果

显示屏与开发板的连接关系为:

SCL---IO23

SDA---IO18

其初始化函数为:

void OLED_Init(){  
  //SSD1306
  delay(100);
  OLED_WR_Byte(0xAE,OLED_CMD);
  OLED_WR_Byte(0x40,OLED_CMD);
  OLED_WR_Byte(0xB0,OLED_CMD);
  OLED_WR_Byte(0xC8,OLED_CMD);
  OLED_WR_Byte(0x81,OLED_CMD);
  OLED_WR_Byte(0xff,OLED_CMD);
  OLED_WR_Byte(0xa1,OLED_CMD);
  OLED_WR_Byte(0xa6,OLED_CMD);
  OLED_WR_Byte(0xa8,OLED_CMD);
  OLED_WR_Byte(0x1f,OLED_CMD);
  OLED_WR_Byte(0xd3,OLED_CMD);
  OLED_WR_Byte(0x00,OLED_CMD);
  OLED_WR_Byte(0xd5,OLED_CMD);
  OLED_WR_Byte(0xf0,OLED_CMD);
  OLED_WR_Byte(0xd9,OLED_CMD);
  OLED_WR_Byte(0x22,OLED_CMD);
  OLED_WR_Byte(0xda,OLED_CMD);
  OLED_WR_Byte(0x02,OLED_CMD);
  OLED_WR_Byte(0xdb,OLED_CMD);
  OLED_WR_Byte(0x49,OLED_CMD);
  OLED_WR_Byte(0x8d,OLED_CMD);
  OLED_WR_Byte(0x14,OLED_CMD);
  OLED_WR_Byte(0xaf,OLED_CMD);
  OLED_Clear();
}

 

显示定位函数为:

void OLED_Set_Pos(unsigned char x, unsigned char y){
    OLED_WR_Byte(0xb0+y,OLED_CMD);
    OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
    OLED_WR_Byte((x&0x0f),OLED_CMD);
}

 

清屏函数为:

void OLED_Clear(void){ 
  unsigned char i,n;      
  for(i=0;i<8;i++) 
  { 
       OLED_WR_Byte (0xb0+i,OLED_CMD);
       OLED_WR_Byte (0x00,OLED_CMD);
       OLED_WR_Byte (0x10,OLED_CMD); 
       for(n=0;n<128;n++)  OLED_WR_Byte(0,OLED_DATA);
  }
}

 

字符显示函数为:

void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned char Char_Size)
{       
    unsigned char c=0,i=0; 
    c=chr-' ';
    if(x>Max_Column-1){x=0;y=y+2;}
    if(Char_Size ==16)
    {
      OLED_Set_Pos(x,y); 
      for(i=0;i<8;i++)
      OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
      OLED_Set_Pos(x,y+1);
      for(i=0;i<8;i++)
      OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
    }
    else { 
        OLED_Set_Pos(x,y);
        for(i=0;i<6;i++)
        OLED_WR_Byte(F6x8[c][i],OLED_DATA);
    }
}

 

相应的主程序为:

void setup() {
  pinMode(SCLK, OUTPUT);
  pinMode(SDIN, OUTPUT);
  pinMode(ledPin, OUTPUT);
  OLED_Init();
  OLED_Clear();
  OLED_Showstring(0,0,15,16);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
  delay(500);
}

 

由于ArduinoIDE不支持指针的使用,故在显示字符串时需要借助数组来解决,基于字符显示函数的字符串显示函数为:

char Str[16] = "ESP32-Audio-Kit";

void OLED_Showstring(unsigned char x,unsigned char y,unsigned char n,unsigned char Char_Size)
{
        unsigned char i;
        for(i=0;i<n;i++)
        {
            OLED_ShowChar(x,y,Str[i],16);
            x=x+8;
        }
}

有了OLED屏的显示功能,信息的显示任务就不用完全依赖串口通信了!

此帖出自RF/无线论坛

最新回复

期待音频方面的测评呀~   详情 回复 发表于 2021-9-30 16:01

赞赏

1

查看全部赞赏

点赞(1) 关注
 

回复
举报

6802

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

单色屏,I2C接口,显示效果可以,简洁高效

此帖出自RF/无线论坛

点评

哈哈,这款板子的可用引脚资源很紧缺呀!  详情 回复 发表于 2021-9-29 10:52
 
 

回复

1510

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
Jacktang 发表于 2021-9-29 10:29 单色屏,I2C接口,显示效果可以,简洁高效

哈哈,这款板子的可用引脚资源很紧缺呀!

此帖出自RF/无线论坛
 
 
 

回复

1942

帖子

2

TA的资源

版主

4
 

期待音频方面的测评呀~

此帖出自RF/无线论坛

点评

正在准备着换开发环境来解决这个问题  详情 回复 发表于 2021-9-30 23:16
 
 
 

回复

1510

帖子

1

TA的资源

五彩晶圆(初级)

5
 
w494143467 发表于 2021-9-30 16:01 期待音频方面的测评呀~

正在准备着换开发环境来解决这个问题

此帖出自RF/无线论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
uCOS2精华快速掌握

10881

【TI原创】在任何上网的机器监测LM3S8962的温度

这个程序利用花生壳可以在任何一台能上互联网的电脑看到家里的开发板及板子周围的温度,我刚才测了下35度,呵呵呵,还算平安,若 ...

[MSP430] 汉字字模数据结构提问

typedef struct typFNT_GB12 { char Index; //内码索引 是什么意思? uint8_t Msk; //点阵码数据大小 这个我大概知道意思 ...

拆机啦~~看看怡成5D-1血糖仪

某天趁着促销5.6包邮购入怡成5D-1血糖仪一个~当时好几个说要抢后来却没行动说估计是骗人的哼哼,我现在拆给你们看~不管是真是假 ...

msp430g2553硬件IIC

#include "msp430g2553.h" #include "uart.h" unsigned char RX_Data; void I2C_Init(unsigned char SA);//I2C初始 ...

如何快速开发单片机

本帖最后由 maowentao0416 于 2020-4-21 20:55 编辑 作为一个单片机开发的老司机,在这里告诉大家如何快速的进行单片机开发, ...

什么电路可以实现这个功能?

什么电路可以实现这个功能,2路输入信号,一路为直流+12V,一路为方波信号(偏置后,即无负信号。),2路信号共地。 输出信号为 ...

【花雕动手做】有趣好玩的音乐可视化系列小项目(05)---WS2812柱跳灯

偶然脑子发热心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当 ...

如何将R128的lspsram频率提高至200M?

**一、修改频率方法** 首先通过cboot0命令,跳转到boot0的代码中,路径为: ${root_dir}/lichee/brandy-2.0/spl/ 找到l ...

提到电源仿真软件,越不过去的人

电源仿真软件是工程师们设计和验证电路的重要工具,小伙伴们,你们都用过哪些仿真软件呢??? LTspice、PSpice、SIMPLIS、SI ...

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