(二)STM32添加串口2和RTC--OLED上显示时间日期

最终要实现的功能:
1、STM32采集温湿度通过串口1发送至AIR800,然后通过AIR800将温湿度上传至阿里云
2、阿里云物联网云平台下发命令通过AIR800控制STM32的LED亮灭(打开或关闭功能,或者定时 自动打开和自动关闭)
3、通过nrf24l01实现点对点通信,阿里云下发数据至air800,STM32(A)串口2接收数据之后进行判断,如果需要控制另一个STM32的LED灯,则会将数据发送至另外一个STM32(B),STM32(B)通过数据判断执行相应的功能

本模块要实现的功能:OLED上显示时间日期,串口2发送数据的数据在oled上显示

在这里插入图片描述

在这里插入图片描述

一、程序移植

1、新建串口2和RTC两个文件夹
图中SPI可以先不复制,我多复制了一个,后面到nrf24l01会用到
在这里插入图片描述

2、将C文件添加到对应的工作组中
在这里插入图片描述

3、添加路径
在这里插入图片描述

4、添加头文件调用
在这里插入图片描述

5、串口和RTC初始化

在这里插入图片描述

6、这是将串口2接收到的数据显示在oled上
在这里插入图片描述

7、oled上显示时间日期

	//这是判断时间是否更新,若更新则刷新
	if(t!=calendar.sec)
	{ 
		t=calendar.sec;
		
		OLED_ShowString(65, 0, "-");	
		OLED_ShowString(90, 0, "-");
		OLED_ShowCHinese(0, 0, 0); //日
		OLED_ShowCHinese(16, 0, 1); //期
		OLED_ShowCHinese(0, 2, 2); //	时
		OLED_ShowCHinese(16, 2, 3); //间
		OLED_ShowString(46, 2, ":"); 
		OLED_ShowString(68, 2, ":"); 
			//oled显示日期
		OLED_ShowNum(32, 0,calendar.w_year, 4, 16);
		OLED_ShowNum(73, 0, calendar.w_month, 2, 16); 
		OLED_ShowNum(100, 0, calendar.w_date,2, 16); 
		switch(calendar.week)
		{
			case 0:

				OLED_ShowString(32,4,"Sunday");
				break;
			case 1:

			  OLED_ShowString(32,4,"Monday");
				break;
			case 2:

				OLED_ShowString(32,4,"Tuesday");
			
				break;
			case 3:

				OLED_ShowString(32,4,"Wednesday");
				break;
			case 4:

				OLED_ShowString(32,4,"Thursday");
				break;
			case 5:

				OLED_ShowString(32,4,"Friday");
				break;
			case 6:

				OLED_ShowString(32,4,"Saturday");
				break;  
		}
		//oled显示时间
		OLED_ShowNum(30, 2,calendar.hour,2, 16); // 时	

		OLED_ShowNum(52, 2,calendar.min,2, 16); // 分

		OLED_ShowNum(76, 2,calendar.sec,2, 16); //	秒

8、增加调用头文件消除error和warning
在编译过程中会报错,把下面对应的C文件添加到工程组中,并且调用下面的头文件可以把错误和警告消除,如果还缺少其他的,自行添加

在这里插入图片描述

9、可能会有人会有疑问,串口2的文件哪里来,打开串口1的文件修改一下引脚,变量也对应修改一下即可,只要不和串口1一样即可
在这里插入图片描述

10、编译程序,烧写效果如下
在这里插入图片描述

在这里插入图片描述
STM32+oled+dht11+串口2+RTC----代码下载

接下来通过串口2发送数据控制STM32的led亮灭,打开,关闭led(包括定时打开和关闭)

  • 21
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
要在STM32F103上使用OLED显示日期时间,您需要执行以下步骤: 1. 确定您要使用的OLED型号,并查找与该型号兼容的驱动程序和库。 2. 连接OLEDSTM32F103的SPI接口,并确保正确设置引脚。 3. 配置STM32F103的时钟和SPI接口。 4. 编写代码以获取当前日期时间,并将其格式化为字符串。 5. 使用OLED驱动程序将日期时间字符串显示OLED上。 以下是一个简单的示例代码,该代码使用SPI1接口连接到OLED,并在OLED显示日期时间: ```c #include "stm32f10x.h" #include "OLED.h" #include "RTC.h" int main(void) { /* 初始化OLED */ OLED_Init(); /* 初始化RTC */ RTC_Init(); while (1) { /* 获取当前日期时间 */ RTC_Time time = RTC_GetTime(); RTC_Date date = RTC_GetDate(); /* 将日期时间格式化为字符串 */ char str[20]; sprintf(str, "%02d/%02d/%04d %02d:%02d:%02d", date.day, date.month, date.year, time.hours, time.minutes, time.seconds); /* 在OLED显示日期时间 */ OLED_Clear(); OLED_ShowString(0, 0, str); /* 延迟一段时间 */ Delay_ms(1000); } } ``` 在上面的代码中,我们使用了一个名为OLED的库来控制OLED显示器,并使用一个名为RTC的库来获取日期时间。您需要将这些库添加到您的项目中,并在代码中包含它们的头文件。此外,您还需要编写一些辅助函数来配置时钟和SPI接口,并实现延迟函数Delay_ms。 请注意,上面的代码仅提供了一个简单的示例,您可能需要根据您使用的OLED型号和库进行一些调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永栀哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值