777精品久无码人妻蜜桃-欧美在线观看视频一区-99精品网-伊人网中文字幕-99福利网-国产精品99久久久久久武松影视-日本黄色片免费看-免费观看高清在线观看-人妻少妇被粗大爽9797pw-日韩国产在线播放-国产日产成人免费视频在线观看-一区二区人妻-午夜看毛片-国产精品s-午夜免费av-国产精品色情国产三级在-国产精品资源在线

基于WindowsCE系統(tǒng)的模擬時鐘設(shè)計

來源:期刊VIP網(wǎng)所屬分類:微電子時間:瀏覽:次

  【摘要】本文介紹了一種基于Windows CE 6.0操作系統(tǒng)的模擬時鐘的設(shè)計方法,該設(shè)計以三星公司的S3C2440為核心,基于MFC編程,實現(xiàn)了鐘面上時分秒針的實時顯示。本設(shè)計編譯生成的.exe文件可做為Windows CE系統(tǒng)的一個應(yīng)用程序使用。

  【關(guān)鍵詞】ARM;S3C2440;Windows CE;模擬時鐘

  1.引言

  隨著科學(xué)技術(shù)的發(fā)展,嵌入式設(shè)備廣泛應(yīng)用于商業(yè)管理和工業(yè)控制等領(lǐng)域。本設(shè)計以ARM9嵌入式微處理器S3C2440為核心,基于MFC編程,在開發(fā)板的液晶顯示屏上顯示模擬時鐘,實現(xiàn)了時分秒針的實時顯示。

  2.硬件平臺

  本設(shè)計以ARM9嵌入式微處理器S3C2440開發(fā)板為核心,主要利用S3C2440內(nèi)置的RTC模塊,通過讀取系統(tǒng)時間來實時繪制時針,實現(xiàn)模擬時鐘的實時走動。

  3.軟件設(shè)計

  3.1 對話框設(shè)計

  建立工程之后,在Resource View中設(shè)計模擬時鐘的界面,選定一個與S3C2440觸摸屏相符的對話框界面。模擬時鐘的顯示用程序?qū)崿F(xiàn),在對話框下方放置從Toolbox中選擇的控件。本設(shè)計總共用到九個控件:對話框控件,顯示時分秒的靜態(tài)文本控件,用于顯示數(shù)字的動態(tài)控件,更改時間的控件和確定控件等。

  3.2 程序設(shè)計

  首先添加一個OnTimer()函數(shù)讀取系統(tǒng)時間并用作計時器的消息處理函數(shù),用于通知moniDlg類中的畫表盤刻度和指針的函數(shù)重新繪圖。添加設(shè)置時間按鈕函數(shù),用于導(dǎo)出軟鍵盤,設(shè)置時間;確認(rèn)按鈕函數(shù)用于關(guān)閉軟鍵盤,此時屏幕刷新。

  3.2.1 表盤刻度畫法

  在moniDlg類中添加畫表盤刻度的函數(shù)。程序創(chuàng)建兩種畫筆,設(shè)置不同的顏色和粗細(xì),來區(qū)分整點時刻和分點時刻。

  由于S3C2440開發(fā)板顯示屏默認(rèn)的原點在左上角,根據(jù)S3C2440觸摸屏的大小確定圓心位置,這樣就確定了表盤的位置,表盤上的刻度都在以圓心為中心的圓環(huán)上。其坐標(biāo)可以通過三角函數(shù)推導(dǎo)出來。設(shè)圓心坐標(biāo)為(X,Y),半徑為R,表盤上其他點的坐標(biāo)為(X1,Y1),該點與圓心X軸夾角為A(0~360度),該點坐標(biāo)為(X1=X+RcosA,Y1=Y+RsinA)。

  由于我們習(xí)慣上使用逆時針的角度,而表針是順時針轉(zhuǎn)動,即在S3C2440上,坐標(biāo)跟我們實際用到的坐標(biāo)方向不同,所以我們應(yīng)先算出從12點開始的每個刻度的正余弦值,即有60個數(shù)組元素的正余弦數(shù)組,為計算每個刻度跟時分秒針在表盤中的位置做準(zhǔn)備。

  3.2.2 指針畫法

  在moniDlg類中添加刻畫指針的函數(shù)。時分秒針主要用長短和粗細(xì)區(qū)分,亦可設(shè)置指針顏色。繪制指針以角度值為控制變量,根據(jù)前面畫表盤計算出的校正后的角度值及定義的時分秒針的長度,算出時分秒針起始的坐標(biāo)值。利用讀取的系統(tǒng)時間算出坐標(biāo),用函數(shù)MoveTo(x1,y1)和LineTo(x2,y2)實現(xiàn)指針的連接并實時顯示。為了讓模擬時鐘看起來更加平滑美觀,本文設(shè)計每2分鐘,時針移動1度;每10秒鐘,分針移動1度;秒針則是每秒移動一格即6度。因此要計算時分秒針的坐標(biāo)位置,還需在校正后角度的三角函數(shù)正余弦數(shù)組中加入一定的數(shù)組元素,構(gòu)成新的三角函數(shù)正余弦數(shù)組:

  (1)時針的取值只有1~12這12個數(shù)字,本文設(shè)計每2分鐘,時針移動1度。此處用讀取的分鐘數(shù)和小時數(shù)來計算時針的頂點和終點坐標(biāo)。設(shè)讀取系統(tǒng)時間的小時數(shù)為st.wHour,分鐘數(shù)為st.wMinute,時針移動的度數(shù)為H。由于S3C2440系統(tǒng)時間采用24小時制,當(dāng)讀取系統(tǒng)小時數(shù)小于等于12,則H=st.wHour*30+st.wMinute/2;當(dāng)系統(tǒng)小時數(shù)大于12,則H=(st.wHour—12)*30+st.wMinute/2。若得到的H=360,則取H為0;若H<360,則H取式中算出的值。將算出的H代入下列公式,即可算出時針的頂點和終點坐標(biāo)。其中x和y為表盤圓心坐標(biāo),下同。

 ?。?)分針的取值是60個數(shù)字,本設(shè)計為每10秒分針移動1度。用讀取的分鐘數(shù)和秒鐘數(shù)來計算分針的頂點和終點坐標(biāo)。設(shè)讀取的分鐘數(shù)為st.wMinute,秒鐘數(shù)為st.wSecond,分針移動的度數(shù)為M。由于要使得每10秒分針移動1度,因此計算時要加上st.wSecond/10。M=st.wMinute*6+st.wSecond/10,當(dāng)計算后M=360,則取M為0。將算出的M代入下列公式,即可算出分針的頂點和終點坐標(biāo)。

 ?。?)秒針的取值亦為60個數(shù)字,本設(shè)計為每過1秒鐘,秒針移動1格。設(shè)讀取系統(tǒng)的秒鐘數(shù)為st.wSecond,秒針移動的度數(shù)為S。S=st.wSecond*6,當(dāng)計算出的S=360時,S取0;否則取計算出的值。將算出的S代入下列公式,即可算出秒針的頂點和終點坐標(biāo)。

  程序界面設(shè)計結(jié)構(gòu)為上方顯示模擬鐘,下方顯示數(shù)字鐘和時間調(diào)整按鈕。本設(shè)計程序在一個顯示界面下實現(xiàn)了模擬鐘、數(shù)字鐘和時間調(diào)整的功能。程序運行效果如圖3所示。指針和刻度顏色可根據(jù)個人喜好設(shè)定,筆者設(shè)置為黑色。

  5.結(jié)語

  本文的設(shè)計在Windows CE操作系統(tǒng)下,實現(xiàn)了模擬鐘的全部顯示功能,同時還具有數(shù)字鐘的顯示和時間調(diào)整功能。編譯形成的可執(zhí)行文件,可用于智能手機、PDA、帶觸屏的開發(fā)板等具有Windows CE系統(tǒng)的微型設(shè)備中,對嵌入式初學(xué)者也有很大的幫助。

  參考文獻

  [1]blogercn的專欄 一個模擬時鐘[EB/OL],2009—8—9/2012—9—20.

  作者簡介:

  侯秋華(1986—),女,碩士研究生,主要研究方向:信號檢測與信息處理。

  劉煒(1963—),男,副教授,碩士生導(dǎo)師,主要研究方向:智能儀器。

靖宇县| 丰台区| 祁东县| 上杭县| 沂水县| 西青区| 香格里拉县| 永嘉县| 阿尔山市| 石林| 芒康县| 南漳县| 盘锦市| 紫阳县| 梁山县| 唐山市| 昌图县| 安多县| 开远市| 邢台市| 锡林浩特市| 通河县| 卢氏县| 桓台县| 循化| 且末县| 枝江市| 镇江市| 揭东县| 西吉县| 隆子县| 东丽区| 聂拉木县| 扬州市| 美姑县| 永修县| 新源县| 鹤庆县| 合川市| 聊城市| 昭通市|