版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《單片機原理及應用》</p><p><b> 課程設計報告</b></p><p><b> 倒</b></p><p><b> 計</b></p><p><b> 時</b></p><p>&
2、lt;b> 器</b></p><p><b> 設</b></p><p><b> 計</b></p><p> 專 業 電氣自動化</p><p> 班 級 </p><p> 姓
3、名 </p><p> 學 號 </p><p> 二0一四 年 一 月 二日</p><p><b> 目錄 </b></p><p> 1.功能設計…………………………………………………2</p><p>
4、; 2.方案設計…………………………………………………2</p><p> 3.硬件設計…………………………………………………2</p><p> 3.1復位電路……………………………………………………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數碼管顯示電路……………………………………………5</p><p> 3.7單片機定時器使用…………………………………………6</
6、p><p> 4.程序設計…………………………………………………6</p><p> 4.1總程序圖……………………………………………………7</p><p> 4.2定時器T0流程圖…………………………………………8</p><p> 4.3定時器T1流程圖…………………………………………8</p><p>
7、5.小結………………………………………………………10</p><p><b> 附錄A電路設計</b></p><p><b> 附錄B程序代碼</b></p><p><b> 1功能分析</b></p><p> 題目三:倒計時器課程設計</p>&
8、lt;p> 基本功能要求:可實現倒計時功能,計時時間可通過按鍵進行設定,設定完成后啟動倒計時,計時時間到時可通過聲光報警方式提示。</p><p> (1)可實現倒計時功能:通過運用單片機的定時器T0中斷方式1控制發光二極管,定時器T1斷方式3進行時間自減一。本程序最大倒計時時間為一天。</p><p> (2)計時時間可通過按鍵進行設定: 通過運用獨立鍵盤控制時,分,秒的設定
9、。按鍵K1控制小時讓小時以加一方式設定,按鍵K2控制分鐘讓分鐘以加一方式設定,</p><p> 按鍵K3控制秒讓秒以加一方式設定,按鍵K4控制定時器開關。</p><p> (3)設定完成后啟動倒計時:通過按下獨立鍵盤k4控制倒計時器開關。</p><p> (4)計時時間到時可通過聲光報警方式提示:通過運用發光二極管在最后十秒時閃爍和蜂鳴器在最后十秒時進行
10、聲光報警。</p><p><b> 2方案設計</b></p><p> 圖1 倒計時的總體框圖</p><p><b> 3、硬件電路設計</b></p><p> LED數碼管倒計時器以STC89C52單片機為核心,起著控制作用。系統包括六位數碼管顯示電路,按鍵電路,復位電路,時鐘電路
11、以及蜂鳴器電路。 </p><p><b> 單片機最小系統</b></p><p> 最小系統就是單片機在發揮具體測控功能時所必須的組成部 </p><p> 分。如下圖所示為最小系統方框圖:</p><p><b> 圖2單片機最小系統<
12、/b></p><p><b> (1).復位電路</b></p><p> 復位是單片機的初始化操作,只需給STC89C52的復位引腳RST加上大于2個機器周期的高電平就可得單片機復位,復位時,PC初始化為0000H,使單片機重新啟動。在系統中,有時會出現顯示不正常,也為了調試方便,我們需要設計一個復位電路。本系統采用的電路如圖3所示。按鍵復位用在系統運行
13、時的復位,使系統重新運行。復位電路如下圖所示。</p><p> 圖3 復位電路原理圖</p><p><b> (2).晶振電路</b></p><p> 晶振與單片機的腳XTAL0和腳XTAL1構成的振蕩電路中會產生偕波(也就是不希望存在的其他頻率的波),這個波對電路的影響不大,但會降低電路的時鐘振蕩器的穩定性。為了電路的穩定性起見,
14、ATMEL公司只是建議在晶振的兩引腳處接入兩個10pf-50pf的瓷片電容接地來削減偕波對電路的穩定性的影響,所以晶振所配的電容在10pf-50pf之間都可以的。但是主流是接入兩個33pf的瓷片電容,此次電路用33PF。</p><p><b> (3).時鐘電路</b></p><p> 時鐘是單片機的心臟,單片機各功能部件的運行都是以時鐘頻率為基準,有條不紊地
15、一拍一拍地工作。因此,時鐘頻率直接影響單片機的速度,時鐘電路的質量也直接影響單片機系統穩定性。常用的時鐘電路有兩種方式,一種是內部時鐘方式,另一種是外部時鐘方式。</p><p> 單片機必須在時鐘的驅動下才能工作。在單片機內部有一個時鐘振蕩電路,只要外界一個振蕩源就能產生一定的時鐘信號送到單片機內部的各個單元,決定單片機的工作速度。本系統使用的是內部時鐘方式。時鐘電路如下圖4所示。</p>&l
16、t;p> 圖4 時鐘電路原理圖</p><p> 單片機在工作時,有內部振蕩器產生或由外直接輸入的送至內部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數,f表示。圖4中的時鐘頻率為12MHz,即f=12MHz,則時鐘周期為1/12us。</p><p><b> (4).按鍵電路</b></p><p> 本
17、系統的按鍵電路的作用是能夠調整倒計時的初始值,倒計時是按時、分、秒順尋排列顯示的,用三個按鍵分別設定時、分、秒,所達到的效果是按一下對應的鍵時,所對應的值加一。在程序中用K1對應時的設定,K2對應分的設定,K3對應秒的設定。按K4鍵則系統開始運行。按鍵電路如下圖5所示。</p><p> 圖5 按鍵電路原理圖</p><p> (5). 蜂鳴器電路</p><p&g
18、t; 蜂鳴器電路是由一個有源蜂鳴器、一個電阻和一個開關三極管組成。此電路的作用是倒計時時間到零時,蜂鳴器發出報警聲。在本系統中,是利用單片機的P2^3口來控制,P2^3為低電平時,三極管導通,蜂鳴器報警。電路如下圖6所示</p><p> 圖6 蜂鳴器電路原理圖</p><p> (6).數碼管顯示電路</p><p> 在這里我們使用的是8段數碼管顯示(包
19、含小數點),通常在顯示上我們采用的方法一般包括兩種:一種是靜態顯示,另一種是動態顯示。其中靜態顯示的特點是顯示穩定不閃爍,程序編寫簡單,但占用端口資源多,所耗得電能較大;動態顯示的特點是顯示穩定性沒靜態好,程序編寫復雜,但是相對靜態顯示而言占用端口資源少。在本設計中,為了減少端口資源,降低電能消耗,采用的是動態顯示方法。</p><p> (7).單片機定時器的使用</p><p>
20、本系統所用到的STC89C52有3個16位的定時器,而本系統只用到了定時器0和定時器1,所使用的工作方式都是定時器工作方式1,方式1時16位計數結構的工作方式,計數器由TH0或TH1的全部8位和TL0或TL1的全部8位構成。使用工作方式1功能時,定時時間計算公式是:</p><p> ?。?5536-計數初值)*機器周期</p><p> 機器周期=晶振周期*12</p>
21、<p> 本系統所用到的定時器0的定時時間是50ms;定時器1的定時時間是50ms;而電路所用的晶振是12MHZ,算得一個機器周期為1us。</p><p> ?。?5536-50000)/256;</p><p> ?。?5536-50000)%256;</p><p> 4、軟件設計與流程圖</p><p> 本系統中,是
22、利用軟件和硬件相互結合,以實現電路功能。軟件在系統中起著舉足輕重的作用,利用程序對硬件達到控制作用。因此下面說明軟件的實現。</p><p> 倒計時器主程序流程圖</p><p> 程序的的開始時初始化數碼管的段選和位選,數碼管不顯示。程序中用到了兩個定時器,接下來先設定定時器0和定時器1的工作方式,并且給兩個定時器裝初值,定時器0的定時時間是50ms,用作掃描數碼管顯示,定時器1的
23、定時時間是50ms,用作定時器時間的遞減。然后給定時器設定初值,開啟定時器。最后進入死循環函數,在循環函數中,對按鍵進行掃描,如果有鍵按下,執行按鍵函數,并檢查是否需要報警。流程圖如下圖7所示:</p><p> 圖7 倒計時器主程序流程圖</p><p> (2).定時器0的中斷程序流程圖</p><p> 定時器0的定時時間是50ms,用作掃描數碼管顯示,
24、在定時器0開啟時,定時器0開始定時,此時主程序正常運行,當定時器0的定時時間到時,主程序不在執行,開始進入中斷程序,在中斷程序中,對9位數碼管進行動態掃描。中斷程序執行完后返回主程序。如圖8所示。</p><p> 圖8定時器0的中斷程序流程圖</p><p> (3).定時器1的中斷程序流程圖</p><p> 定時器1的定時時間是50ms,用作是倒計時時間
25、以秒來自減,在定時器1開啟時,定時器1開始定時,此時主程序正常運行,當定時器0的定時時間到時,主程序不在執行,開始進入中斷程序,在中斷程序中,設定倒計時的時間變化。中斷程序執行完后返回主程序。如圖9所示。</p><p> 圖9 定時器1的中斷程序流程圖</p><p><b> 5、總結經驗和體會</b></p><p> 在這次的單片
26、機程序課程設計中,學到了關于單片機的很多東西,單片機具有軟硬結合,體積小,可以很容易嵌入到各種應用系統中,單片機是我們的這個專業中很重要的一門課程,同時也是一門比較難學的課程,這次實踐讓我對單片機有了更深一步的了解,讓我們真正做到了理論聯系實踐,把我們所學的知識都運用到實踐中去,這樣就能把單片機學的更好。在設計制作倒計時器的過程中,我深切體會到,實踐是理論運用的最好檢驗。本次設計是對我所學知識的一次綜合性檢測和考驗,無論是動手能力還是理
27、論知識運用能力都得到了提高,同時加深了我對網絡資源認識,大大提高了查閱資料的能力和效率,使我有充足的時間投入到電路制作當中。本系統的制作主要應用到了模擬電子技術、數字電子技術、單片機控制技術、電子工藝等多方面的知識。在硬件調試過程中,我也學會不少的東西,掌握一些調試方法。在設計仿真圖和編些程序中,對Protel和Keil等軟件掌握的更加牢固。</p><p><b> 附錄A:電路設計</b&g
28、t;</p><p> 附錄B:倒計時器源程序(C語言)</p><p> #include<reg52.h> //52系列單片機頭文件</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[]={ //共陰極數碼管編碼</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; //設置定時器工作方式</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> /////////// //顯示子函數//////////////////////////
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> ////////////主函數//////////////////////////</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)//計時結束關中斷</p><p><b> {</b></p><p><b> EA=0; </b></p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設計報告---倒計時器
- 智能倒計時器課程設計
- 智能倒計時器課程設計
- 課程設計--倒計時計時器的設計
- led數字倒計時器課程設計報告
- 課程設計-籃球比賽倒計時器
- 數電課程設計——考試天數倒計時器
- 課程設計----籃球競賽24秒倒計時器
- 電子課程設計報告--籃球比賽倒計時器
- 24秒籃球倒計時器課程設計
- 單片機答辯倒計時器課程設計報告
- 數字顯示30秒倒計時器課程設計報告
- 24秒籃球倒計時器課程設計
- 電子技術課程設計--倒計時器的設計
- 60秒倒計時器-單片機課程設計
- 電子技術課程設計--考試天數倒計時器
- 籃球倒計時課程設計--籃球板倒計時設計
- 60秒倒計時器-單片機課程設計報告
- eda課程設計報告--籃球競賽30秒倒計時器
- 99倒計時課程設計
評論
0/150
提交評論