課程設(shè)計(jì)-基于ARM7的可調(diào)、準(zhǔn)點(diǎn)報(bào)時(shí)萬年歷_第1頁
課程設(shè)計(jì)-基于ARM7的可調(diào)、準(zhǔn)點(diǎn)報(bào)時(shí)萬年歷_第2頁
課程設(shè)計(jì)-基于ARM7的可調(diào)、準(zhǔn)點(diǎn)報(bào)時(shí)萬年歷_第3頁
課程設(shè)計(jì)-基于ARM7的可調(diào)、準(zhǔn)點(diǎn)報(bào)時(shí)萬年歷_第4頁
課程設(shè)計(jì)-基于ARM7的可調(diào)、準(zhǔn)點(diǎn)報(bào)時(shí)萬年歷_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄摘要 1一、設(shè)計(jì)任務(wù)和要求 2二、設(shè)計(jì)過程2三、 設(shè)計(jì)流程圖6四、 源程序清單及說明 7五、 調(diào)試過程11六、 設(shè)計(jì)心得11七、 參考文獻(xiàn)1114摘要今年來,32 位嵌入式系統(tǒng)發(fā)展很快, 32位單片機(jī)已逐漸占 領(lǐng) 8 位機(jī)的市場(chǎng),并以很高的性價(jià)比贏得了越來越多的用戶的 青睞。隨著科技和工藝的進(jìn)步, 32 位單片機(jī)的優(yōu)勢(shì)會(huì)更加突顯 出來,將會(huì)成為嵌入式系統(tǒng)的主流。 在 32 位嵌入式系統(tǒng)中, 基 于 ARM 的應(yīng)用占據(jù)了大部分份額。EasyARM2131 開發(fā)板是廣州周立功公司設(shè)計(jì)的 EasyARM 系列開發(fā)套件之一,采用了 PHILIPS 公司基于 ARM7TDMI-S 核、單電源供電、L

2、QFP64封裝的LPC2131,具有JTAG 仿真調(diào)試、 ISP 編程等功能。本次設(shè)計(jì)是采用LPC2138的32位芯片設(shè)計(jì)的可調(diào)萬年歷, 具有調(diào)時(shí)、調(diào)分, 60 秒倒計(jì)時(shí)和準(zhǔn)點(diǎn)報(bào)時(shí)的功能。同時(shí)當(dāng)?shù)褂?jì) 時(shí)至0時(shí),LED亮;采用的是PWM輸出音樂準(zhǔn)點(diǎn)報(bào)時(shí)。關(guān)鍵詞: ARM LPC2138 LED PWM一、設(shè)計(jì)任務(wù)和要求:1、課程設(shè)計(jì)目的(1)了解嵌入式芯片的工作原理,從而學(xué)會(huì)制作相關(guān)的東西。(2)通過課程設(shè)計(jì)進(jìn)一步的了解各種在設(shè)計(jì)中常用到的程序的作用及程序 的調(diào)試方法。(3)進(jìn)一步了解嵌入式系統(tǒng)以及嵌入式在實(shí)際生活中的應(yīng)用2、課程設(shè)計(jì)要求(1)本次設(shè)計(jì)要包含ARM板上的幾個(gè)模塊(2)本次設(shè)計(jì)要有

3、一定有實(shí)際意義(有應(yīng)用價(jià)值)二、設(shè)計(jì)過程:本設(shè)計(jì)實(shí)現(xiàn)了時(shí)鐘、星期、日期(月、日)的顯示,校時(shí)校分,60秒倒計(jì)時(shí)以及準(zhǔn)點(diǎn)報(bào)時(shí)等功能。各功能原理描述如下:(一)、時(shí)鐘、星期、日期(月、日)的顯示:LPC2138的RTC時(shí)鐘可由獨(dú)立的32.768kHz振蕩器或基于 VPB時(shí)鐘的可編 程預(yù)分頻器來提供。RTC提供秒、分、小時(shí)、日、月、年和星期。RTC功能結(jié)構(gòu)方框圖:RTC包含了許多寄存器,按照功能可分:混合寄存器、時(shí)間寄存器、時(shí)間 計(jì)數(shù)器、報(bào)警寄存器和預(yù)分頻器。如下圖所示,設(shè)置時(shí)鐘控制寄存器(CCR)可以選擇RTC的計(jì)數(shù)時(shí)鐘,實(shí) 時(shí)時(shí)鐘CTC計(jì)數(shù)器的時(shí)鐘源使用由PCLK通過基準(zhǔn)時(shí)鐘分頻器(PREINT

4、、PREFRAC)調(diào)整出的32768Hz時(shí)鐘信號(hào),或者直接使用獨(dú)立的外部 32.768KHz 振蕩器產(chǎn)生的時(shí)鐘信號(hào)。CTC是一個(gè)15位的計(jì)數(shù)器,它位于秒計(jì)數(shù)器之前, CTC每秒計(jì)數(shù) 32768個(gè)時(shí)鐘;當(dāng)有CTC秒進(jìn)位時(shí),完整時(shí)間 CTME02、RTC 時(shí)間寄存器(如 SEC、MIN等)將會(huì)更新。RTC時(shí)鐘控制寄存器CCR用于使能實(shí) 時(shí)時(shí)鐘和CTC復(fù)位控制等。(二)、校時(shí)校分:本功能采用按鍵控制。EasyARM2131開發(fā)板上的6個(gè)按鍵,電路圖如下圖所 示:先要設(shè)置IODIR使口線成為輸入方式,然后讀取IOPIN的值,判斷是否有 鍵按下,若KEY1按下,則小時(shí)計(jì)數(shù)器HOU加1,若KEY2按下,貝

5、扮鐘計(jì)數(shù)器 加1,從而實(shí)現(xiàn)了校時(shí)校分的功能。(三)、60秒倒計(jì)時(shí):定義一個(gè)外部變量yhy且初始值為59,當(dāng)RTC產(chǎn)生增量中斷時(shí),yhy減1。 當(dāng)yhy為0時(shí),8個(gè)LED全亮,否則全暗。再賦予yhy等于59進(jìn)行下一次倒計(jì) 時(shí)o Yhy的顯示取代RTC的年。即RTC顯示年的四個(gè)數(shù)碼管中選兩個(gè)用來顯示 yhy 的值。Yhy的值將和秒、分、日、月、星期一起送到上位機(jī)顯示。EasyARM2131開發(fā)板上的8路LED(LED8LED1)分別可選擇P125:18進(jìn)行 控制。當(dāng)跳線JP12全部選擇LED8LED1后,P1.25P1.18分別控制這8路LED。 當(dāng)P125: 18都輸出低電平時(shí),8個(gè)LED點(diǎn)亮,

6、當(dāng)P125: 18都輸出高電平時(shí), 8個(gè)LED熄滅。實(shí)驗(yàn)程序首先設(shè)置管腳連接 GPIO,接著設(shè)置P125: 18 口為輸 出模式,然后通過IO1CLR和IO1SET控制P125: 18,驅(qū)動(dòng)8個(gè)LED的亮滅,8路LED電路如下圖所示:(四)、準(zhǔn)點(diǎn)報(bào)時(shí):當(dāng)時(shí)鐘計(jì)數(shù)至準(zhǔn)點(diǎn)時(shí),PWM輸出音樂,報(bào)時(shí)時(shí)間為15秒。LPC2138的脈寬調(diào)制器(PWM )建立在標(biāo)準(zhǔn)定時(shí)器0/1之上。兩個(gè)匹配寄 存器可用控制單邊沿PWM輸出。PWMMR0控制PWM周期率,另一個(gè)匹配寄 存器(PWMMR1PWMMR6 )控制PWM邊沿的位置。每個(gè)額外的單邊沿 PWM 輸出只需要一個(gè)匹配寄存器,因?yàn)樗蠵WM輸出的重復(fù)率速率是相

7、同的。多個(gè) 單邊沿控制PWM輸出在每個(gè)PWM周期的開始,當(dāng)PWMMR0發(fā)生匹配時(shí),都 有一個(gè)上升沿。通過改變PWMMR0的值,可以改變PWM輸出的頻率。實(shí)驗(yàn)設(shè)定PWM輸 出單邊沿PWM方波,控制蜂鳴器BEEP發(fā)聲,改變PWM的頻率,蜂鳴器發(fā)出 不同頻率的聲音。進(jìn)行PWM音樂輸出實(shí)驗(yàn),需要了解一些簡(jiǎn)譜和頻率的關(guān)系。單邊沿控制PW輸出規(guī)則示意圖:PWM輸出音樂流程圖:三、設(shè)計(jì)流程圖:設(shè)置引腳連接+下*?N-YHY-55)*1Y串口初貽化門 PWM初貽化衣 RTC初賠化T7+JKEY1 按志置位*? 1禁止時(shí)間 計(jì)數(shù)辭禁止時(shí)間 計(jì)數(shù)黜!T分鐘加P小時(shí)甲wTHE *? *啟動(dòng)RTO啟動(dòng)RTOIf清除中

8、斷標(biāo)志中4YHY-YHY4+$小時(shí)標(biāo)志養(yǎng)位*-PWM輸出音YHY=O? N音片唱完LED滅心LED殼屮Y*清除水時(shí)標(biāo)志心讀取數(shù)據(jù) 送到上位機(jī)顯示p四、源程序清單及說明:#include config.h#include music.hconst uint32 KEY1 = 1 16;/ P0.16 連接 KEY1const uint32 KEY3 = 1 18;/ P0.18 連接 KEY3const uint32 LEDS8 = (0XFF 115200) return (0);if (set.datab 8)return (0);if (0 = set.stopb) | (set.stop

9、b 2) return (0);if (set.parity 4) return (0);/ 設(shè)置串口波特率U0LCR = 0x80;/ DLAB=1bak = (Fpclk 4) / baud;U0DLM = bak 8;U0DLL = bak & 0xff;/ 設(shè)置串口模式bak = set.datab - 5;if (2 = set.stopb)bak |= 0x04;if (0 != set.parity)set.parity = set.parity - 1;bak |= 0x08;bak |= set.parity 8) & 0x0f; / 獲取 月PC_DispChar(4, S

10、HOWTABLEbak / 10); PC_DispChar(5, SHOWTABLEbak % 10);bak = datas & 0x1f; / 獲取 日 PC_DispChar(6, SHOWTABLEbak / 10);PC_DispChar(7, SHOWTABLEbak % 10); bak = (times 24) & 0x07;/ 獲取 星期PC_DispChar(8, SHOWTABLEbak);bak = (times 16) & 0x1f;/ 獲取 小時(shí)PC_DispChar(9, SHOWTABLEbak / 10);PC_DispChar(10, SHOWTABLEb

11、ak % 10); bak = (times 8) & 0x3f;/ 獲取 分鐘PC_DispChar(11, SHOWTABLEbak / 10); PC_DispChar(12, SHOWTABLEbak % 10);bak = times & 0x3f; / 獲取 秒鐘 PC_DispChar(13, SHOWTABLEbak / 10);PC_DispChar(14, SHOWTABLEbak % 10);/*函數(shù)名稱 : DelayNS()* 函數(shù)功能 :長(zhǎng)軟件延時(shí) */ void DelayNS (uint32 dly) uint32 i;for ( ; dly0; dly-)fo

12、r (i=0; i500000; i+); /* * 函數(shù)名稱 : RTCInit()* 函數(shù)功能 :初始化實(shí)時(shí)時(shí)鐘 */ void RTCInit (void)PREINT = Fpclk / 32768 - 1;/ 設(shè)置基準(zhǔn)時(shí)鐘分頻器PREFRAC = Fpclk - (Fpclk / 32768) * 32768;CCR = 0x00; / 禁止時(shí)間計(jì)數(shù)器 MONTH = 01;DOM = 10;DOW = 4;HOUR = 8;MIN =59;SEC = 50;CIIR = 0x01; / 設(shè)置秒值的增量產(chǎn)生 1 次中斷CCR = 0x01; / 啟動(dòng) RTC/* 函數(shù)名稱 : mai

13、n()* 函數(shù)功能 :讀取實(shí)時(shí)時(shí)鐘的值,通過串口發(fā)送出去。*/ int main (void)uint8 s_cnt=0;UARTMODE uart0_set;PINSEL0 = 0x00000005; / 連接 IO 到 UART0PINSEL1 = 0x00000000;PINSEL2 = PINSEL2 & (0x08);/ P125:16 連接 GPIOIO1DIR = LEDS8; / 設(shè)置 LEDS8 控制口為輸出 uart0_set.datab = 8;uart0_set.stopb = 1;uart0_set.parity = 0;UART0_Init(115200, uart

14、0_set);U0FCR = 0x01;/ FIFO 使能/* PWM 初始化 */PWMPR= 0x00;/ 不分頻,計(jì)數(shù)頻率為 FpclkPWMMCR= 0x02;/ 設(shè)置 PWMMR0 匹配時(shí)復(fù)位 PWMTCPWMPCR= 0x0400;/ 允許 PWM2 輸出,單邊 PWMPWMMR0= Fpclk / 450;PWMMR2= PWMMR0 / 2;/ 50% 占空比PWMLER= 0x05;/ PWM0 和 PWM2 匹配鎖存PWMTCR= 0x02;/ 復(fù)位 PWMTCRTCInit();while (1) if (IO0PIN & KEY1) = 0) CCR = 0x00; /

15、 禁止時(shí)間計(jì)數(shù)器 DelayNS(1);HOUR=(HOUR+1)%24;CCR = 0x01;if (IO0PIN & KEY3) = 0) CCR = 0x00;DelayNS(1);MIN=(MIN+1)%60;CCR = 0x01;while (0 = (ILR & 0x01)/ 如果 KEY1 按下,/ 啟動(dòng) RTC/ 禁止時(shí)間計(jì)數(shù)器/ 如果 KEY3 按下,/ 啟動(dòng) RTC/ 等待 RTC 增量中斷/ 清除中斷標(biāo)志/ 8 個(gè) LED 點(diǎn)亮/ 8 個(gè) LED 熄滅/每秒一次連接 IO 到 UART0/ 設(shè)置輸出頻率/ 啟動(dòng) PWM 輸出/ 更新匹配值后,必須鎖存 if(SEC=0)&

16、(MIN=0) hour_flag=1;ILR = 0x01;yhy=yhy-1;if(yhy=0)IO1CLR = LEDS8;elseIO1SET = LEDS8;if(yhy=(-1)yhy=59;SendTimeRtc();if (hour_flag) if (s_cnt16) PINSEL0 = 0x00000005 | (0x02 14); / PWMMR0 = Fpclk / HCMMs_cnt;PWMTCR = 0x09;PWMLER = 0x05;s_cnt+; else PINSEL0 = 0x00000005 ;/ 連接 IO 到 UART0s_cnt=0;hour_fl

17、ag=0;return (0);End Of File*修改,即引入外部變量 yhy 來代替年份的顯示即每次增量中斷產(chǎn)生時(shí) yhy 減 1。 將修改的程序進(jìn)行編譯然后下載到芯片,然后運(yùn)行。觀察開發(fā)板的現(xiàn)象, 看是否 能五、調(diào)試過程:整個(gè)設(shè)計(jì)的調(diào)試過程是分步進(jìn)行的。1)、 60秒倒計(jì)時(shí)的調(diào)試:對(duì)深入淺出 ARM7 課本中的萬年歷源程序進(jìn)行 實(shí)現(xiàn)倒計(jì)時(shí)功能。 倒計(jì)時(shí)功能實(shí)現(xiàn)后再添加 LED 的提示, 即當(dāng)?shù)褂?jì)時(shí)至 0 時(shí)所有 LED 亮否則滅。同樣將添加好的程序進(jìn)行編譯并下載到芯片, 然后運(yùn)行, 觀察開發(fā)板現(xiàn)象看看是否能實(shí)現(xiàn)所需功能。 這一項(xiàng)相對(duì)簡(jiǎn)單, 所以調(diào)試過程也很快成功。2)、 校時(shí)、校分的

18、調(diào)試: 在能夠?qū)崿F(xiàn)倒計(jì)時(shí)功能的程序中添加校時(shí)校分 的程序。KEY1按下計(jì)數(shù)器停止計(jì)數(shù)小時(shí)(HOUR)加1, KEY3按下 計(jì)數(shù)器停止計(jì)數(shù)分鐘(MIN )加1。程序添加完之后編譯,編譯無錯(cuò)之 后下載到芯片,然后運(yùn)行。按下 KEY1或KEY3,觀察是否能實(shí)現(xiàn)所需 功能。這個(gè)過程運(yùn)用到了按鍵, 所以存在一個(gè)消抖的問題,若消抖不合 理可能可能會(huì)造成按鍵按一下,小時(shí)或分鐘可能不止加 1。3)、 準(zhǔn)點(diǎn)報(bào)時(shí):在前面的程序當(dāng)中添加準(zhǔn)點(diǎn)報(bào)時(shí)的程序。準(zhǔn)點(diǎn)報(bào)時(shí)采用 的是 PWM2 輸出 15秒的音樂。先將 PWM2 輸出音樂的程序單獨(dú)調(diào)試 運(yùn)行,反復(fù)修改頻率直至輸出音樂達(dá)到最好的效果。 然后將程序添加到 前面的程序當(dāng)中。這個(gè)過程遇到了一個(gè)問題:當(dāng) PWM2 輸出音樂的時(shí) 候計(jì)數(shù)器會(huì)停止計(jì)數(shù)。 說明添加不合理。 將流程圖重新畫了一遍,再引 入了一個(gè)標(biāo)志位, 反復(fù)修改程序并調(diào)試, 直至準(zhǔn)點(diǎn)報(bào)時(shí)的時(shí)候計(jì)數(shù)器仍 能計(jì)數(shù)。具體見源程序。六、設(shè)計(jì)心得:在實(shí)訓(xùn)的這五天里,前三天老師每天上午都在講課,我基本都聽不懂,感覺自己都學(xué)得好差。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論