單片機、電梯、控制系統(tǒng)_第1頁
單片機、電梯、控制系統(tǒng)_第2頁
單片機、電梯、控制系統(tǒng)_第3頁
單片機、電梯、控制系統(tǒng)_第4頁
單片機、電梯、控制系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

摘要在現(xiàn)代生活中,電梯已經(jīng)是一種很常見的交通工具了,它在我們的生活中起到了重要的作用,電梯實際上是一個人機交互式的控制系統(tǒng),單純用順序控制或邏輯控制是不能滿足控制要求的,因此,大部分電梯控制系統(tǒng)都采用隨機邏輯方式控制。(李惠升.電梯控制技術(shù)[M].北京:機械工業(yè)出版社,2003.7)本次設(shè)計的核心元件是STC89C51單片機,以他為核心控制器設(shè)計了一個四層電梯控制系統(tǒng),系統(tǒng)采用C語言編寫程序,能夠?qū)崿F(xiàn)顯示電梯所在樓層,運載乘客上行或下行到目的樓層等基本功能。由于電梯控制系統(tǒng)實現(xiàn)的功能比較簡單,而且是基于單片機的,因此該系統(tǒng)有著靈活,易于擴展,成本低易于實現(xiàn)等優(yōu)點。關(guān)鍵詞:單片機、電梯、控制系統(tǒng)、STC89C51單片機AbstractInmodernlife,theelevatorisoneofthemostcommonmeansoftransportation,itplayedanimportantroleinourlife,infact,theelevatorisaman-machineinteractivecontrolsystem,usethesequentialcontrollogiccontrolcan'tmeetthecontrolrequirements,asaresult,mostpointsofelevatorcontrolsystemiscontrolledbyrandomlogicalway.(lihuisheng.Elevatorcontroltechnology[M].Beijing:machineryindustrypress,2003.7)ThecorecomponentofthedesignisSTC89C51MCU,withthecorecontroller,Idesignedafour-layerelevatorcontrolsystem,thesystemUSESCprogramminglanguageprogramming,whichcandisplaywheretheelevatoris,carryingpassengersupordowntothedestinationfloorandotherbasicfunctions.Asthefunctionofelevatorcontrolsystemissimpleandisbasedonsinglechipmicrocomputer,thesystemisflexible,easytoexpand,lowcostandeasytoachieve.Keywords:MCU,elevator,controlsystem,STC89C51MCU 目錄第一章緒論1.1課題的研究意義和研究目的電梯是一種垂直升降機,通過電機驅(qū)動,能夠用于多層建筑載客或者運送貨物,此外,電梯還有俗稱為自動扶梯的臺階式,電梯是固定的存在于規(guī)定樓層之間的用于服務(wù)大眾的設(shè)備,科技在發(fā)展,電梯也在進步,隨著經(jīng)濟的不斷發(fā)展,城市化進程的不斷推進,高樓大廈在我們生活中已經(jīng)不再少見了,這樣一來,電梯就成為了我們生活中不可缺少工具。電梯方便快捷而且安全,成為了受大眾歡迎的交通工具。幾乎在所有的酒店、大型商場、居民小區(qū)里面都可以找得到電梯的蹤跡。農(nóng)村與城市之間相互影響,相互結(jié)合是未來的發(fā)展趨勢。而隨著這種趨勢的不斷發(fā)展,電梯也將從中得到發(fā)展,電梯的應(yīng)用和款式也會得到擴展。在經(jīng)濟和科技的不斷發(fā)展過程中,電梯作為廣受大眾歡迎的交通工具,必將得到前所未有的發(fā)展,未來的電梯將會更加智能,更加安全。電梯將成為人們生活中不可或缺的交通工具。設(shè)計設(shè)計的目的是鞏固和串聯(lián)過去所學(xué)到的知識,并在實踐中靈活運用學(xué)到的知識。學(xué)習(xí)如何運用單片機控制LED顯示數(shù)字符號,以及C語言如何實現(xiàn)設(shè)備控制等。從目前看來,還有許多電梯控制系統(tǒng)是繼電器控制系統(tǒng),這種系統(tǒng)依賴不同繼電器之間的協(xié)調(diào)合作,以此實現(xiàn)系統(tǒng)的所有邏輯和控制:(1)隨著樓層的上升,繼電器的使用數(shù)量、價值和體積都在增加;(2)繼電器是一種觸點式電子控制器件,不適合長時間運行,而長時間的運行會造成電梯系統(tǒng)控制的失靈,觸電表面等故障。因此,我們設(shè)計了一個四層電梯的模擬升降控制系統(tǒng),乘客手動按鍵,系統(tǒng)自動實現(xiàn)相應(yīng)升降功能。將單片機作為控制系統(tǒng)的核心,并連接適當(dāng)?shù)耐庠O(shè)以及合理的控制程序,以探測和控制電梯,該系統(tǒng)的特點就在于成本低、可操作性、靈活性強以及便于實現(xiàn)復(fù)雜的控制措施。1.2課題的研究方向PLC系統(tǒng)控制以及繼電器經(jīng)常用于早期的電梯控制系統(tǒng)中,然而PLC的局限系在于針對性太強,很難進行改進和擴充,因此很容易造成資源的浪費,這與當(dāng)前可持續(xù)發(fā)展的趨勢不符。這也是資源可持續(xù)利用成為本課題研究的方向的原因,反觀單片機,單片機不僅小巧靈活,而且價格便宜,還可以利用編程簡單的C語言程序?qū)纹瑱C進行控制,這使得對設(shè)備的改進和擴展也不在那么困難,而設(shè)備的改進和軟件的更新,將給人們的生活增添舒適性和便利性,因此,利用單片機實現(xiàn)對電梯設(shè)備的控制,是此類研究的方向。1.3課題的設(shè)計要求及設(shè)計思路課題的設(shè)計要求如下:(1)電梯運行方向由轎廂內(nèi)呼信號決定,順向優(yōu)先執(zhí)行,行車途中如遇外呼信號,順向截車,逆向不截車;(2)內(nèi)呼外呼信號都有鎖存功能,執(zhí)行后解除;(3)到達呼叫層時,轎廂門自動開門,并有報警開門提示;(4)轎廂門關(guān)閉前,紅外線感應(yīng)連續(xù)3秒無人進出轎廂時,報警三次每次一秒,轎廂門自動關(guān)閉;(5)轎廂門關(guān)門時突然有人出入轎廂,轎廂門自動打開并重復(fù)第(4)步;(6)停層時也可以手動控制開門與關(guān)門,運行時不允許開門;(7)若沒有內(nèi)外呼叫信號,電梯自動返回一層待命;(8)若開始運行時轎廂不在第一層,也會自動返回第一層。本設(shè)計的主要思路是分別用lift和dst標(biāo)記電梯當(dāng)前所在樓層和電梯要前往的目標(biāo)樓層,在子程序中對外圍電路的各種變化作出判斷,并根據(jù)這些變化改變lift和dst的值,然后在主程序中不斷對lift和dst之間的大小進行判斷,根據(jù)兩者之間的大小關(guān)系,調(diào)用不同的子程序來實現(xiàn)電梯系統(tǒng)的正常運轉(zhuǎn)。主程序開始時先對單片機以及程序中的一些變量進行初始化,考慮到電梯可能啟動時不在一樓,于是判斷電梯是否在一層,如果不是那么就把dst置為1,然后進入電梯運行程序的循環(huán),首先顯示出電梯所在樓層以及電梯的狀態(tài),這時需要對按鍵的情況進行掃描,由于按鍵數(shù)量多于單片機所提供的外部中斷,因此只能采取查詢的方式來確定按鍵的狀態(tài),按鍵采用的是獨立按鍵,需要對每一個按鍵做出相應(yīng)操作,如果是樓層請求的按鈕按下那么就需要對保存請求的數(shù)組進行操作如果是開門或者關(guān)門的按鍵按下,則需要根據(jù)電梯運行的狀態(tài)來決定是否執(zhí)行相應(yīng)的開關(guān)門操作。在查詢完按鍵狀態(tài)之后,根據(jù)請求數(shù)組確定目標(biāo)樓層,確定目標(biāo)樓層會遇到兩種情況,一種是電梯上行,從四樓向所在樓層檢測樓層請求,靠近所在樓層的優(yōu)先,另一種是電梯下行,從一樓向所在樓層檢測樓層請求,同樣是靠近所在樓層的優(yōu)先,這樣可以達到優(yōu)先的效果,上行請求,下行請求以及轎廂內(nèi)請求樓層請求數(shù)組中用不同的數(shù)字標(biāo)記,電梯在上行過程中忽略下行請求,下行過程中忽略上行請求,在確定了目標(biāo)樓層之后,再根據(jù)所在樓層和目標(biāo)樓層之間的大小關(guān)系,判斷向上運行還是向下運行,電梯到達目標(biāo)樓層之后執(zhí)行開門,關(guān)門等操作。然后程序回到按鍵檢測階段繼續(xù)執(zhí)行。第二章系統(tǒng)方案設(shè)計和部分硬件介紹2.1系統(tǒng)方案設(shè)計設(shè)計一個模擬控制電梯運行的系統(tǒng)。本設(shè)計是一個電梯控制模擬系統(tǒng),設(shè)計該系統(tǒng)所使用的芯片是STC89C51,目的是讓乘客通過按鍵控制電梯的升降并模擬電梯的運行狀態(tài)。在控制程序中,讓不同的按鍵匹配與之相對應(yīng)的功能,使得CPU在按鍵后做出相應(yīng)的反應(yīng),以實現(xiàn)相應(yīng)的功能,也就是說,LED燈、數(shù)碼管、蜂鳴器等外設(shè)會根據(jù)電梯的不同狀態(tài)做出不同的反應(yīng)。最后,程序應(yīng)與與電路板的實際連接相結(jié)合。使實驗?zāi)軌蛲暾倪M行。從設(shè)計給出的要求出發(fā),要實現(xiàn)該系統(tǒng)可以將該系統(tǒng)分成若干小模塊來實現(xiàn),第一個模塊是以STC89C51為主體的控制子模塊,顧名思義,控制整個系統(tǒng)使使每個模塊能夠正常運作是這個模塊的主要職責(zé);第二個模塊是發(fā)光二極管和數(shù)碼管顯示模塊,負責(zé)顯示電梯狀態(tài);第三,按鍵模塊,這是實現(xiàn)控制系統(tǒng)與人之間交互的窗口;第四是電機模塊,電梯的上行下行由電機的正轉(zhuǎn)和反轉(zhuǎn)來決定。本設(shè)計的結(jié)構(gòu)框圖大致如下:2.2.1STC89C51單片機微型計算機(Microcomputer)的出現(xiàn)是電子數(shù)字計算機廣泛應(yīng)用到人們?nèi)粘I钆c工作領(lǐng)域當(dāng)中的重大轉(zhuǎn)折點。它已經(jīng)深入到非微型計算機無法應(yīng)用的領(lǐng)域,對社會產(chǎn)生了極大的影響。單片機是微型計算機的一個重要的分支,它以其獨特的機構(gòu)和功能,越來越普遍地應(yīng)用到了各個領(lǐng)域當(dāng)中。以下是STC89C51單片機的特點及其應(yīng)用。(1)單片機的特點a抗干擾能力強,工作溫度范圍寬。b高的可靠性。c控制功能強,數(shù)值計算能力相對較差。d指令系統(tǒng)比通用微機的指令系統(tǒng)簡單具有許多面向控制的指令。e具有很高的性價比。(2)單片機的應(yīng)用領(lǐng)域a工業(yè)控制領(lǐng)域b家用電器領(lǐng)域c辦公自動化領(lǐng)域d商業(yè)營銷領(lǐng)域e智能儀器儀表領(lǐng)域f其它領(lǐng)域;另外,在汽車與航空航天器電子系統(tǒng)中的自動駕駛系統(tǒng)、通信系統(tǒng)、飛行監(jiān)視器(黑匣子)等,都采用了單片機控制系統(tǒng)(張毅坤.單片機微型計算機原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社)。單片機內(nèi)部包含中央處理器、數(shù)據(jù)存儲器、程序存儲器、定時器/計數(shù)器以及各種I/O接口。單片機內(nèi)部結(jié)構(gòu)可以參考下圖。(1)中央處理器部分該單元的主要組成部分是中央處理器,這其中包括控制器、指示寄存器、運算器和程序計數(shù)器等部件。①控制器控制部件由時鐘電路組成。為單片機提供正常運作的時鐘信號的是其內(nèi)部的一個反向放大器構(gòu)成的震蕩電路。②指令寄存器指令寄存器主要用來暫存指令代碼,CPU要執(zhí)行某一操作是,需要先將程序儲存器中的指令代碼暫存于指令寄存器中,然后才能將相應(yīng)的代碼譯成控制信號進而完成相應(yīng)的進程。③運算器運算器的主要功能是:邏輯運算和算術(shù)運算。能對二進制數(shù)據(jù)進行邏輯算術(shù)運算,而邏輯運算可以通過按位處理來實現(xiàn)。復(fù)位、置位、取反、轉(zhuǎn)移等操作可通過標(biāo)志位C進行。④程序計數(shù)器程序計數(shù)器長度為16位,可訪問64KB程序儲存器,是實現(xiàn)中斷必不可少的工具,它能夠保存即將執(zhí)行的程序的地址,將它壓入堆棧,再賦予它中斷程序入口地址,便可實現(xiàn)中斷,中斷服務(wù)完成后,出棧可繼續(xù)執(zhí)行中斷之前所執(zhí)行的程序。(胡漢才.單片機原理及接口技術(shù)[M].北京:高等教育出版社)(2)存儲器MCS-51單片機存儲器的結(jié)構(gòu)和通用計算機的配置方式各不相同,程序存儲器和數(shù)據(jù)存儲器彼此獨立,物理結(jié)構(gòu)也各不相同。隨機存儲器構(gòu)成數(shù)據(jù)存儲器,只讀存儲器構(gòu)成程序存儲器。但單片機存儲器的編址方式是統(tǒng)一設(shè)計的。①程序存儲器單片機的程序存儲器可分為三類:只讀存儲器、電可編程紫外線可擦除只讀存儲器、閃速存儲器。程序代碼存放于程序存儲器中,這是控制計算機運作的一系列指令,而機器只知道“0”和“1”代碼組成的機器指令。如上文所述,MOVA,#20H命令有一個助記符號,需要將它轉(zhuǎn)換成單片機能夠識別的74H和20H,也就是二進制的01110100B和00100000B。在單片機處理之前,應(yīng)將程序、表格和常數(shù)匯編成為機器代碼,并將其儲存在單片機存儲器中,這個存儲器就叫做程序存儲器。②數(shù)據(jù)存儲器單片機的數(shù)據(jù)存儲器分為兩個部分:一個是內(nèi)部數(shù)據(jù)存儲器,需要用MOV指令進行訪問;另一個是外部數(shù)據(jù)存儲器,需要用MOVX指令來訪問。STC89C51單片機內(nèi)部的數(shù)據(jù)存儲器容量為128B,外部擴展能力為64KB。(胡漢才.單片機原理及接口技術(shù)[M].北京:高等教育出版社)(3)I/O接口單片機有四組I/O接口,分別是P0、P1、P2、P3。每組接口都有八位雙向接口,且每個接口都可以單獨地用作輸入或者輸出口。①P0口P0口有兩種功能:普通I/O口功能和地址數(shù)據(jù)復(fù)用接口功能。當(dāng)作為地址/數(shù)據(jù)復(fù)用接口時,低8位地址和數(shù)據(jù)分時復(fù)用P0口。②P1口P1口用作普通的I/O口,可以用作輸出口也可以用作輸入口。③P2口P2口可以作為輸入或者輸出端口,常與地址總線高8位相接,輸出高8位地址。④P3口P3口為雙功能口。當(dāng)用作第一功能時,與P1口功能相同;當(dāng)用作第二功能時,每一位都有其特殊功能。具體功能如下表

(4)單片機的中斷系統(tǒng)中斷系統(tǒng)是單片機系統(tǒng)中的一個非常重要的組成部分,其設(shè)計的初衷是為了能夠及時的處理隨機發(fā)生的外部或內(nèi)部事件。中斷系統(tǒng)大大提高了操作單片機系統(tǒng)的實時處理能力,中斷而由此成為單片機最重要的功能之一。在發(fā)生外部或內(nèi)部事件時,如果CPU正在執(zhí)行某些操作,那么就需要CPU暫停正在執(zhí)行的操作,改而執(zhí)行這個內(nèi)部或外部的緊急事件,待執(zhí)行完這個緊急事件之后,再返回到之前所執(zhí)行的操作,繼續(xù)將未完成的操作完成,這樣的過程就叫做中斷。向CPU申請中斷的事件被稱為中斷源。在微型計算機中往往存在不止一個中斷源,如果多個中斷源同時向CPU提出中斷請求,如果這些請求之間沒有優(yōu)先級,那么CPU將不知道應(yīng)先對哪個中斷源作出反應(yīng)。為此,人們確定了各中斷請求之間的優(yōu)先級。當(dāng)多個中斷源同時向CPU提出中斷請求時,CPU按照一定的順序?qū)χ袛嗾埱筮M行響應(yīng)。在多個請求同時發(fā)生的情況下,CPU將先處理優(yōu)先級較高的中斷請求,然后處理優(yōu)先級較低的中斷請求(李金利.單片機原理及應(yīng)用技術(shù)[M].北京:高等教育出版社,2004)。下圖是STC89C51的中斷系統(tǒng)。如果出現(xiàn)了更高優(yōu)先級的中斷請求,而CPU正在處理相對較低級的中斷請求,CPU將暫停當(dāng)前的中斷服務(wù),改而執(zhí)行更高優(yōu)先級的中斷。當(dāng)對高優(yōu)先級的中斷響應(yīng)結(jié)束時,再回過頭來執(zhí)行之前被打斷的中斷服務(wù)。這種高優(yōu)先級中斷能夠在低優(yōu)先級中斷響應(yīng)過程中被CPU響應(yīng)的現(xiàn)象,被稱為稱為中斷嵌套。(李金利.單片機原理及應(yīng)用技術(shù)[M].北京:高等教育出版社,2004)STC89C51單片機有五個中斷源,提供兩種中斷優(yōu)先級。每一個中斷源的優(yōu)先級都可以在編程時自行設(shè)定。單片機內(nèi)部的中斷優(yōu)先級寄存器可以控制各個中斷源的優(yōu)先級順序,在相同優(yōu)先級的情況下,單片機對各中斷源的響應(yīng)順序為:外部中斷0、定時器中斷0、外部中斷1、定時器中斷1、串行中斷。單片機內(nèi)部的中斷允許寄存器用于控制單片機是否對來自各中斷源的中斷請求的進行響應(yīng)。TCON控制寄存器是用來控制定時器/計數(shù)器0和1的專用寄存器,可以控制定時器/計數(shù)器啟動或停止,以及外部中斷的觸發(fā)方式,同時也可以暫存外部中斷請求標(biāo)志以及T0或者T1的溢出中斷申請標(biāo)志。TCON寄存器共8位,每位定義如圖。2.2.27段顯示數(shù)碼管數(shù)碼管是一種半導(dǎo)體發(fā)光器件,可分為七段數(shù)碼管和八段數(shù)碼管兩種,它們的基本單元都是發(fā)光二極管,二者的區(qū)別就在于八段數(shù)碼管比七段數(shù)碼管多了一個發(fā)光二極管。本設(shè)計采用的是七段數(shù)碼管。八段數(shù)碼管由八個發(fā)光二極管組成,除了與七段數(shù)碼管相同的七個細長二極管之外,還有一個圓點型的二極管,用來顯示小數(shù)點。數(shù)碼管的每一個發(fā)光二極管都可以單獨被點亮或者熄滅,因此在編程的過程中可以讓其顯示出任意字符,盡管存在某些字符形狀的扭曲,可顯示的出來的字符也比較有限,但畢竟數(shù)碼管的二極管數(shù)量有限,能夠簡單便捷的顯示出數(shù)字符號也已經(jīng)夠用了。數(shù)碼管內(nèi)部有兩種連接方式,一種是將發(fā)光二極管的陽極連在一起,這樣連接的數(shù)碼管稱之為共陽極數(shù)碼管,另一種是將發(fā)光二極管的陰極接在一起,成為共陰極數(shù)碼管,如圖所示。正常工作狀態(tài)下,流過數(shù)碼管的電流應(yīng)該在5~10mA之間,這一點和發(fā)光二極管發(fā)光二極管是一樣的;不同的發(fā)光材料使得數(shù)碼管的正向電壓也不相同,一般在1.8~2.5V之間。數(shù)碼管的顯示方式有兩種,分別是動態(tài)顯示和靜態(tài)顯示。(1)所謂的靜態(tài)顯示,即在顯示某一個特定字符時,相應(yīng)段的發(fā)光二極管恒定地尋能可截止。這就意味著沒個數(shù)碼管都需要占用單片機的七個或者八個引腳。不過51單片機可以在并行口上拓展多片鎖存74LS573作為接口。穩(wěn)定是靜態(tài)顯示器的優(yōu)點,和動態(tài)顯示相比,靜態(tài)顯示的亮度要更高,CPU只需要在顯示內(nèi)容需要更新的時候執(zhí)行一次更新子程序就可以了,從而大大節(jié)省了CPU的時間,提高了CPU的工作效率;不足之處是,在數(shù)目較多的情況下,需要大量I/O口,硬件開銷太大,為此人們研究出來另一種顯示方式——動態(tài)顯示。(2)動態(tài)顯示其實是一位一位的輪流點亮每一個數(shù)碼管,故同一時間內(nèi),其實只有一位數(shù)碼管在工作,但是,在刷新率比較高的情況下,也就是系統(tǒng)輪流點亮數(shù)碼管的速度很快的情況下,在人眼視覺暫留效應(yīng)以及二極管熄滅時的余輝效應(yīng)作用下,我們最終看到的效果將會是所有數(shù)碼管同時在顯示。在這種顯示方式下,數(shù)碼管的亮度與通過數(shù)碼管的電流以及點亮?xí)r間和間隔時間的比值有關(guān)。在較大電流和較小時間間隔的情況下,可實現(xiàn)亮度較高較穩(wěn)定的顯示。要使用動態(tài)顯示則需要用一個8位I/O口來控制數(shù)碼管的每一段,此外還需要另外的引腳或I/O口控制每個數(shù)碼管的導(dǎo)通或截止。在需要使用多個數(shù)碼管的情況下,動態(tài)顯示可以節(jié)省硬件資源,但卻增加了控制系統(tǒng)編程的難度,為了讓多個數(shù)碼管能夠以動態(tài)顯示的方式正常工作,用于顯示的子程序必須頻繁的被CPU調(diào)用,這將會占用CPU大量的時間,也因此影響了CPU的工作效率,同時,數(shù)碼管顯示出的字符亮度也會降低。從以上的敘述來看,動態(tài)顯示和靜態(tài)顯示各有各的優(yōu)點,但是靜態(tài)顯示對于本設(shè)計來說已經(jīng)足夠。設(shè)計中選用的數(shù)碼管是共陽極數(shù)碼管。第三章硬件電路簡介3.1時鐘電路時鐘電路即在單片機外部連接晶振,用以提供高頻脈沖,經(jīng)過分頻處理后成為單片機內(nèi)部時鐘信號,作為片內(nèi)各部件協(xié)調(diào)工作的控制信號。作用是來配合外部晶體實現(xiàn)振蕩,為單片機提供運行時鐘。電路圖如下。3.2復(fù)位電路要使單片機復(fù)位,就必須在單片機的RST腳上給一個持續(xù)兩個機器周期以上的高電平,本設(shè)計的復(fù)位電路采用的是按鍵開關(guān)。具體電路圖如下。3.3按鍵模塊通過按鍵使單片機的引腳發(fā)生電平變化,再通過編程是的單片機對不同的按鍵做出不同的反應(yīng),包括點亮數(shù)碼管,保存樓層請求,開門關(guān)門等操作。電路連接如圖。3.4顯示模塊主要是對電梯狀態(tài)的顯示,包括電梯上行還是下行,電梯所在樓層以及電梯門的狀態(tài)。其中,電梯所在樓層使用的是七段共陽極數(shù)碼管,若電梯上行,則標(biāo)記為UP的LED燈會被點亮,當(dāng)電梯下行時,單片機則會點亮標(biāo)記為DOWN的LED燈,電梯門關(guān)閉時,LED燈DOOR熄滅,反之,LED燈DOOR點亮。具體電路如圖。第四章控制程序設(shè)計本設(shè)計在編寫程序的過程中使用的是C語言,它編程和調(diào)試都相對簡單,是一種不論在國內(nèi)還是在國外都被廣泛使用的計算機語言。用C語言編寫的程序結(jié)構(gòu)層次清晰,便于模塊化,還有較強的移植性。C語言具有優(yōu)異的處理能力和表現(xiàn)能力,它有著眾多運算符和數(shù)據(jù)類型,能夠方便的實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。此外由于C語言集合了高級語言和低級語言,因此他可以實現(xiàn)對硬件的操作,既可以用于系統(tǒng)軟件開發(fā)也可用于應(yīng)用軟件開發(fā)。C語言具有高效性和可移植性。使用C語言來編寫程序能夠很大程度上縮短程序開發(fā)周期;而且,寫出的程序可讀性強,易于改進和擴充,能生成的質(zhì)量較高的目標(biāo)代碼,程序執(zhí)行的效率也高一些。C語言能夠適用于多種操作系統(tǒng),因此它的應(yīng)用更加靈活,這時它的一個突出特點。本設(shè)計編寫的C語言主程序流程框圖如下:整個程序分為許多子程序,包括初始化子程序、延時子程序、按鍵檢測子程序、目標(biāo)樓層判斷子程序、上行及下行子程序、延時掃描子程序、關(guān)門子程序、顯示子程序、電梯到達子程序以及中斷服務(wù)程序。以下是對這些子程序的簡單說明。4.1初始化程序該子程序主要用來做單片機開始運行時需要做的一些初始化,代碼如下。voidinterruptinit(){ P0=0xff; P1=0xff; P2=0xff; P3=0xff; EA=1;//總中斷允許 ET1=1;//定時器1中斷允許 TMOD=0x10;//GATE=0,c/t=0,方式01 TH1=(65536-3000)/256;//裝定時器初值 TL1=(65536-3000)%256;}4.2延時子程序該程序單純用來做延時用,代碼如下。voidDelay_ms(unsignedintTime){ unsignedinti=0,j=0; for(i=0;i<Time;++i) { for(j=0;j<125;++j); }}4.3按鍵檢測子程序這個子程序用于檢測按鍵狀態(tài),保存樓層請求,開關(guān)門程序都需要用到這個子程序,代碼如下。charKBScan(){ if(P0!=0xff||P2_0==0||P2_1==0||P2_2==0||P2_3==0||P2_4==0) {//判斷是否有按鍵按下 Delay_ms(2);//軟件防抖 if(P0!=0xff||P2_0==0||P2_1==0||P2_2==0||P2_3==0||P2_4==0) {//判斷是否有按鍵按下 if(P0_0==0){request[0]=1;return1;}//一樓內(nèi) if(P0_1==0){request[0]=3;return2;}//一樓外 if(P0_2==0){request[1]=1;return3;}//二樓內(nèi) if(P0_3==0){request[1]=2;return4;}//二樓外上 if(P0_4==0){request[1]=3;return5;}//二樓外下 if(P0_5==0){request[2]=1;return6;}//三樓內(nèi) if(P0_6==0){request[2]=2;return7;}//三樓外上 if(P0_7==0){request[2]=3;return8;}//三樓外下 if(P2_0==0){request[3]=1;return9;}//四樓內(nèi) if(P2_1==0){request[3]=2;return10;}//四樓外 if(P2_2==0){if(status==0){P3_2=0;flag=0;return11;}}//開門鍵按下,只有在status為零即電梯停止,的時候才可以開門 if(P2_3==0){if(status==0){P3_2=1;flag=0;return12;}} //關(guān)門鍵按下,同上,flag是報警次數(shù)的標(biāo)志位,每次開關(guān)門都應(yīng)該被重置 if(P2_4==0){if(status==0){P3_2=0;flag=0;return13;}} //當(dāng)紅外感應(yīng)到有人進入則應(yīng)立即開門 } } return0;}4.4目標(biāo)樓層判斷子程序該程序用來確定電梯要到達的樓層,電梯運行過程中順向截車,逆向不截車的功能由此程序?qū)崿F(xiàn),代碼如下。voidDestination(){ unsignedchari; KBScan();//掃描按鍵 if(status==1)//如果電梯向上走 { for(i=4;i>=lift;--i) {//從四樓的請求標(biāo)志開始判斷,以實現(xiàn)優(yōu)先級 if(request[i-1]==1||request[i-1]==2) {//上行則不考慮下行請求(下行請求為3) dst=i;//則將目的樓層設(shè)為該樓 } } } elseif(status==2)//若電梯向下走 { for(i=1;i<=lift;++i) {//從一樓的請求標(biāo)志開始判斷,以實現(xiàn)優(yōu)先級 if(request[i-1]==1||request[i-1]==3) {//下行則不考慮上行請求(上行請求為2) dst=i;//則將目的樓層設(shè)為該樓 } } } if(lift==1&&request[0]==3) {// dst=1; request[0]=0;//電梯就在一層,轎廂外請求一層,直接到達,清零請求 } if(lift==4&&request[3]==2) { dst=4; request[3]=0;//電梯就在三層,轎廂外請求三層,直接到達,清零請求 }}4.5上行及下行子程序用于模擬電梯上行或下行,通過紅外感應(yīng)確定電梯是否到達,代碼如下。voidUp(){ status=1; while(P2_4) { //電機正轉(zhuǎn) KBScan(); } lift++;}voidDown(){ status=2; while(P2_4) { //電機反轉(zhuǎn) KBScan(); } lift--;}4.6延時掃描子程序該子程序可以實現(xiàn)邊延時邊掃描的功能,主要用于關(guān)門程序中,代碼如下。charscan(unsignedintTime){ unsignedinti=0,j=0;1 for(i=0;i<Time;++i) { for(j=0;j<125;++j) { if(KBScan()>10) return0; } } return1;}4.7關(guān)門子程序用于實現(xiàn)設(shè)計要求:開門要延時三秒,蜂鳴器報警三次,然后在關(guān)門,并且在此期間可以人工通過按鍵實現(xiàn)開門或關(guān)門,代碼如下。chardoor(){ if(P3_2==0) { if(scan(300)) { while(1) { P2_7=0;//蜂鳴器響 if(scan(100)==0) { P2_7=1; return1; } P2_7=1; flag++; if(flag==3) { flag=0; P3_2=1;//關(guān)門 return0; } } } return1; } return0;}4.8顯示子程序用于顯示電梯的當(dāng)前狀態(tài),代碼如下。voidDisplay(chara,charb)//a是樓層顯示,b是上下行顯示{ if(b==1) P2_5=0;//上行標(biāo)志 if(b==2) P2_6=0;//下行標(biāo)志 switch(a) { case1:{P1=0xf9;break;} case2:{P1=0xa4;break;} case3:{P1=0xb0;break;} case4:{P1=0x99;break;} default:{break;} }}4.9電梯到達子程序電梯到達目標(biāo)樓層需要執(zhí)行一系列操作,清除該樓層請求,開門關(guān)門等,具體代碼如下。voidReach(){ if(status==1)//上行請求清零 { if(request[dst-1]==2||request[dst-1]==1) { request[dst-1]=0; } } if(status==2)//下行請求清零 { if(request[dst-1]==3||request[dst-1]==1) { request[dst-1]=0; } } status=0; dst=0; P2_7=0;//蜂鳴 Display(lift,status); Delay_ms(5); P2_7=1;//關(guān)蜂鳴 P3_2=0;//開門 while(door()); P3_2=1;//確保已關(guān)門 TR1=1;}4.10中斷服務(wù)程序主要用于實現(xiàn)電梯停止運行一段時間后返回第一層的功能,代碼如下。voidtimer1()interrupt3{ TH1=(65536-3000)/256; TL1=(65536-3000)%256;//重裝初值 if(lift!=1&&status==0) dst=1;}4.11主程序由于程序需要不斷的執(zhí)行,主程序采用了死循環(huán)的方式,通過對各種情況的判斷,執(zhí)行相應(yīng)的函數(shù),具體代碼如下。voidmain(){ interruptinit(); if(lift!=1) request[0]=1; while(1)//電梯程序的循環(huán) { Display(lift,status); Destination();//查詢有無樓層請求到達 if(dst)//如果dst為0,說明沒有按鍵,所有請求都是0,電梯應(yīng)該停下來 { if(dst>lift)//請求的樓層比要到達的樓層高 { Up();//電梯向上走 } elseif(dst<lift) { Down();//否則電梯向下走 } elseif(dst==lift) { Reach();//到達 } } }}第五章系統(tǒng)調(diào)試5.1軟件調(diào)試Proteus軟件是由英國Labcentereleconics公司制作的一個EDA軟件,它有著和其他EDA軟件一樣的仿真功能,更重要的是它能夠仿真單片機及其外圍器件。這是目前做單片機及其外圍器件仿真的最好軟件工具。

溫馨提示

  • 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

提交評論