目录
一、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):主设备输入/从设备输出引脚。
二、显示数据
1.实验环境
(1)本次使用的是野火STM32指南者开发板
(2)0.96寸OLED显示屏相关介绍
参考下面链接:
http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
按照下表,连接开发板和OLED显示屏
模块引脚 | 指南者开发板引脚 | 备注 |
---|---|---|
GND | GND | OLED接地 |
VCC | 3.3V/5V | OLED电源线 |
D0 | PB13 | SPI总线时钟信号 |
D1 | PB15 | SPI总线数据信号 |
RES | PB12 | 复位信号 |
DC | PB10 | 数据输入选择信号 |
CS | PB11 | 片选信号 |
2.实现功能
显示姓名
显示一串数字
3.程序详解
由于程序并不需要显示所有的中文,所以将对应需要的文字添加到程序就可以了
(1)首先我们使用字模软件,取出自己所需要的字模数据
进入字模软件后,我们需要进行一些设置,点击选项,设置成如下选项
设置完成后,我们在下方白框内输入需要的汉字和数字,计算机就能够直接把汉字和数字的字模数据转换成十六进制输出
这样我们就可以直接复制字模数据到我们所需的工程里面去,汉字取字同理
0x00,0x00,0x00,0x18,0x24,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x22,0x1C,0x00,0x00,//60
0x00,0x00,0x00,0x3C,0x42,0x42,0x02,0x04,0x18,0x04,0x02,0x42,0x42,0x3C,0x00,0x00,//31
0x00,0x00,0x00,0x08,0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,//12
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,//83
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//04
0x00,0x00,0x00,0x7E,0x42,0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x00,0x00,//75
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//06
0x00,0x00,0x00,0x3C,0x42,0x42,0x02,0x04,0x18,0x04,0x02,0x42,0x42,0x3C,0x00,0x00,//37
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//08
0x00,0x00,0x00,0x3C,0x42,0x42,0x02,0x04,0x18,0x04,0x02,0x42,0x42,0x3C,0x00,0x00,//39
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//010
0x00,0x00,0x00,0x08,0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,//111
(2)打开keil中的测试程序
找到数据显示的代码:
然后将我们的刚刚得到的字模数据粘贴到这个库里面,最后我们找到工程中的显示数据代码进行细微修改,代码如下
void TEST_MainPage(void)
{
GUI_ShowCHinese(28,20,16,"曾子铭",1);//中文姓名
GUI_ShowString(4,48,"631807030301",16,1);//数字详细
delay_ms(1500);
delay_ms(1500);
}
main函数修改
int main(void)
{
delay_init(); //延时函数初始化
OLED_Init(); //初始化OLED
OLED_Clear(0); //清屏(全黑)
while(1)
{
TEST_MainPage(); //界面显示
}
}