

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《單片機應用系統(tǒng)設計》報告</p><p> 題 目 簡易電梯 </p><p><b> 2012年7月</b></p><p> 課程設計(實習)評審表</p><p> 課程設計(實習)作品驗收表</p><p> 注:1.
2、 除“驗收情況”欄外,其余各欄均由學生在作品驗收前填寫。</p><p> 2. “驗收情況”欄由驗收小組按實際驗收的情況如實填寫。</p><p><b> 目 錄</b></p><p> 1 設計任務與要求1</p><p> 1.1 設計任務1</p><p> 1.
3、2 設計要求1</p><p> 1.2.1 基本要求1</p><p> 1.2.2 具體要求1</p><p> 2 系統(tǒng)功能描述2</p><p> 3 硬件系統(tǒng)總體設計2</p><p> 3.1 系統(tǒng)的設計方案2</p><p> 3.2 顯示模塊設計
4、方案3</p><p> 3.3 按鍵模塊設計方案3</p><p> 3.4 復位電路的設計方案4</p><p> 4 軟件系統(tǒng)的設計5</p><p> 5 遇到的問題及解決的辦法5</p><p> 6 課程設計總結6</p><p><b> 參考
5、文獻7</b></p><p> 附錄1 簡易電梯的源程序8</p><p> 附錄2 簡易電梯的原理圖20</p><p><b> 簡易電梯的設計</b></p><p><b> 1 設計任務與要求</b></p><p><b>
6、 1.1 設計任務</b></p><p> ?。?)設計4層電梯,當按下需要到達的層次后,如果電梯向上運行,則黃色的LED燈亮,如果電梯向下運行,則綠色的LED燈亮,如果到達選取的樓層或者電梯到達頂樓或者1樓的話,紅色的LED燈亮,表示就緒狀態(tài)。同時數(shù)碼管顯示電梯到達的相應的樓層號。</p><p> ?。?)當有人按下未到達樓層的開關時,電梯到達那一層時,停留10秒,然后
7、繼續(xù)上升到最終的樓層。向下運行同理。</p><p><b> 1.2 設計要求</b></p><p> 1.2.1 基本要求</p><p> 根據(jù)課題要求,通過查閱資料等,獨立完成課題的方案設計、電路設計、系統(tǒng)流程圖設計、仿真分析、調試和指標測試,撰寫設計報告。</p><p> 1.2.2 具體要求
8、</p><p> ?。?)根據(jù)應用系統(tǒng)的要求,初步掌握總體結構的方法和構思,從中選擇一種最佳的設計方案。</p><p> (2)完成系統(tǒng)的整體電路和系統(tǒng)流程圖。首先畫出程序總體流程圖,然后進行各控制模塊程序的設計、編寫系統(tǒng)程序。</p><p> ?。?)利用Proteus軟件進行仿真分析和調試,檢測電路功能和性能指標。在應用單片機仿真軟件來開發(fā)應用系統(tǒng)及仿真
9、調試的過程,先進行各模塊調試,然后進行各程序模塊的聯(lián)調,最后與硬件一起進行聯(lián)調,反復檢測和修改直至開發(fā)結束。</p><p> ?。?)仿真通過了,進行安裝系統(tǒng)。</p><p><b> 2 系統(tǒng)功能描述</b></p><p> 根據(jù)設計的要求,設計需要實現(xiàn)以下的功能:</p><p> ?。?)打開電源后,顯示
10、器顯示初始狀態(tài),此時電梯顯示的是停在一樓。</p><p> (2)設置一個初始樓層,電梯從一樓開始向上運行。每一樓層顯示停留10秒</p><p> ?。?)輸入樓層時用獨立按鍵,鍵盤所對應的樓層為1到4層。</p><p> ?。?)LED數(shù)碼管顯示的是1、2、3、4表示的是第四層樓。</p><p> 3 硬件系統(tǒng)總體設計</
11、p><p> 簡易電梯工作的主要過程是LED數(shù)碼管顯示樓層所在的位置,LED燈顯示電梯的工作狀態(tài),黃色LED燈亮則表示電梯正在往上運行,綠色LED燈亮則表示電梯正在向下運行,紅色LED燈亮則表示電梯處于就緒狀態(tài),只有當用戶鍵入所要去的樓層的開關時電梯才會運行。電梯在到達頂樓和到達一樓的時候是處于就緒狀態(tài)的。</p><p> 系統(tǒng)總原理框圖如下:</p><p>
12、 圖1 電梯總體設計結構框圖</p><p> 3.1 系統(tǒng)的設計方案</p><p> 采用一種用以AT89S51為核心的單片機控制方案。利用單片機靈活的編程設計和豐富的IO端口,及其控制的準確性,能實現(xiàn)基本的簡易電梯功能。本設計采用的電源是5V。</p><p> 3.2 顯示模塊設計方案</p><p> 采用共陰的7段L
13、ED數(shù)碼管顯示器:LED數(shù)碼管亮度高、醒目、顯示的信息量小,而且格上較為便宜。當接通電源后,LED燈的初始狀態(tài)是1,表示現(xiàn)在處于樓層一的位置。當電梯處于運行狀態(tài)時,LED燈會顯示電梯所在的樓層。</p><p> 圖2 一位7段共陰數(shù)碼管</p><p> 3.3 按鍵模塊設計方案</p><p> 本設計全部采用獨立按鍵作為輸入信號往單片機內部送信號,從
14、而對電梯進行控制,每一層都用一個按鍵來控制,即每口送一個低電平,送往單片機程序,從而使程序執(zhí)行,控制外部的電路,是電梯運行,達到控制電梯的作用。P2口接4個開關(k1-k4),分別代表四層樓的呼叫按鈕。</p><p><b> 圖3 按鍵電路</b></p><p> 3.4 復位電路的設計方案</p><p> 復位電路由電阻、電
15、容、按鍵組成,如下圖所示:</p><p><b> 圖4 復位電路</b></p><p> 在單片機啟動0.01S后,電容C3兩端的電壓持續(xù)充電為5V,這是時候1K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當按鍵按下的時候,開關導通,這個時候電容兩端形成了一個回路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的
16、推移,電容的電壓在0.01S內,從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個時候1K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機系統(tǒng)自動復位。</p><p> 單片機復位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復位后PC=0000H,使單片機從第—個單元取指令。無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故
17、障后都要復位。根據(jù)實際情況選擇如圖所示的復位電路。該電路在最簡單的復位電路下增加了手動復位按鍵,在接通電源瞬間,電容C1上的電壓很小,復位下拉電阻 上的電壓接近電源電壓,即RES為高電平,在電容充電的過程中RES端電壓逐漸下降,當RES端的電壓小于某一數(shù)值后,CPU脫離復位狀態(tài),由于電容C足夠大,可以保證RST高電平有效時間大于24個振蕩周期,CPU能夠可靠復位。增加手動復位按鍵是為了避免死機時無法可靠復位。當復位按鍵按下后電容C通過R
18、-1放電。當電容C1放電結束后,RES端的電位為高電平。由于RES為高電平,CPU處于復位狀態(tài),松手后,電容C1充電,RES端電位下降,CPU脫離復位狀態(tài)。</p><p><b> 4 軟件系統(tǒng)的設計</b></p><p> 設計電梯的控制主要是通過程序來進行控制的,在寫程序時主要采用查詢的方式來進行對外輸入信號進行不斷的查詢,從而往單片機內部輸入信號,使程序
19、運行。程序主要分為六個模塊:</p><p> 初始化函數(shù):對單片機進行初始化,使數(shù)碼管顯示當前的位置。</p><p> 按鍵檢測函數(shù):對輸入信號進行查詢,只要查詢到有呼叫信號,就判斷是否響應該信號,若電梯處于上升狀態(tài)要想下降,則必須等到電梯到達相應樓層后才能響應,否則不響應。</p><p> 定時器中斷延時:設置電梯在所在樓層停留的時間。</p&g
20、t;<p> 目的樓層查詢函數(shù):檢測電梯是否到達目的樓層,如果到達則數(shù)碼管顯示相應的樓層數(shù)。</p><p> 電梯運行方向檢測函數(shù):檢測電梯的方向是否改變。</p><p> LED燈點亮函數(shù):檢測電梯的運行狀態(tài)。如果電梯向上,則點亮黃色的LED燈,如果電梯向下運行,則點亮綠色的LED燈,如果電梯處于就緒狀態(tài),則點亮紅色的LED燈。</p><p&
21、gt; 編寫程序時,由于是采用的查詢的方式,所以要對信號進行不斷的查詢,知道查詢到有用的信號才響應,從而往單片機外部輸出信號,完成對電路的控制。原程序見附錄1。</p><p> 5 遇到的問題及解決的辦法</p><p> ?。?)在電路圖的設計方面,由于開始我對簡易電梯的認識不夠全面,設計的時候過于簡單,沒有數(shù)碼管用于顯示樓層,也沒有LED燈顯示電梯運行的狀態(tài)。在老師的指導下,我完
22、善了電路圖的設計。另外、復位電路不能響應,原因是電容太高了,經過調正復位電路已經能夠正常工作,LED狀態(tài)燈最開始也是不亮的,經過檢查是由于電阻過高,經過調整現(xiàn)已解決。</p><p> ?。?)在軟件設計方面,我的程序過于冗長,這個是由于自己對C語言掌握的還不夠嫻熟,另外就是在設計樓層的狀態(tài)顯示程序時,對電梯運行的考慮欠妥當,導致電梯運行時LED燈指示錯誤。這個在同學的幫助下,圓滿解決。</p>&
23、lt;p> 雖然在設計中遇到很多問題,但我覺得這鍛煉了我的理論聯(lián)系的實際的能力,也讓我發(fā)現(xiàn)了自己的不足,在今后的學習中,我將更加努力的學好相關技術。</p><p><b> 6 課程設計總結</b></p><p> 課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程。&l
24、t;/p><p> 通過此次課程設計,我對PROTEUS和KEIL的使用有了一定深度的了解,掌握了這兩款軟件的基本使用方法,并且通過這次以理論為基礎的實踐操作之后,我對單片機的51系列的工作原理也有了更深入的認識。</p><p> 在使用KEIL軟件編寫程序時,剛開始調試時有許多的錯誤,看得我頭都大了,但是,在我的努力及同學的幫助下都被一一克服。我得到的最有用的教訓就是,寫程序必須仔仔細
25、細認認真真的,不能輸錯一個字符標點,不能少輸一個字符或則標點,一旦輸錯,程序就錯誤百出。在修改的時候要有耐心,一個一個的看,一句一句的查,絕不能心急浮躁,否則可能錯誤的沒找到到卻把正確的改錯了!</p><p> 這次的課程設計也極大的提高了我的動手能力,使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,從而提高自己的實際動手能力和獨立思考的
26、能力,而且還可以加強我們動手查資料的能力,增長我們的知識。</p><p><b> 參考文獻</b></p><p> [1] 陳伯陽.單片機原理及應用實驗指導書. 自編實驗指導書,配合實驗平臺進行</p><p> [2] 李朝青.單片機原理及接口技術(第3版)北京: 北航出版社,2006</p><p>
27、[3] 趙亮, 候國銳.單片機C語言編程與實例.北京: 人民郵電出版社,2003</p><p> [4] 沙占友, 王彥朋, 孟志永.單片機外圍電路設計.北京: 電子工業(yè)出版社,2003</p><p> [5] 馬忠梅, 劉濱, 戚軍等.單片機C語言Windows環(huán)境編程寶典.北京: 北航出版社, 2003</p><p> 附錄1 簡易電梯的源程序<
28、;/p><p> #include <reg51.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit K1=P2^7;</p><p> sbit K2=P2^6;</p
29、><p> sbit K3=P2^5;</p><p> sbit K4=P2^4;</p><p> sbit red=P3^0;</p><p> sbit green=P3^1;</p><p> sbit yellow=P3^2;</p><p><b> uchar
30、f;</b></p><p> uchar run;</p><p> uchar floor=1,zui;//floor表示樓層,zui是表示最高或最低目的樓層</p><p> bit direct=1; //direct表示方向(=1是向上,=0是向下)</p><p> int p;//p
31、表示延時計數(shù)量</p><p> uchar a[]={0,0,0,0,0};//如果按下鍵盤,則相應的樓層元素設置為1</p><p> uchar b1[]={0xff,0xf7,0xfb,0xfd,0xfe}; //led燈點亮的數(shù)組</p><p> uchar led[5]={0x3f,0x06,0x5b,0x4f,0x66};</p&g
32、t;<p> void intial()//初始化函數(shù),定義定時器的相關信息</p><p><b> {</b></p><p> TMOD=0x01;</p><p> TH0=(65535-50000)/256;</p><p> TL0=(65535-50000)%256;<
33、/p><p><b> ET0=1;</b></p><p><b> EA=1;</b></p><p><b> }</b></p><p> void delay1ms(uchar z)//1ms延時程序</p><p><b>
34、 {</b></p><p><b> uchar i;</b></p><p> while(z--)</p><p> for(i=0;i<115;i++);</p><p><b> }</b></p><p> void anjian(
35、)//按鍵檢測程序</p><p><b> {</b></p><p><b> if(K1==0)</b></p><p><b> {</b></p><p> delay1ms(15);</p><p><b>
36、 if(K1==0)</b></p><p><b> {</b></p><p> if(direct==1)</p><p><b> {</b></p><p><b> a[1]=0;</b></p><p><b>
37、; }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(floor>1)</p><p><b> {</b></p><p><b> a[1]=
38、1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> a[1]=0;</b></p><p>&
39、lt;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(K2==0)</b></p><p><b> {</b></p><p&g
40、t; delay1ms(15);</p><p><b> if(K2==0)</b></p><p><b> {</b></p><p> if(direct==1)</p><p><b> {</b></p><p> if(floo
41、r==1)</p><p><b> {</b></p><p><b> a[2]=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b>
42、else</b></p><p><b> a[2]=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if
43、(floor>2)</p><p><b> {</b></p><p><b> a[2]=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><
44、b> else</b></p><p><b> a[2]=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
45、<b> if(K3==0)</b></p><p><b> {</b></p><p> delay1ms(15);</p><p><b> if(K3==0)</b></p><p><b> {</b></p><p
46、> if(direct==1)</p><p><b> {</b></p><p> if(floor<3)</p><p><b> {</b></p><p><b> a[3]=1;</b></p><p><b&g
47、t; TR0=1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> a[3]=0;</b></p><p><b> }</b></p><p&g
48、t;<b> else</b></p><p><b> {</b></p><p> if(floor==4)</p><p><b> {</b></p><p><b> a[3]=1;</b></p><p>&l
49、t;b> TR0=1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> a[3]=0;</b></p><p><b> }</b></p>&l
50、t;p><b> }</b></p><p><b> }</b></p><p><b> if(K4==0)</b></p><p><b> {</b></p><p> delay1ms(15);</p><p&
51、gt;<b> if(K4==0)</b></p><p><b> {</b></p><p> if(direct==1)</p><p><b> {</b></p><p> if(floor<4)</p><p><b&g
52、t; {</b></p><p><b> a[4]=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> else</b></p><p&g
53、t;<b> a[4]=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> a[4]=0;</b></p>
54、;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void chazuizhi() //目的樓層查詢程序
55、</p><p><b> {</b></p><p><b> uchar i;</b></p><p> if(!(K1&K2&K3&K4))</p><p><b> {</b></p><p> if(direc
56、t==1)</p><p><b> {</b></p><p> for(i=1;i<=4;i++)</p><p><b> {</b></p><p> if(a[i]==1)</p><p><b> {</b></p>
57、;<p><b> zui=i;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b><
58、/p><p><b> else</b></p><p><b> {</b></p><p> for(i=4;i>0;i--)</p><p><b> {</b></p><p> if(a[i]==1)</p><
59、p><b> zui=i;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><
60、p> void bianxiang() //查詢電梯運行方向是否改變</p><p><b> {</b></p><p> if(floor==zui)</p><p><b> {</b></p><p> if(direct==1)</p><p&
61、gt;<b> {</b></p><p> if(floor==4)</p><p><b> direct=0;</b></p><p><b> if(zui<4)</b></p><p><b> {</b></p>
62、<p> while(K1&K2&K3&K4)</p><p><b> {</b></p><p> green=1; </p><p><b> red=0;</b></p><p><b> yellow=1;</b>
63、</p><p><b> };</b></p><p> if((K1==0)&(zui>1))</p><p><b> direct=0;</b></p><p> if((K2==0)&(zui>2))</p><p> dire
64、ct=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(floor==1)<
65、/p><p><b> direct=1;</b></p><p><b> if(zui>1)</b></p><p><b> {</b></p><p> while(K1&K2&K3&K4)</p><p>&l
66、t;b> {</b></p><p> green=1; </p><p><b> red=0;</b></p><p><b> yellow=1;</b></p><p><b> };</b></p><p>
67、; if((K3==0)&(zui<3))</p><p><b> direct=1;</b></p><p> if((K4==0)&(zui<4))</p><p> direct=1;</p><p><b> }</b></p>&l
68、t;p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p> void display()//點亮led燈程序</p><p><b> {</b>&l
69、t;/p><p> P1=b1[floor];</p><p> P0=led[floor];</p><p> if(TR0==0)</p><p><b> {</b></p><p> green=1; </p><p><b> red=
70、0;</b></p><p><b> yellow=1;</b></p><p><b> }</b></p><p> if((direct==1)&&(TR0==1))</p><p><b> {</b></p><
71、;p><b> green=1;</b></p><p><b> yellow=0;</b></p><p><b> red=1;</b></p><p><b> }</b></p><p> if((direct==0)&&
72、amp;(TR0==1))</p><p><b> {</b></p><p><b> green=0;</b></p><p><b> yellow=1;</b></p><p><b> red=1;</b></p><
73、;p><b> }</b></p><p><b> }</b></p><p> void main() //主函數(shù)</p><p><b> {</b></p><p><b> intial();</b></
74、p><p><b> while(1)</b></p><p><b> {</b></p><p><b> anjian();</b></p><p> chazuizhi();</p><p> display();</p>&
75、lt;p> bianxiang();</p><p><b> }</b></p><p><b> }</b></p><p> void t0() interrupt 1 //中斷函數(shù)</p><p><b> {</b></p>
76、<p> TH0=(65535-50000)/256;</p><p> TL0=(65535-50000)%256;</p><p> if(direct==1)</p><p><b> {</b></p><p> if(floor<zui)</p><p>&
77、lt;b> {</b></p><p><b> TR0=1;</b></p><p> if(a[floor]==1)</p><p><b> {</b></p><p> if(p==200)</p><p><b> {<
78、/b></p><p><b> p=0;</b></p><p> a[floor]=0;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>&l
79、t;/p><p><b> p++;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>&
80、lt;/p><p><b> if(p==60)</b></p><p><b> {</b></p><p><b> p=0;</b></p><p><b> floor++;</b></p><p><b>
81、 }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> p++;</b></p><p><b> }</b></p><p><b>
82、; }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> a[floor]=0;</p><p><b> TR0=0;&
83、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(floor>
84、;zui)</p><p><b> {</b></p><p><b> TR0=1;</b></p><p> if(a[floor]==1)</p><p><b> {</b></p><p> if(p==200)</p>
85、<p><b> {</b></p><p><b> p=0;</b></p><p> a[floor]=0;</p><p><b> }</b></p><p><b> else</b></p><p&
86、gt;<b> {</b></p><p><b> p++;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p
87、><b> {</b></p><p><b> if(p==60)</b></p><p><b> {</b></p><p><b> p=0;</b></p><p><b> floor--;</b><
88、/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> p++;</b></p><p><b> }</b>&l
89、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> a[floor]=0;</p>&
90、lt;p><b> TR0=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 附錄2 簡易電梯的原理圖</p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論