赞
踩
最终要实现的功能:
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----代码下载
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。