本帖最后由 ohy3686 于 2018-9-6 13:01 编辑
【CC2530开发笔记02】OLED显示模块的驱动实现与基本应用
1、概述
有机发光半导体OLED显示技术,具有自发光、广视角、几乎无穷高的对比度、较低耗电、极高反应速度等优点,逐渐成为一种常用的显示模块,应用于各种单片机和嵌入式系统中。目前常见的OLED模块的控制芯片主要有SSH1106和SSD1306两种,两种控制芯片的模块基本兼容,SSH1106控制芯片RAM为132×64空间,SSD1306控制芯片RAM为128×64空间,在编写驱动程序的时候注意一下就可以了。
2、硬件连接
本技术笔记中选用0.96寸的OLED显示模块,采用三线SPI接口的方式进行控制。
模块有7个引脚,从左至右依次为:GND VCC D0 D1 RES DC CS。
D0:为时钟引脚,OLED_DC----连接到CC2530---->P1_6
D1:为数据引脚,OLED_DD----连接到CC2530---->P1_7
RES:为复位脚,OLED_RET----连接到CC2530---->P2_0
DC:为控制引脚,OLED_DC----连接到CC2530---->P1_5
CS:为片选引脚,低电平有效,接地----------->GND
3、开发思路
你在购买OLED显示模块的时候,商家通常都会提供相应的驱动程序,一般都有四个文件,在本笔记中:
<1> XMF_OLED1306.c:驱动程序的源文件。
<2> XMF_OLED1306.h:驱动程序的头文件。
<3> XMF_OLED_Font.h:字库文件。
<4> XMF_OLED_BMP.h:图片数据文件。
在这四个文件中,首先去看驱动程序的头文件,这里会告诉你,驱动程序里面有哪些数据结构和那些函数。各个商家提供的驱动函数基本上大同小异,可能也就是函数名称不同而已。再结合商家提供的应用Demo代码,掌握这些驱动函数的应用不会很难,如果有疑问可以看其对应的源码实现。这些驱动函数不是拷过来就直接能用的,需要稍作修改。但是也不必害怕,改动的地方很小,一般需要改动另个地方:
1、头文件中,引脚的定义。
2、端口初始化函数。
3、应用案例
首先在OLED显示模块上显示文字信息,并用一个整型变量显示屏幕刷新次数,从0累加至99,当到达100时,显示页面切换为图片信息,延时一段时间后,再次显示文字信息,屏幕刷新变量再次从0累加到99,如此往复。
4、实现源码
#include "ioCC2530.h"
#include "XMF_OLED1306.h"
unsigned int num = 0;
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void main()
{
Init_OLED_Port();
OLED_Init();
while(1)
{
OLED_Show_CHN(0,0,0); //~
OLED_Show_CHN(18,0,1); //小
OLED_Show_CHN(36,0,2); //蜜
OLED_Show_CHN(54,0,3); //蜂
OLED_Show_CHN(72,0,4); //壹
OLED_Show_CHN(90,0,5); //号
OLED_Show_CHN(108,0,6); //~
OLED_Show_CHN(18,3,7); //欧
OLED_Show_CHN(36,3,8); //浩
OLED_Show_CHN(54,3,9); //源
OLED_Show_CHN(72,3,11); //制
OLED_Show_Int(90,3,num,3,16);
OLED_Show_Str(6,6,"ohy3686@qq.com");
if(num++ == 100)
{
num = 0;
OLED_Clear();
OLED_Draw_BMP(0,0,128,8);
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
Delay(60000);
OLED_Clear();
}
Delay(60000);
Delay(60000);
}
}
5、驱动源码
商家一般只提供C51、STM8、STM32、MSP430的驱动源码,CC2530版的暂时没有。小弟不才,整理了一个CC2530版的的OLED驱动代码,肯定不会很完美,但是经过验证是可以使用的。如果有朋友需要,不嫌弃的话,附件下载即可。附件:0.96寸OLED驱动程序(CC2530版)
XMF-OLED1306-LIB.zip
(7.6 KB)
|