版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 課程名稱:單片機原理及應(yīng)用</p><p><b> 報告題目:秒表</b></p><p><b> 學(xué)生姓名:</b></p><p> 所在學(xué)院:信息科學(xué)與工程學(xué)院</p><
2、;p><b> 專業(yè)班級:</b></p><p><b> 學(xué)生學(xué)號:</b></p><p><b> 指導(dǎo)教師:</b></p><p> 2013 年 12 月 25 日</p><p><b> 課程設(shè)計任務(wù)書</b></p
3、><p><b> 摘要</b></p><p> 近年來隨著科技的飛速發(fā)展,單片機的應(yīng)用正在不斷的走向深入,秒表計時器是電器制造,工業(yè)自動化控制、國防、實驗室以及科研單位理想的計時儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時器、定時器等時間測試。本文闡述了基于單片機的數(shù)字電子秒表設(shè)計。本設(shè)計主要特點是計時從00到99秒秒表系統(tǒng),方便了在計時精度要求不高的情況
4、下計時。因為計時精度為1,所以系統(tǒng)電路比較簡單。另外硬件部分設(shè)置了開始、暫停、清零、復(fù)位按鍵,可以對秒表系統(tǒng)進行計時控制。</p><p> 本設(shè)計的數(shù)字電子秒表系統(tǒng)采用AT89C51單片機位中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼管以及外部中斷電路來設(shè)計計時器。將軟、硬件有機的相結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)兩位LED顯示,顯示時間為00-99秒,計時精度為1秒,能正確地進行計時,
5、同時能記錄一次時間,其中軟件系統(tǒng)采用C語言編寫程序,包括顯示程序,定時中斷服務(wù),延時程序等,并用KeiL中調(diào)試運行,硬件系統(tǒng)利用Proteus強大的功能來實現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。</p><p> 關(guān)鍵詞:單片機;數(shù)字電子秒表;仿真</p><p><b> 目錄</b></p><p> 一、概述………
6、…………………………………………………………………1</p><p> 1.1設(shè)計目的……………………………………………………………………1</p><p> 1.2設(shè)計要求……………………………………………………………………1</p><p> 1.3設(shè)計意義……………………………………………………………………1</p><p>
7、二、系統(tǒng)總體方案及硬件設(shè)計…………………………………………………1</p><p> 2.1系統(tǒng)總體方案………………………………………………………………2</p><p> 2.2硬件設(shè)計……………………………………………………………………2</p><p> 2.21晶體振蕩電路………………………………………………………………2</p><
8、;p> 2.22復(fù)位電路……………………………………………………………………3</p><p> 2.23按鍵電路……………………………………………………………………3</p><p> 2.24 顯示電路……………………………………………………………………4</p><p> 2.25系統(tǒng)電路……………………………………………………………………4&l
9、t;/p><p> 三、軟件設(shè)計………………………………………………………………………5</p><p> 1.設(shè)計特點……………………………………………………………………5</p><p> 2.秒表設(shè)計源程序……………………………………………………………9</p><p> 3.程序流程圖……………………………………………………………
10、……10</p><p> 四、結(jié)論與心得………………………………………………………………11</p><p> 五、參考文獻………………………………………………………………………11</p><p><b> 概述</b></p><p><b> 1.1設(shè)計目的</b></p>
11、;<p> 設(shè)計一個單片機控制的秒表系統(tǒng)。利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼以及按鍵來設(shè)計秒表。將軟、硬件有機的結(jié)合起來,使得系統(tǒng)能夠正確的進行計時,同時具有開始/暫停,復(fù)位,讀數(shù),清零等功能。</p><p><b> 1.2設(shè)計要求</b></p><p> (1)共四位LED顯示,顯示時間為:</p&g
12、t;<p> ?。?)共五個按鍵,分別是開始、復(fù)位、保存、讀出、</p><p> ?。?)能同時記錄多個相對獨立的時間并分別顯示出來;</p><p> ?。?)顯示時間從00一直到99</p><p> (5)具有自動清零功能</p><p><b> 1.3 設(shè)計意義</b></p>
13、<p> ?。?)通過本次課程設(shè)計可以使我們進一步熟悉和掌握單片內(nèi)部和工作原理,了解單片機應(yīng)用系統(tǒng)設(shè)計的基本步驟和方法。</p><p> ?。?)通過利用AT89C52單片機,理解單片機在自動化儀表的作用以及掌握單片機的編程方法。</p><p> ?。?)通過設(shè)計一個簡單的實際應(yīng)用輸入以及顯示模擬系統(tǒng),掌握單片機仿真軟件的使用方法。</p><p>
14、 (4)該實驗通過單片機的定時器/計數(shù)器定時和計數(shù)原理,設(shè)計簡單的記時器系統(tǒng),擁有正確的計時、暫停、清零、保存、讀出的功能,該秒表在現(xiàn)實生活中應(yīng)用廣泛,具有現(xiàn)實意義。</p><p> 系統(tǒng)總體方案及硬件設(shè)計</p><p> 2.1 系統(tǒng)總體方案</p><p> 本系統(tǒng)采用AT89C52單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合硬件電路
15、如電源電路,晶振電路,復(fù)位電路,顯示電路,以及以一些按鍵電路等來設(shè)計計時器,將軟、硬件有機地結(jié)合起來。其中軟件系統(tǒng)采用C語言編寫程序,包括顯示、計數(shù)、中斷、延時、按鍵消抖程序等,并且在變程軟件中調(diào)試運行,硬件系統(tǒng)利用Proteus強大的功能來實現(xiàn),簡單且易于觀察,在仿真中可以觀察到實際的工作狀態(tài)。</p><p><b> 2.2 硬件設(shè)計</b></p><p>
16、 MCS-52系列單片機是8位單片機產(chǎn)品,89C52是其中的典型代表,基本模塊包括以下幾個部分:</p><p> CPU:89C52的CPU是8位的,另外89C51內(nèi)部有一個處理器</p><p> ROM:4KB的片內(nèi)程序存儲器,存放開發(fā)調(diào)試完成的應(yīng)用程序</p><p> RAM:256B的片內(nèi)數(shù)據(jù)存儲器,容量小,但作用大</p><
17、;p> I/O口:P0-P3,共4個口32條雙向且可位尋址的I/O口線</p><p> 中斷系統(tǒng):共5個中斷源,3個內(nèi)部中斷,2個外部中斷</p><p> 定時器/計數(shù)器:2個16位的可編程定時器/計數(shù)器</p><p> 通用串行口:全雙工通用異步接收器/發(fā)送器</p><p> 振蕩器:89C52的外接晶振與內(nèi)部時鐘振
18、蕩器位CPU提供時鐘信號</p><p> 總線控制:89C52對外提供若干控制總線,便于系統(tǒng)擴展</p><p> 2.2.1晶體振蕩點路</p><p><b> 圖1 晶體振蕩電路</b></p><p> 89C52芯片內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器。引線XTAL1和 XTAL2分別為反向放大
19、器的輸入和輸出,兩端跨接石英晶體及兩個電容就可構(gòu)成穩(wěn)定的自激振蕩器。</p><p> 這里,我們選用52單片機12MHZ的內(nèi)部振蕩方式,電容器C1,C2起穩(wěn)定振蕩頻率,并對振蕩頻率有微調(diào)作用C1和C2可在20-100PF之間取值,這里取33P。</p><p><b> 2.2.2復(fù)位電路</b></p><p><b> 圖
20、2 復(fù)位電路</b></p><p> 采用上電加按鍵復(fù)位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時間。當(dāng)單片機已在運行之中時,按下復(fù)位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加按鍵復(fù)位的操作。</p><p><b> 2.2.3按鍵電路</b></p><p><b> 圖3 按鍵電路</
21、b></p><p> 在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設(shè)計一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復(fù)雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P1口做開關(guān),P1.0開始/暫停,P1.1保存,P1.2讀數(shù),P1.3復(fù)位,P1.4清零。對于按鍵的設(shè)計,采
22、用了防抖動的程序設(shè)計,使系統(tǒng)的性能得到進一步的提升。當(dāng)按鍵被按 下時,相應(yīng)的引腳被拉低,經(jīng)掃描后,獲得鍵值,并執(zhí)行鍵功能程序,因此按下不同的按鍵,將執(zhí)行不同的功能程序。</p><p><b> 2.2.4顯示電路</b></p><p><b> 圖4 顯示電路</b></p><p> 顯示電路既可以選用液晶顯示
23、器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用兩個共陰極LED顯示,LED是七段式顯示器,內(nèi)部有7個條形發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的I/O口。在設(shè)計中,我們采用LED動態(tài)顯示,用P0口驅(qū)動顯示。由于P0口的輸出級是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出
24、高電平。</p><p> 2.2.5 系統(tǒng)電路圖:</p><p><b> 圖五 系統(tǒng)電路</b></p><p><b> 三、軟件設(shè)計</b></p><p><b> 3.1設(shè)計特點</b></p><p> 在軟件設(shè)計中,一般采
25、用模塊化的程序設(shè)計方法,它具有明顯的優(yōu)點。把一個多功能的復(fù)雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設(shè)計和調(diào)試,優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。應(yīng)用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都</p><p> 要完成一個明確的任務(wù),實現(xiàn)某個具體的功能,如:計數(shù)、延時、和顯示等,在具體需要時調(diào)用相應(yīng)的模塊即可。</p><
26、p> 3.2秒表設(shè)計源程序</p><p><b> 源程序如下:</b></p><p> #include <reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p>
27、<p> void diyi(); //函數(shù)聲明</p><p> void xianshi();//函數(shù)聲明</p><p> void panduan();//函數(shù)聲明</p><p> void delay(uchar z);//函數(shù)聲明</p><p> uchar t=0,i,j,temp,b; //定義
28、相關(guān)變量</p><p> uchar code at[]={0xe0,0xd0,0xb0,0x70};</p><p> uchar code as[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p> uchar code bs[]={0x80,0x40,0x20,0x10,0x
29、08,0x04,0x02,0x01};</p><p> uchar a[50];</p><p><b> //數(shù)組定義</b></p><p> void main()//主函數(shù)</p><p><b> {</b></p><p><b> diy
30、i();</b></p><p> EA=0; //調(diào)用定義函數(shù) </p><p><b> while(1)</b></p><p><b> {</b></p><p> panduan(); //調(diào)用判斷函數(shù)</p><p> xianshi
31、();//調(diào)用顯示函數(shù)</p><p><b> }</b></p><p><b> }</b></p><p> void diyi()//定義定義子函數(shù)</p><p><b> {</b></p><p> P2=0xbf;P0=0
32、xbf; </p><p> TMOD=0x01;</p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b
33、></p><p><b> TR0=1;</b></p><p><b> }</b></p><p> void exer1() interrupt 1 //定義定時器/計數(shù)器子函數(shù)</p><p><b> {</b></p><p&g
34、t;<b> uchar t1;</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> t1++;</b></p><p> if(t1==20)</p><p&
35、gt;<b> {</b></p><p> t1=0; t++; </p><p><b> if(t==99)</b></p><p><b> t=0;</b></p><p><b> }</b></p><p&
36、gt;<b> }</b></p><p> void xianshi()//定義顯示子函數(shù) </p><p><b> {</b></p><p> P2 = 0xdf;P0 =bs[0]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[t%10]; P2=0x1f;P0=0x
37、00;delay(3);</p><p> P2 = 0xdf;P0 =bs[1]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[(t/10)%10]; P2=0x1f;P0=0x00;delay(3);</p><p><b> }</b></p><p> void delay(uchar z)//
38、延時子函數(shù)</p><p><b> {</b></p><p> uchar i,j;</p><p> for(i=0;i<z;i++)</p><p> for(j=0;j<110;j++);</p><p><b> }</b></p>
39、;<p> void panduan()//判斷子函數(shù)</p><p><b> {</b></p><p><b> P3=0xfe; </b></p><p><b> delay(5);</b></p><p><b> temp=P3
40、;</b></p><p> temp=temp&0xf0;</p><p> if(temp!=0xf0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(temp!=0xf0
41、)</p><p><b> {</b></p><p> P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p> while(P3!=0xfe); //判斷是否有鍵按下及格鍵功能</p>
42、<p> if(temp==at[0]) </p><p> { EA=1;t=0;i=0;j=0; }</p><p> if(temp==at[1])</p><p><b> {</b></p><p><b> if(i<52)<
43、/b></p><p><b> a[i]=t;</b></p><p><b> i++;</b></p><p><b> }</b></p><p> if(temp==at[2])</p><p><b> {</
44、b></p><p><b> if(b==1)</b></p><p><b> { </b></p><p> if(j<52) t=a[j]; </p><p><b> j++; }</b></p><p><
45、b> }</b></p><p> if(temp==at[3])</p><p><b> {</b></p><p> EA=0;t=0; i=0;j=0;</p><p><b> }</b></p><p> P2 = 0xc0;P0
46、=bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p><b> }</b></p><p><b> }</b></p><p><b> P3=0xfd; </b></p><
47、;p><b> delay(5);</b></p><p><b> temp=P3;</b></p><p> temp=temp&0xf0;</p><p> if(temp!=0xf0)</p><p><b> {</b></p>
48、<p><b> delay(5);</b></p><p> if(temp!=0xf0)</p><p><b> {</b></p><p> P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;del
49、ay(3);</p><p> while(P3!=0xfd); //判斷是否有鍵按下及格鍵功能</p><p> if(temp==at[0]) </p><p> { EA=0; b=1;}</p><p> P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P
50、2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 3.3程序流程圖</b&g
51、t;</p><p><b> 四、結(jié)論與心得</b></p><p> 經(jīng)過幾個星期的課程設(shè)計,我學(xué)會了很多知識和技能。我從一開始對單片機一竅不通到現(xiàn)在的理解,我花費了很多的時間和精力,比如上網(wǎng)查閱資料,去圖書館借相關(guān)書籍,向身邊的同學(xué)討教等等。我重新對c語言又有了一些新的理解,也對單片機產(chǎn)生了濃厚的興趣。單片機對于我們電子專業(yè)的學(xué)生來說是一門很重要的學(xué)科,所以
52、我們好好學(xué)號這一門技術(shù),這對于我們未來的發(fā)展有很大的幫助。下面我來談?wù)劚救送ㄟ^這次課程設(shè)計的一些體會:</p><p> (1)、這段日子里,通過學(xué)習(xí)的理論知識和實踐相結(jié)合,我收獲了很多,這些收獲將是我人生的寶貴財富。</p><p> (2)、通過這次課程設(shè)計,讓我養(yǎng)成了發(fā)現(xiàn)問題、提出問題、解決問題的好習(xí)慣,也使我善于思考和動手,更增強了我與同學(xué)們的交流合作。</p>
53、<p> (3)、這次課程設(shè)計不僅讓我對c語言有了很大的認識,使我的編程能力有了很大的提高,也讓我對單片機產(chǎn)生了濃厚的興趣。</p><p> (4)、通過這次課程設(shè)計,切實的提高了我的動手能力和解決實際問題的能力。</p><p> 總之,這次課程設(shè)計雖然沒有達到我的預(yù)期,但是結(jié)果我還是可以接受的,畢竟這是自己的第一次接觸單片機。通過這次課程設(shè)計,不僅加深了我對c語言的理
54、解,更是讓我認識了單片機理論,鍛煉了我的動手能力和思考能力,使我養(yǎng)成了做事耐心和細心的習(xí)慣。最后感謝老師的指導(dǎo)和同學(xué)們的幫助。</p><p><b> 五、參考文獻</b></p><p> [1]于海生。微型計算機控制技術(shù)、清華大學(xué)出版社</p><p> [2]周立功。單片機實驗與實踐、北京航空航艦大學(xué)出版社</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è)計(c語言)
- 基于c語言單片機秒表設(shè)計
- 基于單片機的秒表設(shè)計單片機課程設(shè)計
- 單片機秒表課程設(shè)計
- 單片機秒表課程設(shè)計
- 單片機秒表課程設(shè)計
- 單片機課程設(shè)計---秒表
- 單片機秒表課程設(shè)計
- 秒表(單片機課程設(shè)計)
- 基于單片機的秒表課程設(shè)計
- 單片機秒表單片機課程設(shè)計
- 單片機多功能秒表課程設(shè)計--89c51單片機秒表的設(shè)計
- 單片機課程設(shè)計---秒表設(shè)計
- 課程設(shè)計--基于單片機的(秒表)設(shè)計
- 單片機課程設(shè)計--基于單片機的秒表系統(tǒng)設(shè)計
- 單片機秒表系統(tǒng)設(shè)計課程設(shè)計--基于8051的單片機秒表系統(tǒng)設(shè)計
- 基于89c51單片機的秒表課程設(shè)計
- 單片機課程設(shè)計-基于單片機的數(shù)字秒表的設(shè)計
- 單片機數(shù)字秒表課程設(shè)計
- 單片機課程設(shè)計-數(shù)字秒表
評論
0/150
提交評論