1.3寸OLED 12864 sh1106带中文字库液晶屏介绍

1.3寸OLED 12864 sh1106带中文字库液晶屏库简介


1.3寸OLED 12864 sh1106带中文字库SPI接口的液晶屏,这是一款来自中景园的屏幕。

在这里插入图片描述

屏幕技术资料介绍

链接:https://pan.baidu.com/s/1setO3KIlfqRFJ-utFWSKHQ   
提取码:8888 
  • 包含51单片机和STM32案例,满足不同单片机的应用开发需求。提供的案例相对来讲很齐全的。
    在这里插入图片描述
    在这里插入图片描述

相关参数介绍

  • 整体的屏幕参数:
    在这里插入图片描述

  • 原理图
    在这里插入图片描述

  • 外部引脚接口定义
    在这里插入图片描述

  • 资料所包含有的规格书
    在这里插入图片描述

GT20L16S1Y 标准点阵汉字字库芯片介绍

  GT20L16S1Y是一款内含16x16点阵的汉字库芯片,支持GB2312国标简体汉字(含有国家信标委合法授权)、ASCIl字符。排列格式为竖置横排。用户通过字符内码,利用我司所提供库文件内的函数接口可直接读取该内码的点阵信息。
  GT20L16S1Y除含有上述字库以外,芯片提供64KB可擦写空间,包含16个扇区,每个扇区4K字节或16页,每页256字节,可自由写入空间地址范围为:0x6FFFF-0x7FFFF。仅支持上位机烧录,可重复擦写10万次以上。
芯片参数:
  • 数据总线:SPI串行总线接口
  • 点阵排列方式:竖置横排
  • 时钟频率:45MHz@3.3V
  • 工作电压:2.7V~3.6V
  • 电流:

工作电流:5-15mA
睡眠电流:1-5uA

  • 工作温度:-40℃~85℃
  • 封装:SOT23-6
  • 字符集:GB2312
  • 字号:16×16点阵
    在这里插入图片描述

汉字显示的调用过程

这里以STC单片机为例:

  • 显示相关函数
void OLED_Display_GB2312_string(u8 x,u8 y,u8 *text);
void OLED_Display_string_5x7(u8 x,u8 y,u8 *text);
void OLED_ShowNum(u8 x,u8 y,float num,u8 len);
void OLED_Display_128x64(u8 *dp);
void OLED_Display_16x16(u8 x,u8 y,u8 *dp);
void OLED_Display_8x16(u8 x,u8 y,u8 *dp);
void OLED_Display_5x7(u8 x,u8 y,u8 *dp);
//举例:
OLED_Display_GB2312_string(0,0,"12864,带中文字库");
OLED_Display_16x16(97,6,jiong1);/*在第7页,第81列显示单个自编生僻汉字“囧”*/
OLED_Display_string_5x7(0,2,"<!@#$%^&*()_-+]/;.,?[");/*在第3页,第1列,显示一串5x7点阵的ASCII字*/

中文显示的过程,可以从OLED_Display_GB2312_string(u8 x,u8 y,u8 *text)了解整个调用和实现的过程。

void OLED_Display_GB2312_string(u8 x,u8 y,u8 *text)
{
	u8 i=0;
	u8 addrHigh,addrMid,addrLow;
	u8 fontbuf[32];
	while(text[i]>0x00)
	{
		if((text[i]>=0xb0)&&(text[i]<=0xf7)&&(text[i+1]>=0xa1))
		{
			//国标简体(GB2312)汉字在晶联讯字库IC中的地址由以下公式来计算:
			//Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0
			//由于担心8位单片机有乘法溢出问题,所以分三部取地址
			fontaddr=(text[i]-0xb0)*94;
			fontaddr+=(text[i+1]-0xa1)+846;
			fontaddr=fontaddr*32;
			
			addrHigh=(fontaddr&0xff0000)>>16;   //地址的高8位,共24位
			addrMid=(fontaddr&0xff00)>>8;       //地址的中8位,共24位
			addrLow=(fontaddr&0xff);            //地址的低8位,共24位
			
			OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32);
			//取32个字节的数据,存到"fontbuf[32]"
			OLED_Display_16x16(x,y,fontbuf);
			//显示汉字到LCD上,y为页地址,x为列地址,fontbuf[]为数据
			x+=16;
			i+=2;
    }
		else if((text[i]>=0xa1)&&(text[i]<=0xa3)&&(text[i+1]>=0xa1))
		{
			
			fontaddr=(text[i]-0xa1)*94;
			fontaddr+=(text[i+1]-0xa1);
			fontaddr=fontaddr*32;
			
			addrHigh=(fontaddr&0xff0000)>>16;
			addrMid=(fontaddr&0xff00)>>8;
			addrLow=(fontaddr&0xff);
			
			OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32);
			OLED_Display_16x16(x,y,fontbuf);
			x+=16;
			i+=2;
    }
		else if((text[i]>=0x20)&&(text[i]<=0x7e))
		{
			unsigned char fontbuf[16];
			fontaddr=(text[i]-0x20);
			fontaddr=(unsigned long)(fontaddr*16);
			fontaddr=(unsigned long)(fontaddr+0x3cf80);
			
			addrHigh=(fontaddr&0xff0000)>>16;
			addrMid=(fontaddr&0xff00)>>8;
			addrLow=fontaddr&0xff;
			
			OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,16);
			OLED_Display_8x16(x,y,fontbuf);
			x+=8;
			i+=1;
    }
		else 
			i++;
  }
}
  • 首先对将要显示的字符串从字库芯片里面字符地址逐一查询:

查询字符的过程:

  1. 字符的地址获取:Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0

8位单片机地址做了拆分获取,再拼接:

	fontaddr=(text[i]-0xb0)*94;
	fontaddr+=(text[i+1]-0xa1)+846;
	fontaddr=fontaddr*32;
  1. 通过字符地址,去获取字符数据。
取32个字节的数据,存到"fontbuf[32]"
OLED_get_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32);
//从相关地址(addrHigh:地址高字节,addrMid:地址中字节,addrLow:地址低字节)中连续读出DataLen个字节的数据到 pbuff的地址
//连续读取
void OLED_get_data_from_ROM(u8 addrHigh,u8 addrMid,u8 addrLow,u8 *pbuff,u8 DataLen)
{
	u8 i;
	OLED_ROM_CS_Clr();//这里将字库芯片SPI片选(CS引脚)拉低,访问有效
	Send_Command_to_ROM(0x03);
	Send_Command_to_ROM(addrHigh);
	Send_Command_to_ROM(addrMid);
	Send_Command_to_ROM(addrLow);
	for(i=0;i<DataLen;i++)
	{
		*(pbuff+i)=Get_data_from_ROM();
  }
	OLED_ROM_CS_Set();//这里获取完字符数据后,将字库片选引脚(CS引脚)拉高
}
  1. 从字库芯片取到数据后,显示到OLED屏幕上。
//显示汉字到LCD上,y为页地址,x为列地址,fontbuf[]为数据
OLED_Display_16x16(x,y,fontbuf);

//显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标
void OLED_Display_16x16(u8 x,u8 y,u8 *dp)
{
	u8 i,j;
	for(j=0;j<2;j++)
	{
		OLED_address(x,y);
		for(i=0;i<16;i++)
		{
			OLED_WR_Byte(*dp,OLED_DATA);  //写数据到OLED,每写完一个8位的数据后列地址自动加1
			dp++;
    }
		y++;
  }
}

对于使用者来说,只需关系如何调佣即可,无需关系是如何实现,这块液晶屏也是借助的第三方的字库芯片来实现的。


  有爱情,便全心对待,没有爱情,也一个人惬意。学会一个人生活,不论身边是否有人疼爱。做好自己该做的,有爱或无爱,都安然对待。缘份到了,便去伸手抓住,缘份未到,就让自己活得精彩。爱情,本就是件宁缺勿滥的事,急不得。
  • 0
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.3OLED全套资料 132 X 64 Dot Matrix OLED/PLED Preliminary Segment/Common Driver with Controller 1 V0.2 Features „ Support maximum 132 X 64 dot matrix panel „ Embedded 132 X 64 bits SRAM „ Operating voltage: - Logic voltage supply: VDD1 = 1.65V - 3.5V - DC-DC voltage supply: VDD2 = 3.0V – 4.2V - OLED Operating voltage supply: External VPP supply = 6.4V - 13.0V Internal VPP generator = 6.4V - 9.0V „ Maximum segment output current: 200μA „ Maximum common sink current: 27mA „ 8-bit 6800-series parallel interface, 8-bit 8080-series parallel interface, 3-wire & 4-wire serial peripheral interface, 400KHz fast I2C bus interface „ Programmable frame frequency and multiplexing ratio „ Row re-mapping and column re-mapping (ADC) „ Vertical scrolling „ On-chip oscillator „ Programmable Internal charge pump circuit output „ 256-step contrast control on monochrome passive OLED panel „ Low power consumption - Sleep mode: <5μA - VDD1=0V,VDD2=3.0V – 4.2V: <5μA - VDD1,2=0V,VPP=3.0V – 4.2V: <5μA „ Wide range of operating temperatures: -40 to +85°C „ Available in COG form, thickness: 300μm General Description SH1106 is a single-chip CMOS OLED/PLED driver with controller for organic/polymer light emitting diode dot-matrix graphic display system. SH1106 consists of 132 segments, 64 commons that can support a maximum display resolution of 132 X 64. It is designed for Common Cathode type OLED panel. SH1106 embeds with contrast control, display RAM oscillator and efficient DC-DC converter, which reduces the number of external components and power consumption. SH1106 is suitable for a wide range of compact portable applications, such as sub-display of mobile phone, calculator and MP3 player, etc.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值