版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課程設(shè)計說明書(論文)</p><p> 課程名稱:課程設(shè)計 </p><p> 設(shè)計題目:數(shù)字日歷鐘表的設(shè)計 </p><p> 院 系:電信學(xué)院通信工程 </p><p> 班 級: </p><p> 設(shè) 計 者:
2、 </p><p> 學(xué) 號: </p><p> 指導(dǎo)教師: </p><p> 設(shè)計時間:2013.6.12-3013.6.18 </p><p><b> 課程設(shè)計任務(wù)書</b></p><p> *注:此任務(wù)書由課程設(shè)
3、計指導(dǎo)教師填寫</p><p><b> 數(shù)字日歷鐘的設(shè)計</b></p><p><b> 一、課程設(shè)計要求</b></p><p> 1. 數(shù)碼管顯示:秒、分、時(可同時顯示,也可輪換顯示)</p><p> 2. 能夠設(shè)置時間,“設(shè)置按鍵”數(shù)量不限,以簡單合理易用為好。</p&g
4、t;<p> 3. 誤差:1秒/天(報告中要論述分析是否滿足要求)</p><p> 4. 設(shè)置校準鍵:當(dāng)數(shù)字鐘顯示在“整點±30秒”范圍時,按動“校準鍵”,數(shù)字鐘即刻被調(diào)整到整點,消除了±30秒的誤差。</p><p> 5. 加上“星期”顯示(可以預(yù)置),并可以對其進行設(shè)置。</p><p><b> 二、方案
5、論證</b></p><p> 2.1單片機芯片的選擇方案和論證</p><p><b> 方案一:</b></p><p> 采用89C51芯片作為硬件核心,其內(nèi)部采用Flash ROM,具有4KB ROM 存儲空間,能于3V的超低壓工作,但</p><p> 運用于電路設(shè)計中時由于不具備ISP在線
6、編程技術(shù),燒入程序時需要專門的C編程器(當(dāng)前可用的實驗燒寫開發(fā)板只支持具有ISP在線編程功能的AT89S**系列的芯片),當(dāng)在對電路進行調(diào)試時,更顯麻煩,并且增加了造價,</p><p><b> 方案二:</b></p><p> 采用89S51芯片作為主控模塊,AT89S51是 MCS-51系列單片機目前運用較多的一種芯片,采用Flash ROM,內(nèi)部具有4K
7、B ROM 存儲空間,能于3V的超低壓工作,而且具備ISP在線編程技術(shù),方便對電路進行調(diào)試.但由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。針對該問題,可采用易于插拔的芯片插槽,芯片的程序燒寫用專門的實驗板進行燒寫(當(dāng)前可用的實驗燒寫開發(fā)板支持AT89S**系列).AT89S51單片機的功能引腳圖如下圖所示:</p><p> AT89S51單片機的功能引腳圖<
8、;/p><p> 所以選擇采用AT89S51作為主控制系統(tǒng)。</p><p> 2.3時鐘芯片的選擇方案和論證</p><p><b> 方案一:</b></p><p> 采用DS1302時鐘芯片實現(xiàn)時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),精度也較高
9、,工作電壓2.5V~5.5V范圍內(nèi),功耗也較低,但價格比較貴,且目前市場上采購不到</p><p><b> 方案二:</b></p><p> 直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)時、分、秒計數(shù)。采用此種方案實現(xiàn)雖然有一定的時間誤差,但可減少少芯片的使用,節(jié)約成本,易于實現(xiàn),符合初學(xué)者實驗選用。</p><p><b&g
10、t; 所以采用方案二。</b></p><p> 綜上各方案所述,對此次作品的方案選定: 采用AT89S51作為主控制系統(tǒng); 通過軟件編程采用定時器定時實現(xiàn)秒.分.時計時;LED數(shù)碼管靜態(tài)顯示時間。</p><p><b> 三、原理論述</b></p><p> 單片機控制的數(shù)字鐘的硬件結(jié)構(gòu)與軟件設(shè)計,給出了匯編語言源程序
11、。此數(shù)字鐘是一個將“時”、“分”、“秒”顯示于人的視覺器官的計時裝置。顯示器件選用LED七段數(shù)碼管。在譯碼顯示電路輸出的驅(qū)動下,顯示出清晰、直觀的數(shù)字符號。針對數(shù)字鐘會產(chǎn)生走時誤差的現(xiàn)象,在電路中就設(shè)計有有校準時間功能的電路。使用動態(tài)數(shù)碼顯示的方法,運用獨立式按鍵識別過程,按“時”,“分”,“秒”數(shù)據(jù)送出顯示處理方法。</p><p> 這里采用應(yīng)用廣泛的80C51單片機作為時鐘控制芯片,利用單片機內(nèi)部的定時/
12、計數(shù)器T0 實現(xiàn)軟時鐘的目的。首先將T0設(shè)定工作于定時方式1,對機器周期計數(shù)形成基準時間(50ms),然后使用循環(huán)的程序結(jié)構(gòu)使基準時間計數(shù)20次從而形成秒,秒計60次形成分,分計60形成小時,小時計到24形成一天,天計到7形成一星期,再重新循環(huán)。最后通過數(shù)碼管把它們的內(nèi)容在相應(yīng)的位置顯示出來,達到時、分、秒計時的功能。</p><p><b> 3.1系統(tǒng)原理圖</b></p>
13、<p> AT89C51的P1口接入三個按鍵,對時、分、秒進行調(diào)整。P0口輸出字段碼,控制要顯示的字符,外接74LS245芯片,驅(qū)動LED顯示。P3口輸出字位碼,去控制要顯示的位,其原理圖如圖3-6所示。</p><p> 圖3-6 電子鐘原理圖</p><p> 當(dāng)接入電源時,數(shù)字電子鐘以秒為單位開始計時。運行狀態(tài)下,按下控制按鍵S-SET,對秒進行調(diào)整;按下M-S
14、ET調(diào)整分鐘;按下H-SET對小時進行調(diào)整。這樣通過三個按鍵,分別對時、分、秒進行調(diào)整,從而實現(xiàn)調(diào)時。</p><p> 3.2 程序設(shè)計流程圖</p><p> 這次的數(shù)字電子鐘設(shè)計用到很多子程序,它們的流程圖如下所示。</p><p> 主程序是先開始,然后啟動定時器,定時器啟動后在進行按鍵檢測,檢測完后,就可以顯示時間。</p><p
15、> 圖4-1 主程序流程圖</p><p> 按鍵處理是先檢測秒按鍵是否按下,秒按鍵如果按下,秒就加1;如果沒有按下,就檢測分按鍵是否按下,分按鍵如果按下,分就加1;如果沒有按下,就檢測時按鍵是否按下,時按鍵如果按下,時就加1;如果沒有按下,就把時間顯示出來。</p><p> 圖4-2 按鍵處理流程圖</p><p> 定時器中斷時是先檢測1秒是否到
16、,1秒如果到,秒單元就加1;如果沒到,就檢測1分鐘是否到,1分鐘如果到,分單元就加1;如果沒到,就檢測1小時是否到,1小時如果到,時單元就加1,如果沒到,就檢測1天是否到,1議案如果到,天單元就加1,如果沒到,就顯示時間。</p><p> 圖4-3 定時器中斷流程圖</p><p> 時間顯示是先秒個位計算顯示,然后是秒十位計算顯示,再是分個位計算顯示,再然后是分十位顯示,再就是時個
17、位計算顯示,然后是時十位顯示,最后是天的顯示。</p><p> 3.3 時鐘程序設(shè)計步驟</p><p> ?。?)選擇工作方式,計算初值;</p><p> ?。?)采用中斷方式進行溢出次數(shù)累計;</p><p> (3)從秒——分——時的計時是通過累加和數(shù)值比較實現(xiàn)的;</p><p> ?。?)時鐘顯示緩沖
18、區(qū):時鐘時間在方位數(shù)碼管上進行顯示,為此在內(nèi)部</p><p> RAM中要設(shè)置顯示緩沖區(qū),共6個地址單元。顯示緩沖區(qū)從左到右依次存放時、分、秒數(shù)值;</p><p> (5)主程序:主要進行定時器/計數(shù)器的初始化編程,然后反復(fù)調(diào)用顯示</p><p> 子程序的方法等待中斷的到來。</p><p> (6)中斷服務(wù)程序:進行計時操作
19、</p><p> ?。?)加1子程序:用于完成對時、分、秒的加操作,中斷服務(wù)程序在秒、</p><p> 分、時加1時共有三種條調(diào)用加1子程序,包括三項內(nèi)容:合字、加1并進行十進制調(diào)整、分字。</p><p><b> 四、分析運算</b></p><p><b> 4.1 硬件部分</b>
20、</p><p> 采用7SEG-MPX8-CC 八個共陰二極管顯示器來顯示日期和時間。</p><p> 通過設(shè)置功能按鍵來實現(xiàn)調(diào)整日期和整點調(diào)時的功能。</p><p> 電路連接使用PCB,使電路連接簡潔美觀。</p><p><b> 4.2 軟件部分</b></p><p>
21、“時鐘”基準時間由單片機內(nèi)部的定時中斷T0提供,考慮因素:定時時間是“秒”的整除數(shù),且長短適宜。最長不能超過16位定時器的最長定時時間;最短不能少于中斷服務(wù)程序的執(zhí)行時間?;鶞蕰r間越短,越有利于提高時鐘的運行精確度。基準時間定為0.05秒。</p><p> ?。?)用一個計數(shù)器對定時中斷的次數(shù)進行計數(shù),由基準時間為0.05秒知計數(shù)值為20即可實現(xiàn)“秒”定時,同理進行“分”﹑“時”定時。</p>&
22、lt;p><b> 4.3計算</b></p><p> 該部分主要是對51單片機內(nèi)部定時中斷T0的計時初值進行計算。該單片機使用的晶振為內(nèi)部晶振,因此晶振頻率為fosc=12MHz,機器周期為Tj=12/fosc=12/12×106=1us。由上面分析可知,定時時間T=50ms</p><p> 定時初值為X=216-T/Tj=65536-50
23、000=15536=3CB0H</p><p><b> 五、程序</b></p><p> 簡要說明:實現(xiàn)24小時制電子鐘,8位數(shù)碼管顯示,顯示時分秒顯示格式:23-59-59(小時十位如果為0則不顯示)P0口輸出段選信號,P2口輸出位選信號P1.2為調(diào)時按鈕,P1.1為調(diào)分按鈕;晶振12M</p><p><b> 源
24、程序如下:</b></p><p> S_SETBITP1.0 ;數(shù)字鐘秒控制位</p><p> M_SETBITP1.1 ;分鐘控制位</p><p> H_SETBITP1.2 ;小時控制位</p><p> D_SET BIT P1.3
25、 ;天控制位</p><p> SECONDEQU30H</p><p> MINUTEEQU31H</p><p> HOUREQU32H</p><p> DAY EQU 33H</p><p> TCNTEQU34H</p><p&
26、gt;<b> ORG00H</b></p><p> SJMPSTART</p><p><b> ORG0BH</b></p><p> LJMPINT_T0</p><p> START:MOVDPTR,#TABLE</p><p> MO
27、VHOUR,#0;初始化</p><p> MOVMINUTE,#0</p><p> MOVSECOND,#0</p><p> MOV DAY,#0</p><p> MOVTCNT,#0</p><p> MOVTMOD,#01H</p><p&
28、gt; MOVTH0,#(65536-50000)/256;定時50毫秒</p><p> MOVTL0,#(65536-50000)MOD 256</p><p> MOVIE,#82H</p><p><b> SETBTR0</b></p><p> ;*****************
29、***********************************</p><p> ;判斷是否有控制鍵按下,是哪一個鍵按下</p><p> A1:LCALLDISPLAY</p><p> JNBS_SET,S1</p><p> JNBM_SET,S2</p><p> JNB
30、H_SET,S3</p><p><b> LJMPA1</b></p><p> S1:LCALLDELAY;去抖動</p><p> JBS_SET,A1</p><p> INCSECOND;秒值加1</p><p> MOVA,SECOND<
31、;/p><p> CJNEA,#60,J0;判斷是否加到60秒</p><p> MOVSECOND,#0</p><p><b> LJMPK1</b></p><p> S2:LCALLDELAY</p><p> JBM_SET,A1</p><p
32、> K1:INCMINUTE;分鐘值加1</p><p> MOVA,MINUTE</p><p> CJNEA,#60,J1;判斷是否加到60分</p><p> MOVMINUTE,#0</p><p><b> LJMPK2</b></p><p>
33、 S3:LCALLDELAY</p><p> JBH_SET,A1</p><p> K2:INCHOUR;小時值加1</p><p> MOVA,HOUR</p><p> CJNEA,#24,J2;判斷是否加到24小時</p><p> MOVHOUR,#0</p&g
34、t;<p><b> LJMP K3</b></p><p> K3: INC DAY ;天值加1</p><p> MOVMINUTE,#0</p><p> MOVSECOND,#0</p><p> LJMPA1;等待按鍵抬起</p><p
35、> J0:JBS_SET,A1</p><p> LCALLDISPLAY</p><p><b> SJMPJ0</b></p><p> J1:JBM_SET,A1</p><p> LCALLDISPLAY</p><p><b> SJMP
36、J1</b></p><p> J2:JBH_SET,A1</p><p> LCALLDISPLAY</p><p> SJMPJ2;定時器中斷服務(wù)程序,對秒,分鐘和小時的計數(shù)</p><p> INT_T0:MOVTH0,#(65536-50000)/256</p><p>
37、 MOVTL0,#(65536-50000)MOD 256</p><p><b> INCTCNT</b></p><p> MOVA,TCNT</p><p> CJNEA,#20,RETUNE;計時1秒</p><p> INCSECOND</p><p>
38、 MOVTCNT,#0</p><p> MOVA,SECOND</p><p> CJNEA,#60,RETUNE</p><p> INCMINUTE</p><p> MOVSECOND,#0</p><p> MOVA,MINUTE</p><p>
39、CJNEA,#60,RETUNE</p><p><b> INCHOUR</b></p><p> MOVMINUTE,#0</p><p> MOVA,HOUR</p><p> CJNEA,#24,RETUNE</p><p> MOVHOUR,#0</p
40、><p> MOVMINUTE,#0</p><p> MOVSECOND,#0</p><p> MOVTCNT,#0</p><p> RETUNE:RETI;</p><p><b> 顯示控制子程序</b></p><p> DISPLAY:M
41、OVA,SECOND;顯示秒</p><p> MOVB,#10</p><p><b> DIVAB</b></p><p><b> CLRP3.6</b></p><p> MOVCA,@A+DPTR</p><p><b> M
42、OVP0,A</b></p><p> LCALLDELAY</p><p><b> SETBP3.6</b></p><p><b> MOVA,B</b></p><p><b> CLRP3.7</b></p><
43、p> MOVCA,@A+DPTR</p><p><b> MOVP0,A</b></p><p> LCALLDELAY</p><p><b> SETBP3.7</b></p><p><b> CLRP3.5</b></p>
44、<p> MOVP0,#40H;顯示分隔符</p><p> LCALLDELAY</p><p><b> SETBP3.5</b></p><p> MOVA,MINUTE;顯示分鐘</p><p> MOVB,#10</p><p><b>
45、; DIVAB</b></p><p><b> CLRP3.3</b></p><p> MOVCA,@A+DPTR</p><p><b> MOVP0,A</b></p><p> LCALLDELAY</p><p><b&
46、gt; SETBP3.3</b></p><p><b> MOVA,B</b></p><p><b> CLRP3.4</b></p><p> MOVCA,@A+DPTR</p><p><b> MOVP0,A</b></p&
47、gt;<p> LCALLDELAY</p><p><b> SETBP3.4</b></p><p><b> CLRP3.2</b></p><p> MOVP0,#40H;顯示分隔符</p><p> LCALLDELAY</p>&l
48、t;p><b> SETBP3.2</b></p><p> MOVA,HOUR;顯示小時</p><p> MOVB,#10</p><p><b> DIVAB</b></p><p><b> CLRP3.0</b></p>
49、;<p> MOVCA,@A+DPTR</p><p><b> MOVP0,A</b></p><p> LCALLDELAY</p><p><b> SETBP3.0</b></p><p><b> MOVA,B</b></p
50、><p><b> CLRP3.1</b></p><p> MOVCA,@A+DPTR</p><p><b> MOVP0,A</b></p><p> LCALLDELAY</p><p><b> SETBP3.1</b>&l
51、t;/p><p><b> RET</b></p><p> TABLE: DB 3FH,06H,5BH,4FH,66H</p><p> DB6DH,7DH,07H,7FH,6FH</p><p> DELAY:MOVR6,#10</p><p> D1:MOVR7
52、,#250</p><p><b> DJNZR7,$</b></p><p> DJNZR6,D1</p><p><b> RET</b></p><p><b> END</b></p><p><b> 六、調(diào)試與運行&l
53、t;/b></p><p><b> 6.1 電路仿真</b></p><p> 此設(shè)計的電路在單片機仿真軟件[Proteus.Professional.7.1]中進行仿真,仿真電路如圖5-1所示:</p><p> 圖5-1 電子鐘仿真電路圖</p><p><b> 6.2 調(diào)試和運行<
54、/b></p><p> 在KEIL (單片機匯編) C51軟件中編寫好的程序,將程序放入單片機仿真軟件中,結(jié)合硬件電路進行調(diào)試與運行。</p><p> 通過按鍵對時間進行調(diào)整。如顯示時間為14-30-22,既是14點30分22秒,通過以下調(diào)整則可實現(xiàn)。</p><p> 按動S-SET鍵,將秒調(diào)到22;</p><p> 按
55、動M-SET鍵,將分調(diào)到30;</p><p> 按動H-SET鍵,將時調(diào)到14。</p><p> 則將時間調(diào)到了所要顯示的時間14-30-22,通過此方法可將時間調(diào)整到任何需要顯示的時間。</p><p><b> 七、PCB圖的設(shè)計</b></p><p><b> 總結(jié)</b><
56、;/p><p> 通過這次單片機課程設(shè)計,發(fā)現(xiàn)了自身所學(xué)知識存在許多的不足和問題,同時也學(xué)到了不少東西,提高了動手實踐的能力. </p><p> 在整個設(shè)計過程中,從設(shè)計方案的確定,到具體電路的設(shè)計,最后到總體電路的聯(lián)接構(gòu)建工程量是比較大的,單靠個人能力,很多方面考慮不周,有的地方甚至毫無頭緒,想不出具體方案,因此,絕對不能心急,不明白的地方和其它的同學(xué)共同討論研究,畢竟群策群力辦法要多
57、些。</p><p> 作為初學(xué)者,盡管這次設(shè)計中遇到了許多難題,但也都一一得以解決。比如程序編寫中,由于思路不清晰,開始時遇到了很多的問題,經(jīng)過靜下心來思考,和同學(xué)們的共同討論,理清了思路,反而得心應(yīng)手。</p><p> 雖然此次課程設(shè)計的作品有些簡單,但是通過自己的努力最終把電路成功設(shè)計出來,個人覺得還是很有成就感的,更為重要的是實實在在學(xué)到了不少東西,使自己這方面的知識技能有了
58、很大的進步。因此,我自己覺得這次課程設(shè)計對我而言算得上是一次全新的嘗試,也是一個小小的成功,更是一次很好的鍛煉,讓我有了全方位的提高和進步。</p><p><b> 九、設(shè)計相關(guān)說明</b></p><p><b> 元器件清單:</b></p><p><b> 單片機:80C51</b>&
59、lt;/p><p><b> 按鍵:BUTTON</b></p><p><b> 電阻:RES</b></p><p><b> 電容:CAP</b></p><p> 晶振:CRYSTAL</p><p> LED數(shù)碼管:7SEG-MPX8-C
60、A-BLUE(CA:共陽,CC:共陰)</p><p><b> 地:GRAND</b></p><p><b> 電源:POWER</b></p><p><b> 十、參考文獻</b></p><p> [1]《單片機原理與應(yīng)用》 宗成閣 編著</p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字日歷電路課程設(shè)計
- 日歷課程設(shè)計
- java課程設(shè)計--日歷
- 數(shù)字日歷倒計時牌電路課程設(shè)計
- 電子日歷的制作-課程設(shè)計
- 電子日歷的制作-課程設(shè)計
- 電子日歷課程設(shè)計報告
- 具有大小月份自動調(diào)節(jié)功能的數(shù)字日歷課程設(shè)計
- java課程設(shè)計簡單日歷
- 課程設(shè)計-- 網(wǎng)上日歷系統(tǒng)
- 電子日歷表課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_日歷
- java課程設(shè)計鐘表(含代碼)
- java課程設(shè)計--日歷記事本
- c語言日歷顯示課程設(shè)計報告
- 單片機課程設(shè)計報告-日歷
- 電子日歷課程設(shè)計實訓(xùn)報告
- java課程設(shè)計日歷記事本
- java課程設(shè)計實驗報告--java日歷設(shè)計
- java課程設(shè)計--日歷記事本
評論
0/150
提交評論