版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計報告</b></p><p> 課程名稱:單片機原理及應用</p><p><b> 報告題目:秒表</b></p><p><b> 學生姓名:</b></p><p> 所在學院:信息科學與工程學院</p><
2、;p><b> 專業(yè)班級:</b></p><p><b> 學生學號:</b></p><p><b> 指導教師:</b></p><p> 2013 年 12 月 25 日</p><p><b> 課程設計任務書</b></p
3、><p><b> 摘要</b></p><p> 近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷的走向深入,秒表計時器是電器制造,工業(yè)自動化控制、國防、實驗室以及科研單位理想的計時儀器,它廣泛應用于各種繼電器、電磁開關,控制器、延時器、定時器等時間測試。本文闡述了基于單片機的數(shù)字電子秒表設計。本設計主要特點是計時從00到99秒秒表系統(tǒng),方便了在計時精度要求不高的情況
4、下計時。因為計時精度為1,所以系統(tǒng)電路比較簡單。另外硬件部分設置了開始、暫停、清零、復位按鍵,可以對秒表系統(tǒng)進行計時控制。</p><p> 本設計的數(shù)字電子秒表系統(tǒng)采用AT89C51單片機位中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結合顯示電路、LED數(shù)碼管以及外部中斷電路來設計計時器。將軟、硬件有機的相結合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)兩位LED顯示,顯示時間為00-99秒,計時精度為1秒,能正確地進行計時,
5、同時能記錄一次時間,其中軟件系統(tǒng)采用C語言編寫程序,包括顯示程序,定時中斷服務,延時程序等,并用KeiL中調(diào)試運行,硬件系統(tǒng)利用Proteus強大的功能來實現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。</p><p> 關鍵詞:單片機;數(shù)字電子秒表;仿真</p><p><b> 目錄</b></p><p> 一、概述………
6、…………………………………………………………………1</p><p> 1.1設計目的……………………………………………………………………1</p><p> 1.2設計要求……………………………………………………………………1</p><p> 1.3設計意義……………………………………………………………………1</p><p>
7、二、系統(tǒng)總體方案及硬件設計…………………………………………………1</p><p> 2.1系統(tǒng)總體方案………………………………………………………………2</p><p> 2.2硬件設計……………………………………………………………………2</p><p> 2.21晶體振蕩電路………………………………………………………………2</p><
8、;p> 2.22復位電路……………………………………………………………………3</p><p> 2.23按鍵電路……………………………………………………………………3</p><p> 2.24 顯示電路……………………………………………………………………4</p><p> 2.25系統(tǒng)電路……………………………………………………………………4&l
9、t;/p><p> 三、軟件設計………………………………………………………………………5</p><p> 1.設計特點……………………………………………………………………5</p><p> 2.秒表設計源程序……………………………………………………………9</p><p> 3.程序流程圖……………………………………………………………
10、……10</p><p> 四、結論與心得………………………………………………………………11</p><p> 五、參考文獻………………………………………………………………………11</p><p><b> 概述</b></p><p><b> 1.1設計目的</b></p>
11、;<p> 設計一個單片機控制的秒表系統(tǒng)。利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,結合顯示電路、LED數(shù)碼以及按鍵來設計秒表。將軟、硬件有機的結合起來,使得系統(tǒng)能夠正確的進行計時,同時具有開始/暫停,復位,讀數(shù),清零等功能。</p><p><b> 1.2設計要求</b></p><p> ?。?)共四位LED顯示,顯示時間為:</p&g
12、t;<p> ?。?)共五個按鍵,分別是開始、復位、保存、讀出、</p><p> (3)能同時記錄多個相對獨立的時間并分別顯示出來;</p><p> ?。?)顯示時間從00一直到99</p><p> ?。?)具有自動清零功能</p><p><b> 1.3 設計意義</b></p>
13、<p> (1)通過本次課程設計可以使我們進一步熟悉和掌握單片內(nèi)部和工作原理,了解單片機應用系統(tǒng)設計的基本步驟和方法。</p><p> ?。?)通過利用AT89C52單片機,理解單片機在自動化儀表的作用以及掌握單片機的編程方法。</p><p> (3)通過設計一個簡單的實際應用輸入以及顯示模擬系統(tǒng),掌握單片機仿真軟件的使用方法。</p><p>
14、 (4)該實驗通過單片機的定時器/計數(shù)器定時和計數(shù)原理,設計簡單的記時器系統(tǒng),擁有正確的計時、暫停、清零、保存、讀出的功能,該秒表在現(xiàn)實生活中應用廣泛,具有現(xiàn)實意義。</p><p> 系統(tǒng)總體方案及硬件設計</p><p> 2.1 系統(tǒng)總體方案</p><p> 本系統(tǒng)采用AT89C52單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結合硬件電路
15、如電源電路,晶振電路,復位電路,顯示電路,以及以一些按鍵電路等來設計計時器,將軟、硬件有機地結合起來。其中軟件系統(tǒng)采用C語言編寫程序,包括顯示、計數(shù)、中斷、延時、按鍵消抖程序等,并且在變程軟件中調(diào)試運行,硬件系統(tǒng)利用Proteus強大的功能來實現(xiàn),簡單且易于觀察,在仿真中可以觀察到實際的工作狀態(tài)。</p><p><b> 2.2 硬件設計</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)試完成的應用程序</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)部有一個高增益反相放大器,用于構成振蕩器。引線XTAL1和 XTAL2分別為反向放大
19、器的輸入和輸出,兩端跨接石英晶體及兩個電容就可構成穩(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復位電路</b></p><p><b> 圖
20、2 復位電路</b></p><p> 采用上電加按鍵復位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加按鍵復位的操作。</p><p><b> 2.2.3按鍵電路</b></p><p><b> 圖3 按鍵電路</
21、b></p><p> 在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設計一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P1口做開關,P1.0開始/暫停,P1.1保存,P1.2讀數(shù),P1.3復位,P1.4清零。對于按鍵的設計,采
22、用了防抖動的程序設計,使系統(tǒ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口。在設計中,我們采用LED動態(tài)顯示,用P0口驅(qū)動顯示。由于P0口的輸出級是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出
24、高電平。</p><p> 2.2.5 系統(tǒng)電路圖:</p><p><b> 圖五 系統(tǒng)電路</b></p><p><b> 三、軟件設計</b></p><p><b> 3.1設計特點</b></p><p> 在軟件設計中,一般采
25、用模塊化的程序設計方法,它具有明顯的優(yōu)點。把一個多功能的復雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設計和調(diào)試,優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結構層次一目了然。應用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都</p><p> 要完成一個明確的任務,實現(xiàn)某個具體的功能,如:計數(shù)、延時、和顯示等,在具體需要時調(diào)用相應的模塊即可。</p><
26、p> 3.2秒表設計源程序</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、相關變量</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> 四、結論與心得</b></p><p> 經(jīng)過幾個星期的課程設計,我學會了很多知識和技能。我從一開始對單片機一竅不通到現(xiàn)在的理解,我花費了很多的時間和精力,比如上網(wǎng)查閱資料,去圖書館借相關書籍,向身邊的同學討教等等。我重新對c語言又有了一些新的理解,也對單片機產(chǎn)生了濃厚的興趣。單片機對于我們電子專業(yè)的學生來說是一門很重要的學科,所以
52、我們好好學號這一門技術,這對于我們未來的發(fā)展有很大的幫助。下面我來談談本人通過這次課程設計的一些體會:</p><p> (1)、這段日子里,通過學習的理論知識和實踐相結合,我收獲了很多,這些收獲將是我人生的寶貴財富。</p><p> (2)、通過這次課程設計,讓我養(yǎng)成了發(fā)現(xiàn)問題、提出問題、解決問題的好習慣,也使我善于思考和動手,更增強了我與同學們的交流合作。</p>
53、<p> (3)、這次課程設計不僅讓我對c語言有了很大的認識,使我的編程能力有了很大的提高,也讓我對單片機產(chǎn)生了濃厚的興趣。</p><p> (4)、通過這次課程設計,切實的提高了我的動手能力和解決實際問題的能力。</p><p> 總之,這次課程設計雖然沒有達到我的預期,但是結果我還是可以接受的,畢竟這是自己的第一次接觸單片機。通過這次課程設計,不僅加深了我對c語言的理
54、解,更是讓我認識了單片機理論,鍛煉了我的動手能力和思考能力,使我養(yǎng)成了做事耐心和細心的習慣。最后感謝老師的指導和同學們的幫助。</p><p><b> 五、參考文獻</b></p><p> [1]于海生。微型計算機控制技術、清華大學出版社</p><p> [2]周立功。單片機實驗與實踐、北京航空航艦大學出版社</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機秒表課程設計(c語言)
- 基于c語言單片機秒表設計
- 基于單片機的秒表設計單片機課程設計
- 單片機秒表課程設計
- 單片機秒表課程設計
- 單片機秒表課程設計
- 單片機課程設計---秒表
- 單片機秒表課程設計
- 秒表(單片機課程設計)
- 基于單片機的秒表課程設計
- 單片機秒表單片機課程設計
- 單片機多功能秒表課程設計--89c51單片機秒表的設計
- 單片機課程設計---秒表設計
- 課程設計--基于單片機的(秒表)設計
- 單片機課程設計--基于單片機的秒表系統(tǒng)設計
- 單片機秒表系統(tǒng)設計課程設計--基于8051的單片機秒表系統(tǒng)設計
- 基于89c51單片機的秒表課程設計
- 單片機課程設計-基于單片機的數(shù)字秒表的設計
- 單片機數(shù)字秒表課程設計
- 單片機課程設計-數(shù)字秒表
評論
0/150
提交評論