嵌入式小白开发--基于stm32实现OLED屏显示

本次将基于STM32实现在OLED屏幕上显示自己的学号及姓名,同时将AHQ的温度湿度采集结果也显示在屏幕上。

Part1. 理论介绍–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 传输一位数据。

Part2. 简单实现

首先,我们需要下载到0.96寸SPI_OLED模块配套资料包。链接附上
链接: http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
在这里插入图片描述
点击下载。下载好之后可以看到很多厂家为我们配置好的运行Demo。找到适合我们芯片的Demo运行,这里作者使用的是STM32F103C8T6。
打开我们需要的Demo编译运行烧录,看OLED屏幕上是否能显示字幕。实物对应连线如下:
模块引脚 STM32引脚
GND ------ GND
VCC ------ 3.3V/5V
D0 ------ PB13
D1 ------- PB15
RES ------ PB12
DC------ PB10
CS ------ PB11

Part3. 自定义更改显示字符

首先打开main.c,把TEST_MainPage之外的函数删除掉。我们只需要这一个显示函数。
在这里插入图片描述
之后可以右键跳转到这个函数的定义处,也可以通过打开test.c然后跳转到约66行处,可以看到字符显示由这个函数控制。我们可以通过更改显示的字来改变OLED屏幕上的显示。
在这里插入图片描述
改变好之后,我们还需要在字符库中添加这些汉字的字模。打开oledfont.h
,跳转到约273行的typFNT_GB16 cfont16[ ]这个函数,可以发现字模全部存储在这里。
在这里插入图片描述
然后,我们把需要的汉字字模添加到后面就可以了。这里推荐网址链接: https://www.zhetao.com/fontarray.html一键提取字模。

如图所示。在这里插入图片描述
然后进行编译,烧录,就可以看到显示了!
请添加图片描述

Part4. 显示温度湿度

显示的原理相同,不过要增加一些代码,我们可以直接向工程中添加如下代码:

void read_AHT20(void)
{
   
	uint8_t   i;
	for(i=0; i<6; i++)
	{
   
		readByte[i]=0;
	}

	//-------------
	I2C_Start();

	I2C_WriteByte(0x71);
	ack_status = Receive_ACK();
	readByte[0]= I2C_ReadByte();
	Send_ACK()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值