今天是第二天了,我试着玩玩OLED这个可爱的家伙。他是一个包罗万象的小精灵,精致可爱又纯粹!
1. 硬件电路部分
开发板和OLED的连接关系如表1所示。
表1:OLED使用的IO口
我的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个函数;
3-1. OLED_Init函数
OLED_Init函数具体描述见表3-1
表3-1
3-2. OLED_Clear函数
OLED_Clear函数具体描述见表3-2
表3-2
3-3. OLED_ShowChar函数
OLED_ShowChar函数具体描述见表3-3
表3-3
函数名称 | |
| void OLED_ShowChar(uint8_t x,uint8_t y,uint8_t chr,uint8_t 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
函数名称 | |
| void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t 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
函数名称 | |
| void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t 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);
显示效果如下所示:
不早了,有管汉字和图像的明天再贴出来!!!晚安各位!!!
奉上代码!!!
今天是5月12号,母亲节,也是汶川大地震11年祭。天气不咋滴,千里黄云白日曛。补上昨天的剩下的两个函数。
3-6. OLED_ShowCHinese函数
OLED_ShowCHinese函数具体描述见表3-6
表3-6
函数名称 | |
| void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no) |
| |
| |
|
| |
| |
| |
| |
| |
| |
|
| |
|
| |
下面我来说一下,有关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
函数名称 | |
| void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1, unsigned char BMP[]) |
| |
| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
| |
|
| |
下面我们来说说图像的取字模方法:
STEP1:打开取字模软件PCtoLCD2002
STEP2:点击模式,切换为图像模式;然后点击文件打开BMP图片。
STEP3:点击选项,进行如下设置。
STEP4:点击生成字模,粘贴到数组BMP1[]中即可。
举例如下:
//CODE6:
OLED_DrawBMP(0,0,128,8,BMP1);
效果如下所示:
再附一张自己制作的图片,可怜天下父母心,祝各位母亲,母亲节快乐!!