嵌入式实验三——OLED的SPI接口数据显示实验

这是一个嵌入式初学者的实验教程,内容包括使用SPI接口的OLED显示屏显示学号、姓名、AHT20传感器的温度和湿度数据,以及实现字符滑动显示。实验涉及SPI接口原理、字模提取、代码修改和烧录等步骤,旨在提升实践操作能力。
摘要由CSDN通过智能技术生成

初学者课程实验,慎重参考

实验要求

1、显示自己的学号和姓名;
2、显示AHT20的温度和湿度;
3、上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”

一、资料与简介

1.字模提取
链接:https://pan.baidu.com/s/13dP5HOBougn35s1-MmofmQ
提取码:f7kp
复制这段内容后打开百度网盘手机App,操作更方便哦
2.SPI的定义
SPI(Serial Peripheral Interface)就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,时序主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。
3.SPI的连接方式
在这里插入图片描述

SS( Slave Select):从设备选择信号线,常称为片选信号线。
SCK (Serial Clock):时钟信号线,用于通讯数据同步。
MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。
MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚。
4.SPI的通讯过程
在这里插入图片描述

MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。
5.0.96寸OLED显示屏相关介绍
http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
6.资料包
0.96寸SPI_OLED模块配套资料包

二、显示中文与数字

1.打开资料包,选择与自己平台相同的实例,打开Demo的工程
2.学习后修改代码
要显示中文与数字其实就是调用GUI_ShowString()和GUI_ShowCHinese()两个函数,并将显示内容进行更改,根据注释我们在main.c的主函数和gui.c的字模16x16存放的函数进行修改
(1)main.c

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{
   	
	delay_init();	    	       //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //设置NVIc中断分组2:2位抢占优先级,2位响应优先级
	
	OLED_Init();			         //初始化OLED
	OLED_Clear(0);             //清屏,全黑
	GUI_ShowString(20,0,"631807030426",8,1);
	GUI_ShowCHinese(16,20,16,"大汤圆",1);
}

(2)gui.c>>oledfont.h>>const typFNT_GB16 cfont16[] (字模用前面的字模提取软件获取)

const typFNT_GB16 cfont16[] = 
{
   
"大",0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,/*"大",0*/
"汤",0x00,0x00,0x23,0xF0,0x10,0x20,0x10,0x40,0x80,0x80,0x41,0x00,0x43,0xFC,0x11,0x24,
0x11,0x24,0x21,0x24,0xE2,0x24,0x22,0x44,0x24,0x44,0x28,0x84,0x21,0x28,0x02,0x10,/*"汤",1*/
"圆",0x00,0x00,0x7F,0xFC,0x40,0x04,0x4F,0xE4,0x48,0x24,0x4F,0xE4,0x40,0x04,0x5F,0xF4,
0x50,0x14,0x51,0x14,0x51,0x14,0x52,0x94,0x44,0x44,0x48,0x24,0x7F,0xFC,0x40,0x04,/*"圆",2*/

};

3.连接烧录
用USB连线连接电脑和开发板(我小组用的指南者),按下面连接显示屏和开发板
在这里插入图片描述
编译连接生成.hex文件烧录
在这里插入图片描述
显示成功
在这里插入图片描述

三、显示AHT20的温度和湿度

1.移植
将之前湿温度采集实验工程中的myiic.c和hemtem.c文件移植到我们这个oled工程中
在这里插入图片描述
2.修改代码
(1)main.c

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
#include "temhum.h"
#include "myiic.h"
int main(void)
{
   	u32 CT_data[2]={
   
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值