【CC2530开发笔记02】OLED显示模块的驱动实现与基本应用

[复制链接]
8676|30
 楼主| ohy3686 发表于 2018-2-1 20:02 | 显示全部楼层 |阅读模式
本帖最后由 ohy3686 于 2018-9-6 13:01 编辑

【CC2530开发笔记02】OLED显示模块的驱动实现与基本应用

1、概述
    有机发光半导体OLED显示技术,具有自发光、广视角、几乎无穷高的对比度、较低耗电、极高反应速度等优点,逐渐成为一种常用的显示模块,应用于各种单片机和嵌入式系统中。目前常见的OLED模块的控制芯片主要有SSH1106SSD1306两种,两种控制芯片的模块基本兼容,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、实现源码
  1. #include "ioCC2530.h"
  2. #include "XMF_OLED1306.h"

  3. unsigned int num = 0;

  4. void Delay(unsigned int t)
  5. {
  6.   while(t--);
  7.   while(t--);
  8. }

  9. void main()
  10. {
  11.   Init_OLED_Port();
  12.   OLED_Init();
  13.   while(1)
  14.   {
  15.     OLED_Show_CHN(0,0,0);     //~
  16.     OLED_Show_CHN(18,0,1);    //小
  17.     OLED_Show_CHN(36,0,2);    //蜜
  18.     OLED_Show_CHN(54,0,3);    //蜂
  19.     OLED_Show_CHN(72,0,4);    //壹
  20.     OLED_Show_CHN(90,0,5);    //号
  21.     OLED_Show_CHN(108,0,6);   //~
  22.    
  23.     OLED_Show_CHN(18,3,7);    //欧
  24.     OLED_Show_CHN(36,3,8);    //浩
  25.     OLED_Show_CHN(54,3,9);    //源
  26.     OLED_Show_CHN(72,3,11);   //制
  27.     OLED_Show_Int(90,3,num,3,16);
  28.     OLED_Show_Str(6,6,"ohy3686@qq.com");
  29.     if(num++ == 100)
  30.     {
  31.       num = 0;
  32.       OLED_Clear();
  33.       OLED_Draw_BMP(0,0,128,8);
  34.       Delay(60000);
  35.       Delay(60000);
  36.       Delay(60000);
  37.       Delay(60000);
  38.       Delay(60000);
  39.       OLED_Clear();
  40.     }
  41.     Delay(60000);
  42.     Delay(60000);
  43.   }
  44. }
5、驱动源码
    商家一般只提供C51、STM8、STM32、MSP430的驱动源码,CC2530版的暂时没有。小弟不才,整理了一个CC2530版的的OLED驱动代码,肯定不会很完美,但是经过验证是可以使用的。如果有朋友需要,不嫌弃的话,附件下载即可。附件:0.96寸OLED驱动程序(CC2530版)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
fentianyou 发表于 2018-2-1 21:30 | 显示全部楼层
放假都不休息的大神。
dirtwillfly 发表于 2018-2-3 21:03 | 显示全部楼层
 楼主| ohy3686 发表于 2018-2-3 23:42 | 显示全部楼层
gygp 发表于 2018-2-6 20:34 | 显示全部楼层
SSH1106和SSD1306有什么不同?
gygp 发表于 2018-2-6 20:34 | 显示全部楼层
相加比,SSH1106和SSD1306哪个更高?
 楼主| ohy3686 发表于 2018-2-6 22:38 | 显示全部楼层
febgxu 发表于 2018-2-6 20:33
楼主的代码都开发完整了吗

完整。
 楼主| ohy3686 发表于 2018-2-6 22:38 | 显示全部楼层
gygp 发表于 2018-2-6 20:34
SSH1106和SSD1306有什么不同?

内存RAM空间不同。
 楼主| ohy3686 发表于 2018-2-6 22:38 | 显示全部楼层
febgxu 发表于 2018-2-6 20:34
OLED能够显示图像吗?

能够。
 楼主| ohy3686 发表于 2018-2-6 22:38 | 显示全部楼层
gygp 发表于 2018-2-6 20:34
相加比,SSH1106和SSD1306哪个更高?

差不多
dzfansman 发表于 2018-2-7 22:07 | 显示全部楼层
OLED价格怎么样
plsbackup 发表于 2018-2-7 22:09 | 显示全部楼层
ohy3686 发表于 2018-2-6 22:38
内存RAM空间不同。

控制的效率怎么样?
dzfansman 发表于 2018-2-7 22:15 | 显示全部楼层
不知道读写效率怎么样?
plsbackup 发表于 2018-2-7 22:15 | 显示全部楼层
ohy3686 发表于 2018-2-6 22:38
内存RAM空间不同。

占用的是mcu的ram多吗?
 楼主| ohy3686 发表于 2018-2-7 22:17 | 显示全部楼层

0.96英寸的15块左右,1.3英寸的20块左右
量大应该能谈价格。
 楼主| ohy3686 发表于 2018-2-7 22:18 | 显示全部楼层
dzfansman 发表于 2018-2-7 22:15
不知道读写效率怎么样?

一般只写不读
模块有SPI和IIC两种接口
虽速度不会太快,但属于静态显示。
能满足一般应用。
 楼主| ohy3686 发表于 2018-2-7 22:22 | 显示全部楼层
plsbackup 发表于 2018-2-7 22:15
占用的是mcu的ram多吗?

如果定义成数组变量的话,一个屏幕需要16×64个字节。
还有字符和汉字的缓存变量
所以,需要的RAM还是相当大的
不过,可以变通一下,将这些内容定义成const常量就不会占用RAM了。
在程序设计上再处理一下就可以了。
fengm 发表于 2018-2-8 16:49 | 显示全部楼层
给力的设计。
hudi008 发表于 2018-2-8 16:49 | 显示全部楼层
驱动代码跟着学习。
hudi008 发表于 2018-2-8 16:51 | 显示全部楼层
楼主的硬件电路都能提供吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:广东职业技术学院 欧浩源(ohy3686@foxmail.com)    [Zigbee技术&物联网应用] 群:168225322    [技术交流微信]:gzyohy (暗号:宝塔镇河妖)

322

主题

899

帖子

3548

粉丝
快速回复 在线客服 返回列表 返回顶部