【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输出频率从而控制蜂 ...
随机推荐
- jquery.pagination.js添加跳转页
原作者github地址:https://github.com/gbirke/jquery_pagination 在这基础上加入了跳转到指定页. 修改后的jquery.pagination.js /** ...
- Struts2标签里面调用java方法
<s:if test="#session.user.hasPrivilegeByName(name)"> hasPrivilegeByName(name) 为User类 ...
- input输入框只能输入数字而且开头不能为零
<div class="input-choseNum"> <input type="number" id="inp-chooseNu ...
- 未能加载文件或程序集“Benlai.SOA.Framework.Common, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。
未能加载文件或程序集“Benlai.SOA.Framework.Common, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个 ...
- mongodb crud
//添加数据 db.users.insert({,"gender":"男"}); db.users.insert({"name":" ...
- DNS解析全过程分析
DNS解析过程 1.检查浏览器缓存中是否缓存过该域名对应的IP地址 用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的IP地址, 当用户再次访问的时候,浏览器就会从缓存中查找该域名对应 ...
- Winform自动更新组件分享
作者:圣殿骑士 出处:http://www.cnblogs.com/KnightsWarrior/ 关于作者:专注于微软平台项目架构.管理和企业解决方案.自认在面向对象及面向服务领域有一定的造诣,熟悉 ...
- 嵌入式Linux学习(一)
嵌入式系统 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分.通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板.事实上,所有带有数字接口的设备,如手表.微波炉.录像机.汽车等, ...
- java实现八种排序算法并测试速度
速度测试: (1) 随机数范围:0-100希尔排序: => Time is 38600基数排序: => Time is 53300快速排序: => Time is 46500堆 排 ...
- Go语言之高级篇beego框架之配置beego环境
1.配置beego环境 进入部署目录中 软件部署目录: 把要部署的软件代码,放在src目录下面. 启动项目