目的
创建一个带日历的温湿度计
步骤
- 新建rtc.c/rtc.h,并把两个文件添加到user下面:
- rtc.c 代码如下:
#include "rtc.h"
ErrorStatus rest_rtc(void)
{
ErrorStatus err_rtc;
RTC_InitTypeDef RTC_InitStruct = {0};
RCC_LSE_Enable(RCC_LSE_MODE_OSC, RCC_LSE_AMP_NORMAL, RCC_LSE_DRIVER_NORMAL); // 选择LSE为RTC时钟
RTC_InitStruct.DateStruct.Day = 0x27; //日
RTC_InitStruct.DateStruct.Month = RTC_Month_May;//月
RTC_InitStruct.DateStruct.Week = RTC_Weekday_Monday;//星期
RTC_InitStruct.DateStruct.Year = 0x23; //年
RTC_InitStruct.TimeStruct.Hour = 0x11; //时
RTC_InitStruct.TimeStruct.Minute = 0x58;//分
RTC_InitStruct.TimeStruct.Second = 0x59;//秒
RTC_InitStruct.TimeStruct.AMPM = 0;
RTC_InitStruct.TimeStruct.H24 = 0; //采用12小时设置
RTC_InitStruct.RTC_ClockSource = RTC_RTCCLK_FROM_LSE;
err_rtc = RTC_Init(&RTC_InitStruct); // RTC模块初始化, 用户需选定需要使用的时钟源
if(err_rtc != SUCCESS)
{
return ERROR;
}
return SUCCESS;
}
rtc.h:
#ifndef __RTC_H__
#define __RTC_H__
#include "main.h"
ErrorStatus rest_rtc(void);
#endif
修改主函数内容如下:
#include "main.h"
#include "Lcd_Driver.h"
#include "LCD_calculate.h"
#include "dht11.h"
#include "rtc.h"
unsigned int counttime=0;
float temperature;
uint8_t humidity;
char buff_1[15];
char buff_2[15];
char buff_rtc[30];
void GPIO_Configuration(void);
void RCC_Configuration(void);
void BTIM_init(void);
int main()
{
RTC_InitTypeDef RTC_InitStruct = {0};
RCC_Configuration(); //系统时钟64M
GPIO_Configuration(); //LED初始化
BTIM_init(); //定时器初始化
Lcd_Init();
Lcd_Clear(GRAY0); //清屏
Redraw_Mainmenu();
while(DHT11_GPIO_Config()) //DHT11初始化
{
}
rest_rtc();
while(1)
{
if(counttime>500) //200毫秒采集一次数据并更新屏幕
{
counttime=0;
DHT11_Read_Data(&temperature,&humidity); //读取温湿度
sprintf(buff_1,"%0.1f",temperature);
sprintf(buff_2,"%d",humidity);
Gui_DrawFont_GBK16(90,25,BLUE,GRAY0,buff_1); //更新显示
Gui_DrawFont_GBK16(90,47,BLUE,GRAY0,buff_2);
RTC_GetDate(&RTC_InitStruct.DateStruct);// 取用当前日期,BCD格式
sprintf(buff_rtc,"20%02x-%02x-%02x",RTC_InitStruct.DateStruct.Year, RTC_InitStruct.DateStruct.Month, RTC_InitStruct.DateStruct.Day );
Gui_DrawFont_GBK16(10,80,BLUE,GRAY0,buff_rtc);
RTC_GetTime(&RTC_InitStruct.TimeStruct);// 获取当前时间,BCD格式
sprintf(buff_rtc,"%02x:%02x:%02x",RTC_InitStruct.TimeStruct.Hour, RTC_InitStruct.TimeStruct.Minute, RTC_InitStruct.TimeStruct.Second );
Gui_DrawFont_GBK16(10,100,BLUE,GRAY0,buff_rtc);
}
}
}
编译下载到开发板,运行效果如下:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
日历
+关注
关注
0文章
15浏览量
9044 -
2CW
+关注
关注
0文章
2浏览量
6021 -
温湿度计
+关注
关注
1文章
23浏览量
8080 -
CW32
+关注
关注
1文章
183浏览量
575 -
武汉芯源
+关注
关注
1文章
65浏览量
249
发布评论请先 登录
相关推荐
【CW32饭盒派开发板试用体验】+机械臂游戏项目(开源)(5)加红外游戏操控机
接上几篇:
【CW32饭盒派开发板试用体验】+机械臂游戏项目(开源)(1)开箱试验舵机 - 武汉芯源MCU - 电子技术论坛 - 广受欢迎的专业电子论坛!
【
发表于 05-24 22:27
【CW32饭盒派开发板试用体验】+开箱+软件
温湿度接口;
这些功能保证 CW32饭盒派 可以外接非常多的模块来做各种测试,也可以提供丰富的接口来扩展这块开发板。
看下资源,使用此
发表于 05-29 08:41
【CW32饭盒派开发板试用体验】+初识CW32饭盒派开发板
盼星星,盼月亮,终于收到了CW32饭盒派开发板。回想起那天答复参加活动邮件发出去的那一刻,就在期盼。
以前也了解过CW32单片机,这是一款非
发表于 05-29 15:51
【CW32饭盒派开发板试用体验】6.硬件I2C之连接HS300X读取温湿度数据
器
【CW32饭盒派开发板试用体验】4. ADC采样摇杆模块X轴和Y轴输出
【CW32饭盒
发表于 06-07 21:45
【CW32饭盒派开发板试用体验】+万物互联之温湿度采集
CW32饭盒派开发板 提供了多种传感器的接口,上面就有温湿度传感器DHT11的接口。但是,我手上只有4个脚的DHT11芯片,并没有3个脚的D
发表于 06-11 16:05
【CW32饭盒派开发板试用体验】+万物互联之温湿度显示
的图案更加漂亮和美观。对于UI设计,我涉及的面比较窄,以后的好好利用饭盒派这款多接口的带屏幕的开发板。对于刷新,我是500ms调用一次温湿度采集和屏幕刷新程序。特殊的场合有特殊的做法,
发表于 06-26 20:33
评论