这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【DigiKeyLet'sdo第二期墨水屏DIY活动】-过程贴-显示GB2313

共4条 1/1 1 跳转至

【DigiKeyLet'sdo第二期墨水屏DIY活动】-过程贴-显示GB2313字符

菜鸟
2024-09-09 21:09:46     打赏

使用编译器环境:KEIL5.38A 一根MicUSB线。

实验目标:在墨水屏中显示字符串

首先我们在墨水瓶拓展板的原理图:image.png

SPI通讯方式简单介绍:

SPISerial Peripheral Interface)是一种高速全双工的通信总线,是一种通讯协议1SPI通讯方式具体过程如下2

主设备向从设备发送一个时钟脉冲,称为时钟起始。同时,主设备将片选信号拉低,以选择从设备。

主设备向从设备发送一个控制字节,控制字节包括数据传输的格式和长度等信息。

主设备向从设备发送数据。数据按照字节的顺序依次传输。在每个字节传输结束后,从设备会回应一个应答信号来确认接收到数据。

当所有的数据传输完成后,主设备将片选信号拉高,表示结束通信。

SPI接口一般使用四条信号线通信:SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)

墨水屏的工作原理:

每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子,悬浮于透明液体中。 利用正负相吸的原理,当电场接通时,该区块对应的黑或白粒子会移动至微胶囊的顶端,使用者在该区块上,就能看见白色或黑色。

所以我们就可以理解,为什么断电之后,墨水瓶上面依然会存在我们上次像输出的图片或者字样了。

软件代码编写的时候基本思路为:控制Pico评估板通过SPI(串行外设接口)与墨水屏通信编写初始化代码,设置墨水屏的参数(分辨率、显示模式等),编写显示代码,实现在墨水屏上显示文本、图形等内容

软件代码:

底层驱动代码:

void clear_fb_point(int x, int y) { drawfb[OLED_H - x - 1][y] = 0; }  
  
void draw_fb_ASCII(int x, int y, char word) {  
  const uint8_t *pData = epd2_get_font_16_24h(word);  
  unsigned char idxX, idxY;  
  int lineData;  
  
  for (idxY = 0; idxY < 24; idxY++) {  
    lineData = pData[idxY * 2 + 1];  
    lineData = lineData << 8;  
    lineData = lineData | pData[idxY * 2];  
  
    for (idxX = 0; idxX < 16; idxX++) {  
      if (lineData & (0x01 << idxX)) {  
        draw_fb_point(x + idxX, y + idxY);  
      } else {  
        clear_fb_point(x + idxX, y + idxY);  
      }  
    }  
  }  
}  
  
int My_strlen(char *data) {  
  int i = 0;  
  
  while (data[i]) {  
    i++;  
  }  
  
  return i;  
}  
  
void draw_fb(int x, int y, char *data) {  
  short int word;  
  int i, dataLen = My_strlen(data);  
  
  for (i = 0; i < dataLen;) {  
     if ((x + ASCII_FONT_H) > EPD_H) {  
      x = 0;  
      y += ASCII_FONT_W;  
    }  
    draw_fb_ASCII(x, y, data[i]);  
  
    x += ASCII_FONT_H;  
    i++;  
  }

显示字样驱动函数如下所示:

int main_EPD_test(void){
epd_init();
DEV_Delay_ms(2000);
fb_init();
draw_fb_point(10,20);
draw_fb(0, 20, "let is do DIY two"); 
draw_fb(0, 60, "HelloEEPW&DigiKey"); 
draw_fb(0, 90, "autor & keyboard7");
}

测试图片如下:

实验现象:开机之后墨水屏自检(参考例程,这里并为做修改,方便查询功能异常时候,是否为墨水屏在使用过程中出现的质量问题),最后屏幕显示下图字样,同时LED灯闪烁。

image.png








关键词: DigiKey     二期     墨水    

高工
2024-09-09 22:35:12     打赏
2楼

感谢分享


菜鸟
2024-09-10 11:03:18     打赏
3楼

谢谢分享


专家
2024-09-10 20:30:43     打赏
4楼

感谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]