3369|0

14

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

包罗万象的OLED [复制链接]

本帖最后由 Romanticjlm 于 2019-5-12 21:55 编辑

包罗万象的OLED

今天是第二天了,我试着玩玩OLED这个可爱的家伙。他是一个包罗万象的小精灵,精致可爱又纯粹!
1.    硬件电路部分
开发板和OLED的连接关系如表1所示。
表1:OLED使用的IO口

  
功能
  
引脚
描述
OLED
PB10
SCL
PB11
SDA
我的OLED屏幕采用IIC接口,时钟线SCL连接PB10,数据线SDA连接PB11。只要将这两个端口配置为输出模式,然后模拟IIC时序就可以驱动OLED了。
2.软件部分
首先我们对于OLED的初始化的流程是:
a.          将PB10、PB11配置为输出模式;
b.         初始化OLED屏幕;
c.          在相应位置显示汉字,数字,字符串、图片等。
部分代码如图1所示:
1:OLED初始化程序
3.代码详解
首先,我们根据OLED屏幕店家给的驱动程序直接改动,获得我们的OLED驱动程序。其实程序改动不多,只需将IO口配置好之后,将之前代码有关IIC的宏改成GD32单片机的就好。具体改动可以参考代码。
然后我根据应用说7个函数;
  
函数名称
  
功能描述
OLED_Init
与OLED屏幕有关IO口初始化以及屏幕的初始化
OLED_Clear
清除OLED屏幕显示
OLED_ShowChar
在OLED固定位置显示单个字符
OLED_ShowString
在OLED固定位置显示一个字符串
OLED_ShowNum
在OLED固定位置显示一个数字
OLED_ShowCHinese
在OLED固定位置显示一个汉字
OLED_DrawBMP
在OLED固定位置显示一个图像


3-1. OLED_Init函数
OLED_Init函数具体描述见表3-1
表3-1
  
函数名称
  
OLED_Init
函数原型
void OLED_Init(void)
函数描述
OLED屏幕初始化
调用的函数
-
输入的参数
-
-
输出的参数
-
-
返回的值
-
-

3-2. OLED_Clear函数
OLED_Clear函数具体描述见表3-2
表3-2
  
函数名称
  
OLED_Clear
函数原型
void OLED_Clear (void)
函数描述
清除OLED屏幕
调用的函数
-
输入的参数
-
-
输出的参数
-
-
返回的值
-
-


3-3. OLED_ShowChar函数
OLED_ShowChar函数具体描述见表3-3
表3-3
  
函数名称
  
OLED_ShowChar
函数原型
void OLED_ShowChar(uint8_t  x,uint8_t y,uint8_t chr,uint8_t Char_Size)
函数描述
OLED屏幕显示一个字符
调用的函数
-
输入的参数
x
列坐标

0~127
y
行坐标

0~7
Char_Size
字体大小选择

16---字体大小为8*16
  
8---字体大小为6*8
输出的参数
-
-
返回的值
-
-
OLED屏分辨率为128*64,竖向取模。如果是8*16大小的字符,对于第一行来说,y=0; 对于第二行来说,y=2;最后一行,y=6。
举例如下:
//CODE1:
             OLED_Clear();    //清屏幕
             OLED_ShowChar(0,0,'1',16);
             OLED_ShowChar(0,2,'2',16);
             OLED_ShowChar(0,4,'3',16);
             OLED_ShowChar(0,6,'4',16);
CODE1显示效果如下:
//CODE2:
             OLED_Clear();    //清屏幕
             OLED_ShowChar(0,0,'1',16);
             OLED_ShowChar(8,0,'2',16);
             OLED_ShowChar(16,0,'3',16);
             OLED_ShowChar(24,0,'4',16);
CODE2显示效果如下:






3-4. OLED_ShowString函数
OLED_ShowString函数具体描述见表3-4
表3-4
  
函数名称
  
OLED_ShowString
函数原型
void  OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t Char_Size)
函数描述
OLED屏幕显示字符串
调用的函数
-
输入的参数
x
列坐标

0~127
y
行坐标

0~7
chr
字符串指针

例如可以为 “1234”
Char_Size
字体大小选择

16---字体大小为8*16
  
8---字体大小为6*8
输出的参数
-
-
返回的值
-
-
举例如下:
//CODE3:
             OLED_ShowString(0,0,"1234",16);
显示效果如下:
3-5. OLED_ShowNum函数
OLED_ShowNum函数具体描述见表3-5
表3-5
  
函数名称
  
OLED_ShowNum
函数原型
void  OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size2)
函数描述
OLED屏幕固定位置显示相应长度数字
调用的函数
-
输入的参数
x
列坐标

0~127
y
行坐标

0~7
num
显示的数字

0~65535
len
所占屏幕位数

1~5
size2
字体大小选择

16---字体大小为8*16
  
8---字体大小为6*8
输出的参数
-
-
返回的值
-
-
举例如下:
//CODE3:
OLED_ShowNum(0,0,1,1,16);//在第二行第一个位置开始显示数字1,其占1个位置,故前面无空位置
             OLED_ShowNum(0,2,1,2,16);//在第二行第一个位置开始显示数字1,其占2个位置,故前面有1个空位置
             OLED_ShowNum(0,4,1,3,16);//在第二行第一个位置开始显示数字1,其占3个位置,故前面有2个空位置
             OLED_ShowNum(0,6,65535,5,16);
显示效果如下所示:


不早了,有管汉字和图像的明天再贴出来!!!晚安各位!!!
奉上代码!!!
002_OLED_1.rar (382.08 KB, 下载次数: 24)


今天是5月12号,母亲节,也是汶川大地震11年祭。天气不咋滴,千里黄云白日曛。补上昨天的剩下的两个函数。
3-6. OLED_ShowCHinese函数
OLED_ShowCHinese函数具体描述见表3-6
表3-6
  
函数名称
  
OLED_ShowCHinese
函数原型
void  OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no)
函数描述
OLED屏幕上指定位置显示一个汉字
调用的函数
-
输入的参数
x
列坐标
0~127
y
行坐标
0~7
no
汉字的索引号
汉字全部放在Hzk[][32]数组中
输出的参数
-
-
返回的值
-
-
下面我来说一下,有关OLED的几个文件:
oled.c     oled常用的函数
oled.h     oled屏幕有关的宏
bmp.h     有关要显示的图片
oledfont.h    主要是存放的字库数据,包含常用的字符和用户自己所取模的中文。常用字符分为两种大小格式6*8和8*16。
6*8的字体存放在数组F6x8[][6]中,字符纵向占8个像素点,横向占6个字符。
8*16的字体存放在数组F8X16[]中,字符纵向占16个像素点,横向占8个字符。
我们自己通过取字模软件获得的汉字取字模数据放在数组Hzk[][32]中。我们只需要将自己使用到的汉字用取模软件放到Hzk[][32]这个数组中即可。下面是去自摸后产生的结果如下所示。
下面我们来说说汉字的取字模方法:
STEP1:打开取字模软件PCtoLCD2002
STEP2:点击模式,切换为字符模式,并将字体设置为宋体,字宽和自高都设置为16。

STEP3:打开选项,并进行如下配置,并点击确定。

STEP4:在输入框输入汉字,并点击生成字模,将生成的数据粘贴到数组Hzk[][32]中。

STEP5:粘贴后的数据,将第一行注释掉,注释前后如下所示。


举例如下:
//CODE5:
             OLED_ShowCHinese(18,0,0);//平
             OLED_ShowCHinese(36,0,1);//衡
             OLED_ShowCHinese(54,0,2);//小
             OLED_ShowCHinese(72,0,3);//车
效果如下:
3-7. OLED_DrawBMP函数
OLED_DrawBMP函数具体描述见表3-7
表3-7
  
函数名称
  
OLED_DrawBMP
函数原型
void  OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned  char y1,
  
unsigned  char BMP[])
函数描述
OLED屏幕上指定位置显示衣服图像
调用的函数
-
输入的参数
x0
列起始坐标
0~127
y0
行起始坐标
0~7
x1
列结束坐标
0~127
y1
行结束坐标
0~7
BMP
图像数组名
BMP1[]数组中
输出的参数
-
-
返回的值
-
-
下面我们来说说图像的取字模方法:
STEP1:打开取字模软件PCtoLCD2002
STEP2:点击模式,切换为图像模式;然后点击文件打开BMP图片。
STEP3:点击选项,进行如下设置。
STEP4:点击生成字模,粘贴到数组BMP1[]中即可。
举例如下:
//CODE6:
OLED_DrawBMP(0,0,128,8,BMP1);
效果如下所示:



再附一张自己制作的图片,可怜天下父母心,祝各位母亲,母亲节快乐!!


此帖出自GD32 MCU论坛
点赞 关注(1)
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表