找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2728|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

太好了怎么聯(lián)系原創(chuàng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:298539 發(fā)表于 2018-3-28 21:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


主要器件清單
(1)有機(jī)玻璃板一張(1.85m*1.25m)
(2)直射式紅外對(duì)管5個(gè)
(3)直流電機(jī)一個(gè)
(4)萬能板5*7cm 6塊 9*15cm 1塊
(5)電壓穩(wěn)壓器7805一片
(6)AT89S52
(7)12M晶振
(8)排阻4.7K,300Ω各一片
(9)按鍵開關(guān) 17個(gè)
(10)發(fā)光二極管30個(gè)
(11)8段數(shù)碼管6個(gè)。
(12)CD4511六片
(13)蜂鳴器一個(gè)。
(14)9012一個(gè)。
(15)TIP41、TIP42各兩個(gè)
(16)LM339二片
(17)74HC573一片
(18)電阻,電容若干
(19)排線若干
(20)杜邦頭、鐵芯若干
(21)其它(502、透明膠帶、熱融膠等)若干

[url=]設(shè)為首頁[/url]收藏本站
[url=]開啟輔助訪問[/url][url=]切換到寬版[/url][url=]切換風(fēng)格[/url]



suoai00000 |[url=]我的[/url] |設(shè)置 |消息 |提醒(1)


[url=]快捷導(dǎo)航[/url]



[color=rgb(153, 153, 153) !important][url=]帖子[/url]搜索




單片機(jī)論壇»論壇嵌入式/單片機(jī)論壇51單片機(jī)單片機(jī)電梯控制系統(tǒng)設(shè)計(jì)論文下載




返回列表[url=][/url][url=][/url]
[color=#999999 !important]查看: 3396|[color=#999999 !important]回復(fù): 0


[color=rgb(153, 153, 153) !important][color=rgb(153, 153, 153) !important][url=][/url]單片機(jī)電梯控制系統(tǒng)設(shè)計(jì)論文下載 [color=#999999 !important][color=rgb(153, 153, 153) !important][復(fù)制鏈接]
[tr][/tr]
電梯直達(dá)[url=][/url]
樓主
滴答滴 發(fā)表于 2017-5-9 15:45 | 只看該作者 |只看大圖



題目

基于單片機(jī)的電梯控制系統(tǒng)


圖26 電梯模型外觀圖
1. (設(shè)計(jì))應(yīng)完成的主要內(nèi)容
基于單片機(jī)的電梯系統(tǒng)主要有信號(hào)檢測、聲光運(yùn)動(dòng)控制部分構(gòu)成,電梯可以實(shí)時(shí)進(jìn)行電梯位置檢測,控制信號(hào)檢測,并有相應(yīng)的聲光信號(hào)顯示,驅(qū)動(dòng)電機(jī)拖動(dòng)電梯模型進(jìn)行相應(yīng)的運(yùn)動(dòng)。電梯系統(tǒng)可以具有應(yīng)急保護(hù)功能,獨(dú)立供電模塊。

2.(設(shè)計(jì))的目標(biāo)及具體要求

   基本功能:
(1)顯示:本設(shè)計(jì)要求實(shí)現(xiàn)5層控制, 電梯運(yùn)行時(shí)應(yīng)有相應(yīng)指示燈亮,以示電梯正在上行或下行,實(shí)時(shí)顯示電梯所在樓層位置。
(2)升降控制:當(dāng)某層有呼叫有相應(yīng)呼叫信號(hào)顯示。電梯模型作相應(yīng)的運(yùn)動(dòng),并準(zhǔn)確平層,當(dāng)有多人同時(shí)進(jìn)行電梯請(qǐng)求時(shí),需要對(duì)請(qǐng)求信號(hào)排序。
(3)平層時(shí)呼叫信號(hào)消失,并進(jìn)行開門、關(guān)門操作,平層結(jié)束時(shí)給出提示信號(hào)。要求平均每層運(yùn)行時(shí)間不超過5秒。
(4)具備不可逆響應(yīng)的功能:電梯上升途中只響應(yīng)上升呼叫,下降途中只響應(yīng)下降呼叫,任何反方向呼叫均無效。電梯門不關(guān)上,啟動(dòng)電梯運(yùn)行無效。

擴(kuò)展功能:
(1)可采用遙控控制或感應(yīng)操作功能。
(2)出現(xiàn)意外情況時(shí),要求電梯隨時(shí)能夠緊急停車、待命,并發(fā)出相應(yīng)的聲音通知外界。情況正常后重新恢復(fù)受控狀態(tài)。
(3)電梯系統(tǒng)能顯示當(dāng)前時(shí)間,同時(shí)可以通過鍵盤對(duì)系統(tǒng)時(shí)間進(jìn)行設(shè)定
(4)電梯采用獨(dú)立電源模塊


一、研究目的和意義

電梯是標(biāo)志現(xiàn)代物質(zhì)文明的垂直運(yùn)輸工具、是機(jī)電一體化的復(fù)雜運(yùn)輸設(shè)備。它涉及電子技術(shù)、機(jī)械工程、電力電子技術(shù)、微電腦技術(shù)、電力拖動(dòng)系統(tǒng)和土建工程等多個(gè)科學(xué)領(lǐng)域。盡管電梯的品種繁多,但目前使用的電梯絕大多數(shù)為電力拖動(dòng)、鋼絲繩曳引式結(jié)構(gòu)。從電梯各構(gòu)件部分的功能上看,可分為八個(gè)部分:曳引系統(tǒng)、導(dǎo)向系統(tǒng)、轎廂、門系統(tǒng)、重量平衡系統(tǒng)、電力拖動(dòng)系統(tǒng)、電氣控制系統(tǒng)和安全保護(hù)系統(tǒng)。
作為高層建筑物上下交通運(yùn)輸?shù)闹匾O(shè)備,越來越多的機(jī)電專業(yè)將參與電梯技術(shù)方面的工作,為了掌握電梯的結(jié)構(gòu)和控制技術(shù)就有必要把這龐大的集機(jī)械、電氣、傳感器于一體的產(chǎn)品模擬化,用PLC、單片機(jī)、微機(jī)、變頻器等控制手段去開發(fā)多功能應(yīng)用軟件,對(duì)提高學(xué)生的綜合應(yīng)用程序設(shè)計(jì)能力也將是非常有益和非常有效的。因此設(shè)計(jì)了一套完整的電梯控制系統(tǒng),該系統(tǒng)可以和任何自動(dòng)控制單元相連接作為下位機(jī),也可以單獨(dú)使用作為一般主控系統(tǒng),驗(yàn)證各種電梯調(diào)度算法。



三、 國內(nèi)外現(xiàn)狀和發(fā)展趨勢與研究的主攻方向

目前,我國國產(chǎn)電梯大部分為繼電器、PLC控制方式以及單片機(jī)控制方式。
繼電-接觸系統(tǒng):它的優(yōu)點(diǎn)是線路直觀,大部分電器均為常用電器,更換方便,價(jià)格較便宜。但是他觸點(diǎn)繁多,線路復(fù)雜,電器的電磁機(jī)構(gòu)及觸點(diǎn)動(dòng)作較慢,能耗高,機(jī)械動(dòng)作噪音大,而且可靠性差。繼電器控制系統(tǒng)性能不穩(wěn)定、故障率高,大大降低了電梯的舒適性、可靠性和安全性,經(jīng)常造成停梯,給乘用人員的生活和工作帶來了很多不便,因而傳統(tǒng)的電梯控制系統(tǒng)的更新勢在必行。
PLC(可編程控制器)在電梯控制中得到了廣泛的應(yīng)目前。PLC在設(shè)計(jì)和制造上采取了許多抗干擾措施,使用方便,擴(kuò)展容易。它使用了梯形圖和可編程指令,易于掌握。電梯控制器通常由PLC實(shí)現(xiàn)基本能力,但是如果要實(shí)現(xiàn)電梯智能化,則PLC稍嫌不足。
單片機(jī)以其卓越的性能,得到了廣泛的應(yīng)用,已深入到各個(gè)領(lǐng)域。單片機(jī)應(yīng)用在檢測、控制領(lǐng)域中,具有如下特點(diǎn)。
一、成本低。本電梯控制由于采用單片機(jī)代替了PLC作為主控芯片, 同時(shí)用PWM 驅(qū)動(dòng)直流電機(jī)代替了變頻調(diào)速驅(qū)動(dòng),從而導(dǎo)致整套系統(tǒng)成本很低。
二、高精度的重量檢測及顯示;赑LC的電梯模型雖然有重量檢測,但檢測精度較低。本電梯模型采用高精度的重量傳感器和測量電路, 配合設(shè)計(jì)優(yōu)良的數(shù)字處理軟件,從而能進(jìn)行高精度的重量檢測和顯示.
三、 可靠性好,適應(yīng)溫度范圍寬。單片機(jī)芯片本身是按工業(yè)測控環(huán)境要求設(shè)計(jì)的,能適應(yīng)各種惡劣的環(huán)境,這是其它機(jī)種無法比擬的。
四、 易擴(kuò)展,很容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),控制功能強(qiáng)。單片機(jī)的邏輯控制功能很強(qiáng),指令系統(tǒng)有各種控制功能用指令。
五、 可以很方便的實(shí)現(xiàn)多機(jī)和分布式控制。
六、 單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。




四、 主要研究內(nèi)容需重點(diǎn)研究的關(guān)鍵問題及解決思路

電梯工業(yè)是極為重要的基礎(chǔ)產(chǎn)業(yè),其控制部分在工業(yè)發(fā)達(dá)國家已實(shí)現(xiàn)了高度智能化,由于單片機(jī)具有體積小、線路簡單、無噪音、可靠性高、維護(hù)方便,同時(shí)能方便實(shí)現(xiàn)多臺(tái)電梯的群控, 并通過通訊接口與樓宇自動(dòng)化系統(tǒng)聯(lián)接, 實(shí)施對(duì)電梯的監(jiān)控,因此利用單片機(jī)來對(duì)電梯進(jìn)行控制的開發(fā)顯得至關(guān)重要。本次設(shè)計(jì)了一種實(shí)用的模擬電梯控制器,配合相應(yīng)的軟件實(shí)現(xiàn)了對(duì)模擬電梯的實(shí)時(shí)控制。
該設(shè)計(jì)采用單片機(jī)AT89S52實(shí)現(xiàn)基本的簡易電梯模型,由于其功能的實(shí)現(xiàn)主要通過軟件編程來完成,那么就降低了硬件電路的復(fù)雜性,而且更能體現(xiàn)智能思維,AT89S52是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有8KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外,AT89S52的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128B 的RAM、32條I/O口線、2個(gè)16位定時(shí)計(jì)數(shù)器、5個(gè)中斷源、一個(gè)全雙工串行口等,完全滿足該課題的需要。
作為小型化的電梯模擬裝置,其控制器的設(shè)計(jì)應(yīng)遵循簡單可靠以及成本低、維護(hù)方便等原則?刂破鞯奶幚砥鞑捎昧8位單片機(jī),外圍擴(kuò)展鍵盤采用矩陣鍵盤輸入、位置檢測采用反射式紅外光電傳感器,并配以LED顯示當(dāng)前運(yùn)行信息。電梯模擬器的機(jī)械部分采用了絲杠傳動(dòng)加直流電機(jī)配以減速齒輪驅(qū)動(dòng),距離移動(dòng)十分精確,無運(yùn)行積累誤差。
總體設(shè)計(jì)框圖如下圖1:


本系統(tǒng)采用自帶2 路電源+5V、+12V分別對(duì)各部分電路供電:
電梯位置檢測采用反射式紅外線發(fā)射-接收器如下圖:

      

電機(jī)控制采用調(diào)節(jié)方波的占空比大小來控制直流電機(jī)的轉(zhuǎn)速,控制轎廂移動(dòng)高度。整個(gè)電機(jī)的運(yùn)行過程大致如圖所示:
數(shù)碼管顯示,設(shè)計(jì)中在轎廂和每個(gè)樓層中都設(shè)置了一個(gè)數(shù)碼顯示管,用來顯示當(dāng)前電梯所在的層數(shù)。由4511來驅(qū)動(dòng)8位數(shù)碼管顯示電梯所到達(dá)的樓層數(shù)和電梯的運(yùn)行狀況。接線圖如下:
轎廂內(nèi)設(shè)緊急報(bào)警按鈕,當(dāng)電梯突然發(fā)生故障使轎箱內(nèi)的人被困時(shí),可以通過按下緊急報(bào)警按鈕,使緊急報(bào)警燈亮同時(shí)發(fā)出音響信號(hào),控制過程如下:
采用555做成的多諧振蕩器產(chǎn)生的方波信號(hào)來控制小功率的蜂鳴器工作,將555定時(shí)器的Vi1和Vi2接在一起可以接成施密特觸發(fā)器。我們把施密特觸發(fā)器的反相輸出端經(jīng)RC積分電路接回到它的輸入端,就構(gòu)成了多諧振蕩器。
基于單片機(jī)電梯控制系統(tǒng)


【摘要】本文介紹了以 80C51單片機(jī)為核心控制器件的電梯自動(dòng)控制系統(tǒng),包括課題概述、方案論證、硬件設(shè)計(jì)、軟件設(shè)計(jì)、系統(tǒng)調(diào)試等幾個(gè)部分。該系統(tǒng)采用單片機(jī)作為控制核心,通過掃描內(nèi)外按鍵按下與否引起的電平的改變,作為用戶請(qǐng)求信息發(fā)送到單片機(jī),控制電動(dòng)機(jī)轉(zhuǎn)動(dòng),單片機(jī)根據(jù)樓層檢測結(jié)果控制電機(jī)停在目標(biāo)樓層。硬件部分主要由單片機(jī)最小系統(tǒng)模塊、樓層檢測模塊、層位數(shù)碼管顯示、電動(dòng)機(jī)驅(qū)動(dòng)模塊、按鍵掃描模塊、報(bào)警模塊、上下行呼叫指示電路等部分組成。樓層檢測使用光電傳感器,電梯運(yùn)行到相應(yīng)樓層時(shí),光電傳感器產(chǎn)生電平變化,送到單片機(jī)來確定樓層數(shù),電動(dòng)機(jī)控制部分采用直流電機(jī)及H橋驅(qū)動(dòng)電路。軟件部分介紹了系統(tǒng)程序設(shè)計(jì)思路、程序功能分析,著重介紹了主程序的邏輯結(jié)構(gòu),還分別介紹了報(bào)警、演示功能、按鍵掃描、層位讀取、顯示、電梯控制邏輯等子程序的結(jié)構(gòu)和功能。軟件部分使用C語言,利用中斷方式來檢測樓層的檢測信息,并送到數(shù)碼管進(jìn)行顯示。硬件設(shè)計(jì)簡單可靠,結(jié)合軟件,基本實(shí)現(xiàn)了五層電梯運(yùn)行的模擬。

【關(guān)鍵詞】AT89C51;直流電機(jī);紅外傳感器;電梯控制;
1


前言


基于單片機(jī)的電梯控制系統(tǒng)
1 前言
隨著人們生活水平的不斷提高和國內(nèi)經(jīng)濟(jì)的迅速發(fā)展。各大城市建筑物在不斷向高層化發(fā)展。因此電梯在我們的生活中起著舉足輕重的作用。電梯已不僅是一種生產(chǎn)環(huán)節(jié)中的重要設(shè)備,更是一種人們頻繁乘用的交通運(yùn)輸設(shè)備。
2008年奧運(yùn)會(huì)和2010年世博會(huì)在中國的舉辦,將有力的帶動(dòng)電梯革命的節(jié)能環(huán)保化發(fā)展,電梯產(chǎn)業(yè)的前景和走勢也隨著社會(huì)的需求悄然發(fā)生著改變。市場對(duì)新一代的綠色電梯、節(jié)能電梯和智能電梯的需求越來越旺盛。國內(nèi)外電梯企業(yè)順應(yīng)市場需要,加大研發(fā)投入,都準(zhǔn)備在未來新概念電梯產(chǎn)業(yè)發(fā)展中占得先機(jī)。

1.1  課題的提出及研究意義
電梯是集機(jī)械原理應(yīng)用、電氣控制技術(shù)、微處理技術(shù)、系統(tǒng)工程學(xué)等多科學(xué)和技術(shù)分支于一體的機(jī)電設(shè)備,它是建筑中永久垂直交通工具。電梯作為生產(chǎn)生活的典型運(yùn)載工具使用已十分普及,其控制信號(hào)類型多,關(guān)系復(fù)雜,要求的控制性能特別高。隨著經(jīng)濟(jì)的發(fā)展高層建筑越來越多對(duì)電梯的運(yùn)行速度和控制性能也提出了更高的要求。而在我國于八十年代初至九十年代初投入使用的電梯,其中絕大部分采用繼電器—繼電器陣列結(jié)構(gòu)該結(jié)構(gòu)體積大、接線復(fù)雜、噪音大、觸點(diǎn)易磨損、故障率高、維護(hù)工作量大,已無法滿足現(xiàn)代社會(huì)的需要。
自上世紀(jì)80年代以來,微機(jī)控制系統(tǒng)得到了極大的發(fā)展,現(xiàn)已深人到我國工農(nóng)業(yè)生產(chǎn)的各個(gè)方方面面,隨著電力電子技術(shù)和微電子技術(shù)的發(fā)展,使得以微機(jī)為核心的控制系統(tǒng)得到廣泛應(yīng)用。尤其是單片機(jī)的開發(fā)與應(yīng)用,其深度和廣度越來越大。微機(jī)應(yīng)用于電梯控制系統(tǒng),與傳統(tǒng)的采用繼電接觸邏輯控制系統(tǒng)相比,具有很大優(yōu)越性,一方面,它使整個(gè)系統(tǒng)的體積減小,可靠性提高,使用壽命延長;另一方面,它還簡化了安裝調(diào)試和維護(hù)維修的工作量,使整個(gè)電梯的運(yùn)行成本降低。更突出的優(yōu)點(diǎn)是微機(jī)具有靈活的算術(shù)和邏輯運(yùn)算功能,具有很強(qiáng)的通信和可擴(kuò)展功能,實(shí)現(xiàn)更完善的自動(dòng)控制。
常用的微機(jī)控制主要的有兩種技術(shù):基于PLC控制和基于單片機(jī)控制兩大技術(shù)?删幊炭刂破鳎俏C(jī)技術(shù)與繼電器常規(guī)控制技術(shù)相結(jié)合的產(chǎn)物,是在順序控制器和微機(jī)控制器的基礎(chǔ)上發(fā)展起來的新型控制器,是一種以微處理器為核心用作數(shù)字控制的專用計(jì)算機(jī),它有良好的抗干擾性能,適應(yīng)很多工業(yè)控制現(xiàn)場的惡劣環(huán)境,所以現(xiàn)在的電梯控制系統(tǒng)主要還是由可編程控制器控制。但是由于PLC的針對(duì)性較強(qiáng),每一臺(tái)PLC都是根據(jù)一個(gè)設(shè)備而設(shè)計(jì)的,所以價(jià)格較昂貴。而單片機(jī)價(jià)格相當(dāng)便宜,也不像PLC那么有針對(duì)性,可以隨著設(shè)備的更新而不斷修改完善,更完美的實(shí)現(xiàn)設(shè)備的升級(jí);趩纹瑱C(jī)控制的電梯可以大大的降低成本而且運(yùn)行也較可靠,采用單片機(jī)來實(shí)現(xiàn)老式電梯控制系統(tǒng)的改造無疑是最佳方案。由于單片機(jī)具有體積小、線路簡單、無噪音、可靠性高、維護(hù)方便,是一種少投入、高回報(bào)的方案。同時(shí)能方便實(shí)現(xiàn)多臺(tái)電梯的群控,并通過通訊接口與樓宇自動(dòng)化系統(tǒng)聯(lián)接,實(shí)施對(duì)電梯的監(jiān)控。
1.2  國內(nèi)外電梯系統(tǒng)技術(shù)的發(fā)展現(xiàn)狀
在現(xiàn)代社會(huì)和經(jīng)濟(jì)活動(dòng)中,電梯已經(jīng)成為城市物質(zhì)文明的一種標(biāo)志。特別是在高層建筑中,電梯是不可缺少的垂直運(yùn)輸工具。
電梯作為垂直運(yùn)輸?shù)纳翟O(shè)備,其特點(diǎn)是在高層建筑物中所占的面積很小,同時(shí)通過電氣或其它的控制方式可以將乘客或貨物安全、合理、有效地送到不同的樓層;谶@些優(yōu)點(diǎn),在建筑業(yè)特別是高層建筑飛速發(fā)展的今天,電梯行業(yè)也隨之進(jìn)入了新的發(fā)展時(shí)期。
電梯的存在,使得每幢大型高樓都可以成為一座垂直的城市。在紐約的前世界貿(mào)易中心大樓里,除每天有5萬人上班外,還有8萬人次的來訪和旅游,因此250臺(tái)電梯和75臺(tái)自動(dòng)扶梯的設(shè)置和正常運(yùn)行,才使得合理調(diào)運(yùn)人員、充分發(fā)揮大樓的功能成為現(xiàn)實(shí)。中國第一高樓、坐落在上海浦東的金茂大廈,高度420.5m,主樓地上88層,建筑面積220000㎡,集金融、商業(yè)、辦公和旅游為一體,其中60臺(tái)電梯、18臺(tái)扶梯的作用是顯而易見的。
20世紀(jì)初,美國出現(xiàn)了曳引式電梯,其結(jié)構(gòu)見圖1。從圖中可見,鋼絲繩懸掛在曳引輪上,一端與轎廂連接,而另一端與對(duì)重連接,隨曳引輪的轉(zhuǎn)動(dòng),靠鋼絲繩與曳引輪槽之間的摩擦力,使轎廂與對(duì)重作一生一降的相反運(yùn)動(dòng)。顯然,鋼絲繩不用纏繞,因此鋼絲繩的長度和股數(shù)均不受控制,當(dāng)然轎廂的載重量以及提升的高度就得到了提高,從而滿足了人們對(duì)電梯的使用需求。因此,近一百年來,曳引電梯一直受到重視,并發(fā)展沿用至今。
     圖1 曳引式電梯示意圖
1—轎廂  2—曳引輪  3—對(duì)重
在后來的幾十年里,電梯的自動(dòng)平層控制系統(tǒng)已經(jīng)通過變換電動(dòng)機(jī)級(jí)數(shù)的調(diào)速方法來調(diào)整電梯運(yùn)行速度的技術(shù)相繼研制成功,1933年,世界上第一臺(tái)運(yùn)行速度為6 m/s 的電梯被安裝在美國紐約的帝國大廈。
第二次世界大戰(zhàn)后,建筑業(yè)的發(fā)展促使電梯進(jìn)入了高峰發(fā)展時(shí)期,代表新技術(shù)的電子技術(shù)被廣泛應(yīng)用于電梯領(lǐng)域的同時(shí),陸續(xù)出現(xiàn)了群控電梯、超高速電梯。
隨著電力電子技術(shù)的發(fā)展,晶閘管變流裝置越來越多地用于電梯系統(tǒng),使電梯的拖動(dòng)系統(tǒng)簡化,性能提高。同時(shí)交流調(diào)壓調(diào)速系統(tǒng)的研制和開發(fā),使交流電梯的調(diào)速性能有了明顯的改善。進(jìn)入20世紀(jì)80年代,通過控制電動(dòng)機(jī)定子供電電壓與頻率調(diào)整電梯運(yùn)行速度的調(diào)壓調(diào)頻技術(shù)研制成功,出現(xiàn)了交流變壓變頻(VVVF)調(diào)速電梯,開拓了電梯拖動(dòng)的新領(lǐng)域。1993年,日本生產(chǎn)了12.5m/s的世界最高速交流變壓變頻調(diào)速電梯,結(jié)束了支流電梯獨(dú)占高速電梯領(lǐng)域的歷史。
電梯發(fā)展到今天,在使用需求和新技術(shù)應(yīng)用方面都到了全面發(fā)展的時(shí)期。隨著智能化、信息化建筑的興起與完善,要求電梯不只是完成垂直運(yùn)輸?shù)幕竟δ埽應(yīng)以人為本,提高舒適度,特別從電梯運(yùn)行的控制智能化角度考慮,電梯的優(yōu)質(zhì)服務(wù)不再是單一的“時(shí)間最短”問題,而是采用模糊理論、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)等方法,以期實(shí)現(xiàn)單梯與群控管理的最佳模式、合理的配置與使用、遠(yuǎn)程監(jiān)控與故障診斷、節(jié)能以及減少環(huán)境污染等。
1.3  課題研究的內(nèi)容
隨著科技的發(fā)展,微型計(jì)算機(jī)領(lǐng)域的不斷進(jìn)步,將使得將來電梯的體積大大減小,功能不斷完善,過程的控制更平穩(wěn)、可靠、抗干擾性能增強(qiáng)、機(jī)械與電氣部件被機(jī)結(jié)合在一個(gè)設(shè)備內(nèi),把儀表、電子和計(jì)算機(jī)的功能綜合在一起。因此微型計(jì)算機(jī)控制技術(shù)將會(huì)成為電梯運(yùn)行中的關(guān)鍵技術(shù)。
本次設(shè)計(jì)的主要內(nèi)容是以單片機(jī)為主控制器的電梯控制系統(tǒng)。本來電梯系統(tǒng)是一個(gè)相對(duì)復(fù)雜的系統(tǒng),由于能力和經(jīng)驗(yàn)有限,所以只能實(shí)現(xiàn)基本的功能如:層站呼叫、自動(dòng)停層、轎廂命令響應(yīng)等。通過單片機(jī)輸出電壓通過驅(qū)動(dòng)電路然后控制電梯拖動(dòng)。在此,本文以五層電梯為研究對(duì)象,選用51單機(jī)(該機(jī)芯片選為AT89S52)作為其控制器,研究微機(jī)控制梯系統(tǒng)的設(shè)計(jì)方法。根據(jù)問題的提出、意義和文獻(xiàn)綜述,本課題研究的具體內(nèi)容包括以下四個(gè)方面:

(1)對(duì)電梯系統(tǒng)常用的控制方法的研究
(2)電梯控制系統(tǒng)硬件組成及其原理
(3)電梯的單片機(jī)系統(tǒng)軟件設(shè)計(jì)
(4)電梯在信號(hào)傳輸中遇到的問題
1


方案論證
2  方案論證
2.1 主控芯片選擇                          
方案一:多片單片機(jī)控制方案。這種方案是使用多片單片機(jī),其中一片是作為主控制器,另外設(shè)置了轎廂控制系統(tǒng),每層的控制系統(tǒng)分別由一個(gè)單片機(jī)控制,然后通過主控制器和副控制器之間的通訊,實(shí)現(xiàn)電梯系統(tǒng)的控制。這種方案的控制系統(tǒng)的結(jié)構(gòu)簡單明了,各個(gè)系統(tǒng)之間相互獨(dú)立便于維護(hù)和修檢。所以根據(jù)功能要求需要選用5片AT89C2051單片機(jī)就可以實(shí)現(xiàn)該電梯的功能。不過單片機(jī)之間的通訊較多,在目前通訊是個(gè)難點(diǎn),可能導(dǎo)致電梯運(yùn)行過程不夠穩(wěn)定。
方案二 :采用CPLD 器件作為控制中心,對(duì)整個(gè)系統(tǒng)的運(yùn)作進(jìn)行統(tǒng)一管理,但這種方案要求平時(shí)有很多的知識(shí)積累和較強(qiáng)的專業(yè)水平,實(shí)現(xiàn)起來比較困難且器件較貴,不符合經(jīng)濟(jì)要求,而且升降電機(jī)的控制,運(yùn)行時(shí)間的測量、顯示等還需要單片機(jī)的配合。
方案三:一片單片機(jī)為主控制器的方案。MCU采用一個(gè)單片機(jī)控制所有的按鍵、數(shù)碼管顯示、電動(dòng)機(jī)的轉(zhuǎn)動(dòng)、傳感器的輸出信號(hào)等,并對(duì)以上所有信號(hào)進(jìn)行處理。這種方案的控制系統(tǒng)相對(duì)復(fù)雜,只適用于較簡單的電梯控制系統(tǒng),因?yàn)檫@次的設(shè)計(jì)的內(nèi)容是5層電梯控制系統(tǒng),所以選用這種方案。單片機(jī)技術(shù)目前較為成熟,自身資源豐富,硬件設(shè)計(jì)簡單,成本低,可靠性高,結(jié)合軟件完全可以實(shí)現(xiàn)電梯運(yùn)行狀況的簡單模擬。
權(quán)衡以上方案的分析,采用方案三。
2.2  定位平層模塊
方案一:采用金屬接近開關(guān)檢測電梯層數(shù)。在轎廂安裝金屬片,并在豎井各個(gè)樓層設(shè)置金屬接近開關(guān),當(dāng)轎廂運(yùn)動(dòng)到特定位置,豎井上的金屬接近開關(guān)探測到金屬片,其輸出發(fā)生變化。單片機(jī)通過金屬接近開關(guān)輸出的變化知道電梯轎廂的位置。該方案安裝的金屬片會(huì)加重轎廂重量,并且金屬接近開關(guān)體積較大、安裝不便、成本較高。
方案二:采用紅外發(fā)射對(duì)管檢測電梯層數(shù)。在豎井各個(gè)樓層設(shè)置紅外發(fā)射對(duì)管。當(dāng)接通電源時(shí),紅外線發(fā)射管不斷發(fā)射紅外線,當(dāng)轎廂運(yùn)動(dòng)到特定位置(即樓層位置),紅外線接收頭接收到紅外線輸出發(fā)生變化,單片機(jī)通過紅外線接收頭輸出的變化知道電梯轎廂的位置。該傳感器的響應(yīng)時(shí)間為2.5ms,且體積小、功耗低、容易安裝。
基于上述方案的分析,選擇方案二。
2.3  樓層顯示模塊
方案一:采用點(diǎn)陣式液晶顯示器(LCD)顯示各種相關(guān)數(shù)據(jù)以及信息。點(diǎn)陣式液晶顯示器屬于低功耗器件,但其價(jià)格較貴。
方案二:采用傳統(tǒng)的7段數(shù)碼管(LED)顯示電梯實(shí)時(shí)所到的樓層。雖功耗大,但其軟件驅(qū)動(dòng)簡單,硬件電路調(diào)試方便,價(jià)格便宜,亮度大,能滿足本設(shè)計(jì)的要求。
以上兩種方案中,選擇方案二。
2.4  聲音提示模塊
方案一:采用美國ISD公司的2590語音芯片,該語音芯片錄放時(shí)間為90 秒。ISD2500 系列具有抗斷電、音質(zhì)好,使用方便等優(yōu)點(diǎn)。它的最大特點(diǎn)在于片內(nèi)E2PROM容量為480K,所以錄放時(shí)間長;有10個(gè)地址輸入端,尋址能力可達(dá)1024 位;最多能分600 段;設(shè)有OVF(溢出)端,便于多個(gè)器件級(jí)聯(lián)。
方案二:采用蜂鳴提示音提示當(dāng)轎箱到達(dá)所需的樓層時(shí),蜂鳴器響,提示乘客到達(dá)了所需的樓層,另外可以作為緊急停止時(shí)的報(bào)警提示信號(hào),其軟件驅(qū)動(dòng)、硬件電路調(diào)試非常簡潔方便,而且價(jià)格便宜,能滿足本設(shè)計(jì)的要求。
以上兩種方案中,選擇方案二。
2.5  電動(dòng)機(jī)模塊
方案一:采用步進(jìn)電機(jī)作為本設(shè)計(jì)的執(zhí)行元件,步進(jìn)電機(jī)在定位性能方面十分優(yōu)越。步進(jìn)電機(jī)和普通電機(jī)的區(qū)別主要就在于其脈沖驅(qū)動(dòng)的形式,步進(jìn)電機(jī)不需要A/D 轉(zhuǎn)換,能夠直接將數(shù)字脈沖信號(hào)轉(zhuǎn)化成為角位移。常用的步進(jìn)電機(jī)每轉(zhuǎn)一步,角度轉(zhuǎn)1.8°,在應(yīng)用中,步進(jìn)電機(jī)可以同時(shí)完成兩個(gè)工作,其一是傳遞轉(zhuǎn)矩,其二是傳遞信息,升降精度很高。

方案二:采用直流電機(jī)作為本設(shè)計(jì)的執(zhí)行元件,直流電機(jī)工作是讓線圈始終交替地處于穩(wěn)定狀態(tài)和非穩(wěn)定平衡狀態(tài),通過兩個(gè)半圓環(huán)形電樞將線圈的穩(wěn)定平衡狀態(tài)消除掉。這樣,載流線圈在磁場中就會(huì)一直地轉(zhuǎn)動(dòng)下去。直流電機(jī)在高起動(dòng)轉(zhuǎn)矩、大轉(zhuǎn)矩、低慣量的系統(tǒng)中經(jīng)常使用到。
此題目中電機(jī)要帶動(dòng)的負(fù)載較大,對(duì)升降精度要求不是很,所以采用方案二。
2.6 電動(dòng)機(jī)驅(qū)動(dòng)模塊
我們使用的是直流電機(jī),比較以下兩種方案實(shí)現(xiàn)對(duì)直流電機(jī)的驅(qū)動(dòng)。
方案一:  小功率驅(qū)動(dòng)電路可以采用如圖2所示的H橋開關(guān)電路。UA和UB是互補(bǔ)的雙極性或單極性驅(qū)動(dòng)信號(hào),TTL電平。開關(guān)晶體管的耐壓應(yīng)大于1.5倍Us以上。當(dāng)四個(gè)功率開關(guān)全用NPN晶體管時(shí),需要解決兩個(gè)上橋臂晶體管(BG1和BG3)的基極電平偏移問題。圖3中H橋開關(guān)電路利用兩個(gè)晶體管實(shí)現(xiàn)了上橋臂晶體管的電平偏移。但電阻R上的損耗較大,所以也只能在小功率電機(jī)驅(qū)動(dòng)中使用。
        圖2 H橋開關(guān)電路(Ⅰ)                        圖3 H橋開關(guān)電路(Ⅱ)                           
方案二:采用集成電機(jī)驅(qū)動(dòng)控制芯片L298,該芯片內(nèi)部包含有兩個(gè)集成H橋,能同時(shí)驅(qū)動(dòng)兩路5到24 伏范圍電源的直流電機(jī)。                          
由于本系統(tǒng)只有一路直流電機(jī),且功率較小,所以采用方案一中圖2方案。
1


硬件設(shè)計(jì)

3 硬件設(shè)計(jì)
3.1 總體方案設(shè)計(jì)
本次設(shè)計(jì)的基本思想是采用AT89S52單片機(jī)作為核心,利用其豐富的I/O接口與外圍電路配合進(jìn)行控制。采用8位LED靜態(tài)顯示來實(shí)時(shí)顯示電梯所在樓層,并用4511來驅(qū)動(dòng)LED顯示。采用行列式鍵盤矩陣作為外呼內(nèi)選電路,由于是5層樓,故選用4×4矩陣鍵盤,鍵盤矩陣共16個(gè)按鍵,其中8個(gè)按鍵是各層樓外呼按鍵,5個(gè)表示電梯內(nèi)部的選擇鍵,另外設(shè)有緊急停止按鍵,啟動(dòng)按鍵和電梯演示按鍵。電梯狀態(tài)是通過兩個(gè)發(fā)光二極管顯示的,左邊燈亮表示電梯在向上運(yùn)行,右邊燈亮表示電梯在向下運(yùn)行,另設(shè)有一燈燈亮表示開門狀態(tài),燈熄表示關(guān)門狀態(tài)。
電梯的系統(tǒng)PCB圖見附錄二圖22、圖23。
電梯模型效果圖如圖4所示:

          圖4 電梯模型效果圖
總體方框圖如圖5所示:






圖5 總體方框圖
3.2 單片機(jī)最小系統(tǒng)
單片機(jī)采用ATMEL公司的AT89S52,最小系統(tǒng)包括復(fù)位電路和時(shí)鐘電路兩部分,其中復(fù)位電路采用按鍵手動(dòng)復(fù)位和上電自動(dòng)復(fù)位組合,電路如圖6(左)所示:其中9 腳為單片機(jī)的復(fù)位端,電容C5按鍵RESET構(gòu)成上電復(fù)位和手動(dòng)復(fù)位電路。時(shí)鐘電路如圖3(右)所示:晶振采用的是12MHZ的,C1、C2為30p瓷片電容,XATL2和XATL1分別為單片機(jī)的18和19腳。







圖6 最小系統(tǒng)電路















3.3各模塊設(shè)計(jì)3.3.1  按鍵電路
由于本電路所需按鍵較多,為了節(jié)省單片機(jī)的I/O口,故選用行列式鍵盤矩陣。本電路采用的是4×4鍵盤矩陣。電路如圖7 所示,P3.0-P3.7是接單片機(jī)的P3 端口,單片機(jī)采用行和列掃描法來判別這16個(gè)按鍵中哪個(gè)鍵按下,然后可根據(jù)每個(gè)按鍵的功能來通過單片機(jī)控制電梯的運(yùn)行。   鍵盤電路如圖7 所示:
              圖7鍵盤矩陣電路
各按鈕開關(guān)說明:
按鈕開關(guān)1:轎廂內(nèi)一樓呼叫開關(guān);按鈕開關(guān)2:轎廂內(nèi)二樓呼叫開關(guān);
按鈕開關(guān)3:轎廂內(nèi)三樓呼叫開關(guān);按鈕開關(guān)4:轎廂內(nèi)四樓呼叫開關(guān);
按鈕開關(guān)5:轎廂外二樓上呼叫開關(guān);按鈕開關(guān)6:轎廂外三樓上呼叫開關(guān);
按鈕開關(guān)7:轎廂外四樓上呼叫開關(guān);按鈕開關(guān)8:轎廂內(nèi)五樓呼叫開關(guān);
按鈕開關(guān)9:轎廂外二樓下呼叫開關(guān);按鈕開關(guān)10:轎廂外三樓下呼叫開關(guān);
按鈕開關(guān)11:轎廂外四樓下呼叫開關(guān) 按鈕開關(guān)12:轎廂外五樓上呼叫開關(guān);
按鈕開關(guān)13:轎廂內(nèi)一樓呼叫開關(guān);
按鈕開關(guān)14:演示功能按鍵;
按鈕開關(guān)15:緊急停止按鍵;
按鈕開關(guān)16:電梯啟動(dòng)按鍵。
3.3.2 顯示電路
數(shù)碼管顯示,電梯的基本功能具備顯示電梯當(dāng)前的樓層,所以設(shè)計(jì)中在轎廂和每個(gè)樓層中都設(shè)置了一個(gè)數(shù)碼顯示管,用來顯示當(dāng)前電梯所在的層數(shù),由4511來驅(qū)動(dòng)8位數(shù)碼管顯示電梯所到達(dá)的樓層數(shù)。接線圖如圖8所示,圖中共有六個(gè)數(shù)碼管并聯(lián),通過對(duì)四根數(shù)據(jù)線進(jìn)行寫操作進(jìn)行樓層顯示。
圖8  顯示部分接線圖
3.3.3 電機(jī)正反轉(zhuǎn)指示
在本次設(shè)計(jì)中電機(jī)正反轉(zhuǎn)用兩個(gè)發(fā)光管來表示,如圖9所示:用單片機(jī)的P1口做輸出口來驅(qū)動(dòng)發(fā)光管,其中L1亮表示電機(jī)正轉(zhuǎn)、L2亮表示電機(jī)反轉(zhuǎn)、L3亮表示電機(jī)停轉(zhuǎn),同時(shí)電梯開門。L3滅表示電梯關(guān)門,L3亮表示電梯開門,電梯運(yùn)行時(shí)L1和L2必須有一個(gè)亮,來表示電梯的上行和下行。
圖9電機(jī)狀態(tài)指示
3.3.4  電源模塊
本系統(tǒng)采用L7805穩(wěn)壓電路提供電壓+5V,對(duì)各部分電路供電,電源可以采用USB接口的方式輸入,也可以采用標(biāo)準(zhǔn)的電源輸入頭輸入,另外電源可以直接通過P13口對(duì)電機(jī)進(jìn)行供電。






圖10  電源模塊
在降壓電路中應(yīng)注意以下事項(xiàng):
1、輸入輸出壓差不能太大,太大則轉(zhuǎn)換效率急速降低,而且容易擊穿損壞;
2、輸出電流不能太大,1.5A 是其極限值。大電流的輸出,散熱片的尺寸要足夠大,否則會(huì)導(dǎo)致高溫保護(hù)或熱擊穿;
3、輸入輸出壓差也不能太小,太小效率很差。
3.3.5  紅外發(fā)射接收電路               
在豎井各個(gè)樓層設(shè)置紅外發(fā)射接收管,在轎廂上下運(yùn)動(dòng)的過程當(dāng)中紅外線發(fā)射管不斷發(fā)射紅外線,當(dāng)轎廂運(yùn)動(dòng)到特定位置,豎井上的紅外線接收頭收到紅外線,其輸出發(fā)生變化。單片機(jī)通過紅外線接收頭輸出的變化知道電梯轎廂的位置。
        
圖11  紅外發(fā)射對(duì)管              圖12 紅外對(duì)管電路圖

圖11所示為反射式紅外線發(fā)射-接收器的示例。調(diào)整發(fā)射管的限流電阻(200 Ω),可以調(diào)整靈敏度,但是注意不能讓電流超過50mA,以免燒毀發(fā)射管。輸出側(cè)的10k電阻是提供“0”電平時(shí)的接地電阻,如果電路里已經(jīng)有信號(hào)輸入的接地電阻,則可以省略本處的10kΩ電阻。此電阻阻值不能太小,否則高電平輸出會(huì)達(dá)不到3.5V以上。只要在紅外線發(fā)射-接收管前插入一件對(duì)紅外光有反射作用的物質(zhì),圖示的輸出端口“OUT”的電平立即從低變成高。只要在紅外線發(fā)射-接收管前插入一件對(duì)紅外光有無反射作用的物質(zhì),圖示的輸出端口“OUT”的電平立即從高變成低。如果該反射或無反射物質(zhì)是循環(huán)連續(xù)動(dòng)作的話,就是一種非常好的無觸點(diǎn)信號(hào)源位置檢測。
3.3.6  電機(jī)驅(qū)動(dòng)電路
電機(jī)驅(qū)動(dòng)部分采用常用的H橋電路,如下圖所示。在P2.4口輸入PWM信號(hào)對(duì)整個(gè)電路進(jìn)行選通,通過調(diào)節(jié)PWM的占空比,實(shí)現(xiàn)電機(jī)運(yùn)動(dòng)過程的加速和減速的過程,從而完成電機(jī)的停止、平層操作。P2.5口為電機(jī)的正反轉(zhuǎn)控制,當(dāng)P2.5為高電平時(shí),Q3、Q2管導(dǎo)通,并通過電機(jī)構(gòu)成回路,實(shí)現(xiàn)電梯的反轉(zhuǎn),當(dāng)其為低電平時(shí),Q1、Q4管導(dǎo)通,通過電機(jī)構(gòu)成了H橋的另一邊反向回路,實(shí)現(xiàn)了電梯的正轉(zhuǎn),從而完成電機(jī)的正反轉(zhuǎn)控制。驅(qū)動(dòng)電路PCB圖見附件二圖24、圖25。
仿真圖如圖13所示:
圖13  H橋電路仿真圖

3.3.7 按鍵指示
由于此部分只要求每層顯示上下標(biāo)志,所以我們采用一般的發(fā)光二級(jí)管。此外,由于一樓和五樓只能分別上和下,故我們在一樓和五樓都只安裝一個(gè)發(fā)光二級(jí)管。由于單片機(jī)IO口資源有限,我們通過74HC573鎖存器實(shí)現(xiàn)電梯外部的八個(gè)發(fā)光二極管與矩陣鍵盤的P3口復(fù)用,通過P0.6選通,當(dāng)需要對(duì)八個(gè)發(fā)光二極管進(jìn)行操作時(shí),需要先將P0.6置1進(jìn)行選通,改變P3口數(shù)值,再置0對(duì)P3進(jìn)行鎖存。其電路如圖14:
圖14 電梯外部按鍵指示復(fù)用電路
3.3.8  緊急報(bào)警
轎廂內(nèi)設(shè)緊急報(bào)警按鈕,當(dāng)電梯突然發(fā)生故障使轎箱內(nèi)的人被困時(shí),可以通過按下緊急停止按鈕,清除所有呼叫信號(hào),并將電梯直接運(yùn)行至一樓,并發(fā)出報(bào)警信號(hào)。由于這個(gè)部分要求電梯的任何運(yùn)行狀況下都要有效,為保險(xiǎn)起見,我們將此作為一個(gè)獨(dú)立的模塊。
      
圖15  蜂鳴器報(bào)警原理圖
1


軟件設(shè)計(jì)

4 軟件設(shè)計(jì)
本設(shè)計(jì)由于采用鍵盤矩陣來代替外呼內(nèi)選按鈕,而電梯的運(yùn)行方向是根據(jù)這些呼叫按鍵和選擇按鍵來決定的,所以單片機(jī)要不斷的掃描鍵盤來獲取各層呼叫狀態(tài),從而控制電梯的運(yùn)行。故鍵盤矩陣掃描是本系統(tǒng)軟件設(shè)計(jì)的重要一部分,另外要把鍵盤掃描到的各層的按鍵信息存儲(chǔ)起來,然后和電梯的運(yùn)行狀態(tài)比較,判斷是否響應(yīng)各層呼叫,當(dāng)電梯到達(dá)目的樓層時(shí)電機(jī)停止,此時(shí)即可進(jìn)、出乘客,乘客進(jìn)入電梯之后可選擇去哪一層,然后電梯根據(jù)乘客的選擇判斷去哪一層,繼續(xù)運(yùn)行。通過單片機(jī)控制電梯在上升過程中只響應(yīng)上升呼叫,下降過程中只響應(yīng)下降呼叫。
由于本設(shè)計(jì)采用單片機(jī)實(shí)現(xiàn)控制,其中主程序部分主要完成系統(tǒng)的初始化,如中斷方式的設(shè)置,開中斷等。在中斷子程序中完成樓層檢測等,其它的如數(shù)碼管的顯示,鍵盤的響應(yīng),轉(zhuǎn)動(dòng)電機(jī)的控制,延時(shí)等均由相應(yīng)的子程序來完成。
軟件設(shè)計(jì)思想:采用模塊化的分層次設(shè)計(jì)方法,將軟件系統(tǒng)功能由多個(gè)實(shí)現(xiàn)單一功能的子程序?qū)崿F(xiàn)。通過調(diào)用不同的子程序,實(shí)現(xiàn)了復(fù)雜功能控制。這樣便于調(diào)試、修改。軟件編程是實(shí)現(xiàn)多功能、智能化、操作方便的關(guān)鍵。在本設(shè)計(jì)中,可以把程序的各部分相互結(jié)合起來,達(dá)到完成各項(xiàng)設(shè)計(jì)的功能。
4.1 電梯主程序
根據(jù)系統(tǒng)要求,電梯的程序應(yīng)滿足以下要求:
(1)初始化程序使數(shù)碼管顯示“1”表示電梯處在一樓,等待人進(jìn)入電梯;
(2)主程序主要包括:
①判斷乘客進(jìn)入電梯后選擇去哪一層,根據(jù)判斷情況來控制電梯運(yùn)行,到達(dá)目標(biāo)樓層后相應(yīng)的呼叫指示燈熄滅;
②電梯在運(yùn)行過程中要不斷的掃描鍵盤,從而來判斷各樓層有無呼叫請(qǐng)求,并點(diǎn)亮相應(yīng)的呼叫指示燈;
③設(shè)置演示功能按鍵、緊急停止按鍵、啟動(dòng)按鍵;
④實(shí)時(shí)顯示電梯所在位置及運(yùn)行狀態(tài)(上行/下行);
⑤開關(guān)門有一定的延時(shí)來保證乘客走出/進(jìn)入電梯;
主程序流程圖如圖16所示。
[size=0.83em]1.029.jpg (18.09 KB, 下載次數(shù): 10)
下載附件  [url=]保存到相冊[/url]
[color=rgb(153, 153, 153) !important]2017-5-9 17:19 上傳




圖16 主程序流程圖
電梯的整個(gè)軟件設(shè)計(jì)包括一下幾部分:電梯邏輯控制模塊、電梯運(yùn)行模塊、鍵盤掃描模塊、樓層顯示模塊、指示燈關(guān)閉模塊、樓層檢測模塊、電梯功能演示模塊、電梯緊急停止模塊。






4.2 電梯邏輯控制
電梯控制中,單片機(jī)掃描樓層外呼內(nèi)選信號(hào),將樓層呼叫信號(hào)與當(dāng)前樓層運(yùn)行狀
態(tài)進(jìn)行比較,確定電梯響應(yīng)上升、下降隊(duì)列,然后電梯按照運(yùn)行隊(duì)列進(jìn)行電機(jī)控制。而將呼叫信號(hào)轉(zhuǎn)化為響應(yīng)隊(duì)列的程序模塊是電梯控制的核心部分,其算法的嚴(yán)謹(jǐn)性,決定了電梯的控制性能。其程序源代碼見附錄一1.1,邏輯框圖如圖17所示:
圖17中斷邏輯圖
4.3 電梯運(yùn)行控制
電梯響應(yīng)上升下降隊(duì)列時(shí),要對(duì)相應(yīng)的指示燈、上下行狀態(tài),以及響應(yīng)隊(duì)列做相應(yīng)的改變,而實(shí)現(xiàn)這一功能模塊的就是電梯運(yùn)行函數(shù)。其程序源代碼見附錄一1.2,邏輯框圖如圖18所示:
圖18電梯運(yùn)行邏輯圖
4.3  鍵盤掃描、樓層檢測
鍵盤掃描采用行掃描法,行掃描法又稱為逐行掃描查詢法,是一種最常用的按鍵識(shí)別方法。首先判斷鍵盤中有無鍵按下,將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。
然后判斷閉合鍵所在的位置,在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。在確定各閉合按鍵后,對(duì)于每一個(gè)按鍵返回一個(gè)固定鍵值。當(dāng)鍵盤返回鍵值后,對(duì)不同的鍵值進(jìn)行鍵碼處理,產(chǎn)生相應(yīng)的呼叫信號(hào),并使相應(yīng)的呼叫樓層指示燈燈點(diǎn)亮。程序源代碼見附錄一1.6。
樓層檢測采用中斷掃描的方式,在中斷子程序里對(duì)P0.0-P0.4進(jìn)行掃描,當(dāng)某一管腳為高電平時(shí)表示電梯運(yùn)行至該樓層。
4.4  緊急停止、演示功能
為了提高電梯安全性能,設(shè)置緊急停止功能,當(dāng)緊急停止鍵按下,所有呼叫信號(hào)清空,呼叫指示信號(hào)燈熄滅,同時(shí)電梯向一樓方向運(yùn)行,蜂鳴器報(bào)警,當(dāng)電梯運(yùn)行到一樓,停止報(bào)警,等待電梯重新啟動(dòng)信號(hào)。程序源代碼見附錄一1.3。
作為電梯模型,為了更方便的展示電梯所具有的功能,在系統(tǒng)中設(shè)計(jì)了一個(gè)演示功能按鍵,當(dāng)電梯啟動(dòng)后,第一次按下演示按鍵時(shí),系統(tǒng)自動(dòng)生成二樓、三樓、四樓的向上呼叫信號(hào),以及五樓的向下呼叫信號(hào),相應(yīng)的指示燈點(diǎn)亮,系統(tǒng)按照此呼叫隊(duì)列運(yùn)行;第二次按下演示按鍵時(shí),系統(tǒng)自動(dòng)生成四樓、三樓、二樓向下呼叫信號(hào),以及一樓的向上呼叫信號(hào),同時(shí)相應(yīng)的指示燈點(diǎn)亮,系統(tǒng)按照此隊(duì)列運(yùn)行。程序源代碼見附錄一1.4。
4.5  程序中位操作問題分析
由于系統(tǒng)顯示、控制信號(hào)較多,管腳多處復(fù)用,在程序里幾處需要對(duì)單片機(jī)的某一個(gè)端口進(jìn)行位操作,并且不能改變其他管腳的值,下面進(jìn)行分別分析。
樓層顯示部分:樓層顯示數(shù)碼管采用4511驅(qū)動(dòng),所連接的單片機(jī)的管腳為P2.0-P2.3,P2口剩下四個(gè)管腳連接電機(jī),所以需要對(duì)P2口前四位進(jìn)行操作顯示樓層信息,程序采用switch語句,判斷所需要顯示樓層數(shù),然后對(duì)P2.0-P2.3進(jìn)行相應(yīng)的位操作,從而顯示樓層信息。程序源代碼見附錄一1.5。
按鍵指示燈部分:電梯外部按鍵指示燈是利用74HC573鎖存后與矩陣鍵盤共同連接至單片機(jī)P3口,在掃描鍵盤時(shí)需要用74HC573對(duì)八個(gè)指示燈進(jìn)行鎖存,而對(duì)按鍵指示燈進(jìn)行操作時(shí),要求對(duì)任意一個(gè)指示燈進(jìn)行點(diǎn)亮、熄滅操作,而且不能改變其他位的狀態(tài)。這就需要對(duì)八個(gè)指示燈當(dāng)前狀態(tài)進(jìn)行儲(chǔ)存,并將位賦值轉(zhuǎn)化為端口賦值的方式。程序中定義變量trap用以保存當(dāng)前P3口值,當(dāng)指示燈的某一位需要熄滅時(shí),將此位與trap進(jìn)行“或”操作形成新的trap賦給P3口,當(dāng)指示燈某一位需要點(diǎn)亮?xí)r,將除了此位其他位的高與trap進(jìn)行“與”操作形成新的trap值賦給P3口,從而完成位操作。
1


軟件設(shè)計(jì)

1


系統(tǒng)測試
5 系統(tǒng)測試
由于所設(shè)計(jì)的基于單片機(jī)的電梯控制系統(tǒng)包括軟件和硬件兩部份, 仿真時(shí)先對(duì)軟件進(jìn)行編譯,然后再將已編譯無誤的軟件結(jié)合硬件在一起進(jìn)行仿真,完成整個(gè)系統(tǒng)的仿真工作。
5.1 軟件編譯調(diào)試
在軟件調(diào)試中,采用keil仿真軟件進(jìn)行程序調(diào)試。首先分別調(diào)試各個(gè)功能程序,再對(duì)整個(gè)程序進(jìn)行調(diào)試,以便修改錯(cuò)誤碼。具體的調(diào)試方法如下:
首先在keil軟件中選擇AT89C51作為CPU,將晶振頻率設(shè)置為12MHZ,然后新建一個(gè).c文件,將各個(gè)功能程序錄入,先檢查程序有無明顯錯(cuò)誤,保存過后編譯程序,當(dāng)有錯(cuò)誤時(shí)就根據(jù)提示加以修改,當(dāng)各個(gè)功能程序編譯完成后,再對(duì)整個(gè)程序全速執(zhí)行,查看程序有哪些地方出現(xiàn)錯(cuò)誤,對(duì)應(yīng)錯(cuò)誤提示逐步調(diào)整程序,糾正錯(cuò)誤直到程序正確無誤,調(diào)試結(jié)束后軟件調(diào)試界面如下:


圖19 軟件調(diào)試界面
5.2 硬件仿真
硬件仿真使用的是Proteus7.5.SP3,Proteus 是目前最好的模擬單片機(jī)外圍器件的工具,它可以仿真 51 系列、AVR,PIC 等常用的 MCU 及其外圍電路(如LCD,RAM,ROM,鍵盤,馬達(dá),LED,AD/DA,部分SPI器件,部分IIC器件.)。
首先利用Proteus中的器件庫完成電路的連接,如下圖所示:


圖20 proteus仿真圖
然后右鍵AT89C51再左鍵,出現(xiàn)“Edit Componet”, 在 Program File 中單擊 出現(xiàn)文件瀏覽對(duì)話框,找到test.hex 文件,單擊確定.完成添加文件,單擊 OK 退出。單擊仿真按鈕,開始仿真,按下Start,系統(tǒng)開始工作,通過按F1—F5及各樓層按鍵,電梯都能完成請(qǐng)求,基本實(shí)現(xiàn)了電梯運(yùn)行的模擬。




5.3 Delphi效果圖
圖21 Delphi效果圖
5.4 系統(tǒng)測試5.4.1方向優(yōu)先測試
電梯按某方向運(yùn)行時(shí),優(yōu)先響應(yīng)該運(yùn)行方向的按鈕;
測試初始時(shí),轎箱位于一樓,按下二樓,三樓的上下按呼叫,和四樓的向下呼叫。按鍵順序可隨意。
測試結(jié)果:               
表1  方向優(yōu)先測試           
停止樓層            電梯方向                  顯示
2                       上              2樓上呼叫注銷
3                       上              3樓上呼叫注銷
4                       上              4樓下呼叫注銷
3                       下              3樓下呼叫注銷
2                       下              2樓下呼叫注銷







結(jié)論:系統(tǒng)在向上運(yùn)行時(shí)候,優(yōu)先相應(yīng)各樓層的向上呼叫信號(hào),不響應(yīng)向下的呼叫信號(hào),向下運(yùn)行時(shí)相反,符合設(shè)計(jì)要求。
5.4.2  距離優(yōu)先測試
同一方向有多個(gè)按鈕呼叫時(shí),優(yōu)先響應(yīng)最近的樓層。測試初始時(shí),電梯位于任一層,如二樓。此時(shí)三樓和四樓分別向上呼叫。測試結(jié)果:先響應(yīng)三樓呼叫,再響應(yīng)四樓呼叫。
結(jié)論:電梯具有距離優(yōu)先響應(yīng)的功能,當(dāng)多層同方向呼叫,首先響應(yīng)距離當(dāng)前樓層較近的呼叫,符合系統(tǒng)設(shè)計(jì)要求。
各按鈕呼叫時(shí)指示燈顯示正常,電梯響應(yīng)該按鈕的呼叫后,其指示燈應(yīng)自動(dòng)熄滅。
5.4.3  綜合測試
測試條件:電梯位于1樓,進(jìn)入三人,其中一人要到3樓,另兩人到4樓。電梯運(yùn)行后,3樓和4樓有人向上呼叫,3樓有人向下呼叫到1樓。
測試結(jié)果:
表3  綜合測試           
停止樓層              電梯          方向顯示
3                      上    3樓內(nèi)部和向上呼叫注銷,內(nèi)部4樓呼叫
4                      上    4樓向上呼叫注銷
3                      下    3樓向下呼叫注銷,內(nèi)部1樓呼叫
1                      下    內(nèi)部1樓呼叫注銷

測試結(jié)論:系統(tǒng)具有方向優(yōu)先、距離優(yōu)先的功能,基本模擬了實(shí)際電梯運(yùn)行,完成題目設(shè)計(jì)指標(biāo)。







5.4.4  演示測試
測試條件:按下電梯啟動(dòng)按鍵,然后按下演示按鍵,當(dāng)電梯運(yùn)行至五樓,第二次按下演示按鍵。
測試結(jié)果:
表4 演示測試           
停止樓層              電梯              方向顯示
2                      上             2樓向上注銷
3                      上             3樓向上注銷
4                      上             4樓向上注銷
5                      下             5樓向下注銷
4                      下             4樓向下注銷
3                      下             3樓向下注銷
2                      下             2樓向下注銷
1                      上             1樓向上注銷









1


小結(jié)與展望



測試結(jié)論:該測試比較完整的演示了電梯具有的性能,實(shí)現(xiàn)了多層呼叫請(qǐng)求的排序,對(duì)電梯進(jìn)行運(yùn)動(dòng)控制,同時(shí)測試了樓層以及運(yùn)行信息顯示,指示燈狀態(tài)信息的變化,經(jīng)測試,電梯實(shí)現(xiàn)了系統(tǒng)要求。

6 小結(jié)與展望
經(jīng)過認(rèn)真的選擇和設(shè)計(jì),最終完成了一個(gè)可以實(shí)現(xiàn)大部分功能的電梯控制系統(tǒng)。電梯系統(tǒng)為模擬實(shí)用客運(yùn)電梯系統(tǒng)的模擬實(shí)驗(yàn)裝置。它能實(shí)現(xiàn)實(shí)際客運(yùn)電梯系統(tǒng)的絕大部分功能,包括:門廳呼叫功能,轎廂內(nèi)選層功能,樓層實(shí)時(shí)顯示,電梯自動(dòng)開關(guān)門功能,智能初始化功能,緊急停車功能,系統(tǒng)演示功能。
通過這次課程設(shè)計(jì),受益匪淺,對(duì)單片機(jī)在實(shí)物中應(yīng)用的能力得到很大的提高,首先是對(duì)整個(gè)電梯系統(tǒng)硬件的設(shè)計(jì),在有限的IO口基礎(chǔ)上實(shí)現(xiàn)了諸多功能,對(duì)IO口管腳復(fù)用有了更深入的了解,對(duì)于電機(jī)學(xué)的知識(shí)也有了進(jìn)一步的鞏固和加深。單片機(jī)構(gòu)成一個(gè)控制系統(tǒng)后它的外圍電路、擴(kuò)展電路以及一些通訊都是至關(guān)重要的,只有完善單片機(jī)的外部電路才能保證單片機(jī)能正常有效的工作。其次完成了對(duì)單片機(jī)的軟件設(shè)計(jì),對(duì)矩陣鍵盤、數(shù)碼管顯示、電機(jī)控制、電梯邏輯控制有了更深入的了解,也對(duì)調(diào)試代碼的方法積累了寶貴的經(jīng)驗(yàn)。再次,而且在畢業(yè)設(shè)計(jì)過程中,不僅在學(xué)習(xí)上有了很大的提高對(duì)于我的意志力也得到了很好的鍛煉。
雖然本電梯控制系統(tǒng)已能滿足基本的電梯運(yùn)行要求,但仍有許多需要改進(jìn)的地方:
(1)增加與微機(jī)通信的接口,實(shí)現(xiàn)聯(lián)網(wǎng)控制,多臺(tái)電梯綜合控制由微機(jī)完成。
(2)優(yōu)化電梯選向功能,使之隨客流量的變化而改變,達(dá)到高效運(yùn)送乘客的目的。
(3)需輸入密碼才能乘電梯到達(dá)特殊檔層功能,且響應(yīng)改樓層呼叫時(shí)不響應(yīng)其他樓層呼叫。
(4)完善電梯各個(gè)模塊功能,如門控電機(jī)模塊,重力檢測模塊,電機(jī)調(diào)速驅(qū)動(dòng)等系統(tǒng),使電梯模型安全性更高,運(yùn)行更加穩(wěn)定。
我們相信,隨著科技的發(fā)展和更新,各種設(shè)備的控制器也在迅猛發(fā)展,以前的很多由PLC控制的工控設(shè)備已經(jīng)逐漸被單片機(jī)控制的工控設(shè)備代替,單片機(jī)將能夠更好的發(fā)揮其體積小,功能全、便于修改更新的優(yōu)點(diǎn),成為將來電子控制器領(lǐng)域的魁首,而作為微處理器的重要領(lǐng)域,電梯控制系統(tǒng)將會(huì)像價(jià)格便宜、控制方便的單片機(jī)方向發(fā)展。
1



參考文獻(xiàn)
[1]  謝自美主編 《電子線路設(shè)計(jì).實(shí)驗(yàn).測試(第二版)》 華中科技大學(xué)出版社 2002年
[2]  李建忠編著 《單片機(jī)原理及運(yùn)用》  西安電子科技大學(xué)出版社  2001年
[3]  馮建華 趙亮編著 《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與產(chǎn)品開發(fā)》 人民郵電出版社  2004年
[4] 吳金戌 沈慶陽 郭庭吉《8051單片機(jī)實(shí)踐與應(yīng)用》清華大學(xué)出版社,2002
[5] 張齊 杜群貴著,《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)》,電力工業(yè)出版社,2007.7
[6] 童詩白 華成英主編,《模擬電子技術(shù)基礎(chǔ) 第三版》,高等教育出版社,2006.12
[7] 閻石主編,《數(shù)字電子技術(shù)基礎(chǔ)》,高等教育出版社,2007.11
[8] 譚浩強(qiáng)著,《C程序設(shè)計(jì) 第三版》,清華大學(xué)出版社,2006.6
[9] 李華主編,《MCS-5系列單片機(jī)實(shí)用接口技術(shù)》,北京航天航空出版社,2003.6
[10] 李惠昇,《電梯控制技術(shù)》,北京:機(jī)械工業(yè)出版社,2003
(1)徐愛鈞.智能化測量控制儀表原理與設(shè)計(jì)[M].(第2版).北京航空航天大學(xué)出版社.2004.9
(2)余發(fā)山,王福忠.《單片機(jī)原理及應(yīng)用技術(shù)》.北京:中國礦業(yè)大學(xué),2003
(3)何斌.電梯群控系統(tǒng)設(shè)計(jì)與應(yīng)用[ D ].南京理工大學(xué),2006 .
(4)王君明.電梯模型控制系統(tǒng)設(shè)計(jì)[J ]。湖北水利水電職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006.
(5)余兆棠,葉遠(yuǎn)呈,蕭仁理.電梯控制系統(tǒng)改良與實(shí)現(xiàn)[J].電子測試,2006.
(6)金建峰,動(dòng)態(tài)測量建立曳引電梯的能耗仿真模型[J ].機(jī)械設(shè)計(jì)與研究,2009.
(7)張漢杰,王錫仲,朱學(xué)莉.現(xiàn)代電梯控制技術(shù)[M].哈爾濱工業(yè)大學(xué)出版社,2001.
(8)架延?xùn)|.電梯控制技術(shù)[M].北京:中國建筑工業(yè)出版社.1997.

附錄二
器件清單 管腳說明
1


主要器件清單
(1)有機(jī)玻璃板一張(1.85m*1.25m)
(2)直射式紅外對(duì)管5個(gè)
(3)直流電機(jī)一個(gè)
(4)萬能板5*7cm 6塊 9*15cm 1塊
(5)電壓穩(wěn)壓器7805一片
(6)AT89S52
(7)12M晶振
(8)排阻4.7K,300Ω各一片
(9)按鍵開關(guān) 17個(gè)
(10)發(fā)光二極管30個(gè)
(11)8段數(shù)碼管6個(gè)。
(12)CD4511六片
(13)蜂鳴器一個(gè)。
(14)9012一個(gè)。
(15)TIP41、TIP42各兩個(gè)
(16)LM339二片
(17)74HC573一片
(18)電阻,電容若干
(19)排線若干
(20)杜邦頭、鐵芯若干
(21)其它(502、透明膠帶、熱融膠等)若干

管腳說明
(1)P0_0—P0_4 樓層檢測狀態(tài)
(2)P0_6    P3口復(fù)用功能選擇位
(74HC573片選位)
(3)P0_7                 蜂鳴器報(bào)警

(4)P1_0—P1_4 橋廂內(nèi)部按鍵指示燈5個(gè)
(5)P1_5—P1_6 電梯行駛方向標(biāo)志燈
(6)P1_7       橋廂開關(guān)門狀態(tài)燈

(7)P2_0—P2_3 樓層顯示數(shù)碼管
(8)P2_4—P2_7 步進(jìn)電機(jī)

(9)P3_0—P3_7 矩陣鍵盤(5個(gè)橋廂內(nèi)部按鍵,8個(gè)橋廂外部按鍵,啟動(dòng)、停止、演示各一個(gè))
(10)P3(74HC573復(fù)用功能)橋廂外部按鍵指示燈8個(gè)






1








附錄三:系統(tǒng)PCB圖
圖22系統(tǒng)PCB圖
圖23 系統(tǒng)原理圖
2.2電機(jī)驅(qū)動(dòng)電路板:
圖24電機(jī)驅(qū)動(dòng)電路原理圖
圖25驅(qū)動(dòng)電路PCB圖
附錄四:電梯模型實(shí)物圖

圖27 電梯主系統(tǒng)板(正面)
圖28 電梯主系統(tǒng)板(反面)

圖29 樓層呼叫顯示電路板
圖30電機(jī)驅(qū)動(dòng)電路



附錄一:部分程序代碼
1.1 中斷邏輯子程序
  • void interrupt_logic(void)
  • {
  •               if((0==down_list_flag)&&(0==up_list_flag))              /*判斷電梯是否在運(yùn)行中 */
  •               {
  •                             if(0!=inside_request)//內(nèi)部按鍵控制
  •                             {
  •                                             if(storey<inside_request)
  •                                             {
  •                                                             current_direction=up;
  •                                                             input_up_list(inside_request);
  •                                             }
  •                                             else if(storey>inside_request)
  •                                             {
  •                                                             current_direction=down;
  •                                                             input_down_list(inside_request);
  •                                             }
  •                                             inside_request=0;
  •                               }
  •                             else if(0!=outside_request)//外部按鍵控制
  •                             {
  •                                           if(storey<(outside_request&0x0f))
  •                                           {
  •                                                         if(0x10<outside_request) 此時(shí)為下降請(qǐng)求時(shí)
  •                                                         {
  •                                                                       highest_floor_flag=1;//此時(shí)表明最高上升請(qǐng)求為一下降請(qǐng)求
  •                                                                       outside_request&=0x0f;
  •                                                         }
  •                                                         input_up_list(outside_request);
  •                                                         current_direction=up;
  •                                           }
  •                                           else if(storey>(outside_request&0x0f))
  •                                           {
  •                                                         if(0x10>outside_request)//此時(shí)為上升請(qǐng)求時(shí)
  •                                                                       lowest_floor_flag=1;//此時(shí)表明最低下降請(qǐng)求為一上升請(qǐng)求
  •                                                         else
  •                                                                       outside_request&=0x0f;
  •                                                         input_down_list(outside_request);
  •                                                         current_direction=down;
  •                                           }
  •                                           outside_request=0;
  •                             }
  •               }
  •               else                            /*若電梯正在運(yùn)行*/
  •               {
  •                             if(0!=inside_request)//如果是內(nèi)部按鈕控制
  •                             {
  •                                           if(up==current_direction)
  •                                           {
  •                                                         if(storey<inside_request) 表明此時(shí)請(qǐng)求樓層在當(dāng)前樓層上面
  •                                                         {
  •                                                                       if(inside_request<=up_list[0])
  • //此請(qǐng)求小于等于最高請(qǐng)求樓層則插入上升隊(duì)列
  •                                                                                     input_up_list(inside_request);
  •                                                                       else if(1==highest_floor_flag)
  • //此請(qǐng)求大于最高請(qǐng)求樓層需判斷最高請(qǐng)求上下                                                                      {
  •                                                                                     input_down_list(up_list[0]);//則將最大請(qǐng)求樓層插入向下隊(duì)列
  •                                                                                     up_list[0]=inside_request;//將最大請(qǐng)求樓層變?yōu)榇舜握?qǐng)求的樓層
  •                                                                                     highest_floor_flag=0;//表示最高請(qǐng)求樓層是上升請(qǐng)求
  •                                                                       }
  •                                                                       else//若為最高請(qǐng)求樓層向上請(qǐng)求則直接插入向上請(qǐng)求隊(duì)列
  •                                                                                     input_up_list(inside_request);
  •                                                         }
  •                                                         else//表明此請(qǐng)求樓層在當(dāng)前樓層下面,
  •                                                         {
  •                                                                       input_down_list(inside_request);//當(dāng)次上升請(qǐng)求小于當(dāng)前樓層則直接插入                                                        }
  •                                           }
  •                                           else                                          //電梯處于下降狀態(tài)
  •                                           {
  •                                                         if(storey>inside_request)//表明此時(shí)請(qǐng)求樓層在當(dāng)前樓層下面
  •                                                         {
  •                                                         if(inside_request>=down_list[0])
  • //此請(qǐng)求大于等于最低請(qǐng)求樓層則插入下降隊(duì)列
  •                                                                       input_down_list(inside_request);
  •                                                         else if(1==lowest_floor_flag)
  • //若此請(qǐng)求小于最低請(qǐng)求樓曾則需判斷最低請(qǐng)求樓層為向上還是向下請(qǐng)求
  •                                                                       {
  •                                                                                     input_up_list(down_list[0]);//則將最小請(qǐng)求樓層插入向上隊(duì)列
  •                                                                                     down_list[0]=inside_request;//將最小請(qǐng)求樓層變?yōu)榇舜握?qǐng)求的樓層
  •                                                                                     lowest_floor_flag=0;//表示最小請(qǐng)求樓層是下降請(qǐng)求
  •                                                                       }
  •                                                                       else//若為最低請(qǐng)求樓層向下請(qǐng)求則直接插入向下請(qǐng)求隊(duì)列
  •                                                                                     input_down_list(inside_request);
  •                                                         }
  •                                                         else//表明此請(qǐng)求樓層在當(dāng)前樓層上面
  •                                                         {
  •                                                         input_up_list(inside_request);
  • //當(dāng)次下降請(qǐng)求大于當(dāng)前樓層時(shí)則直接插入向上隊(duì)列
  •                                                         }
  •                                }
  •                                inside_request=0;
  •                             }
  •                             else if(0!=outside_request)//如果是外部按鈕控制
  •                             {
  •                                           if(up==current_direction)//若電梯正在往上運(yùn)行則響應(yīng)向上的請(qǐng)求
  •                                           {
  •                                                         if(0x10>outside_request)//表明請(qǐng)求為上升請(qǐng)求時(shí)
  •                                                         {
  •                                                                       if(storey<outside_request) 表明此時(shí)請(qǐng)求樓層在當(dāng)前樓層上面
  •                                                                       {
  •                                                                                     if(outside_request<=up_list[0])
  • //如果此上升請(qǐng)求小于等于最高請(qǐng)求樓層則直接插入上升隊(duì)列
  •                                                                                                   input_up_list(outside_request);
  •                                                                                     else if(1==highest_floor_flag)
  • //若此上升請(qǐng)求大于最高請(qǐng)求樓曾則需判斷最高請(qǐng)求樓層為向上還是向下請(qǐng)求
  •                                                                                     {
  •                                                                                                   input_down_list(up_list[0]);//則將最大請(qǐng)求樓層插入向下隊(duì)列
  •                                                                                                   up_list[0]=outside_request;//將最大請(qǐng)求樓層變?yōu)榇舜握?qǐng)求的樓層
  •                                                                                                   highest_floor_flag=0;//表示最高請(qǐng)求樓層是上升請(qǐng)求
  •                                                                                     }
  •                                                                                     else//若為最高請(qǐng)求樓層向上請(qǐng)求則直接插入向上請(qǐng)求隊(duì)列
  •                                                                                                   input_up_list(outside_request);
  •                                                                       }
  •                                                                       else//表明此請(qǐng)求樓層在當(dāng)前樓層下面
  •                                                                       {
  •                                                                                     input_down_list(outside_request);
  • //當(dāng)次上升請(qǐng)求小于當(dāng)前樓層時(shí)則直接插入向下隊(duì)列
  •                                                                       }
  •                                                         }
  •                                                         else//表明請(qǐng)求若為下降請(qǐng)求時(shí)
  •                                                         {
  •                                                                       outside_request&=0x0f;
  •                                                                       if(outside_request<=up_list[0])
  • //若此下降請(qǐng)求小于等于最高請(qǐng)求樓層時(shí)直接插入下降隊(duì)列
  •                                                                       {
  •                                                                                     input_down_list(outside_request);
  •                                                                       }
  •                                                                       Else
  • //若此下降請(qǐng)求大于最高請(qǐng)求樓層時(shí)則插入上升隊(duì)列并表明最高請(qǐng)求樓層的方向
  •                                                                       {
  •                                                                                     input_up_list(outside_request);
  •                                                                                     highest_floor_flag=1;       //表示最高請(qǐng)求樓層是下降請(qǐng)求
  •                                                                       }
  •                                                         }
  •                                           }
  •                             else                    //若電梯正在往下運(yùn)行則相應(yīng)向下的請(qǐng)求
  •                             {
  •                                           if(0x10<outside_request) 表明請(qǐng)求為下降請(qǐng)求時(shí)
  •                                           {
  •                                                         outside_request&=0x0f;
  •                                                         if(storey>outside_request)//表明此時(shí)請(qǐng)求樓層在當(dāng)前樓層下面
  •                                                         {
  •                                                                       if(outside_request>=down_list[0])
  • //如果此下降請(qǐng)求大于等于最低請(qǐng)求樓層則直接插入下降隊(duì)列
  •                                                                                     input_down_list(outside_request);
  •                                                                       else if(1==lowest_floor_flag)
  • //若此下降請(qǐng)求小于最低請(qǐng)求樓曾則需判斷最低請(qǐng)求樓層為向上還是向下請(qǐng)求
  •                                                                       {
  •                                                                                     input_up_list(down_list[0]);//則將最小請(qǐng)求樓層插入向上隊(duì)列
  •                                                                                     down_list[0]=outside_request;//將最小請(qǐng)求樓層變?yōu)榇舜握?qǐng)求的樓層
  •                                                                                     lowest_floor_flag=0;//表示最小請(qǐng)求樓層是下降請(qǐng)求
  •                                                                       }
  •                                                                       else//若為最低請(qǐng)求樓層向下請(qǐng)求則直接插入向下請(qǐng)求隊(duì)列
  •                                                                                     input_down_list(outside_request);
  •                                                         }
  •                                                         else//表明此請(qǐng)求樓層在當(dāng)前樓層上面
  •                                                         {
  •                                                                       input_up_list(outside_request);
  • //當(dāng)次下降請(qǐng)求大于當(dāng)前樓層時(shí)則直接插入向上隊(duì)列
  •                                                         }
  •                                           }
  •                                           else//表明請(qǐng)求若為上升請(qǐng)求時(shí)
  • {
  •                                                         if(outside_request>=down_list[0])
  • //若此上升請(qǐng)求大于等于最低請(qǐng)求樓層時(shí)直接插入上升隊(duì)列
  •                                                         {
  •                                                                       input_up_list(outside_request);
  •                                                         }
  •                                                         else
  • //若此上升請(qǐng)求小于最低請(qǐng)求樓層時(shí)則插入下降隊(duì)列并表明最低請(qǐng)求樓層的方向
  •                                                         {
  •                                                                       input_down_list(outside_request);
  •                                                                       lowest_floor_flag=1;       //表示最高請(qǐng)求樓層是下降請(qǐng)求
  •                                                         }
  •                                           }
  •                             }
  •                             outside_request=0;
  •                             }
  •               }
  • }
  • 1.2 電梯運(yùn)行子程序
  • void lift_run(void)
  • {
  •               uchar i;
  •               if((0==down_list_flag)&&(0==up_list_flag))
  •               {
  •                             motor_direction=0;
  •                             up_dir=1;
  •                             down_dir=1;
  •               }
  •               else if(up==current_direction)
  •               {
  •                             if(0!=up_list_flag)
  •                             {
  •                                           motor_direction=up;
  •                                           if(storey==up_list[0]) //到達(dá)樓層后電梯停轉(zhuǎn)
  •                                           {
  •                                                         motor_direction=0;//電梯停轉(zhuǎn)
  •                                                         for(i=0;i<4;i++)
  •                                                         {
  •                                                                       up_list=up_list[i+1];//在隊(duì)列中去除應(yīng)最先響應(yīng)的樓層
  •                                                         }
  •                                                         up_list[4]=0;
  •                                                         turn_off_lights(storey);
  •                                                         up_list_flag--;
  •                                                         up_dir=1;                                                        //  電梯停止運(yùn)行
  •                                                         down_dir=1;
  •                                                         door_sta=0;                                                                      //顯示開門信號(hào)
  •                                                         delay_s(3);                                                                      //開門延時(shí)3S
  •                                                         door_sta=1;                                                                      //顯示關(guān)門信號(hào)
  •                                           }
  •                                           else//若沒有到達(dá)樓層,則判斷是否電梯停轉(zhuǎn),若停轉(zhuǎn)則啟動(dòng),沒有停轉(zhuǎn)就跳過
  •                                           {
  •                                                         if(motor_direction==0)
  •                                                         {
  •                                                                       motor_direction=up;
  •                                                                       direction_display();
  •                                                         }
  •                                           }
  •                             }
  •                             else if((0==up_list_flag)&&(0!=down_list_flag))
  • //若上升隊(duì)列為空而下降隊(duì)列不為空,則判斷下降隊(duì)列,
  •                             {
  •                                           current_direction=down;
  •                             }
  •               }
  •               else if(down==current_direction)
  •               {
  •                             if(0!=down_list_flag)
  •                             {
  •                                           motor_direction=down;
  •                                           if(storey==down_list[0])
  •                                           {
  •                                                         motor_direction=0;
  •                                                         for(i=0;i<4;i++)
  •                                                         {
  •                                                                       down_list=down_list[i+1];
  •                                                         }
  •                                                         down_list[4]=0;
  •                                                         turn_off_lights(storey);
  •                                                         down_list_flag--;
  •                                                         up_dir=1;                                             // 電梯停止運(yùn)行
  •                                                         down_dir=1;
  •                                                         door_sta=0;                                            //顯示開門信號(hào)
  •                                                         delay_s(3);
  •                                                         door_sta=1;    //顯示關(guān)門信號(hào)
  •                                           }
  •                                           else
  •                                           {
  •                                                         if(motor_direction==0)
  •                                                         {
  •                                                                       motor_direction=down;
  •                                                                       direction_display();
  •                                                         }
  •                                           }
  •                             }
  •                             else if((0==down_list_flag)&&(0!=up_list_flag))
  •                             {
  •                                           current_direction=up;
  •                             }
  •               }
  • }
  • 1.3緊急停止子程序
  • void elevator_stop (void)
  • {
  •               uchar bug;
  •               if(stop_flag==1)
  •                             {
  •                                           for(bug=0;bug<5;bug++)
  •                                           {
  •                                                         up_list[bug]=0;
  •                                                         down_list[bug]=0;
  •                                           }
  •                                           up_list_flag=0;
  •                                           down_list_flag=0;
  •                                           inside_request=0;
  •                                           outside_request=0;
  •                                           trap=0xff;
  •                                           outled_com=1;
  •                                           P3=0xff;
  •                                           Key_Delay();
  •                                           outled_com=0;
  •                                           P1=0xff;
  •                                           do
  •                                           {
  •                                                         step=motor_run(2);
  •                                                         storey=storey_test(step);
  •                                                         storey_show(storey);
  •                                                         buzzer=0;
  •                                           }while(storey!=1);
  •                                           stop_flag=0;
  •                                           start_flag=0;
  •                                           buzzer=1;
  •                             }
  • }
  • 1.4 演示功能子程序
  • void elevator_show(void)
  • {
  •               static uchar show_dir=1;
  •               if((show_flag==1)&&(show_dir==1))              //演示向上方向
  •               {
  •                             keyboard_detact(0x21); interrupt_logic();Key_Delay();
  •                             keyboard_detact(0x22); interrupt_logic();Key_Delay();
  •                             keyboard_detact(0x23); interrupt_logic();Key_Delay();
  •                             keyboard_detact(0x34); interrupt_logic();Key_Delay();
  •                             show_flag=0;show_dir=2;
  •               }
  •               else if((show_flag==1)&&(show_dir==2))              //演示向下方向
  •               {
  •                             keyboard_detact(0x33); interrupt_logic();Key_Delay();
  •                             keyboard_detact(0x32); interrupt_logic();Key_Delay();
  •                             keyboard_detact(0x31); interrupt_logic();Key_Delay();
  •                             keyboard_detact(0x41); interrupt_logic();Key_Delay();
  •                             show_flag=0;show_dir=1;
  •               }
  • }
  • 1.5 樓層顯示函數(shù)
  • /*單片機(jī)P2口通過4511與數(shù)碼管相連接,顯示采用位操作進(jìn)行數(shù)碼管顯示操作*/
  • extern               void storey_show(uchar storey)
  • {
  •               switch (storey)
  •               {
  •                                case 1: led_3=0;led_2=0;led_1=0;led_0=1; break;              //“1”
  •                             case 2: led_3=0;led_2=0;led_1=1;led_0=0; break;              //“2”
  •                             case 3: led_3=0;led_2=0;led_1=1;led_0=1; break;              //“3”
  •                             case 4: led_3=0;led_2=1;led_1=0;led_0=0; break;              //“4”
  •                             case 5: led_3=0;led_2=1;led_1=0;led_0=1; break;              //“5”
  •                             default:break;
  •               }
  • }
  • 1.6 鍵盤掃描函數(shù)
  • uchar Keyscan(void)
  •               {
  •                 unsigned char key;
  •                  P3=0xef;//掃描第一列
  •       if ((P3 & 0x0f)!=0x0f)//判斷是該列是否有鍵按下
  •         {
  •              Key_Delay();//去抖動(dòng)
  •           if ((P3 & 0x0f)!=0x0f)//再判斷該列是否有鍵按下
  •             {
  •               switch(P3 & 0x0f)//讀取行的代碼,分析是哪一行有鍵按下
  •                 {
  •                   case 0x0e:key=0x11; break;
  • …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………

[color=rgb(51, 102, 153) !important]復(fù)制代碼


完整的設(shè)計(jì)資料打包下載 word格式 可編輯:
基于單片機(jī)的電梯控制系統(tǒng)實(shí)施.zip (1.83 MB, 下載次數(shù): 12)


控制系統(tǒng), 單片機(jī)

post_newreply







分享到: QQ好友和群 [url=]騰訊微博[/url] [url=]QQ空間[/url]
[url=]評(píng)分[/url] 收藏 轉(zhuǎn)播 分享 淘帖

相關(guān)帖子
回復(fù)
[url=]舉報(bào)[/url]






返回列表[url=][/url][url=][/url]


回復(fù)需要審核,請(qǐng)等待通過






[url=]B[/url][url=]Color[/url][url=]Image[/url][url=]Link[/url][url=]Quote[/url][url=]Code[/url][url=]Smilie本版積分規(guī)則[/url]







[size=0.83em]

Powered by




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表