初学者课程实验,慎重参考
实验要求
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]={