基于C51單片機的三層電梯控制_第1頁
基于C51單片機的三層電梯控制_第2頁
基于C51單片機的三層電梯控制_第3頁
基于C51單片機的三層電梯控制_第4頁
基于C51單片機的三層電梯控制_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、一課程設(shè)計題目基于51單片機的三層電梯控制二課程設(shè)計的目的1學(xué)習(xí)P口的使用方法2掌握如何利用單片機控制LED動態(tài)顯示3掌握動態(tài)掃描顯示的基本原理,動態(tài)顯示的控制電路及控制程序4掌握微機控制系統(tǒng)的鍵盤組成及工作原理5認識微機控制系統(tǒng)的鍵盤設(shè)計,了解單片機鍵盤的特點和應(yīng)用三設(shè)計要求設(shè)計一個自動電梯模擬升降控制系統(tǒng),通過乘客的自行按鍵達到電梯的升降功能。結(jié)合硬件與軟件對應(yīng)。端口P0.0-0.6用來控制LED燈的亮與滅,其中從低位到高位分別為一層燈,二層燈,三層燈(前述三個信號為電梯內(nèi)請求信號,乘客在電梯內(nèi)部方可置為有效),一層上燈,二層上燈,二層下燈,三層下燈(上述四個信號為電梯外部信號,乘客在電梯

2、外部方可置為有效)P2口與鍵盤對應(yīng)連接,數(shù)碼管采用串行輸入方式,鍵盤從低位到高位分別為一層按鍵,二層按鍵,三層按鍵,一層上升按鍵,二層上升按鍵,二層下降按鍵,三層下降按鍵.P1.0與數(shù)碼管的時鐘輸入端相連,P1.1與數(shù)碼管的串行口相連,用來顯示電梯的上升下降和當(dāng)前所在樓層,電梯門是否開啟三種狀態(tài),p表示上升,d表示下降,1,2,3表示當(dāng)前樓層,如果數(shù)碼管閃爍,表示電梯門開啟,反之則關(guān)斷。四控制系統(tǒng)的總體設(shè)計方案微型計算機的出現(xiàn)使計算機在邏輯處理和工業(yè)控制等方面的非凡能力得到了更好的體現(xiàn)。尤其是其非凡的嵌入能力對于滿足嵌入式應(yīng)用需求具有獨特的優(yōu)勢。隨著城市建設(shè)的不斷發(fā)展,樓群建筑不斷增多,電梯在

3、當(dāng)今社會的生活中有著廣泛的應(yīng)用。電梯作為樓群建筑中垂直運行的交通工具已與人們的日常生活密不可分。 實際上電梯是根據(jù)外部呼叫信號(呼梯信號)以及自身控制規(guī)律等運行的,而呼叫是隨機的,電梯實際上是一個人機交互式的控制系統(tǒng),單純用順序控制或邏輯控制 是不能滿足控制要求的,因此,大部分電梯控制系統(tǒng)都采用隨機邏輯方式控制。在目前廣泛使用的電梯控制系統(tǒng)中,絕大多數(shù)為繼電器控制型,所有的邏輯及控制關(guān)系完全由諸多繼電器互相配合來完成,該控制系統(tǒng)的缺點是:(1)隨著樓層的 增高,使用繼電器的數(shù)量越來越多,造價和體積也越來越大;(2)繼電器這種觸點式的電控元器件不宜長時間頻繁工作,因而采用在電梯系統(tǒng)當(dāng)中常發(fā)生觸電

4、表面 燒結(jié)、控制失靈的故障。因此我們設(shè)計一個3層自動電梯模擬升降控制系統(tǒng),通過乘客的自行按鍵達到升降功能。采用單片機作為控制核心進行仿真。本次設(shè)計是應(yīng)用AT89C51芯片進行設(shè)計制作的模擬電梯控制系統(tǒng),通過乘客的按鍵達到對電梯升降的控制,并且模擬電梯的運行狀態(tài)。在設(shè)計方案中,通過對各個P口的合理安排和統(tǒng)一協(xié)調(diào),通過按鍵、和LED數(shù)碼管來實現(xiàn)對設(shè)計設(shè)計方案的仿真演示。另外在實驗程序中通過對不同按鍵鍵碼在功能上的分配,在按鍵按下之后使CPU做相應(yīng)的工作,即LED數(shù)碼管顯示與之相應(yīng)的樓層和使彩燈顯示相應(yīng)的電梯狀態(tài)。最后,結(jié)合PCB板的實際接線情況進行編程。使實驗順利仿真。五控制系統(tǒng)的硬件系統(tǒng)設(shè)計5.

5、1.AT89C51單片機介紹微型計算機系統(tǒng)的硬件部分通常由五部分組成:中央處理器CPU 、數(shù)據(jù)存儲器RAM、程序存儲器ROM、定時/計數(shù)器、I/O接口。MCS-51單片機內(nèi)部的總體硬件結(jié)構(gòu):1、中央處理單元CPU(8位)用于數(shù)據(jù)處理、位操作(位測試、置位、復(fù)位)。2、只讀存儲器ROM(4KB或8KB)用于永久性存儲應(yīng)用程序,掩膜ROM、EPROM、EEPROM。3、隨機存取存取器RAM(128B 或256B)用于程序運行中存儲工作變量和數(shù)據(jù)。4、并行輸入/輸出口 I / O(32線)4個8位并行I/O口P0、P1、P2、P3口用作系統(tǒng)總線、擴展外存、I / O接口芯片。5、串行輸入/

6、輸出口 UART (二線)1個全雙工的異步串行口;用于串行通信。6、定時/計數(shù)器 T(16位增量可編程)2 個或三個16位定時器/計數(shù)器;它與CPU之間各自獨立工作,當(dāng)它計數(shù)滿時向CPU中斷。7、時鐘電路 fosc振蕩頻率fosc在1.212Mhz; 分為內(nèi)部振蕩器、外接振蕩電路。8、中斷系統(tǒng) 5源中斷、 2個中斷優(yōu)先級; ,可編程進行控制。5.2硬件系統(tǒng)原理框圖AT89C51單片機鍵盤彩燈控制Led數(shù)碼管#include<reg51.h>void Zero();void Delay_ms(unsigned int Time);void Display(unsigned int n

7、,unsigned char a);void Flash(unsigned int Time);void KBScan();void dl_ms();void Destination();void Up();void Down();unsigned char code TAB38=0,0,0,0,0,1,1,0,0,1,0,1,1,0,1,1,0,1,0,0,1,1,1,1;/*樓層數(shù)碼管顯示矩陣*/P2與查詢式鍵盤硬件相連sbit P2_0=P20;sbit P2_1=P21;sbit P2_2=P22;sbit P2_3=P23;sbit P2_4=P24;sbit P2_5=P25;sb

8、it P2_6=P26;sbit P2_7=P27;/P0與LED燈硬件相連sbit P0_0=P00;sbit P0_1=P01;sbit P0_2=P02;sbit P0_3=P03;sbit P0_4=P04;sbit P0_5=P05;sbit P0_6=P06;sbit P0_7=P07;sbit P1_0 = P10; /*用于產(chǎn)生時鐘信號*/sbit P1_1 = P11; /*用于產(chǎn)生串行輸入信號(顯示or清零)*/unsigned int lift=1; /*電梯所在樓層*/unsigned int status=1; /*電梯上行為1,下行為0*/unsigned char

9、 request3=0,0,0; /*13樓有無請求,有請求為1*/unsigned char dst=1; /*電梯的目的樓層*/清零程序void Zero() unsigned char k; P1_1=0; P1_0=0; for(k=0;k<40;k+) dl_ms(); P1_0=1; dl_ms(); P1_0=0; /延時程序,以毫秒為單位,用軟件計時,輸入的參數(shù)void Delay_ms(unsigned int Time) unsigned int i=0,j=0; for(i=0;i<Time;+i) KBScan(); for(j=0;j<125;+j)

10、; /顯示某一樓層void Display(unsigned int n,unsigned char a) unsigned char k; unsigned char b=0,0,0,0,0,0,0,0; if(a=1) b7=1;b6=1;b5=0;b4=0;b3=1;b2=1;b1=1;b0=0; else if(a=0) b7=0;b6=1;b5=1;b4=1;b3=1;b2=0;b1=1;b0=0; Zero(); P1_0=0; for(k=0;k<8;k+) KBScan(); P1_1=bk; dl_ms(); P1_0=1; dl_ms(); P1_0=0; P1_0=

11、0; for(k=0;k<8;k+) KBScan(); P1_1=TABn-1k; dl_ms(); P1_0=1; dl_ms(); P1_0=0; /閃爍顯示到達樓層void Flash(unsigned int Time) unsigned char i; for(i=0;i<Time;i+) Zero(); Delay_ms(1000); KBScan(); Display(lift,status); Delay_ms(1000); KBScan(); Zero(); Delay_ms(1000); KBScan();/查詢式鍵盤掃描void KBScan() if(P2

12、!=0xff) dl_ms(); if(P2!=0xff) switch(P2) case 0xfe: P0_0=1;request0=1;break; /*電梯內(nèi)請求1樓*/case 0xfd: P0_1=1;request1=1;break; /*電梯內(nèi)請求2樓*/case 0xfb: P0_2=1;request2=1;break; /*電梯內(nèi)請求3樓*/case 0xf7: P0_3=1;request0=1;break; /*電梯外1樓請求向上*/case 0xef: P0_4=1;request1=1;break; /*電梯外2樓請求向上*/case 0xdf: P0_5=1;re

13、quest1=1;break; /*電梯外2樓請求向下*/case 0xbf: P0_6=1;request2=1;break; /*電梯內(nèi)3樓請求向下*/ default: break; /*錯誤請求*/ /消抖延時void dl_ms() unsigned char i; for(i=0;i<30;+i);/獲取目的樓層void Destination() unsigned char j; /j循環(huán)控制變量 KBScan(); /有鍵按下 if(status=1) /若電梯向上走則從高樓層到低樓層掃描 /以此達到判斷優(yōu)先級的目的 for(j=3;j>=1;-j) if(requ

14、estj-1=1) dst=j; /則將目的樓層設(shè)為該樓 break; /并將其對應(yīng)的request置1,然后跳出 else if(status=0) /若電梯向下走則從低樓層到高樓層掃描 /以此達到判斷優(yōu)先級的目的 for(j=1;j<=3;+j) if(requestj-1=1) dst=j; break; /電梯向上走void Up() status=1; /置1表示電梯向上走 for(;lift<=dst;lift+) /電梯到達目的樓層之前往上走 Display(lift,1); /每到達一樓就顯示該樓層數(shù) KBScan(); Destination(); /讀取點陣鍵盤

15、 if(requestlift-1=1) /若請求到達的樓層在所在樓層和目的樓層之間則停下閃爍顯示并將其對應(yīng)的request清零 Delay_ms(3000); if(P0_5=1&&lift=2); else requestlift-1=0; switch(lift) case 1:P0_0=0;P0_3=0;break; case 2:P0_1=0;P0_4=0;break; case 3:P0_2=0;P0_6=0;break; default:break; Flash(3); Delay_ms(800); else Delay_ms(3000); lift-;/電梯向下

16、走void Down() status=0; /置1表示電梯向上走 for(;lift>=dst;lift-) /電梯到達目的樓層之前往上走 Display(lift,0); /每到達一樓就顯示該樓層數(shù) KBScan(); Destination(); /讀取點陣鍵盤 if(requestlift-1=1) /若請求到達的樓層在所在樓層和目的樓層之間則停下閃爍顯示并將其對應(yīng)的request清零 Delay_ms(3000); if(P0_4=1&&lift=2); else requestlift-1=0; switch(lift) case 1:P0_0=0;P0_3=

17、0;break; case 2:P0_1=0;P0_5=0;break; case 3:P0_2=0;P0_6=0;break; default:break; Flash(3); Delay_ms(800); else Delay_ms(3000); lift+;void main() P0=0; while(1) /電梯程序的循環(huán) Display(lift,status); Destination(); /查詢有無樓層請求到達 if(dst>=lift) /請求的樓層比要到達的樓層高 Up(); /電梯向上走 else Down(); /否則電梯向下走 七. 軟硬件調(diào)試系統(tǒng)調(diào)試包括硬件

18、調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計好的硬件電路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗證其正確性;軟硬件的是否達到設(shè)計任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終實現(xiàn)設(shè)計目的。7.1 硬件調(diào)試硬件調(diào)試僅這里作比較簡單的介紹,不必費太多的心思。7.2 軟件調(diào)試軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機調(diào)試兩個階段。程序的分塊調(diào)試一般在單片機開發(fā)裝置上進行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個特殊的程序段,并連同被調(diào)程序功能塊一起在開發(fā)裝置上運行;也可配合對應(yīng)硬件電路單獨運行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過單步運行或設(shè)置斷點的方法,查出原因并

19、加以改正,直到運行結(jié)果正確為止。這時該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進行調(diào)試。程序聯(lián)機調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)構(gòu)聯(lián)成一個完整程序,在所研制的硬件電路上運行。從而試驗程序整體運行的完整性、正確性和與硬件電路的配合情況。軟件調(diào)試主要在電腦上進行仿真模擬。先全部編譯文件,觀察是否有錯誤和警告,在確定沒有錯誤和警告的情況下,點擊DEBUG。進去仿真階段。本次的實驗難度系數(shù)其實并不大,關(guān)鍵是要看各部分負責(zé)的同學(xué)的協(xié)助與互動,當(dāng)然這也與老師的細心教導(dǎo)是分不開的。除此之外,對系統(tǒng)軟件的熟悉和對程序編寫的熟練程度也很大意義上起到了加快實驗速度,減少差錯,減輕工

20、作量的作用。對于這些過程與步驟的熟悉與了解能很好的幫助我們解決在實際應(yīng)用當(dāng)中碰到的諸多問題,比如說在程序當(dāng)中設(shè)計到延時,但是具體延時的時間,我們要從幾個方面考慮,最后調(diào)試了很多次,試驗了很多次的時間參數(shù),最后才找到了一個比較合適的延時參數(shù)。除了認為的設(shè)定他的數(shù)值以外,我們還要熟悉和掌握芯片的自身功能,也就是它的運算速度。只要知道了運算速度,那么大致上的時間就可以根據(jù)計算認為得到。還有在關(guān)于程序先后運行順序的設(shè)置上也很有講究。如果安排不好程序執(zhí)行的步驟,將會造成電梯門沒關(guān)便開始上升下降或者LED動態(tài)顯示暫時熄滅不顯示等由于程序執(zhí)行順序所導(dǎo)致的問題。所以,合理的安排步驟,并且配合這塊芯片本身的功能

21、,可以發(fā)揮出事半功倍的效果。但是在調(diào)試過程中還是出現(xiàn)了一些問題比如延時程序設(shè)定時間太短,數(shù)組定義錯誤,引腳對應(yīng)錯誤等等我認為對于我們這些初學(xué)者來說,出現(xiàn)這種錯誤也是在情理之中的,關(guān)鍵的問題是如何解決這些問題,我們通過同組同學(xué)的討論和向外組同學(xué)和老師的請教,經(jīng)過了一次一次的調(diào)試,修改,歷經(jīng)整整2天的時間完成了程序,我們組員表示在這次的設(shè)計當(dāng)中學(xué)到了很多,下次我們會珍惜這機會的。八實驗小結(jié)一周的課程設(shè)計馬上就要結(jié)束了,對于這周的課程設(shè)計大體也有了不少自己的學(xué)習(xí)經(jīng)驗和對于這課程設(shè)計的心得,我們這小組做的是電梯升降序控制器,以下便是我的對其簡單的小結(jié): 1.由于我們小組在之前有了明確的分工所以整體來說

22、我們小組進程還是比較順利的,在編程序方面在以xx同學(xué)為主力在第一天我們將其大致完成了,在電路圖方面我們小組由xx利用了Poteus軟件制作,雖然在之前我們并沒有學(xué)過這個軟件的使用方法,但經(jīng)過一天的自我學(xué)習(xí),我們最終還是按要求完成了制圖。 2.第二天由于程序的基本成型,并在電路板上進行了實踐的操作,流程圖這一塊便有我來制作了,由于我們的程序比較大應(yīng)用的模塊比較多說以,制作流程圖還是花了我不少的時間。 3.第三天我們將寫好的程序燒進了單片機,并給老師看過之后,老師指導(dǎo)我們修改了部分細節(jié)后,我們便開始制作最后的收尾工作,xx同學(xué)將最后的圖紙完善,xxx,xxx同學(xué)進行最后的實驗排版,我對流程圖按照修改后的程序進行了最后的修正。 4.當(dāng)然在最終的結(jié)果中還是存在些不足,但總的來說,我們這次收獲了更多。在

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論