版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 一 課程設(shè)計的目的………………………………………………………………3</p><p> 二 課程設(shè)計的具體要求………………………………………………………3</p><p> 三 設(shè)計過程……………………………………………………………………3</p><p&g
2、t; 四 基本原理……………………………………………………………………4</p><p> 五 硬件連接圖…………………………………………………………………4</p><p> 六 程序代碼及其流程圖………………………………………………………5</p><p> 七 調(diào)試實現(xiàn)的功能……………………………………………………………13</p>&l
3、t;p> 八 課程總結(jié)……………………………………………………………………13</p><p> 九 參考教材……………………………………………………………………13</p><p> 可光控和手控LED顯示</p><p> 一 課程設(shè)計的目的:</p><p> 單片計算機即單片微型計算機。(Single-Chip Mic
4、rocomputer ),是 集CPU ,RAM ,ROM ,定時,計數(shù)和多種接口于一體的微控制器。他體積小,成本低,功能強,廣泛應(yīng)用于智能產(chǎn)品和工業(yè)自動化上。而52單片機是各單片機中最為典型和最有代表性的一種。通過本課程設(shè)計,能獨立地完成一個典型單片機應(yīng)用系統(tǒng)的設(shè)計和調(diào)試任務(wù),深刻地領(lǐng)會和掌握《單片機原理及應(yīng)用》課程中講述的基本理論和基本技能,在《單片機原理及應(yīng)用》課程的基礎(chǔ)上,進一步培養(yǎng)學(xué)生的綜合分析與設(shè)計能力和動手能力,為后續(xù)課程
5、學(xué)習(xí)和今后從事電子信息系統(tǒng)及相關(guān)領(lǐng)域的實際工作打下堅實的基礎(chǔ)。</p><p> 二 課程設(shè)計的具體要求:</p><p> 主要內(nèi)容包括理論設(shè)計、硬件制作、軟硬件調(diào)試及報告等幾大部分。</p><p> 理論設(shè)計包括總體方案的選擇(要求使用Protel或AltiumDesign軟件畫出與所選題目有關(guān)的應(yīng)用系統(tǒng)電路圖)、硬件結(jié)構(gòu)組成圖和軟件流程設(shè)計圖等;<
6、;/p><p> 硬件制作部分由實驗室統(tǒng)一提供單片機系統(tǒng)板,學(xué)生應(yīng)手工焊接單片機板,并在實驗板上或面包板上搭建系統(tǒng)板所不能提供的外圍具體應(yīng)用電路構(gòu)成整體應(yīng)用系統(tǒng);</p><p> 軟件設(shè)計利用Keil C51軟件開發(fā)平臺,采用C或匯編語言進行軟件程序編寫。硬件電路的可靠焊接和軟件程序的編寫是本課程設(shè)計的關(guān)鍵環(huán)節(jié),通過軟硬件綜合調(diào)試使學(xué)生熟悉并掌握單片機軟硬件開發(fā)的整個流程。</p&
7、gt;<p><b> 三 設(shè)計過程:</b></p><p> 得到單片機的各種零部件,進行焊接,從中學(xué)會了貼片元件的焊接方法。</p><p> 焊接好單片機后,寫入一些簡單的程序調(diào)試單片機是否焊接正確,經(jīng)驗證單片機焊接無誤。</p><p> 在選定題目的基礎(chǔ)上編寫本次課程設(shè)計的有關(guān)程序,并在KEIL上運行檢測其正確
8、與否,無誤后將其下載到單片機上,運行,查看結(jié)果。</p><p> 4,運行無誤后,寫設(shè)計報告。</p><p><b> 四 基本原理:</b></p><p> 本課題用到的是89C52單片機,LED數(shù)碼管,LED燈,鍵盤,光敏電阻,蜂鳴器等。</p><p> 89C52是一個低電壓,高性能CMOS 8位
9、單片機,片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強大的89C52單片機可提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場合。</p><p> 89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口
10、,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線, 89C52可以按照常規(guī)方法進行編程,但不可以在線編程。</p><p> 通過鍵盤S3,S1是否按下可以判斷P1.5和P3.0的電平的高低,從而啟動不同的程序。在程序一中,通過鍵盤S3,S4是否按下可以判斷P1.5,P1.6的高低電平,從而啟動和復(fù)位程序一。</p><p> LED數(shù)碼管是動態(tài)的。碼選通過P3口的高四
11、位,低電平選通,P0口送字段碼。LED燈為共陽極接法,其陰極分別接P2口的八個輸出。P2口各位送低電平,對應(yīng)各口的LED燈亮。</p><p> 蜂鳴器有P1.7口控制,低電平時響,高電平時不響。</p><p> 光敏電阻的特性是無光照射時電阻阻值較大,有光時較小,其與可調(diào)電阻R23共同作用可調(diào)節(jié)P1.1的高低電平,從而控制程序二中LED燈的亮滅和蜂鳴器的聲音。有光時光敏電阻阻值較小
12、。P1.1為低電平,程序使LED燈和蜂鳴器不工作。無光或暗光時P1.1為高電平,程序使LED燈和蜂鳴器工作。</p><p><b> 五 硬件連接圖:</b></p><p> 六 程序代碼及其流程圖:</p><p><b> 1程序流程圖:</b></p><p><b>
13、程序1: </b></p><p><b> 程序2:</b></p><p><b> 2,C語言源程序:</b></p><p> #include<reg52.h></p><p> #defineuchar unsigned char</p>
14、<p> void display();</p><p> void circle(void);</p><p> void light(void) reentrant;</p><p> uchar choose(void);</p><p> void reset(void);</p><p>
15、; void InitTimer();</p><p> sbit p11=P1^1;</p><p> sbit p15=P1^5; //啟動led燈及數(shù)碼管循環(huán)顯示程序</p><p> sbit p16=P1^6; //復(fù)位led燈及數(shù)碼管循環(huán)顯示程序</p><p> sbit p17=P1^7;</p&g
16、t;<p> sbit p30=P3^0; //啟動光控程序</p><p><b> int a;</b></p><p><b> uchar e;</b></p><p> //共陽極數(shù)碼管位碼//</p><p> unsigned char code Po[4
17、]={0xe0,0xd0,0xb0,0x70};</p><p> //共陽極數(shù)碼管段碼//</p><p> unsigned char code value[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,</p><p> 0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e, 0x
18、00,0xff};</p><p><b> //延時</b></p><p> void delay(int i)</p><p><b> { int j;</b></p><p> for(j=0;j<i;j++) {}</p><p><b>
19、 }</b></p><p><b> //蜂鳴器聲音函數(shù)</b></p><p> void speak1()</p><p><b> { </b></p><p> reset(); p17=0;delay(200);p17=1;</p><
20、;p><b> }</b></p><p> void speak2()</p><p><b> { </b></p><p> reset();p17=0;delay(2000);p17=1; </p><p><b> }</b>
21、</p><p> void speak3()</p><p><b> { </b></p><p> reset();delay(10000);p17=0;delay(20000);p17=1;</p><p><b> }</b></p><p> v
22、oid speak4()</p><p><b> { </b></p><p> reset();p17=1;delay(1000);p17=0;delay(10000); </p><p><b> }</b></p><p><b> //主函數(shù)</b>
23、</p><p> void main(void)</p><p> { uchar i;</p><p><b> while(1)</b></p><p><b> { </b></p><p> if(p15==0) {delay(20); //
24、選擇程序1</p><p> if(p15==0) {i=1;} break;</p><p><b> } </b></p><p><b> //選擇程序2</b></p><p> if(p30==0) {delay(20);</p><p> if(p30=
25、=0) {i=2;}break;</p><p><b> } </b></p><p><b> }</b></p><p><b> switch(i)</b></p><p><b> { </b></p><p>
26、 case 1:circle();break;</p><p> case 2:light();break;</p><p><b> } </b></p><p><b> }</b></p><p> //LED燈循環(huán)函數(shù)</p><p> void cir
27、cle(void)</p><p><b> { </b></p><p> char i,j,m,n,k,l;</p><p><b> while(1)</b></p><p> { display();</p><p><b> P2=0xff;
28、</b></p><p> for(i=0;i<8;i++)//led循環(huán)1</p><p> {speak1(); </p><p> P2=P2<<1;delay(6666);}</p><p> P2=0XFF; //led循環(huán)2</p><p> for(j=0
29、;j<8;j++)</p><p> {speak2();</p><p> delay(6666);P2=P2>>1;}</p><p> delay(6666);</p><p> m=0xf0;n=0x0f;</p><p> for(k=0;k<4;k++)
30、 //led循環(huán)3</p><p> {speak3();</p><p> delay(6666);</p><p> m=m<<1;n=n>>1;</p><p><b> P2=m|n;</b></p><p><b> }</b>&l
31、t;/p><p> m=0xf0;n=0x0f;</p><p> for(l=0;l<4;l++) //led循環(huán)4</p><p> {speak4();</p><p> delay(6666);</p><p> m=m<<1;n=n>>1;</p>
32、<p> P2=~(m|n);</p><p><b> }</b></p><p> delay(6666);delay(6666);</p><p><b> a++ ;</b></p><p><b> }</b></p><p&g
33、t;<b> }</b></p><p> void light(void) reentrant //光控顯示函數(shù)</p><p> { uchar i,j,b,temp,temp1;int k; e=0;</p><p> e=choose();</p><p> switch(e)
34、 </p><p> { case 2: {for(k=0;k<65535;k++)</p><p> { b=0xff;</p><p> for(i=0;i<8;i++)</p><p> { temp=0xff;</p><p> temp=~temp;</p>&l
35、t;p> temp=~temp<<i;</p><p> P2=b&temp;</p><p> for(j=0;j<(8-i);j++)</p><p> {if(p11==0) {light();delay(30000);delay(30000);} //判斷有無光照射</p>&
36、lt;p> speak2(); </p><p> P2=P2<<1;delay(30000);</p><p> } delay(50000);temp1=0xff;</p><p> for(a=0;a<8;a++)</p><p> {if(p11==0) {light();delay(3000
37、0);delay(30000);}</p><p> speak2();P2=temp1<<(7-a);delay(30000);</p><p><b> }</b></p><p> } if(k==65535) k=0;</p><p><b> };break;</b>
38、</p><p> case1: {P2=0XFF;p17=1;light();delay(30000);delay(30000);}break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b><
39、/p><p> uchar choose(void) //選擇有無光照射</p><p><b> {</b></p><p><b> while(1)</b></p><p> {if(p11==0) {e=1;delay(30000);delay(30000);break;}<
40、/p><p> else {e=2;break;}}</p><p><b> return e;</b></p><p><b> }</b></p><p> void display()</p><p> {InitTimer();}</p>&l
41、t;p> void InitTimer() //T1中斷</p><p><b> {</b></p><p> TMOD = 0x10;</p><p> TH1 = 0xDC;TL1 = 0x00;</p><p><b> EA = 1;</b></p>
42、<p><b> ET1 = 1;</b></p><p><b> TR1 = 1;</b></p><p><b> }</b></p><p> void Timer1() interrupt 3 //數(shù)碼管顯示</p><p><b&g
43、t; {</b></p><p> static unsigned char b=0;</p><p> TH1 = 0xDC;</p><p><b> switch(b)</b></p><p><b> {</b></p><p> case 0
44、:{P0=value[17];P3=Po[3];P0=value[a/4096];break;}</p><p> case 1:{P0=value[17];P3=Po[2];P0=value[(a%4096)/256];break;}</p><p> case 2:{P0=value[17];P3=Po[1];P0=value[(a%256)/16];break;}</p&g
45、t;<p> case 3:{P0=value[17];P3=Po[0];P0=value[a%16];break;}</p><p><b> }</b></p><p><b> b++;</b></p><p> if(b==4) b=0;</p><p><b&
46、gt; }</b></p><p> void reset(void)</p><p><b> {</b></p><p> if(p16==0) {delay(20); //是否按下復(fù)位鍵</p><p> if(p16==0) {p
47、17=1;</p><p><b> while(1)</b></p><p> {P0=0xc0;P2=0xff;P3=0xef;a=0;</p><p> if(p15==0) {delay(20); //是否按下重啟鍵</p><p> if(p15==0) {circle();}</p>
48、<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><
49、;p> 七 調(diào)試實現(xiàn)的功能:</p><p> 本作品為可光控和手控LED顯示,可分為兩個功能即光控制LED的顯示和手動控制LED的顯示。</p><p> 單片機上電后無動作,按下S1鍵后,進入光控程序。在暗光或無光時LED燈循環(huán)顯示同時蜂鳴器發(fā)聲。如有亮光照射是LED燈熄滅同時蜂鳴器停止工作。</p><p> 單片機上電后,按下S3鍵后,進入手控
50、程序,同時LED燈進行四種不同的循環(huán)顯示,并伴隨蜂鳴器所發(fā)出的四種不同的聲音。當(dāng)四種循環(huán)結(jié)束一遍后LED數(shù)碼管數(shù)字加一。數(shù)碼管數(shù)字滿16后進一位。在這過程中如果按下S4鍵后,則程序復(fù)位,LED燈熄滅,蜂鳴器停止工作,數(shù)碼管顯示0。如果S1再次按下后,則在次啟動LED燈、蜂鳴器和數(shù)碼管。</p><p><b> 八 課程總結(jié):</b></p><p> 單片機課程
51、設(shè)計,我不僅加深了對單片機理論的理解,將理論很好地應(yīng)用到實際當(dāng)中去,而且我還學(xué)會了如何去培養(yǎng)創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎(chǔ)上進行改進,使之功能不斷完善,成為自己的東西。</p><p> 課堂教學(xué)考慮到大多數(shù)同學(xué)的需求,主要強調(diào)“基本”—基本知識、基本理論、基本方法、基本技能。而這次設(shè)計正是為我們提供了一個深入學(xué)習(xí)、探索的機會,成為課堂教學(xué)的有益補充。</p>&l
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光控課程設(shè)計---光控系統(tǒng)的設(shè)計
- 光控?zé)粽n程設(shè)計報告
- 聲控光控延時開關(guān)課程設(shè)計
- 光控計數(shù)器課程設(shè)計
- 課程設(shè)計報告--雙光控節(jié)電開關(guān)
- 光控數(shù)字溫度時鐘課程設(shè)計報告
- 光控傳感器課程設(shè)計報告
- 課程設(shè)計報告----光控自動照明系統(tǒng)設(shè)計
- 基于LED激勵的光控可重構(gòu)天線研究.pdf
- 數(shù)電課程設(shè)計--光控計數(shù)器
- 水控課程設(shè)計
- 43進制光控計數(shù)器課程設(shè)計報告
- led點陣顯示屏課程設(shè)計
- 電子綜合課程設(shè)計報告-自動光控路燈系統(tǒng)設(shè)計
- 傳感器課程設(shè)計報告--光控照明電路
- 數(shù)字電子電課程設(shè)計(光控計數(shù)器)
- 光控自動窗簾開關(guān)電路的課程設(shè)計
- eda課程設(shè)計--led點陣顯示控制
- 聲光控路燈課程設(shè)計
評論
0/150
提交評論