查看: 639|回复: 1
打印 上一主题 下一主题

【NUCLEO-L476RG】NO.6 OLED显示ADC采集到的电压值

[复制链接] qrcode

26

主题

35

帖子

102

积分

注册会员

Rank: 2

积分
102
楼主
跳转到指定楼层
发表于 2016-7-13 08:20 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hanghang 于 2016-7-13 20:45 编辑

1.笔者手上正好有一块0.96寸的OLED,所以打算用来显示ADC采集到的电压值。
(1)OLED简介
        0.96’ OLED 显示模块, 分辨率为 128*64,采用SSD1306 驱动 IC,该芯片内部集成 DCDC 升压,仅需 3.3V 供电,即可正常工作。实际上就是由一个SSD1306控制器和一个128X64的有机发光二极管点阵组成。OLD模块具有和12864LCD相同的分辨率,但其在单位面积上具有更多的像素点。该模块的驱动芯片是SSD1306Z,它是一款专门用于驱动OLED点阵屏的COMS芯片,其包含128个段和64个公共端。为了能够通过外部控制器向其写入用于显示的数字信息,其对外提供了8个数据引脚和5个控制脚,并向用户提供了4种总线接口。文中所采用的OLED模块可实现SPI和IIC两种总线接口模式,默认为SPI模式。在SPI模式下,仅有数据引脚的低2位和控制引脚的CS#,D/C#和RES#与单片机进行接口。为了能让OLED具有丰富的显示效果和灵活简便的操作方式,SSD1306Z向用户提供了丰富的操作指令集,另外还向用户提供了128x64位的GDDRAM(Graphic Display Data RAM)。由于所采用的OLED不带字库,因此无论是显示图形还是显示汉字,均需通过取模软件进行编码,然后按SPI协议,将对应的编码按照所确定的地址模式写入对应的CDDRAM中。编码原理如图1所示。图1给出了16*8编码格式的字符‘A’,由于8行为一页,因此其占据2页的高度,而宽度则占据8列。图1中的每一个方格代表一位,若要显示则置1,反之置0。向GDDRAM当中送数据时,先通过指令确定操作所需的地址模式及存储器的地址,然后先写‘A’的第2页的编码,再写其第3页的编码,即可完成编码的写入操作。图1所对应的编码为0x00,0x00,0xe0,0x9c,0xf0,0x80,0x00,0x00,0x08,0x0f,0x08,0x00,0x00,0x0b,0xoe,0x08,编码时高位在下,低位在上。同理,可得对任意汉字的编码。


(2)模块原理图


(3)管脚说明
1. GND 电源地
2. VCC 电源正(3~5.5V)
3. D0 OLED D0 脚,在 SPI IIC 通信中为时钟管脚
4. D1 OLED D1 脚,在 SPI IIC 通信中为数据管脚
5. RES OLED RES#脚,用来复位(低电平复位)
6. DC OLED 的 D/C#E 脚,数据和命令控制管脚
7. CS OLED 的 CS#脚,也就是片选管脚

我手里的0.96寸OLED是SPI驱动的方式,所以在NUCLEO-L476RG开发板上,我们使用SPI3来驱动,D0接PC10,D1接PC12,RST接PC5,DC接PC6,CS接PC8

2.代码编写
(1)STM32CubeMx的配置
打开STM32CubeMx选择NUCLEO-L476RG 作为开发目标
选择ADC1的IN3,作为AD采集选择SPI3,作为OLED的驱动。

SPI的模式采用Transmit only master(发送模式)

配置几个控制引脚PC5、PC6、PC8、PA5(PA5控制的是Nucleo板载的LD2,这里作为工作指示灯)

时钟配置

SPI3参数配置

ADC参数配置

GPIO参数配置

(2)编写代码
将下列文件添加到指定的文件夹中




3.显示效果。
将PC2接到3.3V上,显示效果如图。


Inc.zip
Src.zip
0.96寸OLED使用文档.pdf







本帖子中包含更多资源

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

x
回复

使用道具 举报

21

主题

288

帖子

437

积分

中级会员

Rank: 3Rank: 3

积分
437
沙发
发表于 2016-7-14 06:58 AM | 只看该作者
不错不错,学习了
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表