OLED的中英文和图片显示

51单片机使用oled时要用到取模软件,本文用PCtoLCD2002进行中英文和图片的取字模

OLED点阵与常规的LCD点阵的显示方式相同,从第一列开始向下取8个点作为一个字节,然后从第二列开始向下取.8个点作为第二个字节…依此类推。取模顺序是从低高,即第-一个点作为最低位。如图显示一行数据的图解。

要显示一个字符和汉字,都是由字符集的点整数据构成的,这些点阵数据被称为“字模”。计算字模的软件一一PCtoLCD2002。该软件可用来计算各种ASCII 字符、汉字(字体和大小都可以自己设置)、图片的字模。
0.96寸OLED分辨率是128*64,即OLED显示是128行64列;
本文用的是iic通信方式:
它是由数据线 SDA 和时钟 SCL 构成的串行总线, 可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送

水平方向分布了128个像素点,垂直方向分布了64个像素点,而驱动芯片在点亮像素点的时候,是以8个像素点为单位的。推荐的是垂直扫描的方式,也就是先画垂直方向的8个像素点,所以我们在画点的时候Y的取值为0-7,X的取值为0-127.
所以在设置取模方式是选择列行式,垂直扫描,页设置为0-7
OLED的显存
存放格式如下.

     YX  [0]0 1 2 3 ... 127 [1]0 1 2 3 ... 127 [2]0 1 2 3 ... 127 [3]0 1 2 3 ... 127 [4]0 1 2 3 ... 127 [5]0 1 2 3 ... 127 [6]0 1 2 3 ... 127 [7]0 1 2 3 ... 127

显示屏有8192个像素,每个发光点都有正负两个电极,全部引出8192*2个驱动电极是不现实的,实际做法是把每列的正极都接在一起引出一个电极,定义为一个段,把每行的负级接在一起引出一个电极,定义为一个公共极,这样12864的点阵,只需要引出128个段引脚、64个公共极引脚、一共有192个引脚即可。

点阵屏像素按128列X64行排列,每一行128个像素单元的阴极是连接在一起,作为公共极,每一列64个像素单元的阳极也连接在一起,作为一段。行列交叉点上的LED就是一个显示单元,即一个像素。要点亮一个像素,只要在该像素所在列电极上加上正电压、行电极接地。同样,要驱动一整行图像,就需要同时把128列信号加载到列电极上,把该行行电极接地。该行显示时,其他63行均不能显示,其行电极应为高电平或悬空。

oled屏显示程序:


unsigned char code picture_tab[]=
{{0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x01,0x20,0x70,0x28,0x24,0x22,0x21,0x20,0x20,0x24,0x28,0x30,0x60,0x00,0x00},/*"么",0*/
/* (16 X 16 , 宋体 )*/
{0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x01,0x20,0x70,0x28,0x24,0x22,0x21,0x20,0x20,0x24,0x28,0x30,0x60,0x00,0x00},/*"么",1*/
/* (16 X 16 , 宋体 )*/
{0x00,0xFC,0x04,0x04,0xFC,0x00,0x42,0xCC,0x10,0x10,0x90,0x7F,0x90,0x10,0x10,0x00},
{0x00,0x0F,0x04,0x04,0x0F,0x40,0x20,0x1F,0x28,0x46,0x41,0x40,0x40,0x43,0x4C,0x00},/*"哒",2*/
/* (16 X 16 , 宋体 )*/
};
void mingling(unsigned char command)     //写命令{ unsigned char counter;for(counter=0;counter<8;counter++)  //发送数据{ SCL=0;//将SCL总线拉低,为SDA电平变化做准备SDA=(command&0x80)>>7;command=command<<1;SCL=1;//将SCL拉高,现在可以检测SDA的电平了_nop_();SCL=0;//8位数据传输完成后,将SCL拉低}}void shuju(unsigned char command)  //写数据{ unsigned char counter;for(counter=0;counter<8;counter++)//发送数据{SCL=0;//将SCL总线拉低,为SDA电平变化做准备SDA=(command&0x80)>>7;command=command<<1;   _nop_();SCL=1;//将SCL拉高,现在可以检测SDA的电平了_nop_();SCL=0;8位数据传输完成后,将SCL拉低}}void lie_set(unsigned char lie)//设置列{mingling(0x10|(lie>>4));mingling(0x00|(lie&0x0f));  }
void hang_set(unsigned char hang)
//设置行{mingling(0xb0+hang);}
void Screen_clear()
//oled复位{unsigned char hang,lie;for(hang=0;hang<8;hang++)             //行循环{ hang_set(hang);lie_set(0);   for(lie=0;lie<128;lie++) //列循环{shuju(0x00);}}}
void Screen_check() {unsigned char hang,lie;for(hang=0;hang<8;hang++)             //行循环{ hang_set(hang);lie_set(0);   for(lie=0;lie<128;lie++) //列循环{shuju(0xff);}}}
void Picture_display(unsigned char *ptr_pic){unsigned char hang,lie;for(hang=0;hang<(64/8);hang++)      //行循环{ hang_set(hang);lie_set(0);   for(lie=0;lie<128;lei++) //列循环{shuju(*ptr_pic++);}}Delay(15);}

如果我们需要改变屏幕的显示内容,我们可以将picture_tab[ ] 数组中的数据进行修改

取模方式:
修改picture_tab[ ] 数组数据我们需要取模软件来获取显示内容的数据,中英文与图片的取模方式略有不同 。

1、中文取模方式:
(1)打开字模软件,模式选择字符模式,

(2)点击选项,设置成如图格式
(3)在空白框输入要填写的汉字,带点击生成字模
可以调整字宽与字高使屏幕显示使更清晰。
在使用取模软件时,注意图片的高度和宽度都要是16的倍数。

(4)将字模复制到程序函数中调用,在oled屏上即可实现汉字显示。
2、英文取模方式:
第(1)步与第(2)步同汉字取模,
(3)在空白框输入要填写的英文,带点击生成字模,适当调换字体使屏幕显示清晰

(4)将字模复制到程序函数中调用,在oled屏上即可实现英文显示。
3、图片取模方式:
(1)打开模式,选择图形模式,建立合适宽度与高度的图片


(2)点击选项,修改设置
(3)绘制图片,生成字模
(4)将字模复制到程序函数中调用,在oled屏上即可实现图片的显示。

对图片取模还有一种方法:
(1)打开电脑绘图软件,点击新建,点击文件,属性设置如图格式


(2)绘制所需要的图片
(3)将图片存为bmp格式

(4)打开PCtoLCD2002 ,添加刚刚绘制的图片 设置成如图格式,点击生成字模。则可以出现图片字模。

(5)将字模复制到程序函数中,即可调用。

当改变字宽与字高时字的形态也会发生变化,字模也会发生变化,用英文取模方式来演示:
当改变字字高由16变为32时,发现字的高度时原来的2倍,且字模发生了变化。


当字宽与字高分别增加2倍时,字母的面积变为原来的4倍,同时字模也发生变化,

注意:此模块为128*64像素,所以宽度不能超过128,高度不能超过64,否则屏幕无法全部显示字母。

OLED的中英文和图片显示相关推荐

  1. 基于STM32+0.96寸OLED - - 7脚SPI接线显示+代码解析

    前言  本次我们学习一下STM32关于SPI七脚OLED的 接线方法,OLED的代码解析,主要教会大家怎么使用OLED调试和看懂OLED驱动的代码,让大家对OLED有个简单的了解,本篇博客大部分是自己 ...

  2. 基于STM32CubeMX的stm32f103c6t6液晶0.96OLED显示字母数字汉字图片显示

    在STM32CubeMX里建工程,利用HAL库stm32F103c6t6连0.96寸的OLED液晶显示数字字母汉字图片.stm32f103c8t6,stm32f103zet6系列都可以参考下面的即可成 ...

  3. 4.1 ucGUI 图片显示方法

    图片显示步骤 1.运行uC-GUI-BitmapConvert.exe,打开图片file->open. 该文件在ucgui3.98\Micrium\Software\uC-GUI\Tool 目录 ...

  4. JS控制图片显示的大小(图片等比例缩放)

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  5. labview实现简单的图片显示

    labview实现简单的图片显示 标签(空格分隔): labview 笔记 图片处理 按说这并不是什么复杂的问题,但鉴于网上除了官方的帮助外很少有资料,而且我认为又是入门的非常好的例子,故按自己的学习 ...

  6. 安卓constraintLayout中app:srcCompat设置的图片显示不出来

    使用 app:srcCompat 的时候 引入的图片显示不出来的解决方案 首先查看的你的Activity 继承的是那个Activity 如果是继承AppcompatActivity  使用 Image ...

  7. Facebook iOS 应用是如何加速图片显示的?

    本文讲的是Facebook iOS 应用是如何加速图片显示的?, 你的Facebook的动态消息中充满着一些关于你朋友.家人以及你所爱的人的照片,也许你会想要在手机上也能重温那些场景.我们一直在寻找提 ...

  8. 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛图片显示软件发布及线上赛注意事项

    简 介: 本文对于第十六届全国大学生智能车竞赛视觉AI组线上比赛的识别任务软件以及相关比赛流程注意事项进行总结. 关键词: 智能车竞赛,视觉AI组 §01 积分分值   根据 第十六届全国大学生智能车 ...

  9. 微信小程序使用wxParse,解决图片显示路径问题

    微信小程序使用wxParse,解决图片显示路径问题 参考文章: (1)微信小程序使用wxParse,解决图片显示路径问题 (2)https://www.cnblogs.com/zxf100/p/100 ...

最新文章

  1. chrome inspect 离线调试-工具包 怎么使用
  2. protobuf + maven 爬坑记
  3. Docker 概念详解
  4. ca服务器证书鉴定计划,Let’s Encrypt 项目计划自动化地提供免费的 CA 证书
  5. 伟大的人为什么伟大呢?
  6. c:forEach 如何输出序号
  7. linux 添加path环境变量中,在Linux里设置环境变量PATH的方法是什?
  8. python的固定有没有固定字符_python每次处理固定个数的字符的方法总结
  9. Android笔记-雷电模拟器(Android5.1.1)安装Xposed
  10. PTA--03-树2 List Leaves
  11. docker(4):coreos+docker+rancher真厉害
  12. JarvisOJ Misc shell流量分析
  13. 金字塔原理读书笔记 一 为什么使用金字塔结构
  14. linux下制作u盘启动光盘,用SYSLINUX做启动U盘、光盘
  15. office 论文 页码_原创:如何设置毕业论文的页眉和页码(word2007和word2010)
  16. 马哥教育42期第三周作业
  17. 雪花漂浮php,h5canvas实现雪花飘落的特效代码
  18. eBPF/XDP实现Conntrack功能
  19. Python语言程序设计 - 测验6: 组合数据类型 (第6周)
  20. Phpstorm+phpstudy组合配置开发环境(Win端)

热门文章

  1. PostgreSQL安装、验证安装、pgAdmin初步简单使用
  2. 适合普通人的108个短视频项目:不用出镜也能赚钱的手机摄影玩法(3)
  3. 使用oppo手机,要记得关闭这些设置,不然手机会越用越卡
  4. 微信小程序云开发 操作数据库-数据的批量更新
  5. 推广网站的26种方法
  6. 怎么配置环境变量?(保姆级教程)
  7. 对称加密和非对称加密,数字签名和证书
  8. 怎么才能做好一套软件系统
  9. Docker Desktop 已经支持 Apple M1 了
  10. python vue+flask 跨域请求