OLED屏显显示温湿度,学号姓名滚动显示温湿度

文章目录

  • 一、SPI串行外设接口
    • 1.SPI的介绍
    • 2.原理
    • 3.组成结构
  • 二、0.96寸OLED显示屏显示数据
    • 1.所使用的工具
    • 2.0.96寸OLED显示屏相关介绍
    • 3.DEMO程序
    • 4.连线
  • 三丶代码的修改
    • 1.输出文字设置
    • 2.滚动设置
    • 3.字模的制作
  • 四、OLED显示
  • 五、参考

一、SPI串行外设接口

1.SPI的介绍

串行外设接口总线(SPI)最早由Motorola首先提出的全双工三线同步串行外围接口,采用主从模式(Master—Slave)架构,支持一个或多个Slave设备,首先出现在其M68系列单片机中,由于其简单实用、性能优异,又不牵涉到专利问题,因此许多厂家的设备都支持该接口,广泛应用于MCU和外设模块如E2PROM、ADC、显示驱动器等的连接。需要注意的是,SPI接口是一种事实标准,大部分厂家都是参照Motorola的SPI接口定义来设计的,并在此基础上衍生出多种变种,因此,不同厂家产品的SPI接口在使用上可能存在一定差别,有的甚至无法直接互连(需要软件进行必要的修改),在实际中需仔细阅读厂家文档确认

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

2.原理

1利用SPI可以在软件的控制下构成各种系统。如一个主控制器和几个从控制 器、几个从控制器相互连接构成多主机系统(分布式系统)、一个主控制器和一个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可以使用一个主控制器作为主控机来控制数据,并向一个或几个从外围器件传送该数据。从器件只有在主控机发命令时才能接收或发送数据,其数据的传输格式是高位(MSB)在前,低位(LSB)在后。单主系统只有一台主控制器,其他均为从控制器。
2汉字点阵编码
在汉字的点阵字库中,每个字节的每个位都代表一个汉字的一个点,每个汉字都是由一个矩形的点阵组成,0 代表没有点,1 代表有点,将 0 和 1 分别用不同颜色画出,就形成了一个汉字,常用的点阵矩阵有 1212, 1414, 16*16 三 种字库。
字库根据字节所表示点的不同有分为横向矩阵和纵向矩阵,目前多数的字库都是横向矩阵的存储方式(用得最多的应该是早期 UCDOS 字库),纵向矩阵一 般是因为有某些液晶是采用纵向扫描显示法,为了提高显示速度,于是便把字库 矩阵做成纵向,省得在显示时还要做矩阵转换。
OLED点阵显示
点阵屏像素按128列X64行组织,每一行128个像素单元的阴极是连接在一起,作为公共极(COM),每一列64个像素单元的阳极也连接在一起,作为一段(SEG)。行列交叉点上的LED就是一个显示单元,即一个像素。要点亮一个像素,只要在该像素所在列电极上加上正电压、行电极接地。同样,要驱动一整行图像,就需要同时把128列信号加载到列电极上,把该行行电极接地。该行显示时,其他63行均不能显示,其行电极应为高电平或悬空。
可见,整屏的显示,只能分时扫描进行,一行一行的显示,每次显示一行。行驱依次产生低电平扫描各行,列驱动读取显示数据依次加载到列电极上。扫描一行的时间称为行周期,完成一次全屏扫描,就叫做一帧。一般帧频大于60,人眼观察不到逐行显示。每行扫描显示用时叫占空比,占空比小,为达到相同的显示亮度,驱动电流就大。SSD1306段驱动最大电流为100uA,当整行128个像素全部点亮时,行电极就要流过12.8mA的电流。

3.组成结构

SPI系统可直接与各个厂家生产的多种标准外围器件接口,它只需4条线:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输人数据线(MOSI)和低电平有效的从机选择线(NSS)。
(1)MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
(2)MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
(3)SCK:串口时钟,作为主设备的输出,从设备的输入。
(4)NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为片选引脚,让主设备可以单独地与特定从设备通信,避免数据线上的冲突。
SPI是一个环形总线结构,由NSS、SCK、MISO、MOSI构成,NSS引脚设置为输入,MOSI引脚相互连接,MISO引脚相互连接,数据在主和从之间串行地传输(MSB位在前)。 [3]

二、0.96寸OLED显示屏显示数据

1.所使用的工具

keil + STM32F103C8最小开发版 + 0.96寸OLED显示屏

2.0.96寸OLED显示屏相关介绍

0.96inch SPI OLED Module

3.DEMO程序

链接:https://pan.baidu.com/s/17imRT1Dc8vYiZko3yqot6Q
提取码:1234

4.连线

OLED屏显显示温湿度,学号姓名滚动显示温湿度_第1张图片
OLED屏显显示温湿度,学号姓名滚动显示温湿度_第2张图片

三丶代码的修改

1.输出文字设置

找到gui.c,打开oledfont.h
OLED屏显显示温湿度,学号姓名滚动显示温湿度_第3张图片
在const typFNT_GB16 cfont16[ ]中进行修改
OLED屏显显示温湿度,学号姓名滚动显示温湿度_第4张图片
在其中修改自己要输出的
在test.c中修改自己要输出的
OLED屏显显示温湿度,学号姓名滚动显示温湿度_第5张图片

2.滚动设置

在main.c中修改代码

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{	
	delay_init();	    	       //延时函数初始化	  
	NVIC_Configuration(); 	   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 	
	OLED_Init();			         //初始化OLED  
	OLED_Clear(0);             //清屏(全黑)
	OLED_WR_Byte(0x2E,OLED_CMD);        //关闭滚动
  	OLED_WR_Byte(0x27,OLED_CMD);        //水平向左或者右滚动 26/27
  	OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
	OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
	OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
	OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7
	OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
	OLED_WR_Byte(0xFF,OLED_CMD);        //虚拟字节
	TEST_MainPage();
	OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动
	while(1) 
	{
		
	}
}

3.字模的制作

字模软件下载
链接:https://pan.baidu.com/s/1KZ8I_tGPXe3u6Yar5F4xhQ
提取码:1234
软件设置
OLED屏显显示温湿度,学号姓名滚动显示温湿度_第6张图片

OLED屏显显示温湿度,学号姓名滚动显示温湿度_第7张图片

四、OLED显示

1学号姓名显示
在这里插入图片描述

2.温湿度显示

五、参考

基于SPI通信方式的OLED显示

你可能感兴趣的:(单片机,stm32,嵌入式硬件)