【GMT43智能液晶模块】例程九:RTC实验——时钟显示
实验原理:
STM32的实时时钟(RTC)是一个独立的定时器,有一组连续计数的
计数器,通过软件来对其进行相关的配置,可以提供时钟功能,通过修改计
数器的的值,可以调整时钟。最终通过emWin在显示屏上进行显示。
示例截图:

源代码下载链接:
链接:http://pan.baidu.com/s/1sloF1fv 密码:gtwo
GMT43购买链接:


核心代码:
static void frame_process(void)
{
RTC_TimeTypeDef rtc_time;
RTC_DateTypeDef rtc_date;
typedef struct {
int x;
int y;
}POINT_T;
float temp;
static POINT_T ph0,ph0_bak,ph1,ph1_bak,pm0,pm0_bak, pm1,pm1_bak, ps0,ps0_bak, ps1,ps1_bak;
int second_bak = ;
int minute_bak = ;
int hour_bak = ;
int year_bak = ;
int month_bak = ;
int date_bak = ;
int week_bak = ;
char buffer[]; GUI_CURSOR_Show();
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbwindow, WM_HBKWIN, , );
WM_SetCallback(WM_HBKWIN, NULL);
add_widget();
WM_SetCallback(WM_HBKWIN, &_cbDialog);
while(){
RTC_GetTime(RTC_Format_BIN,&rtc_time);//»ñÈ¡RTCʱ¼ä
RTC_GetDate(RTC_Format_BIN,&rtc_date);//»ñÈ¡RTCÈÕÆÚ
if(second_bak != rtc_time.RTC_Seconds){
sprintf(buffer,"%02d",rtc_time.RTC_Seconds);
TEXT_SetText(h_text_4, buffer);
second_bak = rtc_time.RTC_Seconds;
}
if(minute_bak != rtc_time.RTC_Minutes){
sprintf(buffer,"%02d",rtc_time.RTC_Minutes);
TEXT_SetText(h_text_3, buffer);
minute_bak = rtc_time.RTC_Minutes;
}
if(hour_bak != rtc_time.RTC_Hours){
sprintf(buffer,"%02d",rtc_time.RTC_Hours);
TEXT_SetText(h_text_2, buffer);
hour_bak = rtc_time.RTC_Hours;
}
if(year_bak != rtc_time.RTC_Seconds){
sprintf(buffer,"20%02d",rtc_date.RTC_Year);
TEXT_SetText(h_text_5, buffer);
year_bak = rtc_date.RTC_Year;
}
if(month_bak != rtc_date.RTC_Month){
sprintf(buffer,"%02d",rtc_date.RTC_Month);
TEXT_SetText(h_text_6, buffer);
month_bak = rtc_date.RTC_Month;
}
if(date_bak != rtc_date.RTC_Date){
sprintf(buffer,"%02d",rtc_date.RTC_Date);
TEXT_SetText(h_text_7, buffer);
date_bak = rtc_date.RTC_Date;
}
if(week_bak != rtc_date.RTC_WeekDay){
switch(rtc_date.RTC_WeekDay){
case :
TEXT_SetText(h_text_8, "ÐÇ ÆÚ Ò»");
break;
case :
TEXT_SetText(h_text_8, "ÐÇ ÆÚ ¶þ");
break;
case :
TEXT_SetText(h_text_8, "ÐÇ ÆÚ Èý");
break;
case :
TEXT_SetText(h_text_8, "ÐÇ ÆÚ ËÄ");
break;
case :
TEXT_SetText(h_text_8, "ÐÇ ÆÚ Îå");
break;
case :
TEXT_SetText(h_text_8, "ÐÇ ÆÚ Áù");
break;
case :
TEXT_SetText(h_text_8, "ÐÇ ÆÚ ÈÕ");
break;
default:
break;
}
week_bak = rtc_date.RTC_WeekDay;
}
//¸üÐÂÖ¸ÕëλÖÃ
temp = ((rtc_time.RTC_Hours + rtc_time.RTC_Minutes / .) / .)* * PI;
ph0.x = * sin(temp);
ph0.y = * cos(temp);
ph1.x = * sin(temp);
ph1.y = * cos(temp);
temp = (rtc_time.RTC_Minutes / .) * * PI;
pm0.x = * sin(temp);
pm0.y = * cos(temp);
pm1.x = * sin(temp);
pm1.y = * cos(temp);
temp = (rtc_time.RTC_Seconds / .) * * PI;
ps0.x = * sin(temp);
ps0.y = * cos(temp);
ps1.x = * sin(temp);
ps1.y = * cos(temp); //ÃëÕëÏÔʾ
if(ps0.x != ps0_bak.x || ps0.y != ps0_bak.y){
GUI_SetPenSize();
GUI_SetColor(GUI_BLACK);
GUI_DrawLine(tx(ps0_bak.x,), ty(ps0_bak.y,), tx(ps1_bak.x,), ty(ps1_bak.y,));
GUI_SetColor(GUI_WHITE);
GUI_SetFont(GUI_FONT_20B_ASCII);
GUI_DispStringAt("",,);
GUI_DispStringAt("",,);
GUI_DispStringAt("",,);
GUI_DispStringAt("",,);
GUI_SetPenSize();
GUI_SetColor(GUI_WHITE);
GUI_DrawLine(tx(pm0.x,), ty(pm0.y,), tx(pm1.x,), ty(pm1.y,));
GUI_SetPenSize();
GUI_SetColor(GUI_WHITE);
GUI_DrawLine(tx(ph0.x,), ty(ph0.y,), tx(ph1.x,), ty(ph1.y,));
GUI_SetPenSize();
GUI_SetColor(GUI_RED);
GUI_DrawLine(tx(ps0.x,), ty(ps0.y,), tx(ps1.x,), ty(ps1.y,));
}
//·ÖÕëÏÔʾ
if(pm0.x != pm0_bak.x || pm0.y != pm0_bak.y){
GUI_SetPenSize();
GUI_SetColor(GUI_BLACK);
GUI_DrawLine(tx(pm0_bak.x,), ty(pm0_bak.y,), tx(pm1_bak.x,), ty(pm1_bak.y,));
GUI_SetPenSize();
GUI_SetColor(GUI_WHITE);
GUI_DrawLine(tx(pm0.x,), ty(pm0.y,), tx(pm1.x,), ty(pm1.y,));
}
//ʱÕëÏÔʾ
if(ph0.x != ph0_bak.x || ph0.y != ph0_bak.y){
GUI_SetPenSize();
GUI_SetColor(GUI_BLACK);
GUI_DrawLine(tx(ph0_bak.x,), ty(ph0_bak.y,), tx(ph1_bak.x,), ty(ph1_bak.y,));
GUI_SetPenSize();
GUI_SetColor(GUI_WHITE);
GUI_DrawLine(tx(ph0.x,), ty(ph0.y,), tx(ph1.x,), ty(ph1.y,));
}
GUI_SetColor(GUI_WHITE);
GUI_DrawCircle(tx(,), ty(,), );
GUI_DrawCircle(tx(,), ty(,), );
ps0_bak.x = ps0.x;
ps0_bak.y = ps0.y;
ps1_bak.x = ps1.x;
ps1_bak.y = ps1.y;
pm0_bak.x = pm0.x;
pm0_bak.y = pm0.y;
pm1_bak.x = pm1.x;
pm1_bak.y = pm1.y;
ph0_bak.x = ph0.x;
ph0_bak.y = ph0.y;
ph1_bak.x = ph1.x;
ph1_bak.y = ph1.y;
GUI_Exec();
}
}
【GMT43智能液晶模块】例程九:RTC实验——时钟显示的更多相关文章
- 【GMT43智能液晶模块】例程二:串口通信实验
实验原理: GMT43智能液晶模块的串口包括USB_UART(CH340),TTL,RS-232,RS-485/ RS-422等四部分,USB_UART部分通过CH340芯片与STM32F429的US ...
- 【GMT43智能液晶模块】例程十九:LAN_DHCP实验——动态分配IP地址
源代码下载链接: 链接:https://pan.baidu.com/s/19Euul9LYFKYdKdXTRBfx5w 提取码:p6k8 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43 ...
- 【GMT43智能液晶模块】例程十三:FATFS实验——文件操作
实验原理: STM32F429上带有SDIO控制器,GMT43液晶模块上将SDIO连接到TF卡座.本实验 将Micro SD卡插入TF卡座上即可.通过FATFS创建test.txt文件,并且写入数据0 ...
- 【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息
实验原理: STM32F429上带有SDIO控制器,GMT43液晶模块上将SDIO连接到TF卡座上.本 实验将Micro SD卡插入TF卡座上即可.SD卡中可存放液晶显示模块需要显示的图片.字 库等资 ...
- 【GMT43智能液晶模块】例程三:CAN通信实验
实验原理: STM32F429自带有CAN通信接口,本例程通过CAN1与芯片SN65HVD230相连 实现CAN通信,通过回环测试以验证CAN通信功能. 实验现象: 源代码下载链接: 链接:http: ...
- 【GMT43智能液晶模块】例程十:DMA实验——存储器到存储器的传输
实验原理: DMA(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DMA2控制器的数据流0,选用通道0进行数据传输.通过液晶控制传输 和结果显示. 示例截图 ...
- 【GMT43智能液晶模块】例程五:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序运行 错误时,未在规定时间喂狗,自动复位ARM.本实验通过UI界面中按钮按下 停止喂狗,制造程序运行错误,从而产生复位. 示例 ...
- 【GMT43智能液晶模块】例程六:WWDG看门狗实验——复位ARM
实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序运行 错误时,未在规定时间喂狗,自动复位ARM.本实验通过UI界面中按钮按下 停止喂狗,制造程序运行错误,从而产生复位. 示例 ...
- 【GMT43智能液晶模块】例程七:定时器PWM实验——简易电子琴
实验原理: STM32定时器有PWM功能,GMT43模块上带有一无源蜂鸣器,其 PWM输入控制信号接在STM32定时器输出接口上(PB4/TIM3_CH1),可 以通过定时器的PWM输出频率从而控制蜂 ...
随机推荐
- TXT 与 DataTable 互转
//********************************************************************************************* publ ...
- 安装Appium-desktop,并连接模拟器!Appium-Python-Client
1.下载appium-desktop https://github.com/appium/appium-desktop/releases 2.双击 exe 文件,然后,等待安装完就好了 3.启动app ...
- u3d 地形 U3d terrain
u3d 地形 U3d terrain 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com fbx ...
- R2 day2
简单写一下吧 emmmm,来晚了1h,没赶上,所以没交.......(捂脸 T1 开始读错题了诶 开烤1.2h后 发现是个傻逼题.... 排序一下,维护前缀最左,右端点 随机数据我跑的比他们都慢... ...
- Ubuntu Siege 压力测试工具
安装 $ sudo apt install siege Siege命令常用参数 -c 200 指定并发数200 -r 5 指定测试的次数5 -f urls.txt 制定url的文件 -i intern ...
- navLI鼠标滑上显示下拉导航
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>l ...
- Redis集群方案总结
Redis集群方案总结 Redis集群方案总结Codis其余方案Redis cluster 目前,Redis中目前集群有以下几种方案: 主从复制 哨兵模式 redis cluster 代理 codis ...
- db2配置、db和dbm
----start DB2 可以在四个不同层面配置: 一:系统环境变量(System Environment Variable) 系统环境变量用来配置DB2 的使用环境: 查看:set | grep ...
- linux中 判断变量中是否有给定元素
grep find都是查找文件 所以shell编程时使用=~ 来进行变量中的匹配. 注意:if条件后面是两个[]. #!/bin/basha="abc.txt bde.txt ccc.txt ...
- linux目录的权限
Answer: When applying permissions to directories on Linux, the permission bits have different meanin ...