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