基于WindowsCE系统的模拟时钟设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于WindowsCE系统的模拟时钟设计

【摘要】本文介绍了一种基于Windows CE 6.0操作系统的模拟时钟的设计方法,该设计以三星公司的S3C2440为核心,基于MFC编程,实现了钟面上时分秒针的实时显示。本设计编译生成的.exe文件可做为Windows CE系统的一个应用程序使用。

【关键词】ARM;S3C2440;Windows CE;模拟时钟

1.引言

随着科学技术的发展,嵌入式设备广泛应用于商业管理和工业控制等领域。本设计以ARM9嵌入式微处理器S3C2440为核心,基于MFC编程,在开发板的液晶显示屏上显示模拟时钟,实现了时分秒针的实时显示。

2.硬件平台

本设计以ARM9嵌入式微处理器S3C2440开发板为核心,主要利用S3C2440内置的RTC模块,通过读取系统时间来实时绘制时针,实现模拟时钟的实时走动。

3.软件设计

3.1 对话框设计

建立工程之后,在Resource View中设计模拟时钟的界面,选定一个与S3C2440触摸屏相符的对话框界面。模拟时钟的显示用程序实现,在对话框下方放置从Toolbox中选择的控件。本设计总共用到九个控件:对话框控件,显示时分秒的静态文本控件,用于显示数字的动态控件,更改时间的控件和确定控件等。

3.2 程序设计

首先添加一个OnTimer()函数读取系统时间并用作计时器的消息处理函数,用于通知moniDlg类中的画表盘刻度和指针的函数重新绘图。添加设置时间按钮函数,用于导出软键盘,设置时间;确认按钮函数用于关闭软键盘,此时屏幕刷新。

3.2.1 表盘刻度画法

在moniDlg类中添加画表盘刻度的函数。程序创建两种画笔,设置不同的颜色和粗细,来区分整点时刻和分点时刻。

由于S3C2440开发板显示屏默认的原点在左上角,根据S3C2440触摸屏的大小确定圆心位置,这样就确定了表盘的位置,表盘上的刻度都在以圆心为中心的圆环上。其坐标可以通过三角函数推导出来。设圆心坐标为(X,Y),半径为R,表盘上其他点的坐标为(X1,Y1),该点与圆心X轴夹角为A(0~360度),该点坐标为(X1=X+RcosA,Y1=Y+RsinA)。

由于我们习惯上使用逆时针的角度,而表针是顺时针转动,即在S3C2440上,坐标跟我们实际用到的坐标方向不同,所以我们应先算出从12点开始的每个刻度的正余弦值,即有60个数组元素的正余弦数组,为计算每个刻度跟时分秒针在表盘中的位置做准备。校正后的角度值,按顺时针重新排列三角函数值,得到如下正余弦数组:

时钟表盘画法流程图:见图1。

画表盘核心代码:

3.2.2 指针画法

在moniDlg类中添加刻画指针的函数。时分秒针主要用长短和粗细区分,亦

可设置指针颜色。绘制指针以角度值为控制变量,根据前面画表盘计算出的校正后的角度值及定义的时分秒针的长度,算出时分秒针起始的坐标值。利用读取的系统时间算出坐标,用函数MoveTo(x1,y1)和LineTo(x2,y2)实现指针的连接并实时显示。为了让模拟时钟看起来更加平滑美观,本文设计每2分钟,时针移动1度;每10秒钟,分针移动1度;秒针则是每秒移动一格即6度。因此要计算时分秒针的坐标位置,还需在校正后角度的三角函数正余弦数组中加入一定的数组元素,构成新的三角函数正余弦数组:

(1)时针的取值只有1~12这12个数字,本文设计每2分钟,时针移动1度。此处用读取的分钟数和小时数来计算时针的顶点和终点坐标。设读取系统时间的小时数为st.wHour,分钟数为st.wMinute,时针移动的度数为H。由于S3C2440系统时间采用24小时制,当读取系统小时数小于等于12,则H=st.wHour*30+st.wMinute/2;当系统小时数大于12,则H=(st.wHour—12)*30+st.wMinute/2。若得到的H=360,则取H为0;若H<360,则H取式中算出的值。将算出的H代入下列公式,即可算出时针的顶点和终点坐标。其中x和y 为表盘圆心坐标,下同。

(2)分针的取值是60个数字,本设计为每10秒分针移动1度。用读取的分钟数和秒钟数来计算分针的顶点和终点坐标。设读取的分钟数为st.wMinute,秒钟数为st.wSecond,分针移动的度数为M。由于要使得每10秒分针移动1度,因此计算时要加上st.wSecond/10。M=st.wMinute*6+st.wSecond/10,当计算后M=360,则取M为0。将算出的M代入下列公式,即可算出分针的顶点和终点坐标。

(3)秒针的取值亦为60个数字,本设计为每过1秒钟,秒针移动1格。设读取系统的秒钟数为st.wSecond,秒针移动的度数为S。S=st.wSecond*6,当计算出的S=360时,S取0;否则取计算出的值。将算出的S代入下列公式,即可算出秒针的顶点和终点坐标。

时钟指针画法流程图:见图2。

绘制指针的核心代码:

程序界面设计结构为上方显示模拟钟,下方显示数字钟和时间调整按钮。本设计程序在一个显示界面下实现了模拟钟、数字钟和时间调整的功能。程序运行效果如图3所示。指针和刻度颜色可根据个人喜好设定,笔者设置为黑色。

5.结语

本文的设计在Windows CE操作系统下,实现了模拟钟的全部显示功能,同时还具有数字钟的显示和时间调整功能。编译形成的可执行文件,可用于智能手机、PDA、带触屏的开发板等具有Windows CE系统的微型设备中,对嵌入式初学者也有很大的帮助。

参考文献

[1]blogercn的专栏一个模拟时钟[EB/OL].http:///Blog/Detail_RD.Blog_blogercn_20940.html,2009—8—9/2012—9—20.

刘炜(1963—),男,副教授,硕士生导师,主要研究方向:智能仪器。

相关文档
最新文档