基于ARM嵌入式的日歷制作(含完整程序).doc_第1頁
基于ARM嵌入式的日歷制作(含完整程序).doc_第2頁
基于ARM嵌入式的日歷制作(含完整程序).doc_第3頁
基于ARM嵌入式的日歷制作(含完整程序).doc_第4頁
基于ARM嵌入式的日歷制作(含完整程序).doc_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

編號: 嵌入式系統(tǒng)設計 實訓 (論文)說明書 題 目: 基于嵌入式基于嵌入式 armarm 的日歷的制作的日歷的制作 院 (系): 應用科技學院 專 業(yè): 電子信息工程 學生姓名: 農(nóng)惜童 學 號: 0701130204 指導教師: 符強、陳小毛、嚴素清、孫安青 桂林電子科技大學實訓說明書專用紙 2011 年 01 月 19 日 桂林電子科技大學實訓說明書專用紙 第 0 頁 摘 要 日歷在生活中經(jīng)常用到,電子制作的帶時鐘的日歷更是在生活中廣泛用到。 本課題是基于 arm 芯片的日歷制作,采用 lpc2138 中央控制單元,五個按鍵分別 用于調(diào)節(jié)和查詢時間日期,設定生日等。用 lcd1602 顯示。整個設計元器件少,簡潔 美觀,且模塊化。模塊化的設計和調(diào)試方法在整個課題研究過程中至關重要,事實上 在任何設計中也同樣關鍵和有效。 關鍵字:日歷;lpc2138;按鍵;lcd1602; 桂林電子科技大學實訓說明書專用紙 第 1 頁 abstract calendar in life are often used, electronic made with clock calendar is widely used in life. this topic is based on the arm of the chip making, use the calendar lpc2138 central control unit, five buttons respectively used to regulate and inquires the time or date, set a birthday, etc. with lcd1602 display. the whole design components less, concise and beautiful, and modularization. modular design and debug method in the whole subject research process is of vital importance to in fact in any design also key and effectively. keywords:calendar; lpc2138; button; lcd1602 桂林電子科技大學實訓說明書專用紙 第 0 頁 目 錄 引言.1 1 設計任務.2 2 硬件設計.2 2.1 總體設計方案與系統(tǒng)構(gòu)成.2 2.2 lpc2138 芯片2 2.2.1lpc2138 管腳2 2.2.2lpc2138 主要性能3 2.2.3lpc2138 的應用4 2.3 rtc 實時時鐘模塊5 2.3.1rtc 特性5 2.3.2rtc 寄存器5 2.3.3rtc 使用注意事項7 2.4 硬件電路圖.8 2.5 硬件電路 pcb9 3 軟件設計.9 3.1 整體設計.9 3.2 初始化程序流程圖.11 3.3 生日提示程序流程圖.11 4 基于 arm 日歷的調(diào)試12 4.1 硬件電路檢測.12 4.2 功能調(diào)試.12 5 改進方案.12 桂林電子科技大學實訓說明書專用紙 第 1 頁 結(jié)論.13 謝 辭.14 參考文獻15 附 錄.1 桂林電子科技大學實訓說明書專用紙 第 0 頁 引言 rtc 的英文全稱是 real-time clock,翻譯過來是實時時鐘芯片. rtc 是 pc 主板上 的晶振及相關電路組成的時鐘電路的生成脈沖,rtc 經(jīng)過 8254 電路的變頻產(chǎn)生一個頻 率較低一點的 os(系統(tǒng))時鐘 tsc,系統(tǒng)時鐘每一個 cpu 周期加一,每次系統(tǒng)時鐘在系 統(tǒng)初起時通過 rtc 初始化。 rtc 通常情況下需要外接 32.768khz 晶體,匹配電容、備份電源等元件。 rtc 除了 i/o 口的定位不同,還有功能上的區(qū)別,比如與mcu 的接口,現(xiàn)在常用的是 i2c 接口(距離短,可以與其他器件共用)還有ram 的數(shù)量、靜態(tài)功耗大小、中斷 的數(shù)量,特別是精度的區(qū)別。 rtc 的精度可以說與溫度有很大的關系,而溫度會影 響晶體的頻率。所以就產(chǎn)生實時時鐘的衍生產(chǎn)品:時鐘模塊(內(nèi)置晶體、電容、電 池等等),其精度可保持在每天誤差小于0.50 秒。但時鐘模塊相比時鐘芯片而言 會高出許多。rtc 最重要的功能是提供到 2099 年內(nèi)的日歷功能,對于時間來說, 無論快慢都是誤差,而匹配電容在rtc 的外圍器件上其他非常重要的作用,它可以 適當修正晶體與 rtc 之間匹配問題。特別是像 h1208 這樣的 rtc,把匹配電容內(nèi) 置,這樣就可以保證 rtc 精度的一致性,不會出現(xiàn)有的 rtc 走得快,有些又走得 慢。 它的主要作用就是提供穩(wěn)定的時鐘信號給后續(xù)電路用。主要功能有:時鐘 /清除 rtc 中斷標志 alhour=12; /報警時間設置為 12::0:00 almin=0; / alsec=0; / amr=0xf8; /屏蔽年月日值,星期值 4.時間計數(shù)寄存器 時間值包含 8 個寄存器,見表 2.3.2(4)所示。 表 2.3.2(4)時間計數(shù)寄存器 桂林電子科技大學實訓說明書專用紙 第 6 頁 按讀時間計數(shù)寄存器方式讀取 rtc 時鐘程序如下所示: struct date uint16 year; uint8 mon; uint8 day; uint8 dow; struct time uint8 hour; uint8 min; uint8 sec; void gettime(struct date*d,struct time *t) d-year=year; d-mon=month; d-day=dom; d-hour=hour; d-min=min; d-sec=sec 桂林電子科技大學實訓說明書專用紙 第 7 頁 2.3.3rtc 使用注意事項 如果使用 rtc,vbat 必須連接到 v3 腳或一個獨立的電源(外部電池) 。否則, vbat 應該接地(vss)。vbat 斷電時 lpc2131/2132/2138 不能保存 rtc 的狀態(tài),如果時 鐘源丟失、中斷或改變,rtc 也無法維持時間計數(shù)。 由于 rtc 有兩個可用的時鐘(vpb 時鐘(pclk)或來自 rtcx1-2 管腳的 32khz 的信 號) ,所選擇時鐘的任何中斷都會導致時間值的偏移。如果 rtc 初始化成這個時間 值或從 rtc 激活后運行的一段時間內(nèi)出現(xiàn)了一個錯誤,它們帶來的變化都將影響真實 的時鐘時間。 rtcx1-2 管腳的信號可隨時為 rtc 提供時鐘,選擇 pclk 作為 rtc 時鐘和進入掉電 模式會使時間的更新出現(xiàn)誤差。而且,在系統(tǒng)操作過程中(重新配置 pll、vpb 定時 器或 rtc 預分頻器)改變 rtc 的時間基準會使累加時間出現(xiàn)錯誤。當 rtc 時鐘由 pclk 轉(zhuǎn)變?yōu)?rtcx 管腳信號時也會出現(xiàn)累加時間誤差。 一旦 rtcx1-2 管腳的 32khz 信號被選擇用作 rtc 的時鐘源, rtc 可完全獨立工作, 與 vpb 時鐘(pclk)無關。因此,在要用到 rtc 且對功耗敏感的應用中(如電池供電 設備)可通過使用 rtcx1-2 管腳的信號和清除 pconp 功率控制寄存器的 pcrtc 位來降 低功耗(見“系統(tǒng)控制模塊”一章的“功率控制” ) 。 2.4 硬件電路圖 lpc2138 的外圍電路及為簡單,如下圖所示,lcd1602 為顯示電路,按鍵 s1-s5 為 控制電路,蜂鳴器為生日提醒電路。 硬件電路圖如圖 2.4 所示: 桂林電子科技大學實訓說明書專用紙 第 8 頁 圖 2.4 硬件電路圖 2.5 硬件電路 pcb 為了檢測調(diào)試方便,在印制 pcb 的時候,將特性中的鏡像給選上,這樣制板時就 不用打孔,調(diào)試電路板時方便易檢查。 基于嵌入式 arm 日歷制作電路的 pcb 如圖 2.5 所示: 桂林電子科技大學實訓說明書專用紙 第 9 頁 圖 2.5 硬件電路 pcb 3 軟件設計 系統(tǒng)的主程序主要完成輸出3路pwm信號,并由按鍵來控制調(diào)節(jié)。 3.1 整體設計 由設計要求,可分析得出程序設計一共有以下幾個模塊: (1)初始化程序設計,包括lcd1602屏幕顯示初始化,lpc2138芯片的rtc模塊初始 化,設置管腳p0口為gpio口,設置p1.17,p1.19,p1.21,p1.23為按鍵輸入口。 (2)rtc時鐘提取設計,初始化后,開啟rtc專用定時器,通過它的匹配功能來提取 年月日時分秒星期等時間,并送至lcd顯示。 (3)變量控制,提取時鐘后,要通過按鍵來調(diào)節(jié)時鐘的大小。 (4)生日提醒,設置生日時間,生日那天,則蜂鳴器響,lcd顯示birthday提醒。 總體軟件設計流程圖如圖3.1所示。 掃描鍵盤 生日提示設置 開始 lcd 初始化 rtc 初始化 讀取 rtc 時間, 并發(fā)送到 lcd 顯 示 設置 p0 口為 gpio 口 s1? s2,數(shù)值+1s3,數(shù)值-1 掃描鍵盤 按 1 次按 2 次 按 3 次 按 4 次按 2 次 次 按 3 次按 4 次 年設置月設置日設置周設置時設置分設置秒設置 延時 桂林電子科技大學實訓說明書專用紙 第 10 頁 n y 桂林電子科技大學實訓說明書專用紙 第 11 頁 圖3.1 總程序流程圖 3.2 初始化程序流程圖 rtc初始化程序流程圖如圖3.2所示: 設置基準時鐘分頻 設置年月日變量 year = int_year month int_month dom = int_day 設置時分秒變量 hour=int_hourm min = int_min sec= int_sec 設置周變量 dow = int_week 開啟 rtc ccr = 0x01 桂林電子科技大學實訓說明書專用紙 第 12 頁 圖3.2 rtc初始化程序流程圖 3.3 生日提示程序流程圖 n y 圖3.3 生日提示流程圖 4 基于 arm 日歷的調(diào)試 4.1 硬件電路檢測 制作好的pcb板,按照裝配圖或原理圖進行器件裝配,裝配好之后進行電路的調(diào)試。 調(diào)試規(guī)則為:打開電源之前,先按照系統(tǒng)原理圖檢查制作好的電路板的通斷情況, 并取下pcb上的集成塊,然后接通電源,用萬用表檢查板上的各點的電源電壓值,完好 之后再關掉電源,插上集成塊。 4.2 功能調(diào)試 設置生日日期 當前日期與生日 日期相比較 相等 蜂鳴器響,lcd 顯示生日提醒 送當前日期給 lcd 顯示 桂林電子科技大學實訓說明書專用紙 第 13 頁 將寫好的程序燒到板子上。然后板子接上電源,電源顯示燈亮,開始調(diào)試。 pwm信號發(fā)生器按鍵功能如圖4.2所示 圖4.2pwm信號發(fā)生器按鍵 (1)開啟電源,各模塊初始化。lcd屏幕顯示初始化時鐘2011-1-19-3-10-48- 56,表示電路工作正常。上述時鐘表示2011年1月19日星期三10點48分56秒。 (2)按下 s1 鍵 1 次,則等下按鍵修改功能作用于年變量,按 2 次為月變量,3 次 為日變量,以此類推。我們先按下 2 次 s1 鍵,則作用的是月變量。 (3)按下 s2 鍵,可以看到 lcd 屏顯上的月變量+1,每按一次+1。 (4)按下 s3 鍵,可以看到 cd 屏顯上的月變量-1,每按一次-1。 按照這個方法,調(diào)試其他時鐘變量。至此,基于 arm 日歷的調(diào)試完畢。 5 改進方案 日歷的制作簡單,功能很多。若在以上我們制作的基礎上,加上一些模塊,還可 以實現(xiàn)諸多功能。 1.多功能鬧鐘,設置方式和設置生日提醒得方式一致。 2.實現(xiàn)對日歷的查詢,通過年月日,可以知道星期的查詢。 桂林電子科技大學實訓說明書專用紙 第 14 頁 結(jié)論 這次實訓匆忙的結(jié)束了。由于考研的原因使得這次實訓時間不夠,且在制作過程 中遇到了好多困難,但總的來說,我基本按要求完成了pwm信號發(fā)生器這個設計的要求。 盡管這次基本能完成了設計的要求,但我覺得我還有很多需要改進的地方,也許是時 間有限的原因,所以,以后很長一段時間,還需加強這方面的學習。 在這實訓中,把理論和實踐相結(jié)合,我學到了許多新的知識。 首先,設計電路的整個過程中,我深刻體會到電子電路的設計以及生產(chǎn)流程、安 裝、布局、布線、焊接等。提高了理論知識與實際動手結(jié)合的能力,這讓我對數(shù)字電 路和模擬電路都有了更深刻的理解。其次,這次設計,我從中了解到了各種集成電路 方面的知識,熟悉了很多以前從未接觸過的芯片,對各種芯片的功能以及其可能組成 的電路都有了一部分的了解。最后,掌握了protel的應用技巧,用prolel制作電路板 的過程中,從繪制原理圖到封裝器件,到最后作出pcb圖都遇到很多問題,在同學和老 師的指導之下我都依次解決了這些問題。 設計過程,在調(diào)試電路的時候,遇到的問題最多,由于我是第一次嵌入式芯片, 剛開始調(diào)試都是從電路的最前面一點一點測試工作點的電壓值,以及當輸入電壓變化 的時候每塊芯片的輸入輸出端應有的變化,每一部分電路都應實現(xiàn)自己的功能,才能 得出最終的結(jié)果,達到目標。我認為調(diào)試電路不但要熟悉基礎電路知識,還要有相當 的調(diào)試經(jīng)驗,但電路出現(xiàn)問題的時候應該大膽的做嘗試,在這方面我比較欠缺,我會 在以后的工作學習中盡量彌補自己的弱點。 經(jīng)過這次設計,我覺得自己真的學到了不少東西。同時學會了怎樣查閱資料和利用工 具書。在這次設計過程中經(jīng)常遇到一些不曾學過的東西,但能有針對性地查找資料, 然后加以吸收利用,提高了自己的應用能力,而且還增長了自己的見識,補充了專業(yè) 知識,增強了自己的動手能力,而且還磨練了自己的耐性。收獲頗多。 桂林電子科技大學實訓說明書專用紙 第 15 頁 謝 辭 通過本次設計不僅是對我們的專業(yè)知識的檢查與總結(jié),而且是對今后學習研究的 一種的激勵。在陳小毛、符強、嚴素青、孫安青老師的指導下和同學們的協(xié)助下,我 的設計到此已經(jīng)完全結(jié)束。緊張的日子也總算告一段落。回味起來,感觸頗多。在此過 程中,我遇到了許多問題,通過老師和同學的幫助以及自己查閱資料等多種途徑,解 決了許多問題,也提高了自己獨立思考問題、分析問題、解決問題的能力,同時也提 高了實踐能力。最后我要感謝這段時間來所有幫助過我的老師、同學和朋友,是你們 讓我的不斷發(fā)現(xiàn)自己的不足并幫助我解決一個個設計上的問題,給我留下了美好的回 憶。謝謝你們! 桂林電子科技大學實訓說明書專用紙 第 16 頁 參考文獻 1 崔更申 孫安青.arm 嵌入式系統(tǒng)開發(fā)與實踐m.北京:中國電力出版社,2008 2 何加銘. 嵌入式 32 位微處理器系統(tǒng)設計與應用m. 北京:電子工業(yè)出版社,2006 3 楊宗德. 嵌入式 arm 系統(tǒng)原理與實例開發(fā)m. 北京:北京大學出版社,2007 4 劉天時等 .arm7 嵌入式開發(fā)基礎實驗m. 北京:北京航空航天大學出版社,2007 5 張綺文.arm 嵌入式常用模塊與綜合系統(tǒng)設計實例精講.北京:電子工業(yè)出版社,2007. 6 歐陽禹.arm7 嵌入式系統(tǒng)實訓教程.北京:清華大學出版社,2008. 桂林電子科技大學實訓說明書專用紙 第 0 頁 附 錄 原理圖 主程序代碼 #include #define uint8 unsigned char #define uint32 unsigned long #define sw_1 (17) #define sw_2 (19) 桂林電子科技大學實訓說明書專用紙 第 1 頁 #define sw_3 (21) #define sw_4 (23) #define sw_5 (25) #define lcd_rs (116) /get year 桂林電子科技大學實訓說明書專用紙 第 7 頁 year_q = bak_year/1000; year_b = bak_year%1000/100; year_s = bak_year%1000%100/10; year_g = bak_year%1000%100%10; bak_month = (datas8) /get month month_s = bak_month/10; month_g = bak_month%10; bak_day = datas /get day day_s = bak_day/10; day_g = bak_day%10; bak_week = (times24) /get week bak_hour = (times16) /get hour hour_s = bak_hour/10; hour_g = bak_hour%10; bak_min = (times8) /get minutes 桂林電子科技大學實訓說明書專用紙 第 8 頁 min_s = bak_min/10; min_g = bak_min%10; bak_sec = times /get second sec_s = bak_sec/10; sec_g = bak_sec%10; /* * * 名稱:lcd_display() * 功能:顯示文本 * */ void lcd_display() lcd_write_command(0x80,1); lcd_write_data(year_q+0x30); lcd_write_data(year_b+0x30); lcd_write_data(year_s+0x30); lcd_write_data(year_g+0x30); lcd_write_data(-); lcd_write_data(month_s+0x30); lcd_write_data(month_g+0x30); 桂林電子科技大學實訓說明書專用紙 第 9 頁 lcd_write_data(-); lcd_write_data(day_s+0x30); lcd_write_data(day_g+0x30); lcd_write_data(-); lcd_write_data(bak_week+0x30); lcd_write_data(-); lcd_write_data(hour_s+0x30); lcd_write_data(hour_g+0x30); lcd_write_data(-); lcd_write_command(0xc0,1); lcd_write_data(min_s+0x30); lcd_write_data(min_g+0x30); lcd_write_data(-); lcd_write_data(sec_s+0x30); lcd_write_data(sec_g+0x30); int main (void) pinsel0=0x00000000; pinsel2=0x00000000; io0dir=0x000007ff; io1dir 桂林電子科技大學實訓說明書專用紙 第 10 頁 io1dir io1dir io1dir io1dir io1set |= (1 sw_1); io1set |= (1 sw_2); io1set |= (1 sw_3); io1set |= (1 sw_4); io1set |= (1 sw_5); io1dir |= (1 bell); io1clr |= (1 bell); lcd_init(); rtcinit(); while(1) if(bak_month=2)i10;i+) io1set |= (1 bell); for(j=0;j60000;j+); io1clr |= (1 bell); lcd_disp_string(6,1,txt0); 桂林電子科技大學實訓說明書專用紙 第 11 頁 lcd_write_command(0x01,1); if(io1pin j10000;j+); if(io1pin if(ting_flag=7)ting_flag=0; while(io1pin if(io1pin j10000;j+); if(io1pin ccr=0x00; else ccrflag=0; 桂林電子科技大學實訓說明書專用紙 第 12 頁 ccr=0x01; while(io1pin if(ting_flag=0) if(io1pin j10000;j+); if(io1pin year = int_year; while(io1pin if(io1pin j10000;j+); if(io1pin year = int_year; 桂林電子科技大學實訓說明書專用紙 第 13 頁 while(io1pin if(ting_flag=1) if(io1pin j10000;j+); if(io1pin mon

溫馨提示

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

評論

0/150

提交評論