今天搞到SAM4L Xplained Pro starter kit套件的OLED拓展模块。
OLED的英文全称是OrganicLight-Emitting Diode,中文名叫有机发光二极管又称为有机电激光显示,由美籍华裔教授邓青云在实验室中发现,由此展开了对OLED的研究。OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,并且能够节省电能。
简单说说OLED的优缺点吧:
OLED的优点
1、厚度可以小于1毫米,仅为LCD屏幕的1/3,并且重量也更轻;
2、固态机构,没有液体物质,因此抗震性能更好,不怕摔;
3、几乎没有可视角度的问题,即使在很大的视角下观看,画面仍然不失真;
4、响应时间是LCD的千分之一,显示运动画面绝对不会有拖影的现象;
5、低温特性好,在零下40度时仍能正常显示,而LCD则无法做到;
6、制造工艺简单,成本更低;
7、发光效率更高,能耗比LCD要低;
8、能够在不同材质的基板上制造,可以做成能弯曲的柔软显示器。
OLED的缺点
1、寿命通常只有5000小时,要低于LCD至少1万小时的寿命;
2、不能实现大尺寸屏幕的量产,因此目前只适用于便携类的数码类产品;
3、存在色彩纯度不够的问题,不容易显示出鲜艳、浓郁的色彩。
下面我们就进入主题吧:
使用的编译环境是Atmel Studio 6.2
扩展板的OLED采用的是128 x 32 像素,采用4线SPI接口控制。例程是用SAM4L Xplained Pro starter kit主控板的硬件SPI实现与OLED通信。
我是调用了ASF函数库,在官方的例程上作了一点修改,后面我会把文件提取出来移植到IAR,因为官方的软件好耗内存。
下面分享一下我的代码:
- #include <board.h>
- #include <sysclk.h>
- #include <ssd1306.h>
- int main(void)
- {
-
- board_init(); //板级初始化
- sysclk_init(); //系统时钟初始化
- // Initialize SPI and SSD1306 controller
- ssd1306_init(); //OLED屏幕初始化
- ssd1306_clear(); //清OLED屏幕
- // set addresses at beginning of display
- ssd1306_set_page_address(0); //行地址
- ssd1306_set_column_address(0); //列地址
-
- ssd1306_write_text("My ID is : qianzgai00001 !");//要显示的内容
- ssd1306_set_page_address(2);
- ssd1306_set_column_address(30);
- ssd1306_write_text("----Thanks EEWORD !");
- }
复制代码效果如下图:
OLED的显示挺赞的