查看: 168|回复: 2

[原创] 【赚周年币】Fireduino A3.SPI方式驱动OLED屏幕

[复制链接]

19

主题

13

好友

966

积分

举人

Rank: 4

  • TA的每日心情
    开心
    前天 08:59
  • 签到天数: 71 天

    [LV.6]常住居民II

    爱板会员勋章 活跃会员勋章

    发表于 2016-12-24 23:26:44 |显示全部楼层
    本帖最后由 limale 于 2017-1-17 20:16 编辑

           上一篇帖子搭建好了开发环境也点了灯,都是可以正常工作的。为了方便以后查看一些状态信息,我们需要一个显示器件本来Fireduino是有LCD控制器的,奈何开发板没有陪液晶屏幕,所以今天打算用SPI的方式驱动一直用的一块0.96英寸的OLED显示屏。
           先来看看实物,这个屏幕分辨率128*64使用SPI方式驱动,通过跳线可以选择三线或者四线SPI和IIC方式。
              OLED技术特点
    (1) OLED 器件的核心层厚度很薄,厚度可以小于 1mm,为液晶的 1/3。
    (2) OLED 器件为全固态机构,无真空,液体物质,抗震性好,可以适应巨大的加速度,振动等恶劣环境。
    (3) 主动发光的特性使 OLED 几乎没有视角限制,视角一般可达到 170 度,具有较宽的视角,从侧面也不会失真。
    (4) OLED 显示屏的响应时间超过 TFT—LCD 液晶屏。TFT—LCD 的响应时间大约使几十毫秒,现在做得最好的 TFT—LCD 响应           时间也只有 12 毫秒。而 OLED 显示屏的响应时间大约是几微秒到几十微秒。
    (5) OLED 低温特性好,在零下 40 摄氏度都能正常显示,目前航天服上也使用OLED 作为显示屏。而 TFT—LCD 的响应速度随          温度发生变化,低温下,其响应速度变慢,因此,液晶在低温下显示效果不好。
    (6) OLED 采用有机发光原理,所需材料很少,制作上比采用液体发光的液晶工序少,液晶显示屏少 3 道工序,成本大幅降               低。
    (7) OLED 采用的二极管会自行发光,因此不需要背面光源,发光转化效率高,能耗比液晶低,OLED 能够在不同材质的基板            上制造,厂家甚至可以将电路印刷在弹性材料上——做成能弯曲的柔软显示器。
    (8) 低电压直流驱动,5V 以下,用电池就能点亮。高亮度,可达 300 明流以上。
           屏幕数据手册: 中景园电子0.96OLED显示屏_数据手册_双色.pdf (1.04 MB, 下载次数: 0)
    IMG_20161224_230333.jpg

    IMG_20161224_230342.jpg

    原理图如下:
    QQ截图20161224231151.jpg

    由于Arduino接口默认的焊接的是母排座,所以为了方便连接公对公的杜邦线,我们可以选比较长的排针,把中间的塑料件掰到中间的位置这样用起来就方便了很多。因为OLED本身是比较省电的,所以为了连线方便我直接就用IO口给它供电了。这样顺序接线看着整洁了很多,接口定义如下:
    QQ截图20161224231853.jpg

    IMG_20161224_225709.jpg

    系统初始化和显示内容代码:
    1. void Sys_Init(void)
    2. {
    3.   Serial.begin(115200);
    4.   pinMode(OLED_GND, OUTPUT);
    5.   pinMode(OLED_VCC, OUTPUT);
    6.   pinMode(OLED_CLK, OUTPUT);
    7.   pinMode(OLED_DIN, OUTPUT);
    8.   pinMode(OLED_RES, OUTPUT);
    9.   pinMode(OLED_DC, OUTPUT);
    10.   pinMode(OLED_CS, OUTPUT);
    11.   digitalWrite(OLED_GND,LOW);
    12.   digitalWrite(OLED_VCC,HIGH);   
    13. }

    14. void Main(void)
    15. {
    16.   char str1[] = {"eeboard"};
    17.   char str2[] = {"www.eeboard.com"};
    18.   char str3[] = {"Fireduino"};
    19.   uint8_t i = 4;
    20.   OLED_Init();
    21.   OLED_Clear();
    22.   
    23.   OLED_ShowCHinese(i, 0, 0);
    24.   OLED_ShowCHinese(i+16, 0, 1);
    25.   OLED_ShowString(i+32, 0, str1, 16);
    26.   OLED_ShowCHinese(i+88,0, 2);
    27.   OLED_ShowCHinese(i+104,0, 3);
    28.   OLED_ShowString(4,2,str2,16);
    29.   OLED_ShowString(28,4,str3,16);
    30.   while(1)
    31.   {
    32.     Serial.println("Hello eeboard!!!");
    33.     }  
    34. }
    复制代码
    下边是显示的效果图,是不是很棒。
    IMG_20161224_225933.jpg

    程序源码: oled_display.rar (5.8 KB, 下载次数: 0)




    已有 1 人评分 收起 理由
    loveeeboard + 30

    总评分:  + 30   查看全部评分

    回复

    使用道具 举报

    5

    主题

    1

    好友

    880

    积分

    举人

    Rank: 4

  • TA的每日心情
    开心
    昨天 09:21
  • 签到天数: 74 天

    [LV.6]常住居民II

    发表于 2016-12-25 10:41:21 |显示全部楼层
    谢谢分享                                      
    回复

    使用道具 举报

    19

    主题

    13

    好友

    966

    积分

    举人

    Rank: 4

  • TA的每日心情
    开心
    前天 08:59
  • 签到天数: 71 天

    [LV.6]常住居民II

    爱板会员勋章 活跃会员勋章

    发表于 2016-12-25 12:01:31 |显示全部楼层
    jackten 发表于 2016-12-25 10:41
    谢谢分享

    谢谢支持                  
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-2-26 04:23 , Processed in 0.155783 second(s), 13 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部