打印
[STM32]

灵感手环第一步 ——0.96寸OLED显示实验(一)

[复制链接]
1933|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Andrew55|  楼主 | 2017-12-23 00:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这算是我这个系列的第一篇博客吧。打算做一个灵感手环。具体项目背景和实施思路后面在细说。因为字数限制,我把这一个帖子分成两份。
首先要解决的就是屏幕显示问题。我选择了目前新兴起的OLED显示模块。
OLED(OrganicLightEmittingDiode),中文译作有机发光二极管,目前被广泛的应用于移动设备甚至电视上。它既拥有超快的响应速度和轻薄的优势,又存在寿命与对大尺寸支持不足的瓶颈。
OLED的优点
1、厚度可以小于1毫米,仅为LCD屏幕的1/3,并且重量也更轻;
2、固态机构,没有液体物质,因此抗震性能更好,不怕摔;
3、几乎没有可视角度的问题,即使在很大的视角下观看,画面仍然不失真;
4、响应时间是LCD的千分之一,显示运动画面绝对不会有拖影的现象;
5、低温特性好,在零下40度时仍能正常显示,而LCD则无法做到;
6、制造工艺简单,成本更低;
7、发光效率更高,能耗比LCD要低;
8、能够在不同材质的基板上制造,可以做成能弯曲的柔软显示器。

OLED的缺点
1、寿命通常只有5000小时,要低于LCD至少1万小时的寿命;
2、不能实现大尺寸屏幕的量产,因此目前只适用于便携类的数码类产品;
3、存在色彩纯度不够的问题,不容易显示出鲜艳、浓郁的色彩。           ******************【摘自百度
                                                                       
首先,该模块采用SPI  或  IIC 通信方式,最多占用5个IO口。我使用的是7针模块,采用4线SPI 通信方式。
该模块有以下特点:
1. 模块有单色和双色可选,单色为纯蓝色,双色为黄蓝双色(本人选用单色);
2. 显示尺寸为0.96寸
3. 分辨率为128*64
4. 多种接口方式,该模块提供了总共 5 种接口包括: 6800、 8080 两种并行接口方式、 3线或4线的SPI接口,IIC接口方式
5. 不需要高压,直接接3.3V就可以工作;(可以与stm32的引脚直接相接)
该模块内部采用SSD1306驱动,显存为128*64bit大小, SSD1306将全部显存分为8页,每页128字节
OLED相当于64行128列点阵,每个像素点,0点亮,1熄灭
OLED将纵向64行分为8页,每页8行
该实验的难点就在于理解取模的ASCII码表与写入程序的关系。下面我们来详细分析一下。
首先根据这个官方给出的设置格式,我们采用列行式,就是先取列,再取行。比如我们取个大写的   “A”  的字模。
   
{0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20} ,/*"A",0*/
/* (8 X 16 , 宋体 )*/
分析:
第一个0X00------表示第一列前8个像素,从高位向低位,也就是从下往上写,全灭,所以是0X00,所以在SPI_Write()函数中,是从高位往低位写的。
第二个0X00------表示第二列前8个像素,同上。
第三个0XC0-->  1100 0000,从高位往低位,正好下面两个像素亮了。
后面都是这样分析,大家可以自己对一下。
也就是说按照他的设置,这个取模软件取的是按照从高位往低位取,前8个字节是这个字在第一页的所有像素状态。一共可以取128个字节。因为每一页有128列,8行。但是这个大写字母和汉字不一样,他的宽度是汉字的一半,所以生成的ASCII码表只有16个,一列,因为前8个字节是第一页的,后8个字节是第二页的,一个16*16的汉字需要占用两页(16行),16列。
下面是节选的显示汉字的程序分析:
我使用STM32F103C8T6对该模块进行驱动,程序修改自中景园科技官方驱动程序。亲测可用。
OLED引脚介绍:
    CS:OLED片选信号
    RST:OLED复位端口
    DC: 命令/数据选择端口(0:读写命令, 1: 读写数据)
    SCLK(D0):串口时钟线
    SDIN(D1): 串口数据线 


后面半部分在下一个帖子上。


相关帖子

沙发
coderdd| | 2019-9-3 08:33 | 只看该作者
寿命只有5000小时???那还能用在产品上??

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

20

帖子

4

粉丝