老王ST7571 灰度lcd显示屏 u8g2 驱动

u8g2:https://github.com/olikraus/u8g2/wiki/

ardunio 使用 U8X8_ST7571_128X96_4W_SW_SPI display(ST7571_CLK, ST7571_DATA, ST7571_CS, ST7571_DC ,ST7571_RESET);

git最新的支持demo里面有U8X8_ST7571_G12896_4W_SW_SPI,但是目前最新的u8g2里面没有这个定义,所以需要使用U8X8_ST7571_128X96_4W_SW_SPI

但是有个bug,默认最上面1/3没有显示。

需要再setup的时候 增加 调用方法

复制代码
  display.sendF("ca", 0x44, 0x00);

原因参考文档https://www.displayfuture.com/Display/datasheet/controller/ST7571.pdf

就是设置一下显示的第一行,不知道它的默认值是什么,反正不是0,所以需要重新设置一下

display.sendF("ca", 0x44, 0x00);

c代表command a代表argument

为什么要sendF需要"ca"这个参数?因为有根DC(data/command)数据线它的高低电平指示了是命令还是数据

具体参考函数

复制代码
void u8x8_cad_vsendf(u8x8_t * u8x8, const char *fmt, va_list va)
{
  uint8_t d;
  u8x8_cad_StartTransfer(u8x8);
  while( *fmt != '\0' )
  {
    d = (uint8_t)va_arg(va, int);
    switch(*fmt)
    {
      case 'a':  u8x8_cad_SendArg(u8x8, d); break;
      case 'c':  u8x8_cad_SendCmd(u8x8, d); break;
      case 'd':  u8x8_cad_SendData(u8x8, 1, &d); break;
    }
    fmt++;
  }
  u8x8_cad_EndTransfer(u8x8);
}

测试成功!

PS:ardunio编译esp32太慢了,第一次得半个小时,也不知道是笔记本配置太低了还是别的原因,好像增量编译也不太给力,改点东西验证需要编译等很久!

相关推荐
今日待办4 个月前
Arduino Nano33 BLESense Rev2【室内空气质量检测语音识别蓝牙调光台灯】
c语言·单片机·嵌入式硬件·mcu·语音识别·ardunio·arduinonano33
姚家湾1 年前
Ardunio BLE keyboard 库的使用
ardunio
姚家湾1 年前
由播客转向个人定制的音频频道(1)平台搭建
javascript·ai·hls·ardunio·播客
一只爬爬虫2 年前
利用proteus实现串口助手和arduino Mega 2560的串口通信
proteus·串口·mega 2560·ardunio