版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 單片機原理與應(yīng)用</b></p><p><b> 課程設(shè)計 </b></p><p> 【設(shè)計題目】 數(shù)字鐘設(shè)計與實現(xiàn) </p><p> 【指導(dǎo)教師】 </p><p> 【班級】 06電子(1)班
2、 </p><p> 【姓名】 </p><p> 【學(xué)號】 </p><p> 【日期】 2009年06月19日 </p><p> 電子信息技術(shù)專業(yè)單片機綜合實踐任務(wù)書</p><p><b> 目 錄<
3、/b></p><p><b> 摘 要1</b></p><p><b> 1、設(shè)計目的2</b></p><p><b> 2、設(shè)計內(nèi)容2</b></p><p> 2.1任務(wù)及要求2</p><p> 2.2系統(tǒng)功能說明2
4、</p><p> 2.3軟件研制方面3</p><p> 2.4硬件研制方面3</p><p> 2.5源程序流程圖3</p><p> 3、仿真實現(xiàn)(電路連接圖)4</p><p><b> 3.1引腳連接4</b></p><p> 3.2仿真結(jié)
5、果(電路原理圖)4</p><p><b> 4、總結(jié)5</b></p><p><b> 5、參考文獻6</b></p><p><b> 附錄6</b></p><p><b> 摘 要</b></p><p>
6、 基于單片機的數(shù)字鐘的設(shè)計與實現(xiàn),主要討論了它從軟件上實現(xiàn)的過程,流程圖的設(shè)定,電路圖的繪制,重點在單片機特有的定時中斷方式,在最后富有采用中斷方式實現(xiàn)的數(shù)字鐘的源程序。 </p><p> 關(guān)鍵字:單片機,數(shù)字鐘,中斷,定時,消抖</p><p><b> 1、設(shè)計目的</b></p><p> (1)通過對課題設(shè)計方案的分析、選擇、
7、比較、熟悉單片機用系統(tǒng)開發(fā)、研制的過程,軟硬件設(shè)計的方法、內(nèi)容及步驟。</p><p> (2)培養(yǎng)針對課題需要,選擇和查閱有關(guān)手冊、圖表及文獻資料的自學(xué)能力,提高組成系統(tǒng)、編程、調(diào)試的動手能力;</p><p> (3)提高綜合及靈活運用所學(xué)知識解決工業(yè)控制的能力,培養(yǎng)動手能力和實際應(yīng)用能力。</p><p><b> 2、設(shè)計內(nèi)容</b&g
8、t;</p><p><b> 2.1任務(wù)及要求</b></p><p> ?、偻ㄟ^單片機內(nèi)定時器控制走時,準確持續(xù)走時,調(diào)時不影響走時。</p><p> ?、谠诎藗€數(shù)碼管上顯示時、分、秒及兩個小數(shù)點。</p><p> ?、酆恤[鐘功能,可以選擇鬧鐘開關(guān),可以設(shè)定鬧鈴時間。</p><p>
9、 ④到達鬧鐘時刻蜂鳴器警報,可以關(guān)掉警報。</p><p><b> 2.2系統(tǒng)功能說明</b></p><p> 電子鐘的格式為:XX.XX.XX ,由左向右分別為:時、分、秒。完成顯示由秒01一直加1至59,再恢復(fù)為00;分加1,由00至01,一直加1至59,再恢復(fù)00;時加1,時由00加至23之后秒、分、時全部清清零。該鐘使用T0作250us的定時中斷。&
10、lt;/p><p> 走時調(diào)整:走時過程中直接調(diào)整且不影響走時準確性,按下h鍵對“時”顯示進行調(diào)整(每按一次加1);按下m鍵對“分”顯示進行調(diào)整(每按一次加1);按下s鍵“秒”顯示進行調(diào)整(每按一次加1)。</p><p> 鬧時調(diào)整:按下BUT鍵進入鬧時調(diào)整,但不影響走時準確性,按下h鍵對“時”顯示進行調(diào)整(每按一次加1);按下m鍵對“分”顯示進行調(diào)整(每按一次加1)。</p>
11、;<p> 鬧鈴啟/停設(shè)定:通過模式設(shè)定鍵cancel選擇為鬧鈴啟/停設(shè)定,cancel鍵斷開鬧時功能啟動;按下cancel鍵鬧鈴功能關(guān)閉,也可在鬧鈴響起后終止鬧鈴。</p><p><b> 2.3軟件研制方面</b></p><p> 1. 采用模塊化程序結(jié)構(gòu)設(shè)計軟件,首先將整個軟件分成若干功能模塊;</p><p>
12、 2. 根據(jù)流程圖,編寫源程序;</p><p> 3. 上機調(diào)試各模塊程序;</p><p> 4. 與硬件一起聯(lián)調(diào),最后完成全部調(diào)試工作。 </p><p><b> 2.4硬件研制方面</b></p><p> 1. 將整個硬件系統(tǒng)劃分為若干功能單元電路,繪出整個系統(tǒng)邏輯電路圖,注明各交單元電路間接口信號
13、;</p><p> 2. 完成各單元電路設(shè)計,包括選擇合適的各類元器件和電路板設(shè)計(元件布局和走線)。</p><p><b> 2.5源程序流程圖</b></p><p> 3、仿真實現(xiàn)(電路連接圖) </p><p><b> 3.1引腳連接</b></p><p&
14、gt; 8位高亮共陰型數(shù)碼管,單片機P1.0~P1.7接數(shù)碼管a~dp腳,P3.0~P3.7接數(shù)碼管1~4腳, P2.0~P2.2接s、m、h控制鍵,P2.3接BUT鍵,P2.4接蜂鳴器,P2.5接cancel鍵,RST用單片機自帶。</p><p> 3.2仿真結(jié)果(電路原理圖)</p><p> ?。▊渥ⅲ簽樾Ч庇^,仿真時用LED代替的蜂鳴器。)</p><p
15、><b> 4、總結(jié)</b></p><p> 通過這次課程設(shè)計我們最大的收獲是對單片機的定時中斷方式有了直觀的認識,設(shè)計數(shù)字鐘我們用單片機內(nèi)部定時\計數(shù)器,通過設(shè)置定時器產(chǎn)生精確的定時中斷,達到計時的目的。</p><p> 用定時器可以產(chǎn)生250us的精確定時,然后,4000次中斷后就得到了精確的1s的定時。60個1s,即產(chǎn)生了1分鐘等等……用延時也可
16、以做電子鐘,但產(chǎn)生的定時一般是近似值,走得時間久了,定時會產(chǎn)生較大的偏差,而用定時器中斷做的電子鐘就不會有這個問題,很準確。</p><p> 兩星期前,我們對單片機知之甚少,我們首先從任務(wù)要求出發(fā),分析如何實現(xiàn)功能,然后將其分為若干模塊,將每個模塊設(shè)計好以后,再進行總體設(shè)計,最后是將硬件電路焊好,并進行電路連接?,F(xiàn)在我們熟悉了51單片機的指令系統(tǒng),熟悉了定時器/計數(shù)器和中斷系統(tǒng)的使用,了解了串行接口的基本使用
17、方法,基本掌握了單片機程序設(shè)計的方法。 </p><p> 由于對單片機我們還只是接觸了皮毛,所以先做一個功能相對簡單電子鐘暫且練習對定時器/計數(shù)器的用法,還有就是系統(tǒng)簡單好調(diào)試,以保證按時完成設(shè)計任務(wù)。在以后的學(xué)習中,我們打算逐漸增加它的功能,比如說加溫度控制,加秒表等功能來完善這個電子鐘。在實驗中用8個數(shù)碼管本計劃加入日期顯示,最終未能實現(xiàn),待以后用更多時間改正。</p><p>
18、 通過答辯,我們意識到了原來沒有注意的地方,比如點陣LED一般采用掃描式顯示,實際運用分為三種方式:點掃描;行掃描;列掃描。若使用點掃描,其掃描頻率必須大于16×64=1024Hz,即周期小于1ms。若使用第二和第三種方式,則頻率必須大于16×8=128Hz,周期小于7.8ms即可符合視覺暫留要求。此外一次驅(qū)動一列或一行(8顆LED)時需外加驅(qū)動電路(三極管)提高電流,否則LED亮度會不足,且有時出現(xiàn)數(shù)字顯示不明顯的
19、狀況。</p><p> 最后,在這里我們要感謝指導(dǎo)老師,感謝在設(shè)計及改正中給予的寶貴指導(dǎo);另外,還要特別感謝等悉心給予幫助的同學(xué)。</p><p><b> 5、參考文獻</b></p><p> [1]張毅剛、彭喜元 《單片機原理與應(yīng)用設(shè)計》 電子工業(yè)出版社</p><p> [2]李玉梅 《基于MCS-51
20、系列單片機原理的應(yīng)用設(shè)計》 國防工業(yè)出版社</p><p> [3]顧栤、趙偉軍、王泰 《單片機計算機原理開發(fā)應(yīng)用》 高等教育出版社</p><p> [4]張洪潤、藍清華 《單片機應(yīng)用技術(shù)教程》 清華大學(xué)出版社</p><p><b> 附錄</b></p><p> #include <reg51.H&
21、gt;</p><p> Unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80}; //數(shù)碼管段選
22、 </p><p> unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //數(shù)碼管位選 </p><p> unsigned char dispbuf[8]={0,0,16,0,0,16,0,0}; //緩存區(qū)<
23、/p><p> unsigned char dispbitcnt; //要顯示的位置</p><p> unsigned char second=0;</p><p> unsigned char minite=0;</p><p> unsigned char hour=0;</p><p> unsigne
24、d char t_minite=0;</p><p> unsigned char t_hour=0;</p><p> unsigned int tcnt; //中斷次數(shù)</p><p> unsigned char mstcnt; //掃描時間變量 </p><p> uns
25、igned int flag; //標志位</p><p> sbit s=P2^0;</p><p> sbit m=P2^1;</p><p> sbit h=P2^2;</p><p> sbit BUT=P2^3; //設(shè)定鬧鈴</p><p> sbit LED=P2^4; </p&g
26、t;<p> sbit cancel=P2^5; //鬧鈴啟用\禁止</p><p> void set_time();</p><p> void adjust_time();</p><p> void delay();</p><p> void main(void)</p><p>&
27、lt;b> {</b></p><p> TMOD=0x02; //T0工作方式2</p><p> TH0=0x06; //每250us中斷一次</p><p><b> TL0=0x06;</b></p><p><b> TR0=1;</b></p>
28、<p><b> ET0=1;</b></p><p><b> EA=1;</b></p><p> BUT=1; </p><p><b> cancel=1;</b></p><p><b> while(1)</b>
29、</p><p><b> {</b></p><p> while(BUT==1)</p><p><b> { </b></p><p> adjust_time();</p><p><b> }</b></p><p
30、> while(BUT==0)</p><p><b> {</b></p><p> set_time();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</
31、b></p><p> void set_time() </p><p><b> {</b></p><p><b> if(m==0)</b></p><p><b> {</b></p><p>
32、 delay(); //消抖</p><p><b> if(m==0)</b></p><p><b> {</b></p><p> t_minite++;</p><p> if(t_minite==60)</p><p><b> {<
33、;/b></p><p> t_minite=0;</p><p><b> }</b></p><p> dispbuf[3]=t_minite%10;</p><p> dispbuf[4]=t_minite/10;</p><p> while(m==0);</p>
34、;<p><b> }</b></p><p><b> }</b></p><p> else if(h==0)</p><p><b> {</b></p><p><b> delay();</b></p>&l
35、t;p><b> if(h==0)</b></p><p><b> {</b></p><p><b> t_hour++;</b></p><p> if(t_hour==24)</p><p><b> {</b></p>
36、<p><b> t_hour=0;</b></p><p><b> }</b></p><p> dispbuf[6]=t_hour%10;</p><p> dispbuf[7]=t_hour/10;</p><p> while(h==0);</p>&
37、lt;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void adjust_time()</p><p><b> {</b></p><p>
38、; if(s==0) </p><p><b> {</b></p><p><b> delay();</b></p><p><b> if(s==0)</b></p><p><b> {</b><
39、/p><p><b> second++;</b></p><p> if(second==60)</p><p><b> {</b></p><p><b> second=0;</b></p><p><b> }</b>
40、;</p><p> dispbuf[0]=second%10;</p><p> dispbuf[1]=second/10;</p><p> while(s==0);</p><p><b> }</b></p><p><b> }</b></p>
41、<p> else if(m==0)</p><p><b> {</b></p><p><b> delay();</b></p><p><b> if(m==0)</b></p><p><b> {</b></p&g
42、t;<p><b> minite++;</b></p><p> if(minite==60)</p><p><b> {</b></p><p><b> minite=0;</b></p><p><b> }</b><
43、;/p><p> dispbuf[3]=minite%10;</p><p> dispbuf[4]=minite/10;</p><p> while(m==0);</p><p><b> }</b></p><p><b> }</b></p>&l
44、t;p> else if(h==0)</p><p><b> {</b></p><p><b> delay();</b></p><p><b> if(h==0)</b></p><p><b> {</b></p>
45、<p><b> hour++;</b></p><p> if(hour==24) </p><p><b> {</b></p><p><b> hour=0;</b></p><p><b> }</b></p>
46、<p> dispbuf[6]=hour%10;</p><p> dispbuf[7]=hour/10;</p><p> while(h==0);</p><p><b> }</b></p><p><b> }</b></p><p><b&
47、gt; }</b></p><p> void delay()</p><p><b> {</b></p><p> unsigned char i,j;</p><p> for(i=5;i>0;i--)</p><p> for(j=248;j>0;j--
48、); </p><p><b> }</b></p><p> void t0(void) interrupt 1</p><p><b> {</b></p><p><b> mstcnt++;</b></p><p&g
49、t; if(mstcnt==8) //數(shù)碼管動態(tài)刷新時間</p><p><b> {</b></p><p><b> mstcnt=0;</b></p><p> P3=dispbitcode[dispbitcnt]; P1=dispcode[dispbuf[dispbitcnt]]; <
50、;/p><p> dispbitcnt++;</p><p> if(dispbitcnt==8)</p><p><b> {</b></p><p> dispbitcnt=0;</p><p><b> }</b></p><p><
51、b> }</b></p><p> tcnt++; //中斷產(chǎn)生秒</p><p> if(tcnt==4000) </p><p><b> {</b></p><p><b> tcnt=0;</b></p><p><b>
52、; second++;</b></p><p> if(second==60)</p><p><b> {</b></p><p><b> second=0;</b></p><p><b> minite++;</b></p><
53、p> if(minite==60)</p><p><b> {</b></p><p><b> minite=0;</b></p><p><b> hour++;</b></p><p> if(hour==24)</p><p>
54、<b> {</b></p><p><b> hour=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
55、; if(BUT==1)</p><p><b> {</b></p><p> dispbuf[0]=second%10;</p><p> dispbuf[1]=second/10;</p><p> dispbuf[3]=minite%10;</p><p> dispbuf[4
56、]=minite/10;</p><p> dispbuf[6]=hour%10;</p><p> dispbuf[7]=hour/10;</p><p> if(t_minite==minite&&t_hour==hour&&cancel!=0) LED=~LED;</p><p> else LE
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機數(shù)字鐘課程設(shè)計
- 單片機數(shù)字鐘課程設(shè)計
- 單片機課程設(shè)計---數(shù)字鐘設(shè)計
- 單片機課程設(shè)計報告-數(shù)字鐘的設(shè)計
- 單片機課程設(shè)計數(shù)字鐘報告
- 單片機課程設(shè)計--基于單片機數(shù)字鐘的設(shè)計
- 單片機課程設(shè)計--- 簡易數(shù)字鐘
- 單片機課程設(shè)計數(shù)字鐘
- 基于單片機的數(shù)字鐘課程設(shè)計
- 簡易數(shù)字鐘的單片機課程設(shè)計
- 單片機課程設(shè)計--數(shù)字鐘電子鐘
- 基于單片機的數(shù)字鐘課程設(shè)計
- 課程設(shè)計--單片機控制的數(shù)字鐘
- 課程設(shè)計---基于單片機的數(shù)字鐘的設(shè)計
- 單片機多功能電子數(shù)字鐘課程設(shè)計報告
- 單片機課程設(shè)計--智能電子數(shù)字鐘設(shè)計
- 簡易數(shù)字鐘的單片機課程設(shè)計1
- 單片機數(shù)字鐘畢業(yè)設(shè)計---單片機設(shè)計數(shù)字鐘
- 單片機的數(shù)字鐘設(shè)計
- 江蘇大學(xué)單片機課程設(shè)計-多功能數(shù)字鐘的設(shè)計
評論
0/150
提交評論