一、实验要求
理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:
-
显示自己的学号和姓名;
-
显示AHT20的温度和湿度;
-
上下或左右的滑动显示长字符,比如“欢迎来到重庆“
二、了解SPI(串行外设接口)
1、SPI的定义
SPI(Serial Peripheral Interface)就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,时序主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。
2、SPI的连接方式
SS( Slave Select):从设备选择信号线,常称为片选信号线。
SCK (Serial Clock):时钟信号线,用于通讯数据同步。
MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。
MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚。
3、SPI的通讯过程
MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。
更多内容请参考《【野火®】零死角玩转STM32—F103-指南者》
三、使用0.96寸OLED显示屏显示数据
①0.96寸OLED显示屏相关介绍
链接: link.
②厂家给出的Demo程序
程序下载链接: link.
③打开资料包,选择与自己平台相同的实例,打开Demo的工程,使用keil编译
④将程序烧录到开发板
⑤连接显示屏和开发板
1、显示自己的学号和姓名
选择适合自己板子的相应的程序
1)修改main.c
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{
delay_init();
NVIC_Configuration();
OLED_Init();
OLED_Clear(0);
while(1)
{
TEST_MainPage();
}
}
2)修改test.c的TEST_MainPage函数
void TEST_MainPage(void)
{
/*GUI_ShowString(28,0,"xiongmao",16,1);*/
GUI_ShowCHinese(28,20,16,"熊猫",1);
//GUI_ShowString(40,32,"64X128",16,1);
GUI_ShowString(4,48,"631807030330",16,1);
//GUI_ShowString(4,48,"www.lcdwiki.com",16,1);
delay_ms(1500);
delay_ms(1500);
}
3)将字模代码粘贴到oledfront.h文件中
野火资料包有相应软件
打开字模软件,点击选项,将取模方式设置为逐行式,显示数设置为16X16。
复制到oledfront.h文件中
"熊",0x10,0x80,0x24,0x98,0x42,0xE0,0x7E,0x84,0x00,0x84,0x7E,0x7C,0x42,0x80,0x7E,0x98,0x42,0xE0,0x7E,0x84,0x42,0x84,0x46,0x7C,
0x00,0x00,0x48,0x88,0x44,0x44,0x84,0x44,/*"熊",0*/
"猫",0x00,0x88,0x44,0x88,0x2B,0xFE,0x10,0x88,0x28,0x88,0x48,0x00,0x89,0xFC,0x09,0x24,0x19,0x24,0x29,0x24,0x49,0xFC,0x89,0x24,
0x09,0x24,0x09,0x24,0x51,0xFC,0x21,0x04,/*"猫",1*/
4)进行编译烧录得到如下实验结果