版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 本設(shè)計(jì)是一個(gè)基于單片機(jī)的電子秒表設(shè)計(jì)。設(shè)計(jì)采用AT89C51單片機(jī)和四位一體的LED數(shù)碼管,通過(guò)單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器定時(shí)的原理來(lái)達(dá)到秒表的計(jì)時(shí)功能。設(shè)計(jì)中秒表的開(kāi)始,暫停功能是通過(guò)控制單片機(jī)內(nèi)部定時(shí)器的打開(kāi)與關(guān)閉來(lái)實(shí)現(xiàn)的。最后采用proteus仿真軟件
2、將軟件與硬件相結(jié)合來(lái)模擬實(shí)現(xiàn)秒表的各項(xiàng)功能。</p><p> 關(guān)鍵詞:?jiǎn)纹瑱C(jī);秒表;功能</p><p><b> Abstract</b></p><p> This design is a microcontroller-based electronic stopwatch design. Design using AT89C51
3、microcontroller and four-in-one LED digital tube, through the microcontroller internal timer / counter timing principle to achieve a stopwatch timing function. Design of the stopwatch to start, pause function is achieved
4、 by opening and closing of the control microcontroller internal timer. Finally, proteus simulation software to software and hardware combination to simulate the various functions of the stopw</p><p> Keywor
5、d :SCM ,Stopwatch, functions</p><p> 基于單片機(jī)的秒表設(shè)計(jì)</p><p><b> 1 引言</b></p><p> 隨著現(xiàn)代科技的發(fā)展,自動(dòng)化理念已經(jīng)深入到了人們生活的各個(gè)領(lǐng)域。本課程設(shè)計(jì)是在學(xué)習(xí)先修課程《單片機(jī)原理與系統(tǒng)設(shè)計(jì)》之后,為加強(qiáng)對(duì)學(xué)生系統(tǒng)設(shè)計(jì)和應(yīng)用能力的培養(yǎng)而開(kāi)設(shè)的綜合設(shè)計(jì)訓(xùn)練環(huán)節(jié)。
6、本設(shè)計(jì)是一個(gè)基于單片機(jī)的電子秒表設(shè)計(jì),要求實(shí)現(xiàn)開(kāi)始,暫停與復(fù)位功能。精確度為0.1s,最大計(jì)時(shí)時(shí)間為999.9s。設(shè)計(jì)結(jié)合了軟件和硬件的一些相關(guān)知識(shí)。通過(guò)軟件編寫(xiě),硬件調(diào)試及仿真來(lái)實(shí)現(xiàn)。提高了大家的動(dòng)手能力,做到了學(xué)以致用。</p><p><b> 2 設(shè)計(jì)方案及原理</b></p><p><b> 2.1 設(shè)計(jì)方案</b></p&
7、gt;<p> 本設(shè)計(jì)通過(guò)單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)的原理來(lái)實(shí)現(xiàn)電子秒表的功能。首先將計(jì)數(shù)初值設(shè)定為19664,當(dāng)計(jì)數(shù)溢出后便會(huì)產(chǎn)生一個(gè)中斷,繼而執(zhí)行中斷程序,當(dāng)中斷次數(shù)達(dá)到兩次則表示0.1秒時(shí)間到,以此類(lèi)推便可擴(kuò)展到1秒,10秒等。三個(gè)按鍵功能用軟件查詢(xún)即可實(shí)現(xiàn),通過(guò)對(duì)定時(shí)器的打開(kāi)和關(guān)閉來(lái)實(shí)現(xiàn)秒表的開(kāi)始和暫停,在設(shè)計(jì)中我用一個(gè)鍵來(lái)控制開(kāi)始和暫停,方法是每次掃描到該按鍵按下后便對(duì)TR位取反。用另一個(gè)按鍵來(lái)控制秒表的清零功能,方法
8、是當(dāng)檢測(cè)到該按鍵被按下后便使num=0,從而使數(shù)碼管顯示為零。</p><p><b> 2.2 系統(tǒng)框圖</b></p><p> 系統(tǒng)框圖如圖1所示。</p><p><b> 圖1 系統(tǒng)結(jié)構(gòu)框圖</b></p><p><b> 2.3 系統(tǒng)原理</b></
9、p><p> 該系統(tǒng)在工作時(shí)從頭開(kāi)始執(zhí)行程序,首先掃描是否有鍵按下,如果沒(méi)有掃描到按鍵信號(hào),則系統(tǒng)一直執(zhí)行循環(huán)函數(shù);當(dāng)掃描到有按鍵信號(hào)輸入后單片機(jī)便開(kāi)始執(zhí)行按鍵子程序,然后依次由P0口和P2口送出相應(yīng)的段選信號(hào)和位選信號(hào),從而點(diǎn)亮數(shù)碼管,顯示當(dāng)前的計(jì)數(shù)值。</p><p><b> 3 硬件設(shè)計(jì)</b></p><p><b> 3
10、.1 芯片選擇</b></p><p> 在本設(shè)計(jì)中我采用了AT89C51單片機(jī)。</p><p> 3.2 硬件連接方法</p><p> 由于該設(shè)計(jì)要求數(shù)碼管顯示,所以我選用P0口作為段選端,但是P0口內(nèi)部沒(méi)有上拉電阻,因此不能輸出正常的高低電平,所以外接了一個(gè)九腳10K的排阻,排阻的公共端接單片機(jī)Vcc。用P2.4~P2.7分別接數(shù)碼管的1,
11、2,3,4四個(gè)位選端。用P3.4,P3.5口分別接兩個(gè)開(kāi)關(guān),開(kāi)關(guān)另一端接低電平(地),當(dāng)按下后便會(huì)有一個(gè)低電平輸入。用XTAL1與XTAL2外接一個(gè)11.0592MHZ的晶振電路,為單片機(jī)工作提供時(shí)鐘脈沖。在RST口外接一個(gè)復(fù)位電路,實(shí)現(xiàn)單片機(jī)的復(fù)位功能。</p><p> 硬件原理連接圖如圖2所示。</p><p><b> 3.3 硬件原理圖</b></
12、p><p> 硬件連接圖如圖2所示。</p><p> 圖2 硬件連接原理圖</p><p> 由圖可知這個(gè)系統(tǒng)由單片機(jī)最小系統(tǒng),四位一體數(shù)碼管,排阻以及限流電阻等元件組成。其中單片機(jī)外部晶振為單片機(jī)提供11.0592MHZ的時(shí)鐘脈沖。單片機(jī)的P0口為數(shù)碼管提供段選信號(hào),P2.4~P2.7口為數(shù)碼管提供位選信號(hào)。兩個(gè)按鈕一端分別接單片機(jī)的P3.4與P3.5口,另一
13、端接地,按下時(shí)為單片機(jī)輸入低電平。</p><p><b> 4 軟件設(shè)計(jì)</b></p><p><b> 4.1 程序流程圖</b></p><p> 在本設(shè)計(jì)中程序部分是由主程序和子程序構(gòu)成的,主程序流程圖如圖3所示。子程序流程圖如圖4所示。</p><p> 圖3 主程序流程圖
14、 圖4 顯示子程序流程圖</p><p><b> 4.2 程序結(jié)構(gòu)</b></p><p> 本設(shè)計(jì)在軟件方面我用C語(yǔ)言編程,程序共分為了三大模塊:按鍵模塊,顯示模塊與計(jì)數(shù)模塊。其中按鍵模塊與顯示模塊是用軟件查詢(xún)的方式來(lái)完成的,計(jì)數(shù)模塊是用中斷的方式來(lái)完成的。按鍵模塊是一用個(gè)keyscan()函數(shù)來(lái)實(shí)現(xiàn)的,其中用了兩個(gè)按鍵ke
15、y1與key2,key1用來(lái)給秒表清零,key2用來(lái)控制秒表的開(kāi)始和暫停功能。顯示模塊式用一個(gè)display()函數(shù)來(lái)實(shí)現(xiàn)的,在程序開(kāi)頭定義了一個(gè)code table[]數(shù)組,內(nèi)部元素為0到9的共陰極數(shù)碼管代碼,通過(guò)查詢(xún)數(shù)組的方式來(lái)點(diǎn)亮數(shù)碼管。計(jì)數(shù)模塊是用一個(gè)中斷服務(wù)程序來(lái)完成的,用單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器來(lái)計(jì)數(shù),設(shè)定一個(gè)合適的初值即可實(shí)現(xiàn)計(jì)數(shù)功能。</p><p><b> 5 仿真調(diào)試</
16、b></p><p><b> 5.1 問(wèn)題分析</b></p><p> 在仿真過(guò)程中遇到了很多問(wèn)題,這些問(wèn)題主要集中在軟件方面。首先是數(shù)碼管的顯示錯(cuò)誤,經(jīng)測(cè)試發(fā)現(xiàn)數(shù)碼管的顯示代碼輸入有誤。然后在擴(kuò)展的小數(shù)點(diǎn)不會(huì)一直顯示,后來(lái)將燒亮小數(shù)點(diǎn)的程序放入循環(huán)中問(wèn)題就解決了。</p><p><b> 5.2 仿真結(jié)果</
17、b></p><p> 設(shè)計(jì)完成后我在proteus中進(jìn)行了仿真,仿真結(jié)果如圖4所示。</p><p><b> 圖4 仿真結(jié)果</b></p><p><b> 6 實(shí)物調(diào)試</b></p><p><b> 6.1 問(wèn)題分析</b></p>&l
18、t;p> 由于電路板是自己焊接的,所以在剛開(kāi)始調(diào)試的時(shí)候出現(xiàn)了很多問(wèn)題。首先是數(shù)碼管B段始終不亮,因此我猜測(cè)是線(xiàn)路接觸不良,然后我用萬(wàn)用表將連接B段的每一條線(xiàn)路都測(cè)了一遍,最后發(fā)現(xiàn)是控制數(shù)碼管B段的單片機(jī)接口與限流電阻未接觸而導(dǎo)致的,經(jīng)過(guò)重新焊過(guò)以后問(wèn)題就解決了。然后還有一個(gè)問(wèn)題是數(shù)碼管的E段與F段總是顯示混亂,后經(jīng)過(guò)萬(wàn)用表測(cè)試發(fā)現(xiàn)是這兩段在焊接是發(fā)生了短路。</p><p><b> 6.2
19、 調(diào)試結(jié)果</b></p><p> 仿真成功后通過(guò)仿真結(jié)果焊接了一個(gè)實(shí)物,實(shí)物調(diào)試結(jié)果如圖5所示。</p><p><b> 圖5 實(shí)物調(diào)試</b></p><p><b> 7 總結(jié)</b></p><p> 本設(shè)計(jì)結(jié)合了軟件和硬件的一些相關(guān)知識(shí)。在硬件方面,用到了一個(gè)單片機(jī)
20、最小系統(tǒng)板,一個(gè)四位一體的七段LED數(shù)碼管,一個(gè)九腳10K的排阻,八個(gè)460歐姆的電阻。其中數(shù)碼管用來(lái)作為顯示工具;九腳10K的排阻作為P0口的上拉電阻;八個(gè)460歐姆的電阻作為限流電阻,以防通過(guò)數(shù)碼管電流過(guò)大而被被燒壞。</p><p> 在軟件方面我用C語(yǔ)言編程,程序共分為了三大模塊:按鍵模塊,顯示模塊與計(jì)數(shù)模塊。其中按鍵模塊與顯示模塊是用軟件查詢(xún)的方式來(lái)完成的,計(jì)數(shù)模塊是用中斷的方式來(lái)完成的。按鍵模塊是一
21、用個(gè)keyscan()函數(shù)來(lái)實(shí)現(xiàn)的,其中用了兩個(gè)按鍵key1與key2,key1用來(lái)給秒表清零,key2用來(lái)控制秒表的開(kāi)始和暫停功能。顯示模塊式用一個(gè)display()函數(shù)來(lái)實(shí)現(xiàn)的,在程序開(kāi)頭定義了一個(gè)code table[]數(shù)組,內(nèi)部元素為0到9的共陰極數(shù)碼管代碼,通過(guò)查詢(xún)數(shù)組的方式來(lái)點(diǎn)亮數(shù)碼管。計(jì)數(shù)模塊是用一個(gè)中斷服務(wù)程序來(lái)完成的,用單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器來(lái)計(jì)數(shù),設(shè)定一個(gè)合適的初值即可實(shí)現(xiàn)計(jì)數(shù)功能。</p><
22、;p><b> 參考文獻(xiàn)</b></p><p> [1] 王思明,張金敏,茍軍年等.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:科學(xué)出版社,2012.</p><p> [2] 郭天祥.51單片機(jī)C語(yǔ)言教程[M].北京:電子工業(yè)出版社,2009.</p><p><b> 附錄A 源程序</b></p>
23、;<p> #include<reg52.h> //52系列單片機(jī)頭文件</p><p> #define uchar unsigned char //宏定義</p><p> #define uint unsigned int</p><p> sbit N0=P
24、2^4;</p><p> sbit N1=P2^5; //申明U1鎖存器的鎖存端</p><p> sbit N2=P2^6;</p><p> sbit N3=P2^7;</p><p> sbit key1=P3^4;</p><p> sbit key2
25、=P3^5;</p><p> uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};</p><p> void delayms(uint); //聲明延時(shí)函數(shù)</p><p> void display(uchar,uchar,uc
26、har,uchar); //聲明顯示函數(shù) </p><p> void keyscan(); //聲明按鍵函數(shù)</p><p> uint num,num3;</p><p> uchar num1,num2,qian,bai,shi,ge; //變量聲明<
27、/p><p> void main() //主函數(shù)入口</p><p><b> {</b></p><p> TMOD=0x11; //設(shè)置T0,T1定時(shí)器</p><p> TH1=(65536-45872)/256;&
28、lt;/p><p> TL1=(65536-45872)%256;</p><p> EA=1; //開(kāi)總中斷 </p><p> ET1=1; //開(kāi)啟定時(shí)器T1中斷</p><p><b>
29、 TR1=0;</b></p><p> while(1) //程序停在這里等待中斷的發(fā)生,這個(gè)大循環(huán)也是實(shí)現(xiàn)數(shù)據(jù)顯示的主體循環(huán)</p><p><b> {</b></p><p> keyscan();</p><p> qian=num3/100
30、0;</p><p> bai=(num3-qian*1000)/100;</p><p> shi=(num3-1000*qian-100*bai)/10;</p><p><b> ge=num1;</b></p><p><b> P0=0x80;</b></p><
31、;p><b> N2=0;</b></p><p> delayms(5);</p><p><b> N2=1;</b></p><p><b> P0=0x00;</b></p><p> display(qian,bai,shi,ge);</p>
32、;<p><b> }</b></p><p><b> }</b></p><p> void display(uchar qian,uchar bai,uchar shi,uchar ge) //數(shù)碼管顯示子函數(shù)</p><p><b> {</b></p>
33、<p> P0=table[qian];</p><p><b> N0=0;</b></p><p> delayms(5);</p><p><b> N0=1;</b></p><p><b> P0=0x00;</b></p><
34、;p> P0=table[bai];</p><p><b> N1=0;</b></p><p> delayms(5);</p><p><b> N1=1;</b></p><p><b> P0=0x00;</b></p><p>
35、; P0=table[shi];</p><p><b> N2=0;</b></p><p> delayms(5);</p><p><b> N2=1;</b></p><p><b> P0=0x00;</b></p><p> P0
36、=table[ge];</p><p><b> N3=0;</b></p><p> delayms(5);</p><p><b> N3=1;</b></p><p><b> P0=0x00;</b></p><p><b>
37、 }</b></p><p> void delayms(uint xms) //延時(shí)子函數(shù)</p><p><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=xms;i>0;i--)
38、//i=xms即延時(shí)約xms毫秒</p><p> for(j=110;j>0;j--);</p><p><b> }</b></p><p> void T1_time()interrupt 3 //定時(shí)器T1,中斷序號(hào)為3</p><p><b> {</b></p
39、><p> TH1=(65536-45872)/256; //重裝初值</p><p> TL1=(65536-45872)%256; </p><p><b> num2++;</b></p><p> if(num2==2) //如果到了2次,說(shuō)明0.1秒的時(shí)間到</p&g
40、t;<p><b> {</b></p><p> num2=0; //然后把num2清零重新再計(jì)2次</p><p><b> num1++;</b></p><p> if(num1==10)</p><p><b> num1=0;&
41、lt;/b></p><p><b> num++;</b></p><p> if(num==1000)</p><p><b> num=0;</b></p><p><b> num3++;</b></p><p> if(num3
42、==10000)</p><p><b> num3=0;</b></p><p><b> } </b></p><p><b> }</b></p><p> void keyscan() //按鍵子函數(shù)</p>&
43、lt;p><b> {</b></p><p> if(key1==0) //清零</p><p><b> {</b></p><p> delayms(5); //延時(shí)去抖</p><p> if(key1==
44、0) </p><p><b> {</b></p><p> while(!key1) //等待按下</p><p><b> { </b></p><p> TR1=1; //定時(shí)器TR1打開(kāi)</p><p><b>
45、num3=0;</b></p><p> num1=0; //送數(shù)據(jù)num=0</p><p> TR1=0; //定時(shí)器TR1關(guān)閉</p><p><b> }</b></p><p><b> }</b></p><p>&l
46、t;b> }</b></p><p> if(key2==0) //暫停和開(kāi)始</p><p><b> {</b></p><p> delayms(5);</p><p> if(key2==0)</p><p><b&
47、gt; {</b></p><p> while(!key2);</p><p> TR1=~TR1; //每次按下,TR1的狀態(tài)時(shí)相反的</p><p><b> }</b></p><p><b> }</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)——電子秒表
- 單片機(jī)課程設(shè)計(jì)---電子秒表設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---秒表
- 單片機(jī)秒表課程設(shè)計(jì)
- 秒表(單片機(jī)課程設(shè)計(jì))
- 單片機(jī)課程設(shè)計(jì)---秒表設(shè)計(jì)
- 單片機(jī)技術(shù)課程設(shè)計(jì)--電子秒表設(shè)計(jì)
- 單片機(jī)秒表單片機(jī)課程設(shè)計(jì)
- 單片機(jī)秒表電子時(shí)鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的秒表設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
- 單片機(jī)數(shù)字秒表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字秒表
- 課程設(shè)計(jì)報(bào)告—基于單片機(jī)的電子秒表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字秒表
- 單片機(jī)秒表設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告-秒表設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論