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位的数据后列地址自动加1dp++;}y++;}
}

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


  有爱情,便全心对待,没有爱情,也一个人惬意。学会一个人生活,不论身边是否有人疼爱。做好自己该做的,有爱或无爱,都安然对待。缘份到了,便去伸手抓住,缘份未到,就让自己活得精彩。爱情,本就是件宁缺勿滥的事,急不得。

1.3寸OLED 12864 sh1106带中文字库液晶屏介绍相关推荐

  1. linux移植1.3寸oled屏幕,芯片SH1106

    之前移植过MPU6050(I2C协议)和0.96寸oled(SPI协议),这次移植一个I2C协议的oled. I2C的介绍 可以参考上一篇I2C的文章: linux移植MPU6050的I2C驱动 -- ...

  2. ESP32驱动 1.3寸OLED SH1106芯片)

    使用U8g2lib库驱动 1.3寸OLED 驱动IC:SH1106 分辨率:128*64 支持电压3.3V/5.0V #include <Arduino.h> #include <U ...

  3. SWM181 驱动SH1106 1.3寸 OLED屏幕显示

    SWM181 驱动SH1106 1.3寸 OLED屏幕显示 ✨实测驱动的屏幕为sh1106,该工程源码不适合通过修改相关的偏移地址来适配ssd1306 I2C 0.96寸屏幕显示,实际修改后,经测试并 ...

  4. 【手把手带你用pid算法控制电机】——(1)编码器电机和0.96寸OLED显示屏的使用

    目录 前言 一.需要用到的器材 二.接线说明 三.cubmx配置 3.1 时钟树 3.2 输出PWM(TIM4) 3.3 编码器模式(TIM3) 3.4 中断定时器配置(TIM1) 3.5 配置IIC ...

  5. 1.3寸OLED SH1106 IIC驱动显示错误解决方法

    网上买的1.3寸OLED 用的时候发现显示有问题,整体像素都往左两个,导致左边少两列像素,右边两列则为乱码. 解决方法 在设置光标函数中让x轴向右位移2个像素. void OLED_SetCursor ...

  6. STM8驱动0.96寸OLED(12864液晶屏)

    由于中景园电子给出的例程不够全面,因此特地花时间重新整理了一下代码,并加上了其他的功能.本文记录了使用模拟四线 SPI 协议驱动 OLED 的代码. 文章目录 1 oled.h 2 oled.c 2. ...

  7. STM32(基于HAL库)驱动0.96寸OLED屏幕(六脚)

    STM32驱动0.96寸OLED屏幕(六脚) 1 序言 2 如何利用STM32单片机驱动12864液晶屏 2.1*基本配置* 2.2 *0.96寸OLED端口含义* 2.3 *0.96寸OLED液晶屏 ...

  8. 【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  9. 工业产品3.12寸OLED屏调研

    在我们的开发中,经常会看到一些产品会用到数码管或者1602的屏幕,一个原因是需要显示的内容不多,并且想要低功耗,但是 1602,12864的显示效果并不是很好,这时候使用OLED屏幕做替代方案是一个不 ...

  10. 基于STM32F1自写移植代码分享系列之0.96寸OLED模块

    基于STM32F1自写移植代码分享系列之0.96寸OLED模块 文章目录 基于STM32F1自写移植代码分享系列之0.96寸OLED模块 文件获取 文件使用方法 参数配置 引脚配置 函数介绍 函数说明 ...

最新文章

  1. 苗旺:因果推断,观察性研究和 2021 年诺贝尔经济学奖
  2. Linux下互斥量与条件变量详细解析
  3. Flutter 基础Widgets之AppBar详解
  4. 人脸识别技术大总结—Face Detection Alignment
  5. 什么是Linux系统调用system call?(Linux内核中设置的一组用于实现各种系统功能的子程序)(区别于标准C库函数调用)核心态和用户态的概念、中断的概念、系统调用号、系统调用表
  6. 信息采集-火车采集器
  7. 微信jssdk遇到的一些问题汇总
  8. css 单行/多行文字垂直居中问题
  9. Linux网络编程——端口复用(多个套接字绑定同一个端口----避免服务器重启时,端口绑定不上)
  10. lammps建模_lammps建模方法,即生成data文件
  11. C程序设计,贪吃蛇程序
  12. 概念数据模型、逻辑数据模型、物理数据模型
  13. 澳洲计算机科学专业,盘点澳洲八大名校那些最强的专业—计算机科学专业
  14. DSP 基础学习 1:搭建环境与CCS6创建工程模板
  15. 〖Python自动化办公篇㉑〗- python实现邮件自动化 - 定时发送邮件
  16. 对日软件工程师的几种招聘要求
  17. Ubuntu(linux) 7z压缩和解压缩命令
  18. Python——类(class)的定义及使用
  19. css 设置MP4 video视频背景色透明
  20. SSM-Mybatis通用Mapper

热门文章

  1. 用TensorFlow为图片添加字幕
  2. 计算机软件英文参考文献,软件工程英文参考文献(优秀范文105个)
  3. 数字图像处理-知识点总结
  4. lammps教程:磨屑原子Ovito后处理教程
  5. 【SDE】随机微分方程(1)
  6. oracle sqlcode 多条,oracle sqlerrm和sqlcode函数
  7. matlab正交表,正交表的构造方法及Matlab实现
  8. pythonpptx模块详解_详解 Python 操作 PPT 的各种骚操作!
  9. python爬虫分析百度文库、道客巴巴、豆丁网获取图片链接
  10. 浅析Linux系统入侵排查与应急响应技术