版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《單片機(jī)原理及應(yīng)用》</p><p><b> 課程設(shè)計報告</b></p><p><b> 倒</b></p><p><b> 計</b></p><p><b> 時</b></p><p>&
2、lt;b> 器</b></p><p><b> 設(shè)</b></p><p><b> 計</b></p><p> 專 業(yè) 電氣自動化</p><p> 班 級 </p><p> 姓
3、名 </p><p> 學(xué) 號 </p><p> 二0一四 年 一 月 二日</p><p><b> 目錄 </b></p><p> 1.功能設(shè)計…………………………………………………2</p><p>
4、; 2.方案設(shè)計…………………………………………………2</p><p> 3.硬件設(shè)計…………………………………………………2</p><p> 3.1復(fù)位電路……………………………………………………3</p><p> 3.2晶振電路……………………………………………………3</p><p> 3.3時鐘電路…………………………
5、…………………………3</p><p> 3.4按鍵電路……………………………………………………4</p><p> 3.5蜂鳴器電路…………………………………………………4</p><p> 3.6數(shù)碼管顯示電路……………………………………………5</p><p> 3.7單片機(jī)定時器使用…………………………………………6</
6、p><p> 4.程序設(shè)計…………………………………………………6</p><p> 4.1總程序圖……………………………………………………7</p><p> 4.2定時器T0流程圖…………………………………………8</p><p> 4.3定時器T1流程圖…………………………………………8</p><p>
7、5.小結(jié)………………………………………………………10</p><p><b> 附錄A電路設(shè)計</b></p><p><b> 附錄B程序代碼</b></p><p><b> 1功能分析</b></p><p> 題目三:倒計時器課程設(shè)計</p>&
8、lt;p> 基本功能要求:可實現(xiàn)倒計時功能,計時時間可通過按鍵進(jìn)行設(shè)定,設(shè)定完成后啟動倒計時,計時時間到時可通過聲光報警方式提示。</p><p> (1)可實現(xiàn)倒計時功能:通過運用單片機(jī)的定時器T0中斷方式1控制發(fā)光二極管,定時器T1斷方式3進(jìn)行時間自減一。本程序最大倒計時時間為一天。</p><p> (2)計時時間可通過按鍵進(jìn)行設(shè)定: 通過運用獨立鍵盤控制時,分,秒的設(shè)定
9、。按鍵K1控制小時讓小時以加一方式設(shè)定,按鍵K2控制分鐘讓分鐘以加一方式設(shè)定,</p><p> 按鍵K3控制秒讓秒以加一方式設(shè)定,按鍵K4控制定時器開關(guān)。</p><p> (3)設(shè)定完成后啟動倒計時:通過按下獨立鍵盤k4控制倒計時器開關(guān)。</p><p> (4)計時時間到時可通過聲光報警方式提示:通過運用發(fā)光二極管在最后十秒時閃爍和蜂鳴器在最后十秒時進(jìn)行
10、聲光報警。</p><p><b> 2方案設(shè)計</b></p><p> 圖1 倒計時的總體框圖</p><p><b> 3、硬件電路設(shè)計</b></p><p> LED數(shù)碼管倒計時器以STC89C52單片機(jī)為核心,起著控制作用。系統(tǒng)包括六位數(shù)碼管顯示電路,按鍵電路,復(fù)位電路,時鐘電路
11、以及蜂鳴器電路。 </p><p><b> 單片機(jī)最小系統(tǒng)</b></p><p> 最小系統(tǒng)就是單片機(jī)在發(fā)揮具體測控功能時所必須的組成部 </p><p> 分。如下圖所示為最小系統(tǒng)方框圖:</p><p><b> 圖2單片機(jī)最小系統(tǒng)<
12、/b></p><p><b> (1).復(fù)位電路</b></p><p> 復(fù)位是單片機(jī)的初始化操作,只需給STC89C52的復(fù)位引腳RST加上大于2個機(jī)器周期的高電平就可得單片機(jī)復(fù)位,復(fù)位時,PC初始化為0000H,使單片機(jī)重新啟動。在系統(tǒng)中,有時會出現(xiàn)顯示不正常,也為了調(diào)試方便,我們需要設(shè)計一個復(fù)位電路。本系統(tǒng)采用的電路如圖3所示。按鍵復(fù)位用在系統(tǒng)運行
13、時的復(fù)位,使系統(tǒng)重新運行。復(fù)位電路如下圖所示。</p><p> 圖3 復(fù)位電路原理圖</p><p><b> (2).晶振電路</b></p><p> 晶振與單片機(jī)的腳XTAL0和腳XTAL1構(gòu)成的振蕩電路中會產(chǎn)生偕波(也就是不希望存在的其他頻率的波),這個波對電路的影響不大,但會降低電路的時鐘振蕩器的穩(wěn)定性。為了電路的穩(wěn)定性起見,
14、ATMEL公司只是建議在晶振的兩引腳處接入兩個10pf-50pf的瓷片電容接地來削減偕波對電路的穩(wěn)定性的影響,所以晶振所配的電容在10pf-50pf之間都可以的。但是主流是接入兩個33pf的瓷片電容,此次電路用33PF。</p><p><b> (3).時鐘電路</b></p><p> 時鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運行都是以時鐘頻率為基準(zhǔn),有條不紊地
15、一拍一拍地工作。因此,時鐘頻率直接影響單片機(jī)的速度,時鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)穩(wěn)定性。常用的時鐘電路有兩種方式,一種是內(nèi)部時鐘方式,另一種是外部時鐘方式。</p><p> 單片機(jī)必須在時鐘的驅(qū)動下才能工作。在單片機(jī)內(nèi)部有一個時鐘振蕩電路,只要外界一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機(jī)內(nèi)部的各個單元,決定單片機(jī)的工作速度。本系統(tǒng)使用的是內(nèi)部時鐘方式。時鐘電路如下圖4所示。</p>&l
16、t;p> 圖4 時鐘電路原理圖</p><p> 單片機(jī)在工作時,有內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),f表示。圖4中的時鐘頻率為12MHz,即f=12MHz,則時鐘周期為1/12us。</p><p><b> (4).按鍵電路</b></p><p> 本
17、系統(tǒng)的按鍵電路的作用是能夠調(diào)整倒計時的初始值,倒計時是按時、分、秒順尋排列顯示的,用三個按鍵分別設(shè)定時、分、秒,所達(dá)到的效果是按一下對應(yīng)的鍵時,所對應(yīng)的值加一。在程序中用K1對應(yīng)時的設(shè)定,K2對應(yīng)分的設(shè)定,K3對應(yīng)秒的設(shè)定。按K4鍵則系統(tǒng)開始運行。按鍵電路如下圖5所示。</p><p> 圖5 按鍵電路原理圖</p><p> (5). 蜂鳴器電路</p><p&g
18、t; 蜂鳴器電路是由一個有源蜂鳴器、一個電阻和一個開關(guān)三極管組成。此電路的作用是倒計時時間到零時,蜂鳴器發(fā)出報警聲。在本系統(tǒng)中,是利用單片機(jī)的P2^3口來控制,P2^3為低電平時,三極管導(dǎo)通,蜂鳴器報警。電路如下圖6所示</p><p> 圖6 蜂鳴器電路原理圖</p><p> (6).數(shù)碼管顯示電路</p><p> 在這里我們使用的是8段數(shù)碼管顯示(包
19、含小數(shù)點),通常在顯示上我們采用的方法一般包括兩種:一種是靜態(tài)顯示,另一種是動態(tài)顯示。其中靜態(tài)顯示的特點是顯示穩(wěn)定不閃爍,程序編寫簡單,但占用端口資源多,所耗得電能較大;動態(tài)顯示的特點是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但是相對靜態(tài)顯示而言占用端口資源少。在本設(shè)計中,為了減少端口資源,降低電能消耗,采用的是動態(tài)顯示方法。</p><p> (7).單片機(jī)定時器的使用</p><p>
20、本系統(tǒng)所用到的STC89C52有3個16位的定時器,而本系統(tǒng)只用到了定時器0和定時器1,所使用的工作方式都是定時器工作方式1,方式1時16位計數(shù)結(jié)構(gòu)的工作方式,計數(shù)器由TH0或TH1的全部8位和TL0或TL1的全部8位構(gòu)成。使用工作方式1功能時,定時時間計算公式是:</p><p> (65536-計數(shù)初值)*機(jī)器周期</p><p> 機(jī)器周期=晶振周期*12</p>
21、<p> 本系統(tǒng)所用到的定時器0的定時時間是50ms;定時器1的定時時間是50ms;而電路所用的晶振是12MHZ,算得一個機(jī)器周期為1us。</p><p> ?。?5536-50000)/256;</p><p> (65536-50000)%256;</p><p> 4、軟件設(shè)計與流程圖</p><p> 本系統(tǒng)中,是
22、利用軟件和硬件相互結(jié)合,以實現(xiàn)電路功能。軟件在系統(tǒng)中起著舉足輕重的作用,利用程序?qū)τ布_(dá)到控制作用。因此下面說明軟件的實現(xiàn)。</p><p> 倒計時器主程序流程圖</p><p> 程序的的開始時初始化數(shù)碼管的段選和位選,數(shù)碼管不顯示。程序中用到了兩個定時器,接下來先設(shè)定定時器0和定時器1的工作方式,并且給兩個定時器裝初值,定時器0的定時時間是50ms,用作掃描數(shù)碼管顯示,定時器1的
23、定時時間是50ms,用作定時器時間的遞減。然后給定時器設(shè)定初值,開啟定時器。最后進(jìn)入死循環(huán)函數(shù),在循環(huán)函數(shù)中,對按鍵進(jìn)行掃描,如果有鍵按下,執(zhí)行按鍵函數(shù),并檢查是否需要報警。流程圖如下圖7所示:</p><p> 圖7 倒計時器主程序流程圖</p><p> (2).定時器0的中斷程序流程圖</p><p> 定時器0的定時時間是50ms,用作掃描數(shù)碼管顯示,
24、在定時器0開啟時,定時器0開始定時,此時主程序正常運行,當(dāng)定時器0的定時時間到時,主程序不在執(zhí)行,開始進(jìn)入中斷程序,在中斷程序中,對9位數(shù)碼管進(jìn)行動態(tài)掃描。中斷程序執(zhí)行完后返回主程序。如圖8所示。</p><p> 圖8定時器0的中斷程序流程圖</p><p> (3).定時器1的中斷程序流程圖</p><p> 定時器1的定時時間是50ms,用作是倒計時時間
25、以秒來自減,在定時器1開啟時,定時器1開始定時,此時主程序正常運行,當(dāng)定時器0的定時時間到時,主程序不在執(zhí)行,開始進(jìn)入中斷程序,在中斷程序中,設(shè)定倒計時的時間變化。中斷程序執(zhí)行完后返回主程序。如圖9所示。</p><p> 圖9 定時器1的中斷程序流程圖</p><p><b> 5、總結(jié)經(jīng)驗和體會</b></p><p> 在這次的單片
26、機(jī)程序課程設(shè)計中,學(xué)到了關(guān)于單片機(jī)的很多東西,單片機(jī)具有軟硬結(jié)合,體積小,可以很容易嵌入到各種應(yīng)用系統(tǒng)中,單片機(jī)是我們的這個專業(yè)中很重要的一門課程,同時也是一門比較難學(xué)的課程,這次實踐讓我對單片機(jī)有了更深一步的了解,讓我們真正做到了理論聯(lián)系實踐,把我們所學(xué)的知識都運用到實踐中去,這樣就能把單片機(jī)學(xué)的更好。在設(shè)計制作倒計時器的過程中,我深切體會到,實踐是理論運用的最好檢驗。本次設(shè)計是對我所學(xué)知識的一次綜合性檢測和考驗,無論是動手能力還是理
27、論知識運用能力都得到了提高,同時加深了我對網(wǎng)絡(luò)資源認(rèn)識,大大提高了查閱資料的能力和效率,使我有充足的時間投入到電路制作當(dāng)中。本系統(tǒng)的制作主要應(yīng)用到了模擬電子技術(shù)、數(shù)字電子技術(shù)、單片機(jī)控制技術(shù)、電子工藝等多方面的知識。在硬件調(diào)試過程中,我也學(xué)會不少的東西,掌握一些調(diào)試方法。在設(shè)計仿真圖和編些程序中,對Protel和Keil等軟件掌握的更加牢固。</p><p><b> 附錄A:電路設(shè)計</b&g
28、t;</p><p> 附錄B:倒計時器源程序(C語言)</p><p> #include<reg52.h> //52系列單片機(jī)頭文件</p><p> #define uchar unsigned char//宏定義</p><p> #define uint unsigned int//宏定義</p
29、><p> sbit key1=P3^4; //獨立鍵盤端口聲明</p><p> sbit key2=P3^5;</p><p> sbit key3=P3^6;</p><p> sbit key4=P3^7;</p><p> sbit dula=P2^6; //申明u1鎖存器的鎖存端</p
30、><p> sbit wela=P2^7; //申明u2鎖存器的鎖存端</p><p> sbit led=P1^0; //二極管端口聲明</p><p> sbit beep=P2^3; //蜂鳴器端口聲明</p><p> uchar code table[]={ //共陰極數(shù)碼管編碼</p><
31、p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71};</p><p> uchar num0,num, sh,sl,s,fh,fl,f,m,mh,ml,
32、h;//定義變量</p><p> ///////////////延時/////////////////////</p><p> void delayms( uint xms) </p><p><b> {</b></p><p><b> uint i,j;</b></p>
33、;<p> for(i=xms;i>0;i--)</p><p> for(j=110;j>0;j--);</p><p><b> }</b></p><p> /////////////初始化////////////////////////</p><p> void init(
34、)</p><p><b> {</b></p><p> TMOD=0x11; //設(shè)置定時器工作方式</p><p> TCON=0x00;</p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;&l
35、t;/p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> ET1=1
36、;</b></p><p><b> TR0=0; </b></p><p><b> TR1=0;</b></p><p><b> } </b></p><p> /////////// //顯示子函數(shù)//////////////////////////
37、</p><p> void display(uchar s,uchar f,uchar m)</p><p><b> {</b></p><p><b> sh=s/10;</b></p><p><b> sl=s%10;</b></p><p
38、><b> fh=f/10;</b></p><p><b> fl=f%10;</b></p><p><b> mh=m/10;</b></p><p><b> ml=m%10; </b></p><p><b> dula
39、=1;</b></p><p> P0=table[sh];</p><p><b> dula=0;</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p>&l
40、t;b> P0=0xfe;</b></p><p><b> wela=0;</b></p><p> delayms(5);</p><p><b> dula=1;</b></p><p> P0=table[sl]|0x80;</p><p>
41、;<b> dula=0;</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xfd;</b></p><p><b> wela=0;<
42、;/b></p><p> delayms(5);</p><p><b> dula=1;</b></p><p> P0=table[fh];</p><p><b> dula=0;</b></p><p><b> P0=0xff;</
43、b></p><p><b> wela=1;</b></p><p><b> P0=0xfb;</b></p><p><b> wela=0;</b></p><p> delayms(5);</p><p><b> d
44、ula=1;</b></p><p> P0=table[fl]+0x80;</p><p><b> dula=0;</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><
45、;p><b> P0=0xf7;</b></p><p><b> wela=0;</b></p><p> delayms(5);</p><p><b> dula=1;</b></p><p> P0=table[mh];</p><p
46、><b> dula=0;</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xef;</b></p><p><b> wela=0;
47、</b></p><p> delayms(5);</p><p><b> dula=1;</b></p><p> P0=table[ml];</p><p><b> dula=0;</b></p><p><b> P0=0xff;&l
48、t;/b></p><p><b> wela=1;</b></p><p><b> P0=0xdf;</b></p><p><b> wela=0;</b></p><p> delayms(5);</p><p><b>
49、 }</b></p><p> ////////// //鍵盤掃描//////////////////////</p><p> void keyscan() </p><p><b> {</b></p><p> if(key1==0)</p><p><b>
50、; {</b></p><p> delayms(10);</p><p> if(key1==0)</p><p><b> {</b></p><p><b> s++;</b></p><p><b> if(s==24)</b&
51、gt;</p><p><b> s=0;</b></p><p> while(!key1);</p><p><b> }</b></p><p><b> }</b></p><p> if(key2==0)</p><
52、;p><b> {</b></p><p> delayms(10);</p><p> if(key2==0)</p><p><b> {</b></p><p><b> f++;</b></p><p><b> i
53、f(f==60)</b></p><p><b> f=0;</b></p><p> while(!key2);</p><p><b> }</b></p><p><b> }</b></p><p> if(key3==0
54、)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key3==0)</p><p><b> {</b></p><p><b> m++;</b></p><p&
55、gt;<b> if(m==60)</b></p><p><b> m=0;</b></p><p> while(!key3);</p><p><b> }</b></p><p><b> }</b></p><p&g
56、t; if(key4==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key4==0)</p><p><b> {</b></p><p><b> EA=1;</b>&l
57、t;/p><p><b> TR0=1;</b></p><p><b> TR1=1;</b></p><p> while(!key4);</p><p><b> }</b></p><p><b> }</b><
58、;/p><p><b> }</b></p><p> ////////////主函數(shù)//////////////////////////</p><p> void main() </p><p><b> { </b></p><p><b> in
59、it();</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> keyscan();</p><p> display( s, f, m);</p><p> if(f==0&m=
60、=10)</p><p><b> {</b></p><p><b> beep=0;</b></p><p> delayms(5);</p><p><b> beep=1;</b></p><p><b> }</b&g
61、t;</p><p><b> }</b></p><p><b> }</b></p><p> //////////////定時器T0//////////////</p><p> void T0_time()interrupt 1</p><p><b&
62、gt; {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> num++;</b></p><p> if(num==4)</p><p><b> {
63、</b></p><p><b> num=0;</b></p><p> if(s==0&&f==0&&m==10)</p><p> {led=~led; }</p><p><b> }</b></p><p>&l
64、t;b> }</b></p><p> ////////////定時器T1////////////////////</p><p> void T1_time()interrupt 3</p><p><b> {</b></p><p> TH1=(65536-50000)/256;<
65、;/p><p> TL1=(65536-50000)%256;</p><p><b> num0++;</b></p><p> if(num0==20)</p><p><b> {</b></p><p><b> num0=0;</b>&l
66、t;/p><p><b> if(m==0)</b></p><p><b> {</b></p><p><b> m=60;</b></p><p><b> if(f==0)</b></p><p><b>
67、{</b></p><p><b> f=60;</b></p><p><b> if(s==0)</b></p><p><b> {s=24;</b></p><p><b> }</b></p><p>
68、<b> s--;</b></p><p><b> }</b></p><p><b> f--;</b></p><p><b> }</b></p><p><b> m--;</b></p><p
69、><b> }</b></p><p> if(s==0&&f==0&&m==10)</p><p><b> {</b></p><p><b> beep=1;</b></p><p> delayms(1); </p&
70、gt;<p><b> }</b></p><p> if(s==0&&f==0&&m==0)//計時結(jié)束關(guān)中斷</p><p><b> {</b></p><p><b> EA=0; </b></p><p&g
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計報告---倒計時器
- 智能倒計時器課程設(shè)計
- 智能倒計時器課程設(shè)計
- 課程設(shè)計--倒計時計時器的設(shè)計
- led數(shù)字倒計時器課程設(shè)計報告
- 課程設(shè)計-籃球比賽倒計時器
- 數(shù)電課程設(shè)計——考試天數(shù)倒計時器
- 課程設(shè)計----籃球競賽24秒倒計時器
- 電子課程設(shè)計報告--籃球比賽倒計時器
- 24秒籃球倒計時器課程設(shè)計
- 單片機(jī)答辯倒計時器課程設(shè)計報告
- 數(shù)字顯示30秒倒計時器課程設(shè)計報告
- 24秒籃球倒計時器課程設(shè)計
- 60秒倒計時器-單片機(jī)課程設(shè)計
- 電子技術(shù)課程設(shè)計--倒計時器的設(shè)計
- 籃球倒計時課程設(shè)計--籃球板倒計時設(shè)計
- 電子技術(shù)課程設(shè)計--考試天數(shù)倒計時器
- eda課程設(shè)計報告--籃球競賽30秒倒計時器
- 60秒倒計時器-單片機(jī)課程設(shè)計報告
- 99倒計時課程設(shè)計
評論
0/150
提交評論