国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于LPC1768的多功能實(shí)時(shí)時(shí)鐘系統(tǒng)設(shè)計(jì)

2018-07-28 07:19:12徐永毅張燕
電腦知識(shí)與技術(shù) 2018年11期

徐永毅 張燕

摘要:本論文設(shè)計(jì)了一款基于NXPLPC1768實(shí)現(xiàn)一個(gè)完整的實(shí)用的多功能實(shí)時(shí)時(shí)鐘系統(tǒng)。使用LPC1768內(nèi)部的RTC時(shí)鐘,并在LCD屏幕實(shí)現(xiàn)數(shù)字型時(shí)鐘和模擬圓盤型時(shí)鐘的雙顯示。實(shí)現(xiàn)可調(diào)日歷和多鬧鐘的設(shè)計(jì),并且使用五向鍵設(shè)置鬧鐘和調(diào)整日歷,同時(shí)又可以使用UART調(diào)度臺(tái)設(shè)置日期時(shí)間。使用DA轉(zhuǎn)換模塊驅(qū)動(dòng)蜂鳴器實(shí)現(xiàn)鬧鐘的報(bào)警。最后通過(guò)實(shí)際LPC1768開(kāi)發(fā)板的檢驗(yàn)運(yùn)行,結(jié)果說(shuō)明了整個(gè)系統(tǒng)的正確性。

關(guān)鍵詞:LPC1768;圓盤型時(shí)鐘;可調(diào)日歷;DA轉(zhuǎn)換;多鬧鐘;UART調(diào)度臺(tái)

中圖分類號(hào): TP751.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)11-0278-02

近年來(lái),計(jì)算機(jī)技術(shù)和嵌入式技術(shù)的發(fā)展十分迅速,各種現(xiàn)代化產(chǎn)品在我們的生活的各個(gè)方面得到應(yīng)用,使得我們生活水平和生活質(zhì)量得到提高。但如今的電子產(chǎn)品難以滿足人們對(duì)日益增長(zhǎng)美好生活的需求,故需對(duì)電子產(chǎn)品的要求愈來(lái)愈嚴(yán)格、愈來(lái)愈人性化。然而在我們的日常生活和工作中,無(wú)時(shí)無(wú)刻都離不開(kāi)時(shí)鐘,并且每天都在使用著時(shí)鐘鬧鐘。與此同時(shí),現(xiàn)代電子時(shí)鐘正沿著多層次用戶、多品種、多規(guī)格、精度高、尺寸小、功耗低的道路發(fā)展,并且實(shí)時(shí)時(shí)鐘適合于一切需要低功耗及準(zhǔn)確計(jì)時(shí)的場(chǎng)合。因此多功能實(shí)時(shí)時(shí)鐘系統(tǒng)在我們的生活具有巨大的應(yīng)用前景,具有非常重大的研究意義。由此,本論文著重研究多功能的時(shí)鐘,以滿足當(dāng)今人們的需求,以適應(yīng)社會(huì)的發(fā)展。本多功能實(shí)時(shí)時(shí)鐘系統(tǒng)的功能:a、數(shù)字型和圓盤型時(shí)鐘雙顯示;b、可調(diào)日歷;c、多鬧鐘的功能;d、基于DA數(shù)模轉(zhuǎn)換的蜂鳴器鬧鐘報(bào)警系統(tǒng);e、五向鍵和UART調(diào)度臺(tái)[2]的時(shí)間日期鬧鐘的設(shè)置。

1系統(tǒng)組成和結(jié)構(gòu)

該系統(tǒng)主要由一個(gè)CPU 構(gòu)成,其型號(hào)為NXP LPC1768;LPC1768內(nèi)部的時(shí)鐘模塊,主要用于實(shí)現(xiàn)精確計(jì)時(shí)的功能以及為實(shí)時(shí)時(shí)鐘提供準(zhǔn)確時(shí)間;LPC1768內(nèi)部DA模塊主要是用于產(chǎn)生信號(hào),從而驅(qū)動(dòng)蜂鳴器工作發(fā)出報(bào)警信號(hào);LCD3.2寸顯示模塊是為了給用戶提供有效使用界面;按鍵模塊是為了給用戶提供自身的操作空間;串口模塊的功能是提供多一種方式給用戶來(lái)對(duì)本產(chǎn)品功能的設(shè)置。

2設(shè)計(jì)原理

2.1 LCD顯示模塊設(shè)計(jì)

本多功能實(shí)時(shí)時(shí)鐘系統(tǒng)的設(shè)計(jì),需要用到像素為320*240的LCD顯示屏,重點(diǎn)要解決兩個(gè)問(wèn)題:1)320*240LCD屏的畫圓程序設(shè)計(jì)。2)320*240LCD屏的劃線程序設(shè)計(jì)。

2.1.1 320*240LCD屏的畫圓程序設(shè)計(jì)

本設(shè)計(jì)的畫圓算法是利用圓的定義動(dòng)點(diǎn)到定點(diǎn)的距離為定長(zhǎng)半徑,然后在LCD屏使用打點(diǎn)法進(jìn)行畫圓,但因?yàn)長(zhǎng)CD屏顯示器平面的各個(gè)像素之間是離散的,與數(shù)學(xué)上連續(xù)的圖形的不一樣。因此,在畫線和畫圓中需要在顯示器有限個(gè)象素中,確定最佳逼近該圓的一組象素。確保畫出來(lái)圓在有限個(gè)像素中的視覺(jué)上連續(xù)性,動(dòng)點(diǎn)到圓心的距離Dis與半徑R需要滿足系:[Dis∈(R-2,R+2)]。

2.2時(shí)鐘的設(shè)計(jì)

數(shù)字型和圓盤型時(shí)鐘的顯示。實(shí)時(shí)時(shí)鐘顯現(xiàn)是動(dòng)態(tài)的過(guò)程,每秒產(chǎn)生都在變化,因此數(shù)字型時(shí)鐘的顯示也應(yīng)該每秒鐘顯示一次時(shí)間,以此保證顯示的效果;如今要實(shí)現(xiàn)每秒顯示一次的時(shí)間,在LPC1768有兩種方法實(shí)現(xiàn):1)RTC 的增量中斷;2)用定時(shí)器產(chǎn)生1秒鐘的匹配中斷,在中斷服務(wù)程序中執(zhí)行相關(guān)的顯示操作即可。

本實(shí)驗(yàn)是使用LPC1768定時(shí)器產(chǎn)生一秒鐘的匹配中斷,然后使用鉤子函數(shù)鉤向時(shí)間顯示函數(shù),從而實(shí)現(xiàn)時(shí)間的連續(xù)顯示。

2.2.1圓盤型時(shí)鐘顯示

首先顯示表盤,時(shí)分秒的指針顯示;

時(shí)分秒的指針顯示,關(guān)于在LCD屏上繪制指針,本設(shè)計(jì)使用了void Hands_Show(void)函數(shù)來(lái)顯示模擬指針,然后用LPC1768定時(shí)器的鉤子函數(shù)鉤向該指針顯示函數(shù),實(shí)現(xiàn)每秒顯示;

首先,通過(guò)RTC_GetTime()獲取系統(tǒng)時(shí)鐘;

然后,通過(guò)正弦函數(shù)和余弦函數(shù)求出當(dāng)前時(shí)間映射到圓形表盤的x,y坐標(biāo)其關(guān)系如下:

[xy=R000R0cos(θ)sin(θ)+x0y0] 其中x0,y0為圓盤的圓心,R0為指針的長(zhǎng)度,[θ∈(0,2pi/60,2*2pi/60,....59*2pi/60,2pi)]。

計(jì)算出指針在圓盤的映射坐標(biāo),再通過(guò)畫線函數(shù)在LCD屏各個(gè)指針顯示出來(lái)。

2.3 實(shí)現(xiàn)可調(diào)日歷的

2.3.1根據(jù)年,月來(lái)計(jì)算該月份的天數(shù)

由于篇幅限制,且實(shí)現(xiàn)比較簡(jiǎn)單,故不做說(shuō)明。

2.3.2根據(jù)年月日來(lái)判斷該月的第一天是星期幾

本設(shè)計(jì)使用基姆拉爾森計(jì)算公式判斷某月份的第一天是星期幾。

基姆拉爾森計(jì)算公式:

[W=(d+2*m+3*(m+1)/5+y+ y/4-y/100+y/400)%7]

其中在公式中d表示日期中的日數(shù),m表示月份數(shù),y表示年數(shù),[W∈(0,6)],當(dāng)w=0表示星期一。

2.3.3在LCD屏幕上設(shè)計(jì)日歷的顯示

分為兩部曲:a、顯示日歷框,要在畫出日歷的表格;b、根據(jù)已獲得的月天數(shù)和月第一天,將其一一對(duì)應(yīng)的在表格中顯示出來(lái);實(shí)現(xiàn)顯示日歷的數(shù)據(jù)。

2.4 DA數(shù)模轉(zhuǎn)換的蜂鳴器鬧鐘報(bào)警

DA轉(zhuǎn)換產(chǎn)生的正弦波信號(hào)設(shè)計(jì)思路:利用LPC1768的DA定時(shí)將正弦波表SinTab的數(shù)據(jù)逐個(gè)送往DAC進(jìn)行轉(zhuǎn)換,從而產(chǎn)生一定頻率的正弦波信號(hào),并且將該信號(hào)接到蜂鳴器的輸入引腳驅(qū)動(dòng)其工作發(fā)出報(bào)警音。

2.5 實(shí)現(xiàn)多鬧鐘的設(shè)置

NXP LPC1768的鬧鐘報(bào)警中斷每次只能設(shè)置一個(gè)鬧鐘時(shí)間,當(dāng)鬧鐘設(shè)置的時(shí)間與實(shí)時(shí)時(shí)鐘的時(shí)間相同的時(shí)候產(chǎn)生一個(gè)RTC報(bào)警中斷。

設(shè)計(jì)3個(gè)鬧鐘的思路是:

2.5.1首先,通過(guò)算法找到“最佳鬧鐘時(shí)間”進(jìn)行

先設(shè)置,(最佳鬧鐘時(shí)間是指:離當(dāng)前時(shí)間最近且比當(dāng)前時(shí)間后的鬧鐘時(shí)間);

2.5.2然后,當(dāng)這個(gè)鬧鐘到來(lái)并且報(bào)警中斷命令執(zhí)

行后,進(jìn)行設(shè)置下一個(gè)“最佳鬧鐘時(shí)間”;以此類推,設(shè)置鬧鐘;就可以實(shí)現(xiàn)報(bào)警中斷式鬧鐘系統(tǒng)。

2.6 按鍵的控制

按鍵控制的主要是實(shí)現(xiàn)各個(gè)狀態(tài)的切換,按鍵的控制分為兩部分:1)利用LPC1768用戶按鍵KEY0進(jìn)行五向鍵控制模式與UART調(diào)度臺(tái)控制模式的切換。2)五向鍵設(shè)置時(shí)間,日期,鬧鐘和實(shí)現(xiàn)日歷翻頁(yè)。

2.6.1 利用LPC1768按鍵KEY0進(jìn)行五向鍵控制式UART調(diào)度臺(tái)控制模式的切換

本設(shè)計(jì)系統(tǒng)設(shè)計(jì)思路:LPC1768的外部中斷實(shí)現(xiàn):

a、當(dāng)KEY0按下的次數(shù)為奇次時(shí),設(shè)置為UART設(shè)置時(shí)間,日期。

b、當(dāng)KEY0按下的次數(shù)為偶次時(shí),設(shè)置為五向鍵設(shè)置時(shí)間,日期,鬧鐘。

3 UART調(diào)度臺(tái)控制設(shè)計(jì)

UART調(diào)度臺(tái)的功能是提供多一種方式來(lái)對(duì)本產(chǎn)品功能的設(shè)置,以滿足各類人群使用,從而得設(shè)計(jì)更人性化。上位機(jī)輸入控制指令然后通過(guò)串口RS232協(xié)議發(fā)送給CPU ,串口調(diào)度臺(tái)的流程框圖如圖1所示。

LPC1768與PC的基于串口RS232協(xié)議通信,UART非阻塞式接收數(shù)據(jù)方式,存在一個(gè)致命的問(wèn)題,數(shù)據(jù)的準(zhǔn)確性沒(méi)用保證,故采用阻塞式接收數(shù)據(jù)方式確保數(shù)據(jù)的準(zhǔn)確;故本設(shè)計(jì)是采用阻塞式接收數(shù)據(jù)方式(輪詢的方式)進(jìn)行接收數(shù)據(jù)的,但存也在一個(gè)不足的地方,就是如果沒(méi)有接收到數(shù)據(jù),它會(huì)進(jìn)入無(wú)限循環(huán)直到有數(shù)據(jù)接收,即是“死等”狀態(tài);解決這個(gè)問(wèn)題在外部中斷KEY0的中斷字服務(wù)程序設(shè)置標(biāo)志量,以此使得向鍵控制模式與UART調(diào)度臺(tái)控制模式的順利切換。

4 整體軟件設(shè)計(jì)

4.1按鍵控制

按鍵的操作是整個(gè)設(shè)計(jì)的核心,通過(guò)按鍵實(shí)現(xiàn)各個(gè)狀態(tài)的切換,從而實(shí)現(xiàn)各個(gè)功能模塊的有序運(yùn)作避免了混亂的出現(xiàn)。

4.2鬧鐘報(bào)警與設(shè)置鬧鐘。

軟件上設(shè)計(jì):在LPC1768的RTC的報(bào)警中斷設(shè)置一個(gè)標(biāo)志量(如Alarm_Ring)當(dāng)中斷來(lái)臨時(shí)將其置位;在主函數(shù)里面采用輪詢的方式查看該Alarm_Ring標(biāo)志,若Alarm_Ring為1在通過(guò)DAC在P0.26引腳輸出正弦波信號(hào),從而產(chǎn)生報(bào)警聲音,同時(shí)設(shè)置下一個(gè)“最佳鬧鐘”,最后清零變量Alarm_Ring。

5 結(jié)束語(yǔ)

本文設(shè)計(jì)了一款可以實(shí)現(xiàn)多功能實(shí)時(shí)時(shí)鐘系統(tǒng),整個(gè)系統(tǒng)設(shè)計(jì)完成之后進(jìn)行了測(cè)試,測(cè)試結(jié)果說(shuō)明了整個(gè)系統(tǒng)的正確性。

參考文獻(xiàn):

[1] 鄧乾中.自校準(zhǔn)實(shí)時(shí)時(shí)鐘RTC的研究和設(shè)計(jì)[D].華中科技大學(xué),2008.

[2] 張長(zhǎng)森.調(diào)度臺(tái)接口CPU與調(diào)度臺(tái)工控機(jī)串行通信的設(shè)計(jì)[J].工礦自動(dòng)化,2005(4).

[3] 王茂華.改進(jìn)的直線DDA算法[J].北京:科技資訊,2009(4).

[4] 劉凱.ARM嵌入式應(yīng)用技術(shù)基礎(chǔ)[M].清華大學(xué)出版社,2009.

[5] 林水強(qiáng),吳亞?wèn)|,余芳,等.姿勢(shì)序列有限狀態(tài)機(jī)動(dòng)作識(shí)別方法[J].北京:計(jì)算機(jī)輔助設(shè)計(jì)與圖形報(bào),2014(9).

嵊州市| 兴仁县| 平乡县| 宁津县| 新野县| 江陵县| 托克逊县| 那坡县| 油尖旺区| 凤山县| 临城县| 石楼县| 石泉县| 衡水市| 大宁县| 韶山市| 梧州市| 年辖:市辖区| 徐汇区| 阳原县| 阿合奇县| 探索| 仁寿县| 汶上县| 武夷山市| 南平市| 克什克腾旗| 武邑县| 吉首市| 乐亭县| 册亨县| 隆化县| 惠州市| 马边| 界首市| 雷州市| 富源县| 西乌珠穆沁旗| 全南县| 奉新县| 青阳县|