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

下載本文檔

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

文檔簡介

1、一、課程設(shè)計的性質(zhì)和目的通過課程設(shè)計,進行硬軟件設(shè)計的方法和技能訓練,鞏固在課堂上學到的有關(guān)硬件電路設(shè)計和相應程序設(shè)計的基本知識和基本方法,通過具體課題的訓練,達到能獨立閱讀、查閱資料、軟硬件設(shè)計和調(diào)試完善特定功能的目的。二、課程設(shè)計的要求1、遵循硬件設(shè)計模塊化。2、要求通過自制PCB板、或萬能板、或面包板設(shè)計實物。3、程序設(shè)計結(jié)構(gòu)化。4、要求程序結(jié)構(gòu)合理,程序簡明易懂,有必要的注釋。三、主要儀器設(shè)備及軟件PC機、Keil軟件、ALTIUM DESINGERS09(PROTEL99)、 Proteus 7繪圖軟件及仿真等。4、 課程設(shè)計題目及要求 題目:基于單片機的電梯控制器研制要求:采用單片

2、機控制的方法,設(shè)計一個能自動控制一臺電梯的控制電路。有語音提示??刂贫擞肔ED模塊顯示電梯運行情況。PCB制板并編寫各子程序。五、課題分析及設(shè)計思路1、課題研究的內(nèi)容 隨著科技的發(fā)展,微型計算機領(lǐng)域的不斷進步,將使得將來電梯的體積大大減小,功能不斷完善,過程的控制更平穩(wěn)、可靠、抗干擾性能增強、機械與電氣部件被機結(jié)合在一個設(shè)備內(nèi),把儀表、電子和計算機的功能綜合在一起。因此微型計算機控制技術(shù)將會成為電梯運行中的關(guān)鍵技術(shù)。 本次設(shè)計的主要內(nèi)容是以單片機為主控制器的電梯控制系統(tǒng)。本來電梯系統(tǒng)是一個相對復雜的系統(tǒng),由于能力和經(jīng)驗有限,所以只能實現(xiàn)基本的功能如:層站呼叫、自動停層、轎廂命令響應等。通過單片

3、機輸出電壓通過驅(qū)動電路然后控制電梯拖動。在此,本文以五層電梯為研究對象,選用52單片機(該機芯片選為AT89C52)作為其控制器,研究微機控制梯系統(tǒng)的設(shè)計方法。根據(jù)問題的提出、意義和文獻綜述,本課題研究的具體內(nèi)容包括以下四個方面: (1)對電梯系統(tǒng)常用的控制方法的研究(2)電梯控制系統(tǒng)硬件組成及其原理(3)電梯的單片機系統(tǒng)軟件設(shè)計(4)電梯在信號傳輸中遇到的問題2總體設(shè)計方案2.1設(shè)計思路 本次設(shè)計的基本思想是采用AT89C52單片機作為核心,利用其豐富的I/O接口與外圍電路配合進行控制。采用延時函數(shù)來控制電梯的位置校驗,采用數(shù)碼管靜態(tài)顯示來實時顯示電梯所在樓層。采用行列式矩陣鍵盤矩陣作為外呼

4、內(nèi)選電路,由于是4層樓,故選用44矩陣鍵盤。當電梯到達目的樓層時電機停止,此時即可進、出乘客,乘客進入電梯之后可選擇去哪一層,然后電梯根據(jù)乘客的選擇判斷去哪一層,繼續(xù)運行。通過單片機控制電梯在上升過程中只響應上升呼叫,下降過程中只響應下降呼叫。電梯的正常運行通過單片機的控制來實現(xiàn)。2.1.1方案確立(1)主控芯片選擇 方案一:多片單片機控制方案。這種方案是使用多片單片機,其中一片是作為主控制器,另外設(shè)置了轎廂控制系統(tǒng),每層的控制系統(tǒng)分別由一個單片機控制,然后通過主控制器和副控制器之間的通訊,實現(xiàn)電梯系統(tǒng)的控制。這種方案的控制系統(tǒng)的結(jié)構(gòu)簡單明了,各個系統(tǒng)之間相互獨立便于維護和修檢。所以根據(jù)功能要

5、求需要選用5片AT89C51單片機就可以實現(xiàn)該電梯的功能。不過單片機之間的通訊較多,在目前通訊是個難點,可能導致電梯運行過程不夠穩(wěn)定。 方案二:采用CPLD器件作為控制中心,對整個系統(tǒng)的運作進行統(tǒng)一管理,但這種方案要求平時有很多的知識積累和較強的專業(yè)水平,實現(xiàn)起來比較困難且器件較貴,不符合經(jīng)濟要求,而且升降電機的控制,運行時間的測量、顯示等還需要單片機的配合。 方案三:一片單片機為主控制器的方案。MCU采用一個單片機控制所有的按鍵、數(shù)碼管顯示、電動機的轉(zhuǎn)動、傳感器的輸出信號等,并對以上所有信號進行處理。方案四:用L298N來控制兩臺直流電機,方便簡單,而且在所提供的器材范圍內(nèi)。單片機技術(shù)目前較

6、為成熟,自身資源豐富,硬件設(shè)計簡單,成本低,可靠性高,結(jié)合軟件完全可以實現(xiàn)電梯運行狀況的簡單模擬。但是受所提供器材的限制,這種方案的控制系統(tǒng)相對簡單,只適用于較簡單的電梯控制系統(tǒng),因為這次的設(shè)計的內(nèi)容是4層電梯控制系統(tǒng),所以選用這種方案。權(quán)衡以上方案的分析,采用方案四。(2)樓層顯示模塊 方案一:采用點陣式液晶顯示器(LCD)顯示各種相關(guān)數(shù)據(jù)以及信息。點陣式液晶顯示器屬于低功耗器件,但其價格較貴。 方案二:采用傳統(tǒng)的7段數(shù)碼管(LED)顯示電梯實時所到的樓層。雖功耗大,但其軟件驅(qū)動簡單,硬件電路調(diào)試方便,價格便宜,亮度大,能滿足本設(shè)計的要求。以上兩種方案中,選擇方案二。(3) 聲音提示模塊 方

7、案一:采用美國ISD公司的2590語音芯片,該語音芯片錄放時間為90秒。ISD2500系列具有抗斷電、音質(zhì)好,使用方便等優(yōu)點。它的最大特點在于片內(nèi)E2PROM容量為480K,所以錄放時間長;有10個地址輸入端,尋址能力可達1024位;最多能分600段;設(shè)有OVF(溢出)端,便于多個器件級聯(lián)。 方案二:采用蜂鳴提示音提示當轎箱到達所需的樓層時,蜂鳴器響,提示乘客到達了所需的樓層,另外可以作為緊急停止時的報警提示信號,其軟件驅(qū)動、硬件電路調(diào)試非常簡潔方便,而且價格便宜,能滿足本設(shè)計的要求。以上兩種方案中,選擇方案二。(4)電動機模塊 方案一:采用步進電機作為本設(shè)計的執(zhí)行元件,步進電機在定位性能方面

8、十分優(yōu)越。步進電機和普通電機的區(qū)別主要就在于其脈沖驅(qū)動的形式,步進電機不需要A/D轉(zhuǎn)換,能夠直接將數(shù)字脈沖信號轉(zhuǎn)化成為角位移。常用的步進電機每轉(zhuǎn)一步,角度轉(zhuǎn)1.8,在應用中,步進電機可以同時完成兩個工作,其一是傳遞轉(zhuǎn)矩,其二是傳遞信息,升降精度很高。 方案二:采用直流電機作為本設(shè)計的執(zhí)行元件,直流電機工作是讓線圈始終交替地處于穩(wěn)定狀態(tài)和非穩(wěn)定平衡狀態(tài),通過控制電流的方向可以實現(xiàn)電機的正反轉(zhuǎn)。直流電機在高起動轉(zhuǎn)矩、大轉(zhuǎn)矩、低慣量的系統(tǒng)中經(jīng)常使用到。此題目中電機要帶動的負載較大,對升降精度要求不是很嚴格,所以采用方案二。2.1.2實現(xiàn)單片機控制電梯的主要方法首先,對實際的電梯系統(tǒng)進行模擬,一般情況

9、下,一個電梯應該具備相關(guān)按鍵、顯示二極管、數(shù)碼管等,由于這是一個調(diào)度模塊,故沒有設(shè)計具體的轎廂等機械部分。然后,結(jié)合這些實物,選擇恰當?shù)男酒?,并分成若干模塊,安排好各自之間的關(guān)系。由于其有諸多按鍵和顯示環(huán)節(jié),而單片機的I/O口管腳資源實在有限,故需要I/O口擴展,用以管理二極管;同時要有專門的按鍵控制芯片,從而便于按鍵管理。接著,要完成電路圖的設(shè)計,焊接相關(guān)器件后進行硬件調(diào)試,看是否好用并加以適當?shù)母?,最終使硬件電路簡單又實用。同時,如果每個選層按鈕都采用獨立的按鍵設(shè)置,可以很大程度上簡化掃描按鍵程序,采集信號也容易得多,但是由于單片機接口有限,模擬電梯自動控制系統(tǒng)所需按鍵較多,如此會有接口

10、不足的問題,所以本設(shè)計采用44按鍵矩陣開關(guān)電路作為外呼內(nèi)選呼叫控制。出于同樣問題,顯示樓層電路采用數(shù)碼管從串口輸出。軟件方面至于采用中斷方式還是采用查詢的方式來檢測用戶的請求信息,可根據(jù)具體的設(shè)計方案來確定,同時要想準確地采集按鍵請求狀態(tài),就必須時時刻刻調(diào)用鍵盤矩陣掃描程序,也就增加了軟件編程的難度。采用單片機作為核心,配以適當接口作為輸入輸出通道。實際電梯控制系統(tǒng)每層裝有一個傳感器,從而判斷車廂所在位置,本模型使用延時函數(shù)對電梯運行樓層數(shù)進行控制。當電梯到達所選層,電梯開門延時等待進人并選層,然后延時關(guān)門執(zhí)行請求,若無請求則停在本層等待請求。軟件部分使用kiel作為開發(fā)環(huán)境,用C語言進行編程

11、,采用查詢方式來檢測用戶請求的按鍵信息并相應相應的函數(shù)。隨著人類社會的不斷發(fā)展,電梯在人們生活中越來越占著重要位置,如何使電梯發(fā)揮更大的作用關(guān)鍵在于電梯的控制方法的改進以及控制費用的降低。單片機之所以如此受歡迎在于其廉價的成本和可靠地運行性能。故應用單片機進行電梯的控制勢必成為電梯今后發(fā)展的重要方向,最優(yōu)化的程序設(shè)計以及更廉價的費用對促進電梯行業(yè)的發(fā)展用著重要的作用,通過對具體問題的分析和探討,具體程序的優(yōu)化與改良,本設(shè)計也致力于解決這一問題。本電路主要由6大部分電路組成:鍵盤電路、單片機最小系統(tǒng)電路、樓層顯示電路、電機驅(qū)動顯示電路、目的樓層顯示電路、警報電路。其中單片機最小系統(tǒng)主要由復位電路

12、組成。電路復位后樓層顯示數(shù)字1表示電梯此時在一樓,顯示電路數(shù)碼管顯示,電梯樓層位置是由延時電路控制的,延時電路包括3秒延時和5秒延時,每層之間通過5秒延時控制即每延時5秒表示電梯走了一層,3秒延時是控制電梯的開門時間,3秒延時后電梯關(guān)門繼續(xù)運行。電梯狀態(tài)是通過兩個發(fā)光管顯示的,上行燈亮表示電梯在向上運行,下行燈亮表示電梯在向下運行。鍵盤電路采用44鍵盤矩陣共16個按鍵分,其中8個按鍵是各層樓外呼按鍵,5個按鍵是電梯內(nèi)部的選擇鍵。電梯的正常工作是通過對單片機寫入程序控制的??傮w方框圖如圖0電機正反轉(zhuǎn)電路 AT89C52時鐘電路復位電路鍵盤電路顯示電路警報電路 圖0功能框架3設(shè)計原理分析3.1硬件

13、設(shè)計3.1.1時鐘電路 圖1時鐘電路圖 單片機的時鐘電路有振蕩電路和分頻電路組成。其中振蕩電路由反相器以及并聯(lián)外接的石英晶體和電容構(gòu)成,用于產(chǎn)生振蕩脈沖。而分頻電路則用于把振蕩脈沖分頻,以得到所需要的時鐘信號。 AT89C52單片機各功能部件的運行都是以時鐘控制信號為基準,有條不紊地一拍一拍地工作,因此時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。AT89C52單片機電路中的電容C1和C2典型值通常選擇為30pF。晶振的頻率越高則系統(tǒng)的時鐘頻率也越高,單片機的運行速度也越快。但反過來運行速度越快對內(nèi)存的速度要求就越高,對印刷電路板的工藝要求也越高,即要求產(chǎn)生的寄生電

14、容要小,晶振和電容應盡可能安裝得與單片機芯片靠近,以減少寄生電容,更好的保證振蕩器穩(wěn)定、可靠的工作。基于以上本設(shè)計我們考慮選擇頻率為12MHz的晶振,當振蕩脈沖頻率為12MHz時,一個機器周期為1us。3.1.2復位電路 圖2復位電路圖 復位是單片機的初始化操作,程序給單片機的復位引腳RST加大于2個機器周期(即24個時鐘振蕩周期)的高電平就可使單片機復位。AT89C52的復位是由外部的復位電路來實現(xiàn)的。復位電路通常采用上電復位和手動復位兩種方式,手動復位有電平方式和脈沖方式兩種,我們采用了手動復位為電平方式的復位。如圖3-2所示,我們通過RST端經(jīng)由電阻與電源VCC接通而實現(xiàn),當按鍵按下時,

15、RST端為高電平復位。當時鐘頻率選用12MHz時,C1取10uF,R1取10K時,電容C1充放電時間=R1*C1=0.1s2us(2個機器周期)。3.1.3鍵盤矩陣電路的設(shè)計 由于本電路所需按鍵較多,為了節(jié)省單片機的I/O口,故選用行列式鍵盤矩陣(但是使用了矩陣鍵盤就與真實電梯有明顯的區(qū)別了)。本電路采用的是44鍵盤矩陣,分為外部按鈕跟內(nèi)部按鈕兩部分。電路如圖2所示,0-7是接單片機的P2端口,單片機采用行和列掃描法來判別這16個按鍵中哪個鍵按下,并將其信號進行儲存,然后可根據(jù)每個按鍵的功能來通過單片機控制電梯的運行。下面將每個按鍵的功能說明一下: 1L上:一樓向上呼叫按鍵,此鍵按下表示一樓有

16、人要乘坐電梯上樓,并且單片機將此信號存入固定單元,等到電梯運行到此樓層時判斷是否該響應此呼叫; 2L上:二樓向上呼叫按鍵,此鍵按下表示二樓有人要乘坐電梯上樓,并且單片機將此信號存入固定單元,等到電梯運行到此樓層時判斷是否該響應此呼叫; 3L上:三樓向上呼叫按鍵,此鍵按下表示三樓有人要乘坐電梯上樓,并且單片機將此信號存入固定單元,等到電梯運行到此樓層時判斷是否該響應此呼叫; 4L上:四樓向上呼叫按鍵,此按鍵按下表示四樓有人要乘坐電梯上樓,并且單片機將此信號存入固定單元,等到電梯運行到此樓層時判斷是否該響應此呼叫; 2L下:二樓向下呼叫按鍵,此鍵按下表示二樓有人要乘坐電梯下樓,并且單片機將此信號存

17、入固定單元,等到電梯運行到此樓層時判斷是否該響應此呼叫; 3L下:三樓向下呼叫按鍵,此鍵按下表示三樓有人要乘坐電梯下樓,并且單片機將此信號存入固定單元,等到電梯運行到此樓層時判斷是否該響應此呼叫; 4L下:四樓向下呼叫按鍵,此按鍵按下表示四樓有人要乘坐電梯下樓,并且單片機將此信號存入固定單元,等到電梯運行到此樓層時判斷是否該響應此呼叫; 1L:電梯內(nèi)部選擇去一樓按鍵,此按鍵按下表示電梯里的乘客要去一樓,單片機根據(jù)此信號控制電梯的運行; 2L:電梯內(nèi)部選擇去二樓按鍵,此按鍵按下表示電梯里的乘客要去二樓,單片機根據(jù)此信號控制電梯運行; 3L:電梯內(nèi)部選擇去三樓按鍵,此按鍵按下表示電梯里的乘客要去三

18、樓,單片機根據(jù)此信號控制電梯運行; 4L:電梯內(nèi)部選擇去四樓按鍵,此按鍵按下表示電梯里的乘客要去四樓,單片機根據(jù)此信號控制電梯運行;ALARM:警報按鈕,此按鈕按下表示電梯有突發(fā)情況,單片機根據(jù)此信號會將電梯停止運行,點亮警報指示燈并發(fā)出警報;鍵盤電路如圖3所示: 圖3:鍵盤電路3.1.4顯示電路設(shè)計本電路采用數(shù)碼管顯示電梯所到達的樓層數(shù),數(shù)碼管采用共陰極由單片機的P3口控制,當電梯運行到兩樓層之間時,數(shù)碼管顯示為樓層數(shù)。顯示電路如圖4所示: 圖4:顯示電路3.1.5電機正反轉(zhuǎn)控制本電路中用兩個發(fā)光二極管來表示電機正反轉(zhuǎn),如圖6所示:用單片機的P0口做輸出口來驅(qū)動直流電機,有效的節(jié)約了單片機端

19、口的使用,又能準確的顯示電機的運行狀態(tài)。 圖5:電機控制3.1.6警報電路本電路由蜂鳴器和非門組成,其中蜂鳴器由單片機的P1.0口進行控制,當有突發(fā)情況發(fā)生時,按下ALARM按鈕,蜂鳴器會發(fā)出警報。警報電路如圖6所示: 圖6:警報電路 3.2.1軟件運行整體設(shè)計軟件設(shè)計是智能化系統(tǒng)進行數(shù)據(jù)采集、處理、控制等工作的基礎(chǔ)。系統(tǒng)的軟件設(shè)計直接影響整個系統(tǒng)的運轉(zhuǎn)和硬件作用的發(fā)揮。本設(shè)計由于采用鍵盤矩陣來代替外呼內(nèi)選按鈕,而電梯的運行方向是根據(jù)這些呼叫按鍵和選擇按鍵來決定的,所以單片機要不斷的掃描鍵盤來獲取各層呼叫狀態(tài)。從而來控制電梯的運行。故鍵盤矩陣掃描是本系統(tǒng)軟件設(shè)計的重要一部分,另外要把鍵盤掃描到

20、的各層的按鍵信息存儲起來,然后和電梯的運行狀態(tài)比較,判斷是否響應各層呼叫(電梯只響應同方向呼叫),最后就是樓層顯示部分和警報部分了。整個軟件設(shè)計包括一下幾部分:初始化程序使數(shù)碼管顯示“1”表示電梯處在一樓。主程序主要包括:判斷乘客進入電梯后選擇去哪一層,根據(jù)判斷情況來控制電梯運行;電梯在運行過程中要不斷的掃描鍵盤,從而來判斷各樓層有無呼叫請求,;電梯在運行過程中只響應同方向的呼叫請求;實時顯示電梯所在位置及運行狀態(tài)(上行/下行);開關(guān)門有一定的延時來保證乘客走出/進入電梯;軟件流程圖如圖7所示: 啟動 初始化 鍵盤掃描 選擇去向 電梯運行判斷電梯位置 顯示樓層鍵盤掃描(5S) 同向呼叫NY 是

21、否呼叫?NY室呼叫層 開門 延遲3S且鍵盤掃描 關(guān)門 選層 圖7:程序流程圖3.2.2分析鍵值設(shè)計單片機在讀取到鍵值后,自然會分析該鍵值來自于哪一層樓的哪個按鍵。然后才可以把該按鍵對應的儲存單位置1,點亮相應的二極管(實際中的電梯也是如此)。在本設(shè)計中,按鍵是按照行與列均勻分布的,特定的行與特定的列處的每個按鍵,均對應有特定的鍵值。首先可以人為地規(guī)定每個按鍵在電梯中所處的位置。例如規(guī)定位第一行按鍵為上行呼叫的按鍵等等(具體可參照電路圖)。它有自己固定的鍵值。那么在返回鍵值后,只需用一個switch-case語句對相應存儲數(shù)據(jù)進行置1即可。在程序中,我們定義了shang、xia、nei三個數(shù)組對

22、相應的按鍵狀況進行存儲,這一步是整個程序得以正常運行的前提與基礎(chǔ)。在程序開始之前,我們設(shè)置了這樣一些狀態(tài)變量,它們分別對應于各個按鍵,當某個按鍵按下時,其對應的狀態(tài)變量就會被置位。這樣做的好處是使電梯在執(zhí)行判決操作時,有據(jù)可循。因為判決函數(shù)就是依靠當前都有哪些鍵按下以及電梯此刻所處的上下行狀態(tài)來判斷下一個需要停留的目標樓層的。3.2.3電梯運行方向的判決方法這是整個程序成功運行的核心保證。在電梯經(jīng)過一個樓層時,就會自動調(diào)用該函數(shù),它的作用是基于短時間、高效率、人性化的基礎(chǔ)上,合理智能的對電梯的運行進行調(diào)度,結(jié)合實際情況,最終得出電梯下一個目標停留樓層。 開始按鍵標識全為0?電梯不再運行是否 向

23、上運行向下運行 上樓送人上樓接人 下樓送人下樓接人相關(guān)處理1 相關(guān)處理4相關(guān)處理3相關(guān)處理2 圖8電梯判決流程圖由圖可知,程序中將實際情況分為四種情況來判斷:電梯上行且是去送人(即電梯此時位于底層,而高層有人呼叫要上樓)、電梯上行且是去接人(即電梯此時位于底層,而高層有人呼叫要下樓)、電梯下行且是去送人(即電梯此時位于高層,而低層有人呼叫要下樓)、電梯下行且是去接人(即電梯此時位于高層,而低層有人呼叫要上樓)。在實際應用中,最簡單的情況莫過于電梯當前為閑置狀態(tài),然后有一人按下按鍵呼叫,然后電梯便響應呼叫。但是,實際情況往往比這復雜的多,在第一個人按下按鍵電梯運行的過程中,還很有可能會有其他不同

24、樓層的人按下不同的按鍵(上行或者下行)的情況發(fā)生。那么就必須得為電梯規(guī)定好一個特定的優(yōu)先級規(guī)則,讓其依據(jù)這個規(guī)則來運行,以免亂作一團。那么這個規(guī)則就必須要高效且人性化,在此,我們規(guī)定,當電梯上行時,均不理會那些按下行按鍵的顧客。并且,若在上行過程中,也有人在某層按的是上行按鍵,但是電梯此時已經(jīng)走過了該層,那么電梯也絕對不會再選擇先下行接他。當然,當將高層上行的顧客送完后(此時一般來說電梯已經(jīng)處于高層了),電梯便會檢測下行按鍵,若更高層有人呼叫下行,則電梯會選擇先去響應他們,然后再下行的過程中依次響應按了下行處于等待中的顧客,最后這些顧客都送完后,再去相應那些電梯上行過程中,處于比電梯低的樓層卻

25、按了上行鍵的顧客。簡單地說,若電梯處于上行狀態(tài),則在該過程中響應不同顧客的優(yōu)先級(或者電梯響應的先后順序)為:高層呼叫上行顧客高層呼叫下行顧客底層呼叫下行顧客底層呼叫上行顧客。那么,當電梯通過程序運行得知到相應狀態(tài)后,又是如何具體的判斷當天所鎖定的目標樓層是否要變更呢?現(xiàn)以上行為例,加以詳細說明:若上行,且是送人,比如電梯當前在一層,四樓有人呼叫上樓,那么它就要響應這一呼叫,從而把自己的目標樓層鎖定為四樓并向上運行,而在四樓呼叫后不久,三樓也有人呼叫上樓(且電梯此刻還未運行到三樓),那么在電梯運行中,沒經(jīng)過一個樓層,會做一次判決,因為三樓也有人呼叫,所以正常情況下,它應該在判決后將目標樓層定位

26、三樓。而若三樓的顧客按下的是下行鍵,或者二樓的人按下呼叫鍵,電梯此時都會暫時不予理會。部分程序代碼見附錄。由程序可以看出,當四樓有上行鍵呼叫時,狀態(tài)變量shang4便會被置位,但電梯依然在判斷按鍵狀況,此時程序的檢測依據(jù)兩個標準:第一,由低層向高層開始檢查;第二,對于電梯已經(jīng)過的樓層和按下下行鍵所發(fā)出的請求,電梯暫時是不予理會的。這也是很明顯的,因為上行送人狀態(tài)中,低層的優(yōu)先權(quán)大于高層的。程序就是靠著上面這些if語句的嵌套,來完成這種優(yōu)先級設(shè)置的。至于上行接人狀態(tài)時,所堅持的標準是由高層到底層的順序進行排查,而對于上行鍵的呼叫暫時不予理會。下行的狀態(tài),恰好與上行相反,在此不再贅述。同時,我們設(shè)

27、計了flag標志位,當flag=0表示電梯停止運行,當flag=1表示電梯向上運行,當flag=2表示電梯向下運行。六、程序主要代碼與分析(關(guān)鍵代碼要有注釋):#include #define uchar unsigned char #define uint unsigned int sbit alarm1=P10; sbit fz=P00; sbit zz=P01; sbit fz2=P02;sbit zz2=P03;uchar code table=0xf9,0xa4,0xb0,0x99,0x92; /數(shù)碼管顯示uint shang6=0,0,0,0,0,0; 定義數(shù)組上存放上升的鍵值ui

28、nt xia6=0,0,0,0,0,0; uint nei6=0,0,0,0,0,0; uint num,temp,flag=0,lc=0,i,n; /函數(shù)聲明語句void delay(uint z); /聲明子程序void delay3(); void delay5(); void keyscan(); void display(uint aa); void init(); /主函數(shù)void main() while(1) init();keyscan(); zhishideng(); if(flag=0)zz=fz=0; shanglc=0; xialc=0;neilc=0; n=lc ;

29、for(i=n+1;i=1;i-) keyscan();if(shangi=1|xiai=1|neii=1)flag=2; break; if(flag=1) keyscan(); zz=1; fz=0;delay5(); lc+; display(lc); if(shanglc=1|neilc=1) shanglc=0; neilc=0; zhishideng(); fz=0; zz=0; delay3(); flag=0; n=lc; for(i=n+1;i=5) n=lc ; if(shangn=0&nein=0) fz=0; zz=0; delay3(); xian=0; for(i=

30、n-1;i=1;i-) keyscan(); if(shangi=1|xiai=1|neii=1) flag=2;break;if(flag=2) keyscan(); zz=0; fz=1; delay5();lc-;display(lc); if (xialc=1|neilc=1) xialc=0;neilc=0; zhishideng(); fz=0;zz=0; delay3(); flag=0; n=lc; for(i=n-1;i=1;i-) keyscan(); if(shangi=1|xiai=1|neii=1) flag=2; break; if(flag=0|lc=1) n=l

31、c ; if(xian=0&nein=0) fz=0;zz=0; delay3(); shangn=0; for(i=n+1;i0;x-) for(y=110;y0;y-) keyscan(); /延遲三秒函數(shù)。void delay3() uint x,y; for(x=280;x0;x-) for(y=110;y0;y-) keyscan(); /ms級延函數(shù)void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /鍵盤掃描函數(shù)。void keyscan() num=0; P2=0xfe;temp=P2; temp=temp

32、&0xf0; while(temp!=0xf0) delay(5); temp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0xee:num=1;break; case 0xed:num=2; break; case 0xeb:num=3; break;case 0xe7:num=4; break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; P2=0xfd; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay(5); t

33、emp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0xde:num=5; break; case 0xdd:num=6; break;case 0xdb:num=7; break; case 0xd7:num=8; break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; P2=0xfb; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay(5);temp=P2;temp=temp&0xf0; while(temp!=0

34、xf0) temp=P2; switch(temp) case 0xbe:num=9; break; case 0xbd:num=10; break; case 0xbb:num=11; break; case 0xb7:num=12; break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; P2=0xf7; temp=P2; temp=temp&0xf0;while(temp!=0xf0) delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp)case 0x7e:num=13;break;case 0x7d:num=14; brea

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論