使用SPI接口的OLED数据显示

这篇博客介绍了如何使用STM32F103通过SPI接口驱动OLED显示屏,展示学号姓名、AHT20传感器的温度和湿度数据,并实现字符的滑动显示。首先,理解OLED屏显和汉字点阵编码原理,使用PCtoLCD2002生成字模。接着,详细说明了如何连接OLED和AHT20到STM32芯片,以及显示和滚动显示的具体代码实现。
摘要由CSDN通过智能技术生成

任务:
理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI接口实现以下功能:

  1. 显示自己的学号和姓名;
  2. 显示AHT20的温度和湿度;
  3. 上下或左右的滑动显示长字符
器件准备:一块STM32d103最小芯片,一块AHT20温湿度传感器,一块TTL转串口芯片,一块0.96寸OLED显示屏模块

资料:https://detail.tmall.com/item.htm?spm=a1z0d.6639537.1997196601.80.201d74841fbMPw&id=556732249552
在这里插入图片描述
OLDE与STM32芯片连接

OLED模块 STM32芯片
VCC DC 5V/3.3V
GND GND
D1 PB15
CS PB11
RES PB12
DC PB10
D0 PB13

AHT20与STM32芯片连接

AHT20 STM32芯片
VCC 3.3V
SDA B7
GND GND
SCL B6

理解OLED屏显和汉字点阵编码原理

1、打开上面资料下载的文件解压
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我选择点阵大小为16 X 16,更改设置。

在这里插入图片描述
在这里插入图片描述
将生成的字模复制,粘贴到oledfront.h文件中。

用16×16点阵来表示一个汉字,则该汉字图形由16行16列共256个点构成,这256个点需用256个二进制的位来描述,需要32个字节来存储用于存放图形信息,这样的二进制代码串称为汉字的“字模”。

汉字的显示原理

  1. 从键盘输入的汉字经过键盘管理模块,变换成机内码。

  2. 然后经字模检索程序,查到机内码对应的点阵信息在字模库的地址。

  3. 从字库中检索出该汉字点阵信息。

  4. 利用显示驱动程序将这些信息送到显示卡的显示缓冲存储器中。

  5. 显示器的控制器把点阵信息整屏顺次读出,并使每一个二进制位与屏幕的一个点位相对应,就可以将汉字字形在屏幕上显示出来。

任务一

OLED屏显示学号姓名。
1、使用PCtoLCD2002(上图工具),输入学号姓名。

在这里插入图片描述

2、将生成字模,复制到工程文件oledfront.h中。
在这里插入图片描述3、改写main.c函数中TEST_MainPage()函数。左键单击函数所在位置,然后跳转。
在这里插入图片描述
在这里插入图片描述
4、显示效果
在这里插入图片描述

任务二

显示AHT20的温度和湿度;
代码

#include "temhum.h"
#include "gui.h"

//读取AHT20的状态寄存器
u8 AHT20_Read_Status(void)
{
   
	u8 Byte_first,flag;	
	IIC_Start();
  AHT20_WR_Byte(0x71);
	flag=Receive_ACK();
	Byte_first = AHT20_RD_Byte(flag);
	IIC_NAck();
	IIC_Stop();

	return Byte_first;
}

//向AHT20发送AC命令
void AHT20_SendAC(void) 
{
   
	IIC_Start();
	AHT20_WR_Byte(0x70);    //启动传输后发送的01110000 (最后1bit表示读/写 0--写,1--读)
	Receive_ACK();
	AHT20_WR_Byte(0xac);//0xAC采集命令 命令参数有两个字节,第一个字节为 0x33,第二个字节为0x00。
	Receive_ACK();
	AHT20_WR_Byte(0x33);
	Receive_ACK();
	AHT20_WR_Byte(0x00);
	Receive_ACK();
	IIC_Stop();

}

//初始化AHT20
void AHT20_Init(void)   
{
   	
	IIC_Init();
	IIC_Start();
	AHT20_WR_Byte(0x70);
	Receive_ACK();
	AHT20_WR_Byte(0xa8);//0xA8进入NOR工作模式
	Receive_ACK();
	AHT20_WR_Byte(0x00);
	Receive_ACK();
	AHT20_WR_Byte(0x00);
	Receive_ACK();
	IIC_Stop();

	delay_ms(10);//延时10ms左右

	IIC_Start();
	AHT20_WR_Byte(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值