四層樓電梯自動控制系統(tǒng)的設計[含CAD高清圖紙和說明書]
【溫馨提示】 dwg后綴的文件為CAD圖,可編輯,無水印,高清圖,壓縮包內(nèi)文檔可直接點開預覽,需要原稿請自助充值下載,請見壓縮包內(nèi)的文件及預覽,所見才能所得,請細心查看有疑問可以咨詢QQ:414951605或1304139763
無錫職業(yè)技術(shù)學院畢業(yè)設計說明書畢業(yè)設計說明書目錄第一章 引言 2第二章 設計要求 2第三章 設計方案 3第四章 硬件設計 54.1 單片機 54.2 各樓層電梯間電路 9 4.3 電梯間電路 12 4.4 控制臺電路 13 4.5 單片機電路 16 4.6 電路PCB圖 17第五章 軟件設計 19 5.1 簡易控制方案 19 5.2 進一步控制方案 22 5.2.1 控制邏輯流程圖 22 5.2.2 說明 25 5.2.3 參考程序 26第六章 軟硬件系統(tǒng)的調(diào)試 31 6.1 軟件調(diào)試 31 6.2 硬件調(diào)試 32第七章 結(jié)束語 33畢業(yè)設計總結(jié) 34參考文獻 36電梯控制系統(tǒng)模型摘 要:本論文主要介紹的是電梯自動控制模型,硬件部分我們使用的是單片機及外圍電路組成高度為四層樓的電梯控制系統(tǒng)。單片機采用AT89C51,晶體振蕩器選6MHz,C51、C52為30uF瓷片電容與晶體振蕩器形成時鐘電路。電容C53、電阻R51、R52和按鍵RESET構(gòu)成上電復位和手動復位電路。軟件部分采用了兩種控制方案,簡易控制方案只是簡單的電梯上升下降,在各樓層短暫停留。而進一步控制方案則考慮各樓層的信號請求,以完成各樓層的升降控制。該系統(tǒng)具有工作穩(wěn)定,操作簡單等優(yōu)點。關(guān)鍵詞:電梯, AT89C51單片機,共陰極數(shù)碼管,CD4511譯碼器,發(fā)光二極管第一章 引言據(jù)國外有關(guān)資料介紹,公元前2800年在古代埃及,為了建筑當時的金字塔,曾使用過由人力驅(qū)動的升降機械。公元1765年瓦特發(fā)明了蒸汽機之后,1858年美國研制出以蒸汽為動力,并通過皮帶轉(zhuǎn)動和蝸輪減速裝置驅(qū)動的電梯。1878年英國的阿姆斯特郎發(fā)明了水壓梯。并隨著水壓梯的發(fā)展,淘汰了蒸汽梯。后來又出現(xiàn)了采用液壓泵和控制閥以及直接柱塞式和側(cè)柱塞式結(jié)構(gòu)的液壓梯,這種掖壓梯至今仍為人們所采用。但是,電梯得以興盛發(fā)展的原因在于采用了電力作為動力來源.。在20世紀初,美國奧梯斯電梯公司首先使用直流電動機作為動力,生產(chǎn)出以槽輪式驅(qū)動的直流電梯,從而為今天的高速度,高行程電梯的發(fā)展奠定了基礎。20世紀30年代美國紐約市的102層摩天大樓建成,美國奧梯斯電梯公司為這座大樓制造和安裝了74臺速度為6.0MS的電梯。 從此以后,電梯這個產(chǎn)品,一直在日新月異的發(fā)展著.目前電梯產(chǎn)品,不但規(guī)格品種多,自動化強,而且安全可靠,乘坐舒服.近幾年來,隨著電子工業(yè)的發(fā)展,微處理機和電子計算機已成功的應用到電梯的電氣控制系統(tǒng)中去,采用無觸點元件的電梯電氣控制系統(tǒng)已開始批量生產(chǎn)。第二章 設計要求采用AT89C51單片機及外圍電路組成高度為四層樓的電梯控制系統(tǒng)。電梯內(nèi)電路由FS1、FS2、FS3和FS4四個發(fā)光二極管作為指示燈,電梯模型上電后,電梯的起始位置為一樓,等待控制臺Start按鍵按下,數(shù)碼管顯示“1”。當Start按鍵按下后,電梯開始向上運動,控制臺的上升指示燈UP亮。2s后到達二樓,數(shù)碼管顯示“2”并在二樓停留5s,然后繼續(xù)上升。每層樓停留5s,直到四樓。在四樓停留5s后開始下降,控制臺的指示燈DOWN亮。每層樓停5s,直到一樓。然后重復上述過程。如果在一個上下循環(huán)中按下過Stop鍵,電梯下降到一樓后停止工作。直到再次按下Start鍵后重新恢復工作第三章 設計方案電梯控制系統(tǒng)由各層樓的電梯間電路、電梯內(nèi)電路和控制臺電路三部分組成。電梯在各樓層的定位本應采用行程開關(guān),考慮到模型的操作性,采用延時控制。相鄰樓層間升降設定為2S。1)各樓層的電梯間電路二、三層的電路間均有“上升”和“下降”選擇按鍵,一樓只有“上升”按鍵,四樓只有“下降”按鍵,每個按鍵配一只發(fā)光二極管,作為指示燈。2)電梯內(nèi)部電路目標樓層14選擇按鍵配又相應的指示燈。3)控制臺電路(1)兩個按鍵用于手動控制??刂齐娐返摹伴_始運行”和“停止運行”(2)兩個指示燈,分別指示電梯的升降情況。(3)一只數(shù)碼管,用于顯示電梯當前所在的樓層。4)控制方案(1)簡單控制方案(見圖1)工作原理:控制臺按下START鍵后,通過AT89C51單片機的控制使得電梯運行,該系統(tǒng)中電梯運行時不受各樓層的控制和影響往復運動,只有在控制臺按下STOP鍵后,電梯降到一樓停止,等待控制臺再次啟動。該系統(tǒng)使用數(shù)碼管顯示當前樓層。 圖1 (2)進一步控制方案(見圖2)工作原理:工作臺啟動電梯,單片機檢測各樓層信號請求控制電梯運動,電梯動作完成后數(shù)碼管顯示所在樓層,同時單片機再次檢測各樓層請求信號,使的電梯再次動作,直到控制臺停止電梯,電梯降到一樓后停止,等待控制臺再次啟動電梯。 圖2 第四章 硬件設計4.1 單片機采用AT89C51單片機及外圍電路組成高度為四層樓的電梯控制系統(tǒng)。AT89c51是一種低功耗高性能的8位單片機,片內(nèi)帶有一個4k字節(jié)的flash可編擦除只讀存儲器(perom),它采用了cmos工藝和atmel公司的高密度非易失性存儲器(nuram)技術(shù),而且其輸出引腳和指令系統(tǒng)和mcu_51系列單片機兼容。片內(nèi)的flash存儲器允許在系統(tǒng)內(nèi)可改編程序或用常規(guī)的非易失性的存儲器編程器來編程。同時已具有三級程序存儲器保密的性能。在眾多的51系列單片機中,要算atmei公司的at89c51更實用,因為它不僅和mcu_51系列單片機指令、管腳完全兼容,而且其片內(nèi)的4k程序存儲器是flash工藝的,這種下藝的存儲器用戶可以用電的方式瞬間擦除、改寫。所以說這種單片機對開發(fā)設備的要求很低,開發(fā)時間也大大縮短。寫入單片機的程序還可以加密,這又很好地保護了所有者的勞動成果。管腳說明 VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。單片機的基本組成如圖3所示振蕩器和時鐘電路程序儲存器(4KB)數(shù)據(jù)儲存器(128字節(jié))兩個16位定時器計數(shù)器中斷控制內(nèi)部中斷總線擴展控制器并行可編程I/O口可編程串行口外部中斷擴展控制P0 P1 P2 P3RXD TXD外時鐘源外部事件計數(shù)AT89C51單片機的基本組成 圖3 下面簡要說明各部分組成1、 中央處理器單片機的中央處理器是單片機的核心,完成運算和控制操作,中央處理器主要包括運算器和控制器兩部分。2、 存儲器單片機內(nèi)部的存儲器分為程序存儲器和數(shù)據(jù)存儲器。3、外圍接口電路CPU與外部設備的信息交換都是通過接口電路來進行。AT89C51單片機的外圍接口電路主要包括:4個可編程并行I/O口,1個可編程串行口,2個16位的可編程定時器以及中斷系統(tǒng)等。4、時鐘振蕩電路時鐘振蕩電路是CPU所需要的各種定時控制信號的必備單元。CPU只有在時序信號和控制信號的協(xié)調(diào)下工作,才能執(zhí)行各種指令。4.2各樓層電梯間電路如圖4所示,R52、R55、R56、R59、R60和R62是上拉電阻,其作用是保證按鍵未按下時,端口P1.0P1.5為高電平。當按鍵按下時,端口P1.0P1.5通過按鍵接地,使得P1.0P1.5變?yōu)榈碗娖?。電容C51C56的作用是消除抖動和抗干擾。各樓層電梯間的升降選擇按鍵均于單片機P1口連接,上升按鍵的P1.0P1.2連接。下降按鍵與P1口的P1.3P1.5連接,即由P1口可以讀出電梯間升、降按鍵的狀態(tài)。每個上升、下降按鍵均有一只發(fā)光二極管作為指示燈與之配合,發(fā)光二極管與P0口的P0.0P0.5連接。每個發(fā)光二極管通過一只阻值為470的限流電阻接電源(Vcc),這樣流經(jīng)發(fā)光二極管的電流均為7.5mA,有適當?shù)牧炼龋瑫r單片機的端口在不加驅(qū)動的情況下可以承受。一層二層三層四層圖4 電梯間電路4.3電梯內(nèi)電路 電梯內(nèi)電路如圖5所示,四個目標樓層選擇按鍵F1、F2、F3、F4和四個與之配合的發(fā)光二極管作為指示燈,即FS1、FS2、FS3和FS4。按鍵與P3口的P3.0P3.3連接,指示燈與P2口的P2.0P2.3相連。上拉電阻R11R14和電容C11C14的作用同上。 圖5 電梯內(nèi)電路4.4控制臺電路控制臺電路如圖6所示。發(fā)光二極管Power是電源指示燈,用以顯示供電是否正常。DISP是0.5in(英寸)共陰極數(shù)碼管,用來顯示當前樓層。采用CD4511作譯碼器,經(jīng)R31R37(阻值為470)對數(shù)碼管限流。UP、DOWN兩只發(fā)光管用來顯示電梯運行的方向。CD4511是BCD-鎖存/七段譯碼/驅(qū)動器:有燈測試功能;以反相器作輸出級,用以驅(qū)動LED或數(shù)碼管;具有消隱輸入;顯示數(shù)6時,a=0,顯示9時,d=0。1-B,2-C,3-LT(為燈測試輸入端),4-BI(數(shù)據(jù)輸入端),5-LE(鎖存使能,鎖存輸入使能),6-D,7-A,8-VSS(電源負極)(A,B,C,D為門電路的輸入端)9-e,10-d,11-c,12-b,13-a,14-g,15-f, 16-vdd(電源正極)(a,b,c,d,e,f,g為譯碼輸出;顯示字符端輸出,連接數(shù)碼管的相應腳)CD4511功能表十進制或功能輸 入輸 出字型LED C B Aa b c d e f g0123456789000000000011111111110 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 111111111111 1 1 1 1 1 00 1 1 0 0 0 01 1 0 1 1 0 11 1 1 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 10 0 1 1 1 1 11 1 1 0 0 0 01 1 1 1 1 1 11 1 1 1 0 1 1消 隱鎖 定燈 測 試1110 010 0 0 0 0 0 0鎖定在上一個LE=0時1 1 1 1 1 1 1圖6 控制臺電路 4.5單片機電路單片機電路如圖7所示,單片機采用AT89C51,晶體振蕩器選6MHz,C51、C52為30uF瓷片電容與晶體振蕩器形成時鐘電路。電容C53、電阻R51、R52和按鍵RESET構(gòu)成上電復位和手動復位電路。外部接線圖見附圖1。圖7 單片機電路4.6、電路板PCB圖圖8所示電路板PCB圖的頂層和底層。圖8 電梯模型PCB圖(頂面)圖8 電梯模型PCB圖(底面)第五章 軟件設計5.1簡易控制方案(1)電梯模型上電后,電梯的起始位置為一樓,等待控制臺Start按鍵按下,數(shù)碼管顯示“1”。(2)當Start按鍵按下后,電梯開始向上運動,控制臺的上升指示燈UP亮。2s后到達二樓,數(shù)碼管顯示“2”并在二樓停留5s,然后繼續(xù)上升。每層樓停留5s,直到四樓。在四樓停留5s后開始下降,控制臺的指示燈DOWN亮。每層樓停5s,直到一樓。然后重復上述過程。(3)如果在一個上下循環(huán)中按下過Stop鍵,電梯下降到一樓后停止工作。直到再次按下Start鍵后重新恢復工作。(4)5s定時由定時器T0和R2一起完成。T0定時100ms,每100ms中斷一次。在中斷服務程序中將R2加1。當R2加到50時,中斷了50次,50100ms=5s,即完成5s定時。(5)定時器T1定時10ms。每10s中斷一次,在中斷服務程序中檢查一次Stop鍵是否按下,如果按下停止T1計時(TR1=0),并將R3置為非0(程序中間R3寫#0FFH)。電梯下降到一樓是檢查R3中的內(nèi)容,如果不是0就停止工作。(6)參考程序 ORG 0000H AJMP START ORG 000BH AJMP TIME ORG 001BH AJMP TIME1START:MOV TMOD,11H MOV IE,#8AH MOV TH0,#3CH ;定時 MOV TL0,#0B0H MOV TH1,0ECH ;定時 MOV TL1,#78H SETB TR0 SETB TR1 MOV SP,#6FHQ1: SETB P0.6 ;下降指示燈滅 SETB P0.7 ;上升指示燈滅 MOV R3, MOV P3,#1FH ;數(shù)碼管顯示 JB P1.7, ;等待開始工作指令 SETB P0.6Q2: CLR P0.7 ;上升指示燈亮 ACALL DLY ;上升 SETB P0.7 ;到達二層,上升指示燈滅 MOV P3,2FH ;數(shù)碼管顯示 MOV R2, ;定時開始 CJNZ R2,50, ;等待延時 CLR P0.7 ;到,繼續(xù)上升ACALL DLY ;上升SETB P0.7 ;到達三層,上升指示燈滅MOV P3,#3FH ;數(shù)碼管顯示MOV R2,#0 ;定時開始DJNZ R2,#50,$ ;等待延時CLR P0. ;到,繼續(xù)上升ACALL DLY ;上升SETB P0.7 ;到達四層,上升指示燈滅MOV P3,#4FH ;數(shù)碼管顯示4MOV R2,#0 ;定時開始DJNZ R2,#50,$ ;等待延時 CLR P0.6 ;到,開始下降,下降指示燈亮ACALL DLY ;下降SETB P0.6 ;達到三層,下降指示燈滅MOV P3,#3FH ;數(shù)碼管顯示 MOV R2, ;定時開始CJNZ R2,50, ;等待5延時 CLR P0.6 ;5到,繼續(xù)下降,下降指示燈亮ACALL DLY ;下降2SETB P0.6 ;達到二層,下降指示燈滅MOV P3,#2FH ;數(shù)碼管顯示 MOV R2, ;定時開始CJNZ R2,50, ;等待延時 CLR P0.6 ;到,開始下降,下降指示燈亮ACALL DLY ;下降SETB P0.6 ;達到一層,下降指示燈滅MOV P3,#1FH ;數(shù)碼管顯示1 MOV R2, ;定時開始CJNZ R2,50, ;等待延時CJNZ R3,#0,Q3 AJMP Q2 ;R3=0轉(zhuǎn)到Q2開始新的循環(huán) AJMP Q2 ;R30轉(zhuǎn)Q停止工作;定時器中斷服務程序:定時,為計數(shù)器TIME: MOV TH0,#3CH MOV TL0,#0B0H INC R2 RET1;定時器中斷服務程序;記錄Stop鍵是否曾經(jīng)按下過,R3作為標志TIME: JB P1.6,TIME11 MOV R3,#0FFH CLR TH1TIME11:RET1DLY: MOV R4,#200DLY1: MOV R5,#250 DJNZ R5,$ DJNZ R4,DLY1 RET END5.2進一步控制方案5.2.1控制邏輯流程圖如圖9和圖10所示。 開始 圖9 主程序流程N停留5S停留5s三、四 樓有請求?停留5s本樓層是請求目標?上升到達二樓二、三、四樓有請求?P1.7=0本樓層請求目標?上升到達三樓四樓有請求?開始到達四樓在一樓初始化一、二、三樓有請求下降到達三樓本樓層是否請求目標?停留5S一、二樓有請求?下降到達二樓本樓層是請求目標?停留5S一樓有請求?下降到達一樓停留5SR3=0?Y Y N Y N Y N Y N Y N 圖10定時器T1中斷程序流程開始讀取所有按鍵標志R3置非0數(shù)清除全部電梯間上升請求清除全部電梯間下降請求清除全部電梯內(nèi)目標樓層請求修改讀入的按鍵狀態(tài)使之只有電梯內(nèi)目標為一樓并關(guān)閉T1,不再讀取按鍵Stop按下?取得電梯間上升請求,并刷新指示燈取得電梯間下降請求,并刷新指示燈取得電梯內(nèi)目標樓層請求,并刷新指示燈 返回 5.2.2說明存儲單元分配20H電梯間上升請求;20H.01樓;20H.12樓;20H.23樓;20H.34樓。21H電梯下降請求:21H.01樓;21H.12樓;21H.23樓;21H.34樓。22H電梯內(nèi)目標樓層請求:22H.01樓;22H.12樓;22H.23樓;22H.34樓。20H22H:0=無請求;1=有請求。堆線棧底:70H單元。T1中斷服務程序中6EH單元包袱累加器A的內(nèi)容。30H、31H單元分別臨時存放P1、P3按鍵狀態(tài)。32H作為單元按鍵及指示燈處理的中間單元。R3作為Stop鍵曾經(jīng)下過的記錄。上電之后,系統(tǒng)一直等待,當Start鍵按下后開始工作。如果按下Stop鍵,強制電梯直接下降到一樓,然后電梯停止工作。直到再次按下Start鍵后重新恢復工作。中斷服務程序每10ms一次檢查所有按鍵狀態(tài),并記錄在相應存儲單元,同時控制相應指示燈。定時器T0定時100ms,R2作為5s定時的計數(shù)器。T0每中斷一次R2加1,當R2=50時,5s計時完成。5.2.3參考程序 ORG 0000H AJMP START ORG 0000BH AJMP TIME1START: MOV TMOD,#11H MOV IE,#8AH MOV TH0,3CH ;定時100ms MOV TL0,#0B0H MOV TH1,#0ECH ;定時10ms MOV TL1,#78H SETB TR0 MOV SP,#6FHS1: CLR P0.6 CLR P0.7 MOV R3,#0 MOV P3,#1F ;數(shù)碼管顯示“1” JB P1.7, ;等待開始工作指令 SETB P0.6 SETB TR1 ;啟動T1 ;10ms一次讀取按鍵UP1: MOV A,20H ;目前在一樓 ORL A,21H ;取得1樓請求情況 ORL A,22H ANL A,#0EH JZ UP1 ;無請求,則等待 CLR P0.7 ;上升指示燈亮 ACALL DLY ;上升2sUP2: MOV P3,#2FH ;到達2樓,數(shù)碼管顯示“2” JB 20H.1,UP21 ;是2樓電梯間的上升請求,轉(zhuǎn)UP21 JB 22H.1,U ;是電梯內(nèi)目標2樓請求,轉(zhuǎn)UP21 SJMP UP22UP21: CLR 20H.1 ;清2樓電梯間上升請求標志位 CLR 22H.1 ;清電梯內(nèi)目標2樓請求標志位 SETB P0.7 ;上升指示燈滅 MOV R2,#0 ;5s定時開始 CNJE R2,#50, ;等待5s延時UP22: MOV A,20H ORL A,21H ORL A,22H ANL A,#0CH ;取得2樓請求情況 JNZ UP23 AJMP DOWN22 ;2樓無請求,轉(zhuǎn)2樓下降UP23:CLR P0.7 ;上升指示燈亮 ACALL DLY ;上升2sUP3: MOV P3,#3FH ;到達3樓,數(shù)碼管顯示“3” JB 20H.2,UP31 ;是3樓電梯間的上升請求,轉(zhuǎn)UP31 JB 22H.2,UP31 ;是電梯內(nèi)目標樓請求,轉(zhuǎn)UP31 SJMP R2,#50, UP31:CLR 20H.1 ;清3樓電梯間上升請求標志位 CLR 22H.1 ;清電梯內(nèi)目標3樓請求標志位 SETB P0.7 ;上升指示燈滅 MOV R2,#0 ;5s定時開始 CJNZ R2,#50, ;等待5s延時UP32:MOV A,20H ORL A,21H ORL A,22H ANL A,#O8H ;取得3樓請求情況 JNZ UP33 AJMP DOWN32 ;3樓無請求,轉(zhuǎn)3樓下降UP33:CLR P0.7 ;上升指示燈亮 ACALL DLY ;上升2sUP4: CLR 20H.3 ;清4樓電梯間下降請求標志位 CLR 22H.3 ;清電梯內(nèi)目標4樓請求標志位 SETB P0.7 ;上升指示燈滅 MOV R2,#0 ;5s定時開始 CJNZ R2,#50, ;等待5s延時UD4: MOV A,20H ORG A,21H ORG A,22H ANL A,#07H ;取得4的請求情況 JNZ DOWN4 AJMP UD4DOWN4:CLR P0.6 ;下降指示燈亮 ACALL DLY ;下降2sDOWN3: MOV P3,#3FH ;到達3樓,數(shù)碼管顯示“3” JB 21H.2,DOWN31 ;是3樓電梯間的下降請求,轉(zhuǎn)DOWN31 JB 22H.2,DOWN31 ;是電梯內(nèi)目標3樓請求,轉(zhuǎn)DOWN31 SJMP DOWN32 DOWN31:CLR 21H.2 ;清3樓電梯間下降請求標志位 CLR 22H.2 ;清電梯內(nèi)目標3樓請求標志位 SETB P0.6 ;下降指示燈滅 MOV R2,#0 ;5s定時開始 CJNZ R2,#50, ;等待5s延時DOWN32:MOV A,20H ORL A,21H ORL A,22H ANL A,#03H ;取得樓請求情況 JNZ DOWN33 AJMP UP32 ;3樓請求,轉(zhuǎn)3樓上升DOWN33:CLR P0.6 ;下降指示燈亮 ACALL DLYDOWN2: MOV P3,#2FH ;到達2樓,數(shù)碼管顯示“2” JB 21H.1,DOWN21 ;是2樓電梯間的下降請求,轉(zhuǎn)DOWN21 JB 22H.1,DOWN22 ;是電梯內(nèi)目標3樓請求,轉(zhuǎn)DOWN21 SJMP DOWN22DOWN21:CLR 21H.1 ;清2樓電梯間下降請求標志位 CLR 22H.1 ;清電梯內(nèi)目標2樓請求標志位 SETB P0.6 ;下降指示燈滅 MOV R2,#0 ;5s定時開始 CJNE R2,#50, ;等待5s延時DOWN22:MOV A,20H ORL A,21H ORL A,22H ANL A,#01H ;取得2樓請求情況 JNZ DOWN23 AJMP UP22 ;無樓請求,轉(zhuǎn)2樓上升DOWN23:CLR P0.6 ;下降指示燈亮 ACALL DLYDOWN1: CLR P3,#1FH ;到達1樓,數(shù)碼管顯示“1”DOWN11:CLR 21H.0 ;清電梯內(nèi)目標1樓請求標志位 SETB P0.6 ;下降指示燈滅 MOV R2,#0 ;5s定時開始 CJNZ R2,#50, ;等待5s延時 CJNZ R3,#0,DOWN12 ;Stop鍵是否按下過 AJMP UP1DOWN12:CLR P0.6 ;若Stop鍵按下過,轉(zhuǎn)S1停止工作 CLR P0.7 AJMP S1;定時器T0中斷服務程序;5s計時TIME: MOV TH0,#3CH MOV TL0,#0B0H INC R2 ;R2計數(shù)器 RETI;定時器T1中斷服務程序;按鍵狀態(tài)檢查TIME1: MOV TH1,#0ECH ;每10ms檢查一次按鍵 MOV TL1,#78H MOV 6EH,A MOV 30H,P1 ;讀入所有按鍵狀態(tài) MOV 31H,P3 JB P1.6,TIME11 ;若Stop鍵按下,則正常運行 MOV R3,#0FFH ;Stop鍵按下,標志R3置非0數(shù) MOV 20H,#0 ;清除全部電梯間上升請求 MOV 21H,#0 ;清除全部電梯間下降請求 MOV 22H,#0 ;清除全部電梯內(nèi)目標樓層請求 MOV 30H,#0FFH ;修改讀入的按鍵狀態(tài),使之為 MOV 31H,#0FEH ;電梯內(nèi)目標為一樓 CLR TR1 ;開關(guān)閉T1,不再讀取按鍵TIME11: MOV A,30H CPL A ANL A,#07H ;取得電梯間上升請求 ORL 20H,A MOV A,20H ;取得上升指示燈狀態(tài) CPL A ANL A,#07H MOV 32H,A MOV A,30H CPL A ANL A,#38H ;取得電椅間下降請求 RR A RR A ORL 21H,A MOV A,21H CPL A ANL A,#0EH RL A RL A ORL 32H,A MOV A,P0 ANL A,#0C0H ORL A,32H ;刷新上升、下降請求指示燈 MOV A,31H ANL A,#0FH ;取得電梯內(nèi)目標樓層請求 ORL 22H,A MOV A,22H CPL A MOV P2,A ;刷新電梯內(nèi)目標樓層指示燈TIME12: MOV A,6EH RET1;2s延時程序DLY: MOV R5,#20DLYI: MOV R6,#100DLY2: MOV R7,#250 DJNZ R7, DJNZ R6,DLY2 DJNZ R5,DLY1 RET END 第六章 軟硬件系統(tǒng)的調(diào)試6.1 軟件調(diào)試軟件調(diào)試的任務是利用開發(fā)工具進行在線仿真調(diào)試,發(fā)現(xiàn)和糾正程序錯誤,同時也能發(fā)現(xiàn)硬件故障。程序的調(diào)試應一個模塊一個模塊地進行,首先單獨調(diào)試各功能子程序,檢驗程序是否能夠?qū)崿F(xiàn)預期的功能,接口電路的控制是否正常等;最后逐步將各子程序連接起來總調(diào)。聯(lián)調(diào)需要注意的是,各程序模塊間能否正確傳遞參數(shù),特別要注意各子程序的現(xiàn)場保護與恢復。調(diào)試的基本步驟如下:(1) 用仿真器修改顯示緩沖區(qū)內(nèi)容,屏蔽拆字程序,調(diào)試動態(tài)掃描顯示功能。例如將DISP0DISP5單元置為“012345”,應能在LED上從左到右顯示“012345”。若顯示不正確,可在DISP子程序相應位置設置斷點調(diào)試檢查。然后用仿真器修改計時緩沖區(qū)內(nèi)容,調(diào)用拆字程序,調(diào)試顯示模塊DISPLAY。例如,將HOUR、MIN、SEC單元置為“123456”,檢查是否能正確顯示“12:34:56”。若顯示不正確,應在SEPA子程序相應位置設置斷點,調(diào)試檢查。(2) 運行主程序調(diào)試計時模塊,不按下任何鍵,檢查是否能從由00:00:00開始正確計時。 若不能正確計時則應在定時器中斷服務子程序中設置斷點,檢查HOUR、MIN、SEC、MSEC單元是否隨斷點運行而變化。然后屏蔽緩沖區(qū)初始化部分,用仿真器修改計時緩沖區(qū)內(nèi)容為23:58:48,運行主程序(不按下任何鍵),檢驗能否正確進位。(3) 調(diào)試鍵盤掃描模塊KEYSCAN,先用延時10ms子程序代替顯示子程序延時消抖,在求取鍵號后設置斷點,中斷后觀察A累加器中的鍵號是否正確;然后恢復用顯示子程序延時消抖,檢驗與DISPLAY模塊能否正確連接。(4) 調(diào)試時間設置/鬧鐘定時模塊MODIFY。首先屏蔽COMB子程序,單獨調(diào)試鍵盤設置模塊KEYIN,觀察顯示緩沖區(qū)DISP0DISP5單元的內(nèi)容是否隨鍵入的鍵號改變,以及鍵號能否在LED上顯示。然后屏蔽KEYIN子程序,單獨調(diào)試合字模塊COMB,分別將R1設置為時間設置緩沖區(qū)和鬧鐘值寄存區(qū)的首地址,修改顯示緩沖區(qū)內(nèi)容,程序運行后查看時間設置緩沖區(qū)HOUR、MIN、SEC單元和鬧鐘值寄存區(qū)AHOUR、AMIN、ASEC單元內(nèi)容是否正確。最后聯(lián)調(diào)MODIFY模塊。(5) 運行主程序聯(lián)調(diào),檢查能否用鍵盤修改當前時間以及設置鬧鐘,能否正確計時、啟鬧、停鬧。6.2硬件調(diào)試6.2.1 狀態(tài)燈顯示測試當電路連
收藏