【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输出频率从而控制蜂 ...
随机推荐
- Chameleon
# -*- coding: utf-8 -*- """ Created on Tue Dec 18 09:55:16 2018 @author: Mark,LI &quo ...
- 16,EasyNetQ-群集支持
EasyNetQ支持RabbitMQ群集,无需部署负载均衡器. 只需在连接字符串中列出群集的节点... var bus = RabbitHutch.CreateBus("host=ubunt ...
- iOS html5使用缓存并及时更新方案总结
最近一段时间研究了一下H5在iOS移动端表现时使用缓存并可及时更新方案,总结如下: 一.使用Webview自带缓存机制 当我们使用webview加载html资源时的,本质上就是一个向服务器索取资源的h ...
- 潭州课堂25班:Ph201805201 爬虫基础 第六课 选择器 (课堂笔记)
HTML解析库BeautifulSoup4 BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库,它的使用方式相对于正则来说更加的简单方便,常常能够节省我们大量的时间 ...
- [NOIp2010提高组]关押罪犯
OJ题号:洛谷1525 思路:贪心. 先将所有的人按怨气值从大到小排一下,然后依次尝试将双方分入两个不同的监狱,如果失败(即已分入相同的监狱),则输出这个怨气值. #include<cstdio ...
- Python 八大排序算法速度比较
这篇文章并不是介绍排序算法原理的,纯粹是想比较一下各种排序算法在真实场景下的运行速度. 算法由 Python 实现,用到了一些语法糖,可能会和其他语言有些区别,仅当参考就好. 测试的数据是自动生成的, ...
- .Net机试题——编写一个BS架构的多层表结构的信息管理模块
要求: 编写一个BS架构的多层表结构的信息管理模块,用户体验需要注意.包含错误处理,需要最终能完整的跑起来.页面可以不美化,但是整洁还是必须的.在不能完成详细功能需求的情况下优先保证基本功能. 1 ...
- 将python文件加入到python的环境变量中
在python中,把一个python文件加入到python环境变量中,以方便其他python文件调用.有两种方式,下面对其进行简单的介绍 方式一: 导入系统自带的sys模块,然后将文件的路径进行追加或 ...
- Windows XP Ghost系统安装
一.双击Ghost系统安装工具,进入Ghost界面 二.依次单击[Local]-[Partition]-[From Image],可以简单记作1-2-3. 弹出对话框,选择.GHO文件,比如XP.GH ...
- Postgres和MySQL创建用户并授予db权限
Postgresql和MySQL还是有很多不同的.就比如授权来说.当下有个业务场景,我们的报表数据库需要根据业务划分不同的db,然后创建对应的user. 如果是MySQL, 可以这样做 mysql&g ...