【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输出频率从而控制蜂 ...
随机推荐
- FTP 错误1
530-Valid hostname is expected. 所以,当通过主机名连接到FTP之后,输入用户名的时候,采用以下格式:主机名|用户名例如:ftp1.sdsxw.com|tom
- [HihoCoder1394]网络流四·最小路径覆盖
题目大意:从有向无环图中选出若干点不想交的链,使得这些链覆盖所有的点,并且链的条数最小. 思路:设超级源点$S$.超级汇点$T$.将$N$个点复制一份,分为$A$部和$B$部.对于$A$部的所有点$A ...
- java使用Base64编码
import java.io.IOException;import java.io.UnsupportedEncodingException; import org.junit.Test; impor ...
- Android摘抄总结
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:葛小葛链接:http://www.zhihu.com/question/27069588/answer/38417756来源: ...
- 学校的统一订书80%该烧掉——IT推荐书单
学校的统一订书80%该烧掉——IT推荐书单 作者: 夏浅音.py 中文图书个人黑名单:清华大学出版社的国产作者,例如一段错n次的谭浩强.一页错n次的严蔚敏... 中文图书个人白名单:机械工业出版社.电 ...
- C++学习笔记44:继承与派生
类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a ...
- 支付宝集成遇到"_EVP_DecodeBlock",referenced from:报错
遇到问题报错如下: 调试了好多遍,始终不行,检测各种依赖库,发现并没有少什么.后来发现支付宝demo里比文档讲解里面多两个.a文件 直接加上就好了
- STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
是采样速率低于5Msps (每秒百万次采样)的中等至高分辨率应用的常见结构. SAR ADC的分辨率一般为8位至16位,具有低功耗.小尺寸等特点. 这些特点使该类型ADC具有很宽的应用范围,例如便携/ ...
- android:四种基本布局
一个丰富的界面总是要由很多个控件组成的,那我们如何才能让各个控件都有条不紊地 摆放在界面上,而不是乱糟糟的呢?这就需要借助布局来实现了.布局是一种可用于放置很 多控件的容器,它可以按照一定的规律调整内 ...
- 咏南中间件JSON序列类
咏南中间件JSON序列类 1)支持跨平台.跨语言 2)支持主从表数据序列.还原,支持任意数量的表 主从表数据序列为JSON字符串样式: { "rows": [ { "FD ...