基于SPI/IIC接口的OLED数据显示
一、关于SPI
SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200.
二、关于OLED
OLED即有机发光二级管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低耗电、极高反应速度、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优点,被认为是下一代的平面显示器新兴应用技术。
OLED显示和传统的LCD 显示不同,其可以自发光,所以不需要背光灯,这使得 OLED 显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。
三、产品介绍及前期准备
该款OLED模块显示尺寸为0.96寸,拥有128x64分辨率。可以选择3线制、4线制SPI以及IIC三种通信方式,驱动IC为SSD1306。包含显示黑色、蓝色或者黄蓝双色三款模块。
我使用的是4线制SPI通信方式的黄蓝双色的模块
四、所用代码
本次操作中有三个任务
显示自己的名字
显示AHT20采集的温度和湿度
上下或左右的滑动显示长字符(使用硬件刷屏模式)
1.主函数
int main(void)
{
int i;
delay_init(); //初始化延时函数
NVIC_Configuration(); //设置NVIc中断分组2:2位抢占优先级,2位响应优先级
OLED_Init(); //初始化OLED
OLED_Clear(0); //ÇåÆÁ£¨È«ºÚ£©
delay_ms(40); //上电后,延时40ms才能读取状态
AHT20_Init(); //ATH20初始化
while(1)
{
//显示名字
GUI_ShowString(0,0,"JustA-LoNg",16,1);
GUI_ShowString(0,20,"Challenge Yourself",16,1);
delay_ms(5000);
OLED_Clear(0); //清屏
//显示AHT20采集的温湿度
for(i=0;i<=5