OLED液晶屏如何显示中文呢

序言

之前我们分享了,如何使用STM32驱动OLED液晶屏,讲了SSD1306控制芯片的驱动,对其驱动时序和常用命令做了介绍,详细请参考下面链接:

STM32驱动0.96寸OLED液晶屏

上篇中我们已经实现在OLED屏上显示出英文字符,除去数字、字母、符号等,OLED还能显示汉字、图片及任意图形。今天我们来介绍一下取模软件的使用,看看如何在OLED屏上显示中文,具体实现如下。

字幕显示原理

我们用的OLED液晶屏是由128*64个发光点阵组成,即分辨率是128*64。

ASCII码可以6*8、8*8、8*16像素,汉字一般显示像素为16*16。一般为了显示效果理想,英文和数字常选用8*16像素显示。

BLACK&WHITE

取模软件

推荐使用比较好用的取模软件:PCtoLCD2002。

BLACK&WHITE

字模选项设置

BLACK

&WHITE

生成字库

CK

&WHITE

将生成的字库信息复制到工程中待用,一般都是把自定义的字库放到一个单独的.h文件中。

BLACK&WHITE

硬件连接

测试电路连接:

GND---地VCC---3.3VD0---接PB9,作为SPI总线的CLK时钟引脚,时钟D1---接PB8,作为SPI总线的MOSI数据引脚,数据输入RES---接PB7D/C---接PB6,高电平为写数据,低电平为写命令CS---片选,接PB5,接地选中SSD1306

代码实现

显示汉字函数实现:

其中参数x为第一个像素在行中的位置,范围为0-127;如果一行占8个像素,那么参数y代表行号,范围为0-7。参数no为咱们自定义字库数组中的索引。

void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no)
{                
  uint8_t t,adder=0;
  OLED_Set_Pos(x,y);  
    for(t=0;t<16;t++)
  {
    OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
    adder+=1;
  }  
  OLED_Set_Pos(x,y+1);  
    for(t=0;t<16;t++)
  {  
    OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
    adder+=1;
  }          
}

main函数实现:

#include "stm32f10x.h"  
#include "delay.h"

#include "oled.h"

int main(void)  
{
  int i = 0;
  //延时函数初始化    
  delay_init();

  OLED_Init();
  
  OLED_Clear();
  
  //OLED_ShowString(0,4,(u8 *)" 0.96 OLED Demo ");   
  
  for(i=0;i<8;i++)
  {
    OLED_ShowCHinese(i*16,0,i+0);  
  }
  
  for(i=0;i<5;i++)
  {
    OLED_ShowCHinese(i*16,2,i+8);  
  }    
  
  for(i=0;i<3;i++)
  {
    OLED_ShowCHinese(i*16,4,i+13);  
  }
  
  for(i=0;i<7;i++)
  {
    OLED_ShowCHinese(i*16,6,i+16);  
  }
  
  while(1) 
  {    
    delay_ms(10); 
  }  
}

测试结果

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 3
关注 62
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧