版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《單片機原理及應(yīng)用》課程設(shè)計</p><p> 題目:單片機電子時鐘</p><p><b> 班 級: </b></p><p><b> 姓 名: </b></p><p><b> 學(xué) 號: </b></p>
2、<p><b> 指導(dǎo)教師: </b></p><p><b> 目錄</b></p><p> 第一章 前言..............................................................1</p><p> 第二章 設(shè)計目的與要求...........
3、...............................2</p><p> 第三章 系統(tǒng)原理分析..............................................3</p><p> 第四章 硬件介紹......................................................4</p><p>
4、; 第五章 軟件實現(xiàn)與流程..........................................5</p><p> 5.1 主程序...................................................................5</p><p> 5.2 數(shù)據(jù)的顯示程序..............................
5、.....................7</p><p> 5.3 鍵盤響應(yīng)程序.......................................................8</p><p> 第六章 結(jié)束語..........................................................9</p><p&g
6、t; 參考文獻.....................................................................10</p><p> 附錄一 程序代碼.....................................................11</p><p> 附錄二 程序仿真圖.....................
7、............................15</p><p><b> 第一章 前言</b></p><p> 時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計出新型時鐘。</p&g
8、t;<p> 現(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。</p><p> 時鐘電路在計算機系統(tǒng)中起
9、著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法,典
10、型的時鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p> 本文主要介紹用單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法,本設(shè)計由單片機AT89S51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個單片機電子時鐘。</p><p> 第二章 設(shè)計目的與要求</p><p> 進行電路硬件設(shè)計和系統(tǒng)軟件編程,以及仿真調(diào)
11、試或制作。一般3~5人一組,每組完成的內(nèi)容不能雷同。</p><p> 選擇設(shè)計基于單片機的時鐘顯示器,數(shù)字鐘是一個將“時”、“分”、“秒”顯示計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒99毫秒,另外應(yīng)有校時功能。</p><p> 實現(xiàn)的功能:在數(shù)字鐘正常進行顯示時,其顯示周期為00:00:00至23:59:59,其中有五個按鍵,按下“暫?!辨I時鐘停止走動,按下
12、“開始”鍵時鐘開始走動,按下“秒設(shè)置”時鐘秒位自加1,加至60時向分位進1,按下“分設(shè)置”時鐘分位自加1,加至60時向時位進1,按下“時設(shè)置”時鐘秒位自加1,加至24時顯示00。</p><p> 第三章 系統(tǒng)原理分析</p><p> 系統(tǒng)設(shè)計中用到 89 C51 單片機的部分功能:包括內(nèi)部定時器,鍵盤擴展,程序中斷, 串口通信等。用一個六位的共陰極七段顯示器,可通過一個輸入/輸出口
13、作為顯示器數(shù)據(jù)發(fā)送端;另一個輸入/輸出口的六位作為顯示器各位的片選信號,另一個輸入/輸出口作為鍵盤擴展口使用。系統(tǒng)原理圖如圖1所示。</p><p><b> 圖1 系統(tǒng)原理圖</b></p><p><b> 圖2 數(shù)字鐘仿真圖</b></p><p><b> 第四章 硬件介紹</b>&l
14、t;/p><p> AT89C51:芯片共有40個引腳,引腳的排列順序為從靠芯片的缺口左邊那列逆時針數(shù)起,依次為1,2,3,4、、、40,其中芯片的1腳頂上有一個凹點。在單片機的40 個引腳中,電源引腳2根,外接晶體振蕩器引腳2根,控制引腳4根以及4組8為可編程I/O引腳32根。</p><p> 主要特性:與MCS-51兼容;4K字節(jié)可編程閃爍存儲器;壽命:1000寫/擦循環(huán);數(shù)據(jù)保留時
15、間:10年;全靜態(tài)工作:0Hz-24Hz;三級程序存儲器鎖定: 128*8位內(nèi)部RAM; 32可編程I/O線;兩個16位定時器/計數(shù)器; 5個中斷源;可編程串行通道;低功耗的閑置和掉電模式;片內(nèi)振蕩器和時鐘電路。</p><p> 主要管腳說明: P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)
16、據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p> P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p
17、><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸
18、出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p> P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p> 六位共陰級數(shù)碼管:cc表示共陰極的ac是共
19、陽極的設(shè)計中所用的是7段六位共陰級數(shù)碼管,如果要實現(xiàn)動態(tài)顯示必須位碼(1-6)輪流通低電位,也就是片選,段碼控制數(shù)碼管的顯示. 0-b,1-g,2-a,3-f,4-c,5-e,6-h,7-d。</p><p> 圖3數(shù)碼管顯示原理圖</p><p> 如圖3數(shù)碼管顯示原理圖所示,使用LED顯示器時,要注意是共陰還是共陽,要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對數(shù)字或字符進
20、行編碼。七段數(shù)碼管加上一個小數(shù)點,共計8段。因此為LED顯示器提供的編碼正好是一個字節(jié)。我們用的是共陰LED顯示器,根據(jù)電路連接圖顯示16進制數(shù)的編碼已列在下表。</p><p> 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,</p><p> 0 1 2 3 4 5</p><p>
21、 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,</p><p> 6 7 8 9 A B</p><p> 0x39 , 0x5e , 0x79 , 0x71 , 0x00</p><p> C D E F 無顯示</p><p> 動態(tài)顯示的
22、特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效,由另一位控制顯示碼值。選亮數(shù)碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應(yīng)略小于靜態(tài)顯示電路中的。我們這里正是利用的數(shù)碼管動態(tài)顯示來完成顯示功能。</p><p> 第五章 軟
23、件實現(xiàn)與流程</p><p><b> 5.1 主程序</b></p><p> 由于系統(tǒng)的主要功能都是由子程序來完成的,主程序基本上沒什么事可做,只是利用調(diào)用子程序的方式實現(xiàn)的,主程序流程圖如圖3所示。</p><p><b> 圖3 主程序流程圖</b></p><p> 5.2 數(shù)據(jù)的
24、顯示程序</p><p> 時鐘數(shù)字顯示涉及到兩個操作:發(fā)數(shù)據(jù)和改片選信號。先發(fā)片選,再發(fā)數(shù)據(jù)。用延時程序進行一個消影操作,這樣就很好地解決了重影問題。這樣做的關(guān)鍵在于,在極短的一段時間內(nèi)讓顯示器都不亮,等一切準備工作都做好了以后再發(fā)數(shù)據(jù),只要顯示頻率足夠快,是看不出顯示器有閃爍的。代碼如下:</p><p> shi=hour/10;</p><p> ge
25、=hour%10;</p><p><b> P3=0xfe;</b></p><p> P2=table1[shi];</p><p><b> delay(5);</b></p><p><b> P3=0xfd;</b></p><p>
26、 P2=table1[ge];</p><p><b> dp=1;</b></p><p> delay(5); </p><p> 這段顯示程序流程圖如圖4:</p><p> 圖4 數(shù)據(jù)顯示流程圖</p><p> 5.3 鍵盤響應(yīng)程序</p><p>
27、鍵盤分編碼鍵盤和非編碼鍵盤,鍵盤上閉合鍵的識別由專用的硬件編碼器實現(xiàn),并產(chǎn)生按鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別的稱為非編碼鍵盤,在單片機組成的各種系統(tǒng)中,用的最多的是非編碼鍵盤,也有用到編碼鍵盤的,我們這里用的就是非編碼鍵盤。如圖4鍵盤圖所示,當(dāng)按鈕按下時;端口會變成低電平,我們設(shè)計一段掃描程序來判斷那個端口是低電平來判斷是否有按鍵按下。</p><p> 鍵盤處理程序流程相對簡單
28、,只是簡單的判鍵與處理。當(dāng)設(shè)置按鍵按下為低電平時,對應(yīng)位數(shù)加1至滿進制。</p><p> 圖5 按鍵響應(yīng)程序流程</p><p><b> 第六章 結(jié)束語</b></p><p> 通過這次單片機設(shè)計,我加深了對課本專業(yè)知識的理解,平常都是理論知識的學(xué)習(xí),在此次課程設(shè)計中,真正做到了自己查閱資料、完成一個基本電路的設(shè)計。在此次的數(shù)字鐘
29、設(shè)計過程中,我更進一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和其具體的使用方法。當(dāng)然,在這個過程中我也遇到了困難,通過查閱資料,相互討論,我準確地找出錯誤所在并及時糾正了,這也是我最大的收獲,使自己的實驗動手能力有了進一步的提高,讓我對以后的工作學(xué)習(xí)有了更大的信心。</p><p> 回顧起此次設(shè)計,感慨頗多,從理論到實踐,我學(xué)到很多很多的東西,不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上沒有學(xué)到過的
30、內(nèi)容。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才是真正的知識,才能提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程遇到了各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計,把以前所學(xué)過的知識重新溫故,鞏固了所學(xué)的知識。</p><p> 此次
31、的課程設(shè)計,還讓我知道了最重要的是心態(tài),在你拿到題目時會覺得困難,但是只要充滿信心,腳踏實地,就肯定會完成的。</p><p><b> 參考文獻</b></p><p> [1]張齊、朱寧西編著.《單片機系統(tǒng)設(shè)計與開發(fā)--基于Proteus單片機仿真和C語言編程》北京:機械工業(yè)出版社.2008年</p><p> [2]馬忠梅編著.《單
32、片機的C語言應(yīng)用程序設(shè)計(第4版)》.北京:北京航天航空大學(xué)出版社.2007年</p><p> [3]李學(xué)禮編著.《基于Proteus的8051單片機實例教程》電子工業(yè)出版社,2008年</p><p> [4]戴佳戴、衛(wèi)恒、劉博文編著.《51單片機C語言應(yīng)用程序設(shè)計實例精講》電子工業(yè)出版社.2008年</p><p> [5]侯玉寶編著.《基于Proteu
33、s的51系列單片機設(shè)計與仿真》電子工業(yè)出版社.2008年</p><p><b> 附錄一 程序代碼</b></p><p> #include<reg51.h></p><p> #define uchar unsigned char </p><p> #define uint unsigned
34、 int</p><p> sbit set1=P1^0;//暫停</p><p> sbit set2=P1^1;//開始</p><p> sbit sets=P1^2;//秒設(shè)置</p><p> sbit setm=P1^3;//分設(shè)置</p><p> sbit seth=P1^4;//時設(shè)置<
35、;/p><p> sbit dp=P2^7;//小數(shù)點</p><p> uchar code table1[]={</p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,</p>
36、;<p> 0x39,0x5e,0x79,0x71};</p><p> uchar t0,hour,fen,miao,ge,shi,flag;</p><p> void delay(uint z) //延時子程序z的取值為這個函數(shù)的延時ms數(shù),如delay(200);大約延時200ms</p><p><b> {</b&
37、gt;</p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--); </p><p><b> }</b></p><p> void
38、init()</p><p><b> {</b></p><p> TMOD=0x01; //TMOD的值表示定時器工作方式選擇</p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p> EA=1;
39、 //開總中斷</p><p> ET0=1; //允許定時器0中斷</p><p> TR0=1; //啟動定時器</p><p><b> } </b></p><p> void timer0() interrupt 1 //定時器0的中斷號是1</p><p><b>
40、 {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> t0++;</b></p><p> if(t0==20)</p><p><b> {<
41、/b></p><p><b> t0=0;</b></p><p><b> miao++;</b></p><p> if(miao==60)</p><p><b> {</b></p><p><b> miao=0;&
42、lt;/b></p><p><b> fen++;</b></p><p> if(fen==60)</p><p><b> {</b></p><p><b> fen=0;</b></p><p><b> hour++
43、;</b></p><p> if(hour==24)</p><p><b> hour=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b
44、></p><p><b> }</b></p><p> void display(uchar hour,uchar fen,uchar miao)</p><p><b> {</b></p><p> shi=hour/10;</p><p> ge=h
45、our%10;</p><p><b> P3=0xfe;</b></p><p> P2=table1[shi];</p><p><b> delay(5);</b></p><p><b> P3=0xfd;</b></p><p> P
46、2=table1[ge];</p><p><b> dp=1;</b></p><p> delay(5); </p><p> shi=fen/10;</p><p> ge=fen%10;</p><p><b> P3=0xfb;</b></p>
47、<p> P2=table1[shi];</p><p><b> delay(5);</b></p><p><b> P3=0xf7;</b></p><p> P2=table1[ge];</p><p><b> dp=1;</b></p&
48、gt;<p><b> delay(5);</b></p><p> shi=miao/10;</p><p> ge=miao%10;</p><p><b> P3=0xef;</b></p><p> P2=table1[shi];</p><p&g
49、t;<b> delay(5);</b></p><p><b> P3=0xdf;</b></p><p> P2=table1[ge];</p><p> delay(5); </p><p><b> }</b></p><p> vo
50、id keyscan()</p><p> { </p><p> if(set1==0)</p><p> { delay(5);</p><p> if(set1==0)</p><p><b> {</b></p><p><b
51、> TR0=0;</b></p><p><b> flag=1;</b></p><p><b> }</b></p><p> while(!set1);</p><p> } </p><p> if(flag==1
52、) </p><p> { if(sets==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(sets==0)</p><p><b> { </b><
53、/p><p><b> miao++;</b></p><p> if(miao==60)</p><p><b> {</b></p><p><b> miao=0;</b></p><p><b> fen++;</b>
54、</p><p> if(fen==60)</p><p><b> {</b></p><p><b> fen=0;</b></p><p><b> hour++;</b></p><p> if(hour==24)</p>
55、<p><b> hour=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> while(!sets);</p><p
56、><b> }</b></p><p><b> }</b></p><p> if(setm==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p>
57、if(setm==0)</p><p><b> {</b></p><p><b> fen++;</b></p><p> if(fen==60)</p><p><b> {</b></p><p><b> fen=0;<
58、;/b></p><p><b> hour++;</b></p><p> if(hour==24)</p><p><b> hour=0;</b></p><p><b> }</b></p><p><b> }<
59、/b></p><p> while(!setm);</p><p><b> }</b></p><p> if(seth==0)</p><p><b> {</b></p><p><b> delay(5);</b></p&
60、gt;<p> if(seth==0)</p><p> { hour++;</p><p> if(hour==24)</p><p><b> hour=0;</b></p><p><b> }</b></p><p> while(!se
61、th);</p><p><b> }</b></p><p> if(set2==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(set2==0)</p>
62、<p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> t0=0;</b></p><p><b> flag=0;</b>&l
63、t;/p><p><b> TR0=1;</b></p><p><b> }</b></p><p> while(!set2);</p><p><b> }</b></p><p><b> }</b></p>
64、;<p> void main()</p><p><b> {</b></p><p><b> init();</b></p><p><b> while(1)</b></p><p> { display(hour,fen,miao); /
溫馨提示
- 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è)計——電子時鐘
- 單片機課程設(shè)計——電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計-電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計----電子時鐘
- 單片機課程設(shè)計-電子時鐘
- 單片機課程設(shè)計---單片機電子時鐘
- 單片機課程設(shè)計--電子時鐘設(shè)計
- 數(shù)字電子時鐘-單片機課程設(shè)計
- 單片機課程設(shè)計---電子時鐘.doc
- 單片機課程設(shè)計--單片機模擬電子時鐘設(shè)計
- 單片機課程設(shè)計--- 單片機電子時鐘設(shè)計
- 單片機課程設(shè)計報告---電子時鐘
- 單片機課程設(shè)計報告--電子時鐘
- 單片機課程設(shè)計---電子時鐘.doc
- 單片機課程設(shè)計--單片機模擬電子時鐘設(shè)計
評論
0/150
提交評論