標(biāo)題: 基于c51單片機(jī)的三層電梯控制系統(tǒng)設(shè)計(jì) [打印本頁]

作者: 楊北大    時(shí)間: 2018-12-5 22:27
標(biāo)題: 基于c51單片機(jī)的三層電梯控制系統(tǒng)設(shè)計(jì)
一.課程設(shè)計(jì)題目
基于51單片機(jī)的三層電梯控制
二.課程設(shè)計(jì)的目的

1學(xué)習(xí)P口的使用方法

2掌握如何利用單片機(jī)控制LED動(dòng)態(tài)顯示

3掌握動(dòng)態(tài)掃描顯示的基本原理,動(dòng)態(tài)顯示的控制電路及控制程序

4掌握微機(jī)控制系統(tǒng)的鍵盤組成及工作原理

5認(rèn)識(shí)微機(jī)控制系統(tǒng)的鍵盤設(shè)計(jì),了解單片機(jī)鍵盤的特點(diǎn)和應(yīng)用

三.設(shè)計(jì)要求

設(shè)計(jì)一個(gè)自動(dòng)電梯模擬升降控制系統(tǒng),通過乘客的自行按鍵達(dá)到電梯的升降功能。結(jié)合硬件與軟件對(duì)應(yīng)。端口P0.0-0.6用來控制LED燈的亮與滅,其中從低位到高位分別為一層燈,二層燈,三層燈(前述三個(gè)信號(hào)為電梯內(nèi)請求信號(hào),乘客在電梯內(nèi)部方可置為有效),一層上燈,二層上燈,二層下燈,三層下燈(上述四個(gè)信號(hào)為電梯外部信號(hào),乘客在電梯外部方可置為有效)P2口與鍵盤對(duì)應(yīng)連接,數(shù)碼管采用串行輸入方式,鍵盤從低位到高位分別為一層按鍵,二層按鍵,三層按鍵,一層上升按鍵,二層上升按鍵,二層下降按鍵,三層下降按鍵.P1.0與數(shù)碼管的時(shí)鐘輸入端相連,P1.1與數(shù)碼管的串行口相連,用來顯示電梯的上升下降和當(dāng)前所在樓層,電梯門是否開啟三種狀態(tài),p表示上升,d表示下降,1,2,3表示當(dāng)前樓層,如果數(shù)碼管閃爍,表示電梯門開啟,反之則關(guān)斷。

四.控制系統(tǒng)的總體設(shè)計(jì)方案

微型計(jì)算機(jī)的出現(xiàn)使計(jì)算機(jī)在邏輯處理和工業(yè)控制等方面的非凡能力得到了更好的體現(xiàn)。尤其是其非凡的嵌入能力對(duì)于滿足嵌入式應(yīng)用需求具有獨(dú)特的優(yōu)勢。

隨著城市建設(shè)的不斷發(fā)展,樓群建筑不斷增多,電梯在當(dāng)今社會(huì)的生活中有著廣泛的應(yīng)用。電梯作為樓群建筑中垂直運(yùn)行的交通工具已與人們的日常生活密不可分。 實(shí)際上電梯是根據(jù)外部呼叫信號(hào)(呼梯信號(hào))以及自身控制規(guī)律等運(yùn)行的,而呼叫是隨機(jī)的,電梯實(shí)際上是一個(gè)人機(jī)交互式的控制系統(tǒng),單純用順序控制或邏輯控制 是不能滿足控制要求的,因此,大部分電梯控制系統(tǒng)都采用隨機(jī)邏輯方式控制。

在目前廣泛使用的電梯控制系統(tǒng)中,絕大多數(shù)為繼電器控制型,所有的邏輯及控制關(guān)系完全由諸多繼電器互相配合來完成,該控制系統(tǒng)的缺點(diǎn)是:(1)隨著樓層的 增高,使用繼電器的數(shù)量越來越多,造價(jià)和體積也越來越大;(2)繼電器這種觸點(diǎn)式的電控元器件不宜長時(shí)間頻繁工作,因而采用在電梯系統(tǒng)當(dāng)中常發(fā)生觸電表面 燒結(jié)、控制失靈的故障。

因此我們設(shè)計(jì)一個(gè)3層自動(dòng)電梯模擬升降控制系統(tǒng),通過乘客的自行按鍵達(dá)到升降功能。采用單片機(jī)作為控制核心進(jìn)行仿真。

本次設(shè)計(jì)是應(yīng)用AT89C51芯片進(jìn)行設(shè)計(jì)制作的模擬電梯控制系統(tǒng),通過乘客的按鍵達(dá)到對(duì)電梯升降的控制,并且模擬電梯的運(yùn)行狀態(tài)。

在設(shè)計(jì)方案中,通過對(duì)各個(gè)P口的合理安排和統(tǒng)一協(xié)調(diào),通過按鍵、和LED數(shù)碼管來實(shí)現(xiàn)對(duì)設(shè)計(jì)設(shè)計(jì)方案的仿真演示。另外在實(shí)驗(yàn)程序中通過對(duì)不同按鍵鍵碼在功能上的分配,在按鍵按下之后使CPU做相應(yīng)的工作,即LED數(shù)碼管顯示與之相應(yīng)的樓層和使彩燈顯示相應(yīng)的電梯狀態(tài)。最后,結(jié)合PCB板的實(shí)際接線情況進(jìn)行編程。使實(shí)驗(yàn)順利仿真。

五.控制系統(tǒng)的硬件系統(tǒng)設(shè)計(jì)

5.1.AT89C51單片機(jī)介紹

微型計(jì)算機(jī)系統(tǒng)的硬件部分通常由五部分組成:中央處理器CPU 、數(shù)據(jù)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM、定時(shí)/計(jì)數(shù)器、I/O接口。

MCS-51單片機(jī)內(nèi)部的總體硬件結(jié)構(gòu):

1、中央處理單元CPU(8位)

用于數(shù)據(jù)處理、位操作(位測試、置位、復(fù)位)。

2、只讀存儲(chǔ)器ROM(4KB或8KB)

用于永久性存儲(chǔ)應(yīng)用程序,掩膜ROM、EPROM、EEPROM。

3、隨機(jī)存取存取器RAM(128B 或256B)

用于程序運(yùn)行中存儲(chǔ)工作變量和數(shù)據(jù)。

4、并行輸入/輸出口   I / O(32線)

4個(gè)8位并行I/O口P0、P1、P2、P3口用作系統(tǒng)總線、擴(kuò)展外存、I / O接口芯片。

5、串行輸入/輸出口   UART  (二線)

1個(gè)全雙工的異步串行口;用于串行通信。

6、定時(shí)/計(jì)數(shù)器  T(16位增量可編程)

2 個(gè)或三個(gè)16位定時(shí)器/計(jì)數(shù)器;它與CPU之間各自獨(dú)立工作,當(dāng)它計(jì)數(shù)滿時(shí)向CPU中斷。

7、時(shí)鐘電路  fosc

振蕩頻率fosc在1.2~12Mhz; 分為內(nèi)部振蕩器、外接振蕩電路。

8、中斷系統(tǒng)

5源中斷、 2個(gè)中斷優(yōu)先級(jí); ,可編程進(jìn)行控制。

5.2.硬件系統(tǒng)原理框圖


七. 軟硬件調(diào)試

系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計(jì)好的硬件電路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗(yàn)證其正確性;軟硬件的是否達(dá)到設(shè)計(jì)任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終實(shí)現(xiàn)設(shè)計(jì)目的。

7.1 硬件調(diào)試

硬件調(diào)試僅這里作比較簡單的介紹,不必費(fèi)太多的心思。

7.2 軟件調(diào)試

軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機(jī)調(diào)試兩個(gè)階段。程序的分塊調(diào)試一般在單片機(jī)開發(fā)裝置上進(jìn)行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個(gè)特殊的程序段,并連同被調(diào)程序功能塊一起在開發(fā)裝置上運(yùn)行;也可配合對(duì)應(yīng)硬件電路單獨(dú)運(yùn)行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過單步運(yùn)行或設(shè)置斷點(diǎn)的方法,查出原因并加以改正,直到運(yùn)行結(jié)果正確為止。這時(shí)該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進(jìn)行調(diào)試。程序聯(lián)機(jī)調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)構(gòu)聯(lián)成一個(gè)完整程序,在所研制的硬件電路上運(yùn)行。從而試驗(yàn)程序整體運(yùn)行的完整性、正確性和與硬件電路的配合情況。軟件調(diào)試主要在電腦上進(jìn)行仿真模擬。先全部編譯文件,觀察是否有錯(cuò)誤和警告,在確定沒有錯(cuò)誤和警告的情況下,點(diǎn)擊DEBUG。進(jìn)去仿真階段。本次的實(shí)驗(yàn)難度系數(shù)其實(shí)并不大,關(guān)鍵是要看各部分負(fù)責(zé)的同學(xué)的協(xié)助與互動(dòng),當(dāng)然這也與老師的細(xì)心教導(dǎo)是分不開的。

除此之外,對(duì)系統(tǒng)軟件的熟悉和對(duì)程序編寫的熟練程度也很大意義上起到了加快實(shí)驗(yàn)速度,減少差錯(cuò),減輕工作量的作用。

對(duì)于這些過程與步驟的熟悉與了解能很好的幫助我們解決在實(shí)際應(yīng)用當(dāng)中碰到的諸多問題,比如說在程序當(dāng)中設(shè)計(jì)到延時(shí),但是具體延時(shí)的時(shí)間,我們要從幾個(gè)方面考慮,最后調(diào)試了很多次,試驗(yàn)了很多次的時(shí)間參數(shù),最后才找到了一個(gè)比較合適的延時(shí)參數(shù)。除了認(rèn)為的設(shè)定他的數(shù)值以外,我們還要熟悉和掌握芯片的自身功能,也就是它的運(yùn)算速度。只要知道了運(yùn)算速度,那么大致上的時(shí)間就可以根據(jù)計(jì)算認(rèn)為得到。

還有在關(guān)于程序先后運(yùn)行順序的設(shè)置上也很有講究。如果安排不好程序執(zhí)行的步驟,將會(huì)造成電梯門沒關(guān)便開始上升下降或者LED動(dòng)態(tài)顯示暫時(shí)熄滅不顯示等由于程序執(zhí)行順序所導(dǎo)致的問題。所以,合理的安排步驟,并且配合這塊芯片本身的功能,可以發(fā)揮出事半功倍的效果。

但是在調(diào)試過程中還是出現(xiàn)了一些問題比如延時(shí)程序設(shè)定時(shí)間太短,數(shù)組定義錯(cuò)誤,引腳對(duì)應(yīng)錯(cuò)誤等等

我認(rèn)為對(duì)于我們這些初學(xué)者來說,出現(xiàn)這種錯(cuò)誤也是在情理之中的,關(guān)鍵的問題是如何解決這些問題,我們通過同組同學(xué)的討論和向外組同學(xué)和老師的請教,經(jīng)過了一次一次的調(diào)試,修改,歷經(jīng)整整2天的時(shí)間完成了程序,我們組員表示在這次的設(shè)計(jì)當(dāng)中學(xué)到了很多,下次我們會(huì)珍惜這機(jī)會(huì)的。


八.實(shí)驗(yàn)小結(jié)

一周的課程設(shè)計(jì)馬上就要結(jié)束了,對(duì)于這周的課程設(shè)計(jì)大體也有了不少自己的學(xué)習(xí)經(jīng)驗(yàn)和對(duì)于這課程設(shè)計(jì)的心得,我們這小組做的是電梯升降序控制器,以下便是我的對(duì)其簡單的小結(jié):

   1.由于我們小組在之前有了明確的分工所以整體來說我們小組進(jìn)程還是比較順利的,在編程序方面在以xx同學(xué)為主力在第一天我們將其大致完成了,在電路圖方面我們小組由xx利用了Poteus軟件制作,雖然在之前我們并沒有學(xué)過這個(gè)軟件的使用方法,但經(jīng)過一天的自我學(xué)習(xí),我們最終還是按要求完成了制圖。

   2.第二天由于程序的基本成型,并在電路板上進(jìn)行了實(shí)踐的操作,流程圖這一塊便有我來制作了,由于我們的程序比較大應(yīng)用的模塊比較多說以,制作流程圖還是花了我不少的時(shí)間。

   3.第三天我們將寫好的程序燒進(jìn)了單片機(jī),并給老師看過之后,老師指導(dǎo)我們修改了部分細(xì)節(jié)后,我們便開始制作最后的收尾工作,xx同學(xué)將最后的圖紙完善,xxx,xxx同學(xué)進(jìn)行最后的實(shí)驗(yàn)排版,我對(duì)流程圖按照修改后的程序進(jìn)行了最后的修正。

   4.當(dāng)然在最終的結(jié)果中還是存在些不足,但總的來說,我們這次收獲了更多。在與同學(xué)和老師的交流中,我們再次系統(tǒng)的復(fù)習(xí)了專業(yè)知識(shí),對(duì)專業(yè)知識(shí)掌握和運(yùn)用更加熟練。此次課程設(shè)計(jì),我們收獲的不只是將其完成,更多的是再次把知識(shí)學(xué)習(xí)鞏固了一遍。在這次設(shè)計(jì)的學(xué)習(xí)中,我們得到了不少啟示,相信在以后的學(xué)習(xí)生活上也會(huì)給予我們很多的幫助。



九.心得體會(huì)

大三的第二學(xué)期末的第一門課程設(shè)計(jì)馬上就要結(jié)束了,整體來說這周時(shí)間并不十分緊張,我們有了充分的時(shí)間去學(xué)習(xí)課程設(shè)計(jì)所需要的其他軟件的應(yīng)用,總體來說我們還是收獲頗豐,我做的是單片機(jī)的流程圖,平時(shí)一般的流程圖都是老師給了參考的流程,而且在制作報(bào)告的時(shí)候還是手寫的,現(xiàn)在這一切都是自己操作,第一天剛開始的時(shí)候有點(diǎn)手足無措的感覺,突然發(fā)現(xiàn)原來實(shí)際與想法還是會(huì)有一定的差距的,比如有一次流程圖的橫向很寬,一頁紙完全放不下,但是相對(duì)長度卻綽綽有余,但將頁面橫置卻花了很長時(shí)間。這次課程設(shè)計(jì)從選題到定稿,從理論到實(shí)踐,在接近一個(gè)星期的日子里,可以說是苦多于甜,但是學(xué)到了很多很多的東西,同時(shí)不僅可以鞏固以前所學(xué)過的知識(shí),而且還學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)踐相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論。在設(shè)計(jì)的過程中遇到問題,可以說是困難重重,這畢竟是第一次做的,難免會(huì)遇到各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對(duì)單片機(jī)匯編語言掌握得不好等等。通過這次課程設(shè)計(jì)之后,也把之前所學(xué)過的知識(shí)重新溫故了。
  總的來說這次的課程設(shè)計(jì)還算滿成功的,收獲也很豐富的,因此在最后我要感謝跟我同組的同學(xué),是大家的努力換來的今天的結(jié)果,同時(shí)也要感謝老師對(duì)我們的指導(dǎo)。


單片機(jī)源程序如下:


  1. #include<reg51.h>

  2. void Zero();
  3. void Delay_ms(unsigned int Time);
  4. void Display(unsigned int n,unsigned char a);
  5. void Flash(unsigned int Time);
  6. void KBScan();
  7. void dl_ms();
  8. void Destination();
  9. void Up();
  10. void Down();

  11. unsigned char code TAB[3][8]={{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ù)碼管顯示矩陣*/
  12. //P2與查詢式鍵盤硬件相連
  13. sbit P2_0=P2^0;
  14. sbit P2_1=P2^1;
  15. sbit P2_2=P2^2;
  16. sbit P2_3=P2^3;
  17. sbit P2_4=P2^4;
  18. sbit P2_5=P2^5;
  19. sbit P2_6=P2^6;
  20. sbit P2_7=P2^7;
  21. //P0與LED燈硬件相連
  22. sbit P0_0=P0^0;
  23. sbit P0_1=P0^1;
  24. sbit P0_2=P0^2;
  25. sbit P0_3=P0^3;
  26. sbit P0_4=P0^4;
  27. sbit P0_5=P0^5;
  28. sbit P0_6=P0^6;
  29. sbit P0_7=P0^7;

  30. sbit P1_0 = P1^0;                      /*用于產(chǎn)生時(shí)鐘信號(hào)*/
  31. sbit P1_1 = P1^1;                      /*用于產(chǎn)生串行輸入信號(hào)(顯示or清零)*/

  32. unsigned int lift=1;                   /*電梯所在樓層*/
  33. unsigned int status=1;                 /*電梯上行為1,下行為0*/
  34. unsigned char request[3]={0,0,0};      /*1~3樓有無請求,有請求為1*/
  35. unsigned char dst=1;                   /*電梯的目的樓層*/

  36. //清零程序
  37. void Zero()
  38. {
  39.   unsigned char k;
  40.   P1_1=0;
  41.   P1_0=0;
  42.   for(k=0;k<40;k++)
  43.   {
  44.    dl_ms();
  45.    P1_0=1;
  46.    dl_ms();
  47.    P1_0=0;
  48.   }
  49. }

  50. //延時(shí)程序,以毫秒為單位,用軟件計(jì)時(shí),輸入的參數(shù)
  51. void Delay_ms(unsigned int Time)
  52. {
  53.   unsigned int i=0,j=0;
  54.   for(i=0;i<Time;++i)
  55.   {
  56.     KBScan();
  57.     for(j=0;j<125;++j);
  58.   }
  59. }

  60. //顯示某一樓層
  61. void Display(unsigned int n,unsigned char a)
  62. {
  63.   unsigned char k;
  64.   unsigned char b[]={0,0,0,0,0,0,0,0};
  65.   if(a==1)
  66.   {
  67.     b[7]=1;b[6]=1;b[5]=0;b[4]=0;b[3]=1;b[2]=1;b[1]=1;b[0]=0;
  68.   }
  69.   else if(a==0)
  70.   {
  71.     b[7]=0;b[6]=1;b[5]=1;b[4]=1;b[3]=1;b[2]=0;b[1]=1;b[0]=0;
  72.   }
  73.   Zero();
  74.   P1_0=0;
  75.   for(k=0;k<8;k++)
  76.   {
  77.     KBScan();
  78.     P1_1=b[k];
  79.     dl_ms();
  80.     P1_0=1;
  81.     dl_ms();
  82.     P1_0=0;
  83.   }
  84.   P1_0=0;
  85.   for(k=0;k<8;k++)
  86.   {
  87.     KBScan();
  88.    P1_1=TAB[n-1][k];
  89.    dl_ms();
  90.    P1_0=1;
  91.    dl_ms();
  92.    P1_0=0;
  93.   }
  94. }

  95. //閃爍顯示到達(dá)樓層
  96. void Flash(unsigned int Time)
  97. {
  98.   unsigned char i;
  99.   for(i=0;i<Time;i++)
  100.   {
  101.     Zero();
  102.     Delay_ms(1000);
  103.     KBScan();
  104.     Display(lift,status);
  105.     Delay_ms(1000);
  106.     KBScan();
  107.   }
  108.   Zero();
  109.   Delay_ms(1000);
  110.   KBScan();
  111. }

  112. //查詢式鍵盤掃描
  113. void KBScan()
  114. {
  115.   if(P2!=0xff)
  116.   {
  117.     dl_ms();
  118.     if(P2!=0xff)
  119.     {
  120.       switch(P2)
  121.       {
  122.         case 0xfe: {P0_0=1;request[0]=1;break;} /*電梯內(nèi)請求1樓*/
  123.               case 0xfd: {P0_1=1;request[1]=1;break;} /*電梯內(nèi)請求2樓*/
  124.               case 0xfb: {P0_2=1;request[2]=1;break;} /*電梯內(nèi)請求3樓*/
  125.               case 0xf7: {P0_3=1;request[0]=1;break;} /*電梯外1樓請求向上*/
  126.               case 0xef: {P0_4=1;request[1]=1;break;} /*電梯外2樓請求向上*/
  127.               case 0xdf: {P0_5=1;request[1]=1;break;} /*電梯外2樓請求向下*/
  128.               case 0xbf: {P0_6=1;request[2]=1;break;} /*電梯內(nèi)3樓請求向下*/
  129.         default: {break;}                       /*錯(cuò)誤請求*/
  130.       }
  131.     }
  132.   }
  133. }
  134. //消抖延時(shí)
  135. void dl_ms()
  136. {
  137.   unsigned char i;
  138.   for(i=0;i<30;++i);
  139. }

  140. //獲取目的樓層
  141. void Destination()
  142. {
  143.   unsigned char j;                 //j循環(huán)控制變量
  144.   KBScan();                //有鍵按下
  145.   if(status==1)                               //若電梯向上走則從高樓層到低樓層掃描
  146.   {                                             //以此達(dá)到判斷優(yōu)先級(jí)的目的
  147.     for(j=3;j>=1;--j)
  148.     {
  149.       if(request[j-1]==1)
  150.       {
  151.         dst=j;                         //則將目的樓層設(shè)為該樓
  152.         break;                               //并將其對(duì)應(yīng)的request置1,然后跳出
  153.       }
  154.     }
  155.   }
  156.   else if(status==0)                 //若電梯向下走則從低樓層到高樓層掃描
  157.   {                                             //以此達(dá)到判斷優(yōu)先級(jí)的目的
  158.     for(j=1;j<=3;++j)
  159.     {
  160.       if(request[j-1]==1)
  161.       {
  162.       dst=j;
  163.       break;
  164.       }
  165.     }
  166.   }
  167. }

  168. //電梯向上走
  169. void Up()
  170. {
  171.   status=1;                                       //置1表示電梯向上走
  172.   for(;lift<=dst;lift++)                           //電梯到達(dá)目的樓層之前往上走
  173.   {
  174.     Display(lift,1);                                     //每到達(dá)一樓就顯示該樓層數(shù)
  175.     KBScan();
  176.     Destination();                                     //讀取點(diǎn)陣鍵盤
  177.     if(request[lift-1]==1)      //若請求到達(dá)的樓層在所在樓層和目的樓層之間則停下閃爍顯示并將其對(duì)應(yīng)的request清零
  178.     {
  179.       Delay_ms(3000);
  180.       if(P0_5==1&&lift==2);
  181.       else
  182.       {
  183.         request[lift-1]=0;
  184.       }
  185.       switch(lift)
  186.       {
  187.         case 1:{P0_0=0;P0_3=0;break;}
  188.         case 2:{P0_1=0;P0_4=0;break;}
  189.         case 3:{P0_2=0;P0_6=0;break;}
  190.         default:{break;}
  191.       }
  192.       Flash(3);
  193.       Delay_ms(800);
  194.     }
  195.     else
  196.     {
  197.       Delay_ms(3000);
  198.     }
  199.   }
  200.   lift--;
  201. }

  202. //電梯向下走
  203. void Down()
  204. {
  205.   status=0;                                       //置1表示電梯向上走
  206.   for(;lift>=dst;lift--)                       //電梯到達(dá)目的樓層之前往上走
  207.   {
  208.     Display(lift,0);                                     //每到達(dá)一樓就顯示該樓層數(shù)
  209.     KBScan();
  210.     Destination();                                     //讀取點(diǎn)陣鍵盤
  211.     if(request[lift-1]==1)      //若請求到達(dá)的樓層在所在樓層和目的樓層之間則停下閃爍顯示并將其對(duì)應(yīng)的request清零
  212.     {
  213.       Delay_ms(3000);
  214.       if(P0_4==1&&lift==2);
  215.       else
  216.       {
  217.         request[lift-1]=0;
  218.       }
  219.       switch(lift)
  220.       {
  221.         case 1:{P0_0=0;P0_3=0;break;}
  222.         case 2:{P0_1=0;P0_5=0;break;}
  223.         case 3:{P0_2=0;P0_6=0;break;}
  224.         default:{break;}
  225. ……………………

  226. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:

基于c51單片機(jī)的三層電梯控制.doc (50.13 KB, 下載次數(shù): 89)





作者: 247733404    時(shí)間: 2018-12-17 14:57
謝謝樓主分享
作者: 532899493    時(shí)間: 2018-12-17 15:42
思路非常清晰,謝謝樓主
作者: HaliDog520    時(shí)間: 2018-12-22 12:48
參考一下
作者: Thomas/    時(shí)間: 2019-3-8 16:31
感謝樓主分享

作者: 此間少年ouo    時(shí)間: 2022-12-28 17:51
樓主現(xiàn)在資源還能補(bǔ)嗎,好像掛了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1