stm32万年历流程图_STM32实现万年历..

本文介绍了使用STM32的RTC功能实现万年历的方法,包括RTC时钟计数器原理、日期时间计算、阳历转阴历、节气判断等。同时,探讨了模拟时钟的绘制,如指针运动算法和非删除式屏幕重绘,以减少闪烁现象。目前程序仍有改进空间,如增加时间设置和节假日显示。
摘要由CSDN通过智能技术生成

1

(为

LCD

截屏保存在

SD

卡中的图像)

最终界面如下,但还存在不少漏洞。

1

、没有更改时间的设置;

2

、只有节气显示没有节

假日显示

3

背景不是用

uCGUI

画的,

是在

PS

中画好然后存在

SD

卡中,

然后显示的

BMP

格式图像。

要点分析:

1

STM32

自带了

RTC

时钟计数器,从

0

开始计数到

2

32

。每一个计数代表秒计数,每

六十个计数代表分计数,以此类推。

24

(小时)

*60

(分钟)

*60

(秒钟)

=86400

代表一天

的计数时间。假设当前计数为

count

count/86400

得到计数的天数,根据这个得到年月日。

Count%86400

得到时分秒。

2

、一些根据

1

中得到的年月日时分秒,进行计算的程序有:阳历转阴历,闰年判断,

节气判断,星期几计算,当前月有多少天等等。

3

、模拟时钟的绘制:时钟指针运动算法、屏幕重绘方法、

RTC

消息、画笔

/

画刷等。指

针运动算法和屏幕重绘方法是本程序主要难点所在。

(以下参照百度文库之模拟时钟)

不论何种指针,每次转动均以

π

/30

弧度(一秒的角度)为基本单位,且都以表盘中心

为转动圆心。计算指针端点(

x, y

)的公式如下:

x =

圆心

x

坐标

+

指针长度

* cos (

指针方向角

)

y =

圆心

y

坐标

+

指针长度

* sin (

指针方向角

)

注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分)

,由于指针

可能跨越圆心,因此一个指针需要计算两个端点。

由于屏幕的重绘

1

秒钟一次,

如果采用全屏删除式重绘则闪烁十分明显,

显示效果不佳。

本程序采用非删除式重绘,假定指针将要移动一格,则先采用背景色(这里是白色)重绘原

来指针以删除原来位置的指针,再采用指针的颜色在当前位置绘制指针(如果指针没有动,

则直接绘制指针,此句在程序中被我删除,具体原因,为数据截断导致一些误差)

另外,秒表为

RTC

一秒钟定时计数。

程序分析:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值