




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機應(yīng)用課程設(shè)計報告單片機應(yīng)用課程設(shè)計報告 (20122013 學(xué)年第 2 學(xué)期) 設(shè)計題目:基于設(shè)計題目:基于 DS1302DS1302 電子時鐘的設(shè)計電子時鐘的設(shè)計 班別: 姓名: 指導(dǎo)教師: 時間: 目錄目錄 1 1 設(shè)計任務(wù)設(shè)計任務(wù) .3 3 2 2 系統(tǒng)總體方案設(shè)計系統(tǒng)總體方案設(shè)計 .3 3 2.12.1 各個模塊方案論證各個模塊方案論證 .3 3 2.1.12.1.1 時鐘芯片的選擇時鐘芯片的選擇.3 3 2.1.22.1.2 顯示器的選擇顯示器的選擇.3 3 2.22.2 總體方案設(shè)計總體方案設(shè)計.4 4 3 3 硬件電路設(shè)計硬件電路設(shè)計 .4 4 3.13.1 單片機最小系統(tǒng)
2、單片機最小系統(tǒng) .4 4 3.23.2 13021302 時鐘電路時鐘電路.5 5 3.33.3 按鍵調(diào)時電路按鍵調(diào)時電路 .5 5 4 4 系統(tǒng)軟件設(shè)計系統(tǒng)軟件設(shè)計 .6 6 4.14.1 主程序流程圖主程序流程圖 .6 6 4.24.2 子程序流程圖子程序流程圖 .7 7 4.2.14.2.1 DS1302DS1302 子程序流程圖子程序流程圖 .7 7 4.2.24.2.2 16021602 子程序流程圖子程序流程圖 .8 8 4.34.3 按鍵校正調(diào)時程序按鍵校正調(diào)時程序 .8 8 5 5 實物調(diào)試實物調(diào)試 .9 9 5.15.1 實物性能分析實物性能分析.9 9 5.25.2 總結(jié)總
3、結(jié) .1212 附錄附錄 1 1.1414 (1 1)系統(tǒng)總電路圖)系統(tǒng)總電路圖 .1414 (2 2)系統(tǒng)仿真圖)系統(tǒng)仿真圖 .1414 附錄附錄 2 2.1616 部分程序清單部分程序清單 .1616 1 設(shè)計任務(wù)設(shè)計任務(wù) 基本要求:采用 DS1302 時鐘芯片與單片機 STC89C52 相結(jié)合設(shè)計電子時鐘 來顯示出實時年、月、日、時、分、秒等時間,并且可以通過按鍵進行時間調(diào) 整。 2 系統(tǒng)總體方案設(shè)計系統(tǒng)總體方案設(shè)計 2.12.1 各個模塊方案論證各個模塊方案論證 2.1.12.1.1 時鐘芯片的選擇時鐘芯片的選擇 由于設(shè)計的是電子時鐘, 而單片機 STC89C52 自帶計時功能,利用單
4、片機 實現(xiàn)數(shù)據(jù)的顯示和調(diào)整是可行的,采用單片機計時,利用它的一個 16 位定時器 /計數(shù)器每 50ms 產(chǎn)生一個中斷信號,中斷 20 次后產(chǎn)生一個秒信號,然后根據(jù)時 間進制關(guān)系依次向分、時、日、星期、月、年進位。這樣就實現(xiàn)了直接用單片 機來實現(xiàn)電子萬年歷設(shè)計。 用單片機來實現(xiàn)電子萬年歷設(shè)計,無須外接其他芯片,充分利用了單片機 的資源。但是精度不夠高,誤差較大,掉電后丟失所有數(shù)據(jù),軟件編程較復(fù)雜。 在以單片機為核心構(gòu)成的裝置中,經(jīng)常需要一個實時的時鐘和日歷,以便 對一些實時發(fā)生事件記錄時給予時標(biāo),實時時鐘芯片便可起到這一作用。利用 單片機進行控制,采用 DS1302 作為實時時鐘芯片,其三線接口
5、 SCLK、I/O、/RST 與單片機進行同步通信,外加掉電存儲電路、顯示電路、鍵 盤電路,即構(gòu)成一個基本的電子萬年歷系統(tǒng)。由于在系統(tǒng)設(shè)計時,需要考慮以 下幾點因素:功耗低、精確度高、軟件程較簡單,芯片的體積小、芯片成本低 等,而 DS1302 芯片有上面所述的諸多優(yōu)點,所以本設(shè)計采用 DS1302 作為實時 時鐘芯片。 2.1.22.1.2 顯示器的選擇顯示器的選擇 LED 數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而 顯示出需要的字符,但此次設(shè)計需要顯示漢字,如果選用數(shù)碼管來顯示漢字, 則會需要數(shù)十個,這樣就會產(chǎn)生浪費,而且不方便控制,不符合設(shè)計的初衷。 LCD1602 具
6、有微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,對比度可調(diào)、 內(nèi)含復(fù)位電路、提供各種控制命令等特點,完全滿足本次設(shè)計的需要,因此選 擇用 LCD1602 作為顯示器使用。 2.22.2 總體方案設(shè)計總體方案設(shè)計 DS1302 具有自身計時的功能,但是自身卻沒法顯示并且調(diào)整時間,這時就 不可避免的要使用到單片機 STC89C52,它可以作為一個橋梁,架接液晶顯示器 和 DS1302,并且利用單片機的專用端口可以實現(xiàn)調(diào)整時間的功能。 利用單片機 STC89C52 實現(xiàn)數(shù)據(jù)的顯示和調(diào)整是整個系統(tǒng)的關(guān)鍵所在,在整 個系統(tǒng)中,使用單片機的 P0 口作為液晶顯示屏的顯示端口,液晶顯示屏所顯示 的數(shù)據(jù)全都通過 P
7、0 口接收與發(fā)送 ,P1 口用作觸發(fā)開關(guān)的通信接口,這樣單片 機可以較好地完成時間的顯示與調(diào)整。 3 3 硬件電路設(shè)計硬件電路設(shè)計 3.13.1 單片機最小系統(tǒng)單片機最小系統(tǒng) 單片機最小系統(tǒng)是時鐘的主要控制器,它是連接外圍與時鐘電路、輸入按 鍵、顯示器 LCD1602 的紐帶。它主要由 STC89C52 單片機、單片機晶振電路與單 片機復(fù)位電路組成。單片機最小系統(tǒng)如圖 1 所示。 圖圖 1 1 單片機最小系統(tǒng)電路單片機最小系統(tǒng)電路 晶振系統(tǒng)由兩個 30pf 的陶瓷電容和一個 12MHz 的晶振組成,分別接在 XTAL1、XTAL2 上,在單片機內(nèi)部,這兩個端口是一個反相放大器的輸入端,這 個放
8、大器構(gòu)成了片內(nèi)震蕩器,它決定了單片機的時鐘周期。 單片機有一個復(fù)位引腳 RST,高電平有效,只要 RST 保持高電平,單片機 將循環(huán)復(fù)位,復(fù)位期間,ALE、PSEN 輸出高電平。RST 從高電平變?yōu)榈碗娖街螅?PC 指針變?yōu)?0000H,使單片機從程序存儲器地址為 0000H 的單元開始執(zhí)行。當(dāng) 單片機執(zhí)行程序出錯或進入死循環(huán)時,也可按復(fù)位按鈕重新啟動。 3.2 1302 時鐘電路 時鐘電路是時間計時的基本電路,時鐘電路一般由 DS1302 時鐘芯片和 32.768MHz 晶振構(gòu)成。理論上在晶振兩端加兩個 6pf 的電容,可以使晶振頻率 更為精確。DS1302 時鐘電路圖如圖 2 所示。 圖
9、圖 2 2 13021302 時鐘電路時鐘電路 3.33.3按鍵調(diào)時電路按鍵調(diào)時電路 按鍵調(diào)時電路主要的作用是校正時間,它包含有五個動作:進入(S3),退 出(S6),加一(S4),減一(S5),切換(S2)。要進行校正調(diào)時,要首先按啟動按 鈕,啟動按鍵有效之后,其他按鍵才能被解鎖,如果啟動按鍵判斷無效,其余 按鍵將被鎖定,按退出按鍵就會退出校正調(diào)時狀態(tài)。按鍵調(diào)時電路如圖 3 所示。 圖圖 3 3 按鍵校正調(diào)時電路按鍵校正調(diào)時電路 4 4 系統(tǒng)軟件設(shè)計系統(tǒng)軟件設(shè)計 DS1302 是利用單片機控制來實現(xiàn)時鐘計時, C 語言具有簡單易懂,條理 清晰,易于修改的特點,因此應(yīng)用起來就比較方便。 4.1
10、4.1 主程序流程圖主程序流程圖 圖圖 4 4 主程序流程圖主程序流程圖 開始時,先對變量進行初始化,然后對 DS1302 進行處理,使其不具備寫保 護,這樣才能給 DS1302 通信,使其能與單片機交換數(shù)據(jù)。給 DS1302 連續(xù)的脈 沖,接著向 1302 內(nèi)部寫入地址,直至寫完。最后由單片機與 DS1302 通信,讀 取 DS1302 內(nèi)部的地址,直至讀取完畢,然后單片機把所讀到的數(shù)據(jù)傳送給 1602,使數(shù)據(jù)呈現(xiàn)在液晶屏上,這樣,整個主程序流程圖就完成了。主程序流 程圖如圖 4 所示。 4.24.2 子程序流程圖子程序流程圖 4.2.14.2.1 DS1302DS1302 子程序流程圖子程
11、序流程圖 DS1302 子程序流程圖如圖 5 所示。 是 否 圖圖 5 5 DS1302DS1302 子程序流程圖子程序流程圖 圖 5 展示了 DS1302 工作的一個工作流程:首先便是對 DS1302 進行初始化, 使其不受寫保護,方便數(shù)據(jù)寫入,在連續(xù)的脈沖作用下,不斷有數(shù)據(jù)寫入 1302 開始 DS1302 初始化 寫入數(shù)據(jù) 計數(shù) 是 否 校 正 調(diào) 時 讀出數(shù)據(jù) 的地址中,直至需要調(diào)時,這時改變后的數(shù)據(jù)就會儲存在新的地址上,讀取時 便可把新的數(shù)據(jù)傳輸在 1602 上,即完成了調(diào)時。 4.2.24.2.2 16021602 子程序流程圖子程序流程圖 否 是 圖圖 6 6 16021602
12、子程序流程圖子程序流程圖 1602 顯示器的工作流程圖展示了 1602 的工作流程:啟動時,首先對 1602 進行初始化,然后檢測有沒有數(shù)據(jù)寫入,當(dāng)有數(shù)據(jù)寫入時,1602 便讀出數(shù)據(jù)并 顯示,沒有數(shù)據(jù)寫入時,1602 就一直處于等待中,直至有數(shù)據(jù)寫入。1602 子程 序流程圖如圖 6 所示。 4.34.3 按鍵校正調(diào)時程序按鍵校正調(diào)時程序 if(num=1) enable(0 xc0+12); if(jia=0) delay(5); 開始 1602 初始化 寫入數(shù)據(jù) 是 否 有 寫 入 讀出數(shù)據(jù)顯示 if(jia=0) while(!jia); sec=bcdtodec(uc_R1302(0
13、x81) sec+; if(sec59) sec=0; L1602_char(2, 12, sec/10+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0 x80,dectobcd(sec)|0 x80); if(jian=0) delay(5); if(jian=0) while(!jian); sec=bcdtodec(uc_R1302(0 x81); sec-; if(sec=-1) sec=59; L1602_char(2, 12, sec/10+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0 x
14、80,dectobcd(sec)|0 x80); 這是整個調(diào)時系統(tǒng)的一部分,它實現(xiàn)了時間的調(diào)整這一功能。全部程序詳 見附錄。 5 5 實物調(diào)試實物調(diào)試 5.15.1 實物性能分析實物性能分析 用 KEIL 編寫程序軟件編寫程序、經(jīng)過 Proteus 仿真軟件仿真調(diào)試之后,確 認(rèn)了此系統(tǒng)可正常運行,在這樣的前提下,我們利用一個單片機最小系統(tǒng)、一 塊用萬用板焊接的模塊和一個 1602 液晶完成了第一次實物仿真。本次實物如圖 7 所示。雖然本次調(diào)試測試沒有達到要求,但是為后續(xù)工作打下了不可替代的 基礎(chǔ)。 圖圖 7 7 萬用板實物萬用板實物 我們在第一次的嘗試之后,發(fā)現(xiàn)無較大問題存在,于是就嘗試著做出
15、了我 們此次課程設(shè)計的第一塊 PCB 板,在仔細檢查了整個電路無誤之后我們就開始 了我們的嘗試,第一塊板的造型是深思熟慮之后才最終定稿的。可能是由于第 一次做雙面板,技術(shù)不熟練,所以打板的時候就難免出現(xiàn)這樣那樣的問題,我 們的第一塊板同樣出現(xiàn)了問題:液晶顯示屏上只顯示三個小亮點,不顯示數(shù)字, 實物如圖 8 所示。 圖圖 8 8 第一塊第一塊 PCBPCB 板板 經(jīng)過這一次的挫折,我們發(fā)現(xiàn)了本來不會出錯的地方,無緣無故的出現(xiàn)了 好多問題,導(dǎo)致了第一次試驗沒能成功。但是我們并不氣餒,經(jīng)過細致的檢查, 我們找到了大部分的問題,最終我們的第二塊板也很快做出來了,可是問題又 出現(xiàn)了:時鐘不走。第二塊 P
16、CB 板如圖 9 所示。 圖圖 9 9 第二塊第二塊 PCBPCB 板板 因為時間數(shù)據(jù)一直不走,我們查閱了好多資料,又認(rèn)真的把相關(guān)知識復(fù)習(xí) 了一遍,最終問題解決了:原來是 DS1302 的兩個數(shù)據(jù)傳輸線的電流太小,于是 我們就在 P3.5、P1.6 的端口加上了上拉電阻,加大了電流,最終我們完成了設(shè) 計。完成的實物如圖 10 所示。 圖圖 1010 最終設(shè)計最終設(shè)計 5.25.2 總結(jié)總結(jié) 首先,這次設(shè)計讓我們更加了解了單片機及其運用,讓我們受益匪淺,在 這次設(shè)計中,我們想挑戰(zhàn)一下自己,于是就選用了 1602 液晶屏來顯示數(shù)字時鐘, 我們知道這對我們來說還是有難度的,但是我相信我們一定會克服這
17、個困難的, 因為我堅信只有給自己真正的壓力,自己才會獲得真正的知識! 在整個方案的探究與決策中,我們自己動手分析設(shè)計程序加深了對自己未 知知識的理解和對指令的靈活運用。通過對程序的編譯和電路的仿真,讓我們 更加熟悉了仿真軟件的應(yīng)用,最重要的是使我們能夠更直觀的看到程序運行的 結(jié)果,這給了我們極大地鼓勵與信心! 此外,通過這次單片機課程設(shè)計,不僅對我們的動手能力有進一步的提高, 而且還對我們的性格成長上也產(chǎn)生了很大的影響:設(shè)計操作量大,對我們的習(xí) 慣和技能要求高,對我們的素質(zhì)發(fā)展有著相當(dāng)重要的作用,要在操作前應(yīng)該認(rèn) 真學(xué)習(xí)理論知識,以便更好地指導(dǎo)實踐,之后應(yīng)該繼續(xù)思考,把理論與實踐更 好地結(jié)合起
18、來,凡事不能操之過急,靜下心來,認(rèn)真的思考,謹(jǐn)慎的處理好動 手與動腦的有效結(jié)合。這種改變無疑讓我們在以后的生活中能獲取更多的益處 與經(jīng)驗。 本次課程設(shè)計給我印象最深刻的是它給我們啟發(fā):理論和實踐是兩個不同 的過程,理論是不能等于實踐,反之也不行,兩者是有區(qū)別的,有時理論是對 的,實踐不一定能體現(xiàn)出來。實踐出來了,不一定能和理論穩(wěn)合呼應(yīng)。比如, 我們在仿真的時候,我們電路和程序沒有問題,完全正確,實驗結(jié)果也與我們 預(yù)期的一樣,這是我們產(chǎn)生了“此次設(shè)計如此簡單,只要把電路圖連對就行了” 錯誤想法,結(jié)果做出來的實物并沒有按照我們的預(yù)期展現(xiàn)給我們:又有問題了! 經(jīng)過我們認(rèn)真仔細的檢查,又查閱了眾多的資
19、料,把以前的資料又習(xí)一遍, 最終問題找到了。在找到問題的那一瞬間,我真切的感受到了理論與實際的切 切實實的聯(lián)系,所有的東西并不是理論是正確的,實際也是正確的:我們按照 仿真的電路圖連結(jié)起來的電路在真正做出來時,DS1302 的兩個數(shù)據(jù)傳輸端口因 為電流過小而不能工作,我們在 P3.5 和 1.6 端口的后面接上了上拉電阻,這樣 我們的作品才真正的完成了。 “讀萬卷書,不如行萬里路” ,現(xiàn)在我終于明白這句從古至今都在流傳的話 了,一句名言存在自有它存在的道理。我們會謹(jǐn)記此次設(shè)計帶給我們的啟發(fā), 我們一定會認(rèn)真的去思,仔細的去體會此次設(shè)計的真正意義 參考文獻 1譚浩強主編. C 程序設(shè)計題解與上機
20、指導(dǎo)(第 3 版)M. 北京,清華大學(xué)出版社, 2005.16-24 2謝維成 楊家國 董秀成,單片機原理與應(yīng)用及 C51 程序設(shè)計(第 2 版)M,北京,清華 大學(xué)出版社,2009.7.25-36 附錄附錄 1 (1 1)系統(tǒng)總電路圖系統(tǒng)總電路圖 系統(tǒng)總電路圖,如圖 11 所示。 圖圖 1111 系統(tǒng)總電路圖系統(tǒng)總電路圖 (2 2) 系統(tǒng)仿真圖系統(tǒng)仿真圖 系統(tǒng)仿真圖,如圖 12 所示。 圖圖 1212 系統(tǒng)仿真圖系統(tǒng)仿真圖 (3 3) PCBPCB 板板 設(shè)計使用的 PCB 如圖 13、14 所示 圖圖 1313 PCBPCB 板正面板正面 圖圖 1414 PCBPCB 板反面板反面 附錄附
21、錄 2 2 程序清單程序清單: #include #include #define uchar unsigned char #define uint unsigned int sbit ACC0 = ACC0; sbit ACC7 = ACC7; sbit t=P10; sbit jia=P11; sbit jian=P12; sbit m=P13; sbit T_CLK = P16; sbit T_IO = P35; sbit T_RST = P17; sbit E=P27; /1602 sbit RW=P26; sbit RS=P25; void v_W1302(uchar ucAddr,
22、 uchar ucDa); uchar uc_R1302(uchar); uchar dectobcd(uchar bcd); uchar bcdtodec(uchar); void delay(uchar x) uchar i; while(x-) for(i=0;i59) sec=0; L1602_char(2, 12, sec/10/*%10*/+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0 x80,dectobcd(sec)|0 x80); if(jian=0) delay(5); if(jian=0) while(!jian); sec
23、=bcdtodec(uc_R1302(0 x81); sec-; if(sec=-1) sec=59; L1602_char(2, 12, sec/10/*%10*/+48); L1602_char(2, 13, sec%10 + 48); v_W1302(0 x80,dectobcd(sec)|0 x80); if(num=2) enable(0 xc0+9); if(jia=0) delay(5); if(jia=0) min = bcdtodec(uc_R1302(0 x83); min+; while(!jia); if(min59) min=0; L1602_char(2, 9, m
24、in / 10 /*% 10 */+ 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0 x82,dectobcd(min); if(jian=0) delay(5); if(jian=0) min = bcdtodec(uc_R1302(0 x83); min-; while(!jian); if(min=-1) min=59; L1602_char(2, 9, min / 10/*% 10 */+ 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0 x82,dectobcd(min); if(num
25、=3) enable(0 xc0+6); if(jia=0) delay(5); if(jia=0) hour = bcdtodec(uc_R1302(0 x85); hour+; while(!jia); if(hour23) hour=0; L1602_char(2, 6, hour / 10 /*% 10*/ + 48); L1602_char(2, 7, hour % 10 + 48); v_W1302(0 x84,dectobcd(hour); if(jian=0) delay(5); if(jian=0) while(!jian); hour = bcdtodec(uc_R1302
26、(0 x85); hour-; if(hour=-1) hour=23; L1602_char(2, 6, hour / 10/* % 10*/+ 48); L1602_char(2, 7, hour % 10 + 48); v_W1302(0 x84,dectobcd(hour); if(num=0) enable(0 x0c); v_W1302(0 x80,uc_R1302(0 x81) void v_RTInputByte(uchar ucDa) uchar i; ACC = ucDa; T_RST = 1; for(i=8; i0; i-) T_IO = ACC0; T_CLK = 1
27、; T_CLK = 0; ACC = ACC 1; uchar uc_RTOutputByte(void) uchar i; T_RST = 1; for(i=8; i0; i-) ACC = ACC 1; ACC7 = T_IO; T_CLK = 1; T_CLK = 0; return(ACC); void v_W1302(uchar ucAddr, uchar ucDa) T_RST = 0; T_CLK = 0; T_RST = 1; v_RTInputByte(ucAddr); _nop_(); _nop_(); v_RTInputByte(ucDa); T_CLK = 1; T_RST = 0; uchar uc_R1302(uchar ucAddr) uchar ucDa; T_RST = 0; T_CLK = 0; T_RST = 1; v_RTInputByte(ucAddr); _nop_(); _nop_(); ucDa = uc_RTOutputByt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報項目書框架
- 聽力焦慮課題申報書
- 課題申報書審稿意見
- 上海班級管理課題申報書
- 課題申報書署名權(quán)
- 智能制造相關(guān)課題申報書
- 債務(wù)物品抵消合同范本
- 倉庫白酒購買合同范本
- 已申報課題的申報書
- 反滲透膜銷售合同范例
- 職業(yè)衛(wèi)生調(diào)查表
- 某安裝公司績效考核標(biāo)準(zhǔn)表
- 免疫學(xué)檢測技術(shù)的基本原理優(yōu)秀課件
- 2023年北京市實驗動物上崗證培訓(xùn)考試題庫完美精編版
- 第一講 文化概論
- 公路工程概論全套課件
- 中醫(yī)外科學(xué)瘡瘍課件
- 生物技術(shù)在園藝植物育種中的應(yīng)用課件
- 《荷花》課件(人教版三年級語文下冊課件)
- 《聲樂》課程標(biāo)準(zhǔn)(高職)
- 子宮切除術(shù)同意書
評論
0/150
提交評論