基于DS1302電子時鐘的設(shè)計概要_第1頁
基于DS1302電子時鐘的設(shè)計概要_第2頁
基于DS1302電子時鐘的設(shè)計概要_第3頁
基于DS1302電子時鐘的設(shè)計概要_第4頁
基于DS1302電子時鐘的設(shè)計概要_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機應用課程設(shè)計報告(2012~2013學年第2學期)設(shè)計題目:基于DS1302電子時鐘的設(shè)計班別:姓名:指導教師:時間:目錄1設(shè)計任務(wù) 32系統(tǒng)總體方案設(shè)計 32.1各個模塊方案論證 32.1.1時鐘芯片的選擇 32.1.2顯示器的選擇 32.2總體方案設(shè)計 43硬件電路設(shè)計 43.1單片機最小系統(tǒng) 43.21302時鐘電路 53.3按鍵調(diào)時電路 54系統(tǒng)軟件設(shè)計 64.1主程序流程圖 64.2子程序流程圖 74.2.1DS1302子程序流程圖 74.2.21602子程序流程圖 84.3按鍵校正調(diào)時程序 85實物調(diào)試 95.1實物性能分析 95.2總結(jié) 12附錄1 14(1)系統(tǒng)總電路圖 14(2)系統(tǒng)仿真圖 14附錄2 16部分程序清單 161設(shè)計任務(wù)基本要求:采用DS1302時鐘芯片與單片機STC89C52相結(jié)合設(shè)計電子時鐘來顯示出實時年、月、日、時、分、秒等時間,并且可以通過按鍵進行時間調(diào)整。2系統(tǒng)總體方案設(shè)計2.1各個模塊方案論證2.1.1時鐘芯片的選擇由于設(shè)計的是電子時鐘,而單片機STC89C52自帶計時功能,利用單片機實現(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ù),軟件編程較復雜。在以單片機為核心構(gòu)成的裝置中,經(jīng)常需要一個實時的時鐘和日歷,以便對一些實時發(fā)生事件記錄時給予時標,實時時鐘芯片便可起到這一作用。利用單片機進行控制,采用DS1302作為實時時鐘芯片,其三線接口SCLK、I/O、/RST與單片機進行同步通信,外加掉電存儲電路、顯示電路、鍵盤電路,即構(gòu)成一個基本的電子萬年歷系統(tǒng)。由于在系統(tǒng)設(shè)計時,需要考慮以下幾點因素:功耗低、精確度高、軟件程較簡單,芯片的體積小、芯片成本低等,而DS1302芯片有上面所述的諸多優(yōu)點,所以本設(shè)計采用DS1302作為實時時鐘芯片。2.1.2顯示器的選擇LED數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出需要的字符,但此次設(shè)計需要顯示漢字,如果選用數(shù)碼管來顯示漢字,則會需要數(shù)十個,這樣就會產(chǎn)生浪費,而且不方便控制,不符合設(shè)計的初衷。LCD1602具有微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,對比度可調(diào)、內(nèi)含復位電路、提供各種控制命令等特點,完全滿足本次設(shè)計的需要,因此選擇用LCD1602作為顯示器使用。2.2總體方案設(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ù)全都通過P0口接收與發(fā)送,P1口用作觸發(fā)開關(guān)的通信接口,這樣單片機可以較好地完成時間的顯示與調(diào)整。3硬件電路設(shè)計3.1單片機最小系統(tǒng)單片機最小系統(tǒng)是時鐘的主要控制器,它是連接外圍與時鐘電路、輸入按鍵、顯示器LCD1602的紐帶。它主要由STC89C52單片機、單片機晶振電路與單片機復位電路組成。單片機最小系統(tǒng)如圖1所示。圖1單片機最小系統(tǒng)電路晶振系統(tǒng)由兩個30pf的陶瓷電容和一個12MHz的晶振組成,分別接在XTAL1、XTAL2上,在單片機內(nèi)部,這兩個端口是一個反相放大器的輸入端,這個放大器構(gòu)成了片內(nèi)震蕩器,它決定了單片機的時鐘周期。單片機有一個復位引腳RST,高電平有效,只要RST保持高電平,單片機將循環(huán)復位,復位期間,ALE、PSEN輸出高電平。RST從高電平變?yōu)榈碗娖街螅琍C指針變?yōu)?000H,使單片機從程序存儲器地址為0000H的單元開始執(zhí)行。當單片機執(zhí)行程序出錯或進入死循環(huán)時,也可按復位按鈕重新啟動。3.21302時鐘電路時鐘電路是時間計時的基本電路,時鐘電路一般由DS1302時鐘芯片和32.768MHz晶振構(gòu)成。理論上在晶振兩端加兩個6pf的電容,可以使晶振頻率更為精確。DS1302時鐘電路圖如圖2所示。圖21302時鐘電路按鍵調(diào)時電路按鍵調(diào)時電路主要的作用是校正時間,它包含有五個動作:進入(S3),退出(S6),加一(S4),減一(S5),切換(S2)。要進行校正調(diào)時,要首先按啟動按鈕,啟動按鍵有效之后,其他按鍵才能被解鎖,如果啟動按鍵判斷無效,其余按鍵將被鎖定,按退出按鍵就會退出校正調(diào)時狀態(tài)。按鍵調(diào)時電路如圖3所示。圖3按鍵校正調(diào)時電路4系統(tǒng)軟件設(shè)計DS1302是利用單片機控制來實現(xiàn)時鐘計時,C語言具有簡單易懂,條理清晰,易于修改的特點,因此應用起來就比較方便。4.1主程序流程圖圖4主程序流程圖開始時,先對變量進行初始化,然后對DS1302進行處理,使其不具備寫保護,這樣才能給DS1302通信,使其能與單片機交換數(shù)據(jù)。給DS1302連續(xù)的脈沖,接著向1302內(nèi)部寫入地址,直至寫完。最后由單片機與DS1302通信,讀取DS1302內(nèi)部的地址,直至讀取完畢,然后單片機把所讀到的數(shù)據(jù)傳送給1602,使數(shù)據(jù)呈現(xiàn)在液晶屏上,這樣,整個主程序流程圖就完成了。主程序流程圖如圖4所示。4.2子程序流程圖4.2.1DS1302子程序流程圖DS1302子程序流程圖如圖5所示。開始開始DS1302初始化DS1302初始化寫入數(shù)據(jù)寫入數(shù)據(jù)計數(shù)計數(shù)是否校正調(diào)時是 是否校正調(diào)時讀出數(shù)據(jù)否讀出數(shù)據(jù)圖5DS1302子程序流程圖圖5展示了DS1302工作的一個工作流程:首先便是對DS1302進行初始化,使其不受寫保護,方便數(shù)據(jù)寫入,在連續(xù)的脈沖作用下,不斷有數(shù)據(jù)寫入1302的地址中,直至需要調(diào)時,這時改變后的數(shù)據(jù)就會儲存在新的地址上,讀取時便可把新的數(shù)據(jù)傳輸在1602上,即完成了調(diào)時。4.2.21602子程序流程圖開始開始1602初始化1602初始化寫入數(shù)據(jù)寫入數(shù)據(jù)是否有寫入是否有寫入否 是讀出數(shù)據(jù)顯示讀出數(shù)據(jù)顯示 圖61602子程序流程圖1602顯示器的工作流程圖展示了1602的工作流程:啟動時,首先對1602進行初始化,然后檢測有沒有數(shù)據(jù)寫入,當有數(shù)據(jù)寫入時,1602便讀出數(shù)據(jù)并顯示,沒有數(shù)據(jù)寫入時,1602就一直處于等待中,直至有數(shù)據(jù)寫入。1602子程序流程圖如圖6所示。4.3按鍵校正調(diào)時程序……………… if(num==1) { enable(0xc0+12); if(jia==0) delay(5); if(jia==0) { while(!jia); sec=bcdtodec(uc_R1302(0x81)&0x7f); sec++; if(sec>59) sec=0; L1602_char(2,12,sec/10+48); L1602_char(2,13,sec%10+48); v_W1302(0x80,dectobcd(sec)|0x80); } if(jian==0) delay(5); if(jian==0) { while(!jian); sec=bcdtodec(uc_R1302(0x81)); sec--; if(sec==-1) sec=59; L1602_char(2,12,sec/10+48); L1602_char(2,13,sec%10+48); v_W1302(0x80,dectobcd(sec)|0x80); } }………………這是整個調(diào)時系統(tǒng)的一部分,它實現(xiàn)了時間的調(diào)整這一功能。全部程序詳見附錄。5實物調(diào)試5.1實物性能分析用KEIL編寫程序軟件編寫程序、經(jīng)過Proteus仿真軟件仿真調(diào)試之后,確認了此系統(tǒng)可正常運行,在這樣的前提下,我們利用一個單片機最小系統(tǒng)、一塊用萬用板焊接的模塊和一個1602液晶完成了第一次實物仿真。本次實物如圖7所示。雖然本次調(diào)試測試沒有達到要求,但是為后續(xù)工作打下了不可替代的基礎(chǔ)。圖7萬用板實物我們在第一次的嘗試之后,發(fā)現(xiàn)無較大問題存在,于是就嘗試著做出了我們此次課程設(shè)計的第一塊PCB板,在仔細檢查了整個電路無誤之后我們就開始了我們的嘗試,第一塊板的造型是深思熟慮之后才最終定稿的??赡苁怯捎诘谝淮巫鲭p面板,技術(shù)不熟練,所以打板的時候就難免出現(xiàn)這樣那樣的問題,我們的第一塊板同樣出現(xiàn)了問題:液晶顯示屏上只顯示三個小亮點,不顯示數(shù)字,實物如圖8所示。圖8第一塊PCB板經(jīng)過這一次的挫折,我們發(fā)現(xiàn)了本來不會出錯的地方,無緣無故的出現(xiàn)了好多問題,導致了第一次試驗沒能成功。但是我們并不氣餒,經(jīng)過細致的檢查,我們找到了大部分的問題,最終我們的第二塊板也很快做出來了,可是問題又出現(xiàn)了:時鐘不走。第二塊PCB板如圖9所示。圖9第二塊PCB板因為時間數(shù)據(jù)一直不走,我們查閱了好多資料,又認真的把相關(guān)知識復習了一遍,最終問題解決了:原來是DS1302的兩個數(shù)據(jù)傳輸線的電流太小,于是我們就在P3.5、P1.6的端口加上了上拉電阻,加大了電流,最終我們完成了設(shè)計。完成的實物如圖10所示。圖10最終設(shè)計5.2總結(jié)首先,這次設(shè)計讓我們更加了解了單片機及其運用,讓我們受益匪淺,在這次設(shè)計中,我們想挑戰(zhàn)一下自己,于是就選用了1602液晶屏來顯示數(shù)字時鐘,我們知道這對我們來說還是有難度的,但是我相信我們一定會克服這個困難的,因為我堅信只有給自己真正的壓力,自己才會獲得真正的知識!在整個方案的探究與決策中,我們自己動手分析設(shè)計程序加深了對自己未知知識的理解和對指令的靈活運用。通過對程序的編譯和電路的仿真,讓我們更加熟悉了仿真軟件的應用,最重要的是使我們能夠更直觀的看到程序運行的結(jié)果,這給了我們極大地鼓勵與信心!此外,通過這次單片機課程設(shè)計,不僅對我們的動手能力有進一步的提高,而且還對我們的性格成長上也產(chǎn)生了很大的影響:設(shè)計操作量大,對我們的習慣和技能要求高,對我們的素質(zhì)發(fā)展有著相當重要的作用,要在操作前應該認真學習理論知識,以便更好地指導實踐,之后應該繼續(xù)思考,把理論與實踐更好地結(jié)合起來,凡事不能操之過急,靜下心來,認真的思考,謹慎的處理好動手與動腦的有效結(jié)合。這種改變無疑讓我們在以后的生活中能獲取更多的益處與經(jīng)驗。本次課程設(shè)計給我印象最深刻的是它給我們啟發(fā):理論和實踐是兩個不同的過程,理論是不能等于實踐,反之也不行,兩者是有區(qū)別的,有時理論是對的,實踐不一定能體現(xiàn)出來。實踐出來了,不一定能和理論穩(wěn)合呼應。比如,我們在仿真的時候,我們電路和程序沒有問題,完全正確,實驗結(jié)果也與我們預期的一樣,這是我們產(chǎn)生了“此次設(shè)計如此簡單,只要把電路圖連對就行了”錯誤想法,結(jié)果做出來的實物并沒有按照我們的預期展現(xiàn)給我們:又有問題了!經(jīng)過我們認真仔細的檢查,又查閱了眾多的資料,把以前的資料又習一遍,最終問題找到了。在找到問題的那一瞬間,我真切的感受到了理論與實際的切切實實的聯(lián)系,所有的東西并不是理論是正確的,實際也是正確的:我們按照仿真的電路圖連結(jié)起來的電路在真正做出來時,DS1302的兩個數(shù)據(jù)傳輸端口因為電流過小而不能工作,我們在P3.5和1.6端口的后面接上了上拉電阻,這樣我們的作品才真正的完成了?!白x萬卷書,不如行萬里路”,現(xiàn)在我終于明白這句從古至今都在流傳的話了,一句名言存在自有它存在的道理。我們會謹記此次設(shè)計帶給我們的啟發(fā),我們一定會認真的去思,仔細的去體會此次設(shè)計的真正意義……參考文獻[1]譚浩強主編.C程序設(shè)計題解與上機指導(第3版)[M].北京,清華大學出版社,2005.16-24[2]謝維成楊家國董秀成,單片機原理與應用及C51程序設(shè)計(第2版)[M],北京,清華大學出版社,2009.7.25-36附錄1系統(tǒng)總電路圖系統(tǒng)總電路圖,如圖11所示。圖11系統(tǒng)總電路圖(2)系統(tǒng)仿真圖系統(tǒng)仿真圖,如圖12所示。圖12系統(tǒng)仿真圖(3)PCB板設(shè)計使用的PCB如圖13、14所示圖13PCB板正面圖14PCB板反面附錄2程序清單:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitACC0=ACC^0;sbitACC7=ACC^7;sbitt=P1^0;sbitjia=P1^1;sbitjian=P1^2; sbitm=P1^3;sbitT_CLK=P1^6;sbitT_IO=P3^5;sbitT_RST=P1^7;sbitE=P2^7;//1602sbitRW=P2^6; sbitRS=P2^5; voidv_W1302(ucharucAddr,ucharucDa); ucharuc_R1302(uchar); uchardectobcd(ucharbcd);ucharbcdtodec(uchar);voiddelay(ucharx){uchari;while(x--)for(i=0;i<110;i++);}voidenable(uchardel){RS=0;RW=0;P0=del;E=1;delay(3);E=0;}voidwrite(uchardel){RS=1;RW=0;P0=del;E=1;delay(3);E=0;}voidL1602_init(void){enable(0x01); enable(0x38); enable(0x06); enable(0x0c); E=0;}voidL1602_char(ucharhang,ucharlie,charsign){uchara;//if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;enable(a);write(sign);}voidtimechange(){uchara,num=1;ucharhour,min,sec;while(num){if(t==0) delay(5); if(t==0){num++;//beep();while(!t);} if(m==0) delay(5); if(m==0) num=0; enable(0x0f); a=uc_R1302(0x81)|0x80; v_W1302(0x8e,0); v_W1302(0x80,a); if(num==4) num=1; if(num==1) { enable(0xc0+12); if(jia==0) delay(5); if(jia==0) { while(!jia); sec=bcdtodec(uc_R1302(0x81)&0x7f); sec++; if(sec>59) sec=0; L1602_char(2,12,sec/10/*%10*/+48); L1602_char(2,13,sec%10+48); v_W1302(0x80,dectobcd(sec)|0x80); } if(jian==0) delay(5); if(jian==0) { while(!jian); sec=bcdtodec(uc_R1302(0x81)); sec--; if(sec==-1) sec=59; L1602_char(2,12,sec/10/*%10*/+48); L1602_char(2,13,sec%10+48); v_W1302(0x80,dectobcd(sec)|0x80); } }if(num==2){enable(0xc0+9);if(jia==0)delay(5);if(jia==0){min=bcdtodec(uc_R1302(0x83));min++;while(!jia);if(min>59)min=0;L1602_char(2,9,min/10/*%10*/+48);L1602_char(2,10,min%10+48);v_W1302(0x82,dectobcd(min));}if(jian==0)delay(5);if(jian==0){ min=bcdtodec(uc_R1302(0x83)); 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(0x82,dectobcd(min));}}if(num==3){ enable(0xc0+6); if(jia==0) delay(5);if(jia==0) { hour=bcdtodec(uc_R1302(0x85)); hour++; while(!jia); if(hour>23) hour=0; L1602_char(2,6,hour/10/*%10*/+48); L1602_char(2,7,hour%10+48); v_W1302(0x84,dectobcd(hour));} if(jian==0) delay(5); if(jian==0) { while(!jian); hour=bcdtodec(uc_R1302(0x85)); hour--; if(hour==-1) hour=23; L1602_char(2,6,hour/10/*%10*/+48); L1602_char(2,7,hour%10+48); v_W1302(0x84,dectobcd(hour)); }}}if(num==0){enable(0x0c);}v_W1302(0x80,uc_R1302(0x81)&0x7f); }voidv_RTInputByte(ucharucDa){uchari;ACC=ucDa;T_RST=1; for(i=8;i>0;i--){T_IO=ACC0;T_CLK=1;T_CLK=0;ACC=ACC>>1; }}ucharuc_RTOutputByte(void){uchari;T_RST=1;for(i=8;i>0;i--){ACC=ACC>>1;ACC7=T_IO;T_CLK=1;T_CLK=0;}return(ACC);}voidv_W1302(ucharucAddr,ucharucDa){T_RST=0;T_CLK=0;T_RST=1;v_RTInputByte(ucAddr); _nop_();_nop_();v_RTInputByte(ucDa); T_CLK=1;T_RST=0;}ucharuc_R1302(ucharucAddr){ucharucDa;T_RST=0;T_CLK=0;T_R

溫馨提示

  • 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

提交評論