基于單片機的電梯仿真程序課程設計_第1頁
基于單片機的電梯仿真程序課程設計_第2頁
基于單片機的電梯仿真程序課程設計_第3頁
基于單片機的電梯仿真程序課程設計_第4頁
基于單片機的電梯仿真程序課程設計_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 目錄(1) 前言.1(2) 現(xiàn)代電梯概述.3(3) 硬件部分設計.6(4) 軟件部分設計.12(5) 電梯運行界面.52(6) 設計總結與感悟.56(7) 參考文獻.57電梯仿真程序一、前言: 本電梯仿真程序采用的是一個基于單片機及其相關外設,編程語言采用匯編與c語言結合的方式,通過矩陣鍵盤線反選法輸入樓層,上、下行等控制信號,經(jīng)io口讀入,進行相關實時控制,軟硬件結合的仿真系統(tǒng),輸出設備包括由cd4511驅(qū)動顯示樓層的7段數(shù)碼管,顯示實時信息的顯示屏lcd12864,由pwm控制顯示電梯門開關的舵機,以及由io口間接控制的驅(qū)動電機正反轉(zhuǎn)雙橋驅(qū)動電路等幾個部分組成??梢詫崿F(xiàn)真實電梯中,任意層

2、呼叫,目的層到達按要求順序到達,開關門,無輸入自動回1層等一系列功能,并實時顯示當前電梯運行狀態(tài),關于真實電梯門控光幕裝置,電機自動抱閘平層等部分,由于知識不足,沒有足一實現(xiàn),但會在接下來的專業(yè)知識學習過程中不斷完善,同時也希望得到程老師的指導。二、現(xiàn)代電梯概述:電梯是一種以電動機為動力的垂直升降機,裝有箱狀吊艙,用于多層建筑乘人或載運貨物。也有臺階式,踏步板裝在履帶上連續(xù)運行,俗稱自動電梯。 服務于規(guī)定樓層的固定式升降設備。它具有一個轎廂,運行在至少兩列垂直的或傾斜角小于15的剛性導軌之間。轎廂尺寸與結構形式便于乘客出入或裝卸貨物,本次微機課程設計電梯仿真選用的是垂直升降梯。2.1、電梯功能

3、現(xiàn)代電梯主要由曳引機(絞車)、導軌、對重裝置、安全裝置(如限速器、安全鉗和緩沖器等)、信號操縱系統(tǒng)、轎廂與廳門等組成。這些部分分別安裝在建筑物的井道和機房中。通常采用鋼絲繩摩擦傳動,鋼絲繩繞過曳引輪,兩端分別連接轎廂和平衡重,電動機驅(qū)動曳引輪使轎廂升降。電梯要求安全可靠、輸送效率高、平層準確和乘坐舒適等。電梯的基本參數(shù)主要有額定載重量、可乘人數(shù)、額定速度、轎廂外廓尺寸和井道型式等。簡單使用方法(緊急情況下面有解決方法)載人電梯都是微機控制的智能化、自動化設備,不需要專門的人員來操作 電梯電梯結構圖 電梯內(nèi)部結構圖駕駛,普通乘客只要按下列程序乘坐和操作電梯即可。2.2、運行過程:1、在乘梯樓層電

4、梯入口處,根據(jù)自己上行或下行的需要,按上方向或下方向箭頭按鈕,只要按鈕上的燈亮,就說明你的呼叫已被記錄,只要等待電梯到來即可。2、電梯到達開門后,先讓轎廂內(nèi)人員走出電梯,然后呼梯者再進入電梯轎廂。進入轎廂后,根據(jù)你需要到達的樓層,按下轎廂內(nèi)操縱盤上相應的數(shù)字按鈕。同樣,只要該按鈕燈亮,則說明你的選層已被記錄;此時不用進行其他任何操作,只要等電梯到達你的目的層??考纯伞?、電梯行駛到你的目的層后會自動開門,此時按順序走出電梯即結束了一個乘梯過程。三、硬件部分設計3.1、總電路圖:3.2、單片機最小系統(tǒng):單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng).對51系列單

5、片機來說,最小系統(tǒng)一般應該包括:單片機、晶振電路、復位電路.下面給出一個51單片機的最小系統(tǒng)電路圖.3.3、矩陣鍵盤:在鍵盤中按鍵數(shù)量較多時,為了減少i/o口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如p1口)就可以構成4*4=16個按鍵,1鍵盤的工作原理: 按鍵設置在行、列線交點上,行、列線分別連接到按鍵開關的 兩端。行線通過上拉電阻接到+5v 電源上。無按鍵按下時,行線處 于高電平的狀態(tài), 而當有按鍵按下時, 行線電平與此行線相連的列 線電平?jīng)Q定。2行列掃描法原理:第一步, 使行線為編程的輸入線,列線是

6、輸出線,拉低所有的列線, 判斷行線的變化,如果有按鍵按下,按鍵按下的對應行線被拉低,否則 所有的行線都為高電平。第二步, 在第一步判斷有鍵按下后, 延時 10ms 消除機械抖動,再次讀取行值,如果此行線還處于低電平狀態(tài)則進入下 一步,否則返回第一步重新判斷。第三步,開始掃描按鍵位置,采用逐 行掃描,每間隔 1ms 的時間,分別拉低第一列,第二列,第三列,第四 列,無論拉低哪一列其他三列都為高電平,讀取行值找到按鍵的位置, 分別把行值和列值儲存在寄存器里。3.4、cd4511當前樓層顯示cd4511 是一片 cmos bcd-鎖存/7 段譯碼/驅(qū)動器,用于驅(qū)動共陰極 led (數(shù)碼管)顯示器的

7、bcd 碼-七段碼譯碼器。它具有bcd轉(zhuǎn)換、消隱和鎖存控制、七段譯碼及驅(qū)動功能的cmos電路能提供較大的拉電流??芍苯域?qū)動共陰led數(shù)碼管。以下是cd4511數(shù)碼管驅(qū)動原理電路圖。是cd4511實現(xiàn)led與單片機的并行接口方法。3.5、lcd12864不帶中文字庫的128x64 是一種具有4 位/8 位并行、2 線或3 線串行多種接口方式,內(nèi)部含有國標一級、二級簡體 中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為12864, 內(nèi)置8192 個16*16 點漢字,和128 個16*8 點ascii 字符 集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面。可以顯示8

8、4 行1616 點 陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點。由該模塊構成的液晶顯示方案與同類型的圖形點陣液晶 顯示模塊相比,不論硬件電路結構或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。3.6、電機雙橋驅(qū)動系統(tǒng)一、h橋驅(qū)動電路 圖4.12中所示為一個典型的直流電機控制電路。電路得名于“h橋驅(qū)動電路”是因為它的形狀酷似字母h。4個三極管組成h的4條垂直腿,而電機就是h中的橫杠(注意:圖4.12及隨后的兩個圖都只是示意圖,而不是完整的電路圖,其中三極管的驅(qū)動電路沒有畫出來)。如圖所示,h橋式電機驅(qū)動電路包括4個三極管和一個電機。要使電機運轉(zhuǎn),必須導通對角

9、線上的一對三極管。根據(jù)不同三極管對的導通情況,電流可能會從左至右或從右至左流過電機,從而控制電機的轉(zhuǎn)向。圖4.12 h橋驅(qū)動電路 要使電機運轉(zhuǎn),必須使對角線上的一對三極管導通。例如,如圖4.13所示,當q1管和q4管導通時,電流就從電源正極經(jīng)q1從左至右穿過電機,然后再經(jīng)q4回到電源負極。按圖中電流箭頭所示,該流向的電流將驅(qū)動電機順時針轉(zhuǎn)動。當三極管q1和q4導通時,電流將從左至右流過電機,從而驅(qū)動電機按特定方向轉(zhuǎn)動(電機周圍的箭頭指示為順時針方向)。圖4.13 h橋電路驅(qū)動電機順時針轉(zhuǎn)動圖4.14所示為另一對三極管q2和q3導通的情況,電流將從右至左流過電機。當三極管q2和q3導通時,電流將

10、從右至左流過電機,從而驅(qū)動電機沿另一方向轉(zhuǎn)動(電機周圍的箭頭表示為逆時針方向)。圖4.14 h橋驅(qū)動電機逆時針轉(zhuǎn)動二、使能控制和方向邏輯 驅(qū)動電機時,保證h橋上兩個同側(cè)的三極管不會同時導通非常重要。如果三極管q1和q2同時導通,那么電流就會從正極穿過兩個三極管直接回到負極。此時,電路中除了三極管外沒有其他任何負載,因此電路上的電流就可能達到最大值(該電流僅受電源性能限制),甚至燒壞三極管?;谏鲜鲈颍趯嶋H驅(qū)動電路中通常要用硬件電路方便地控制三極管的開關。 圖4.155 所示就是基于這種考慮的改進電路,它在基本h橋電路的基礎上增加了4個與門和2個非門。4個與門同一個“使能”導通信號相接,這樣

11、,用這一個信號就能控制整個電路的開關。而2個非門通過提供一種方向輸人,可以保證任何時候在h橋的同側(cè)腿上都只有一個三極管能導通。(與本節(jié)前面的示意圖一樣,圖4.15所示也不是一個完整的電路圖,特別是圖中與門和三極管直接連接是不能正常工作的。)圖4.15 具有使能控制和方向邏輯的h橋電路 采用以上方法,電機的運轉(zhuǎn)就只需要用三個信號控制:兩個方向信號和一個使能信號。如果dirl信號為0,dirr信號為1,并且使能信號是1,那么三極管q1和q4導通,電流從左至右流經(jīng)電機(如圖4.16所示);如果dirl信號變?yōu)?,而dirr信號變?yōu)?,那么q2和q3將導通,電流則反向流過電機。四、軟件部分設計:4.1

12、、程序框圖顯示提示,開發(fā)者、版本信息硬件上電待命鍵盤輸入目的樓層記錄并該樓層標志位否結束鍵是否按下 是程序開始運行while(1). 運行至最后目 的樓層繼續(xù)否鍵盤掃描電梯門,電機運行,延時lcd顯示,7段數(shù)碼管顯示 若相等電機停轉(zhuǎn),電梯門開,延時lcd顯示,7段數(shù)碼管顯示當前樓層標志位加一并與存儲樓層對比電機運行,到達下一層 否否是是結束待命4.2、c51單片機匯編、c語言混編程序:; 電梯。src generated from: 電梯.c; compiler invoked by:; c:keilc51binc51.exe 電梯.c browse debug objectextend$no

13、mod51name電梯p0data080hp1data090hp2data0a0hp3data0b0ht0bit0b0h.4acbit0d0h.6t1bit0b0h.5t2bit090h.0eabit0a8h.7iedata0a8hclockbit0b0h.0exf2bit0c8h.6rdbit0b0h.7esbit0a8h.4ipdata0b8hribit098h.0int0bit0b0h.2cybit0d0h.7tibit098h.1int1bit0b0h.3rcap2hdata0cbhpsbit0b8h.4spdata081ht2exbit090h.1ovbit0d0h.2rcap2ld

14、ata0cahc_t2bit0c8h.1wrbit0b0h.6rclkbit0c8h.5tclkbit0c8h.4sbufdata099hpcondata087hscondata098htmoddata089htcondata088hie0bit088h.1ie1bit088h.3bdata0f0hcp_rl2bit0c8h.0accdata0e0hservo_doorbit0b0h.7et0bit0a8h.1et1bit0a8h.3tf0bit088h.5et2bit0a8h.5tf1bit088h.7tf2bit0c8h.7rb8bit098h.2th0data08chex0bit0a8h

15、.0it0bit088h.0th1data08dhtb8bit098h.3ex1bit0a8h.2it1bit088h.2th2data0cdhpbit0d0h.0sm0bit098h.7tl0data08ahsm1bit098h.6tl1data08bhsm2bit098h.5tl2data0cchpt0bit0b8h.1pt1bit0b8h.3rs0bit0d0h.3pt2bit0b8h.5tr0bit088h.4rs1bit0d0h.4tr1bit088h.6tr2bit0c8h.2px0bit0b8h.0px1bit0b8h.2dphdata083hdpldata082hexen2bi

16、t0c8h.3renbit098h.4t2condata0c8hrxdbit0b0h.0txdbit0b0h.1f0bit0d0h.5pswdata0d0h?pr?_delay?smartcar segment code ?pr?_abs?smartcar segment code ?pr?keysort?smartcar segment code ?pr?keycheck?smartcar segment code ?pr?sys_init?smartcar segment code ?pr?_bcd?smartcar segment code ?pr?main?smartcar segme

17、nt code ?pr?time_base?smartcar segment code ?c_initseg segment code ?bi?smartcar segment bit ?dt?smartcar segment data extrncode (?c_startup)publicfloor_up_2publicfloor_up_1publicrankkeypublicopendoorpublicipublicup_flagpublicrowpublicfloor_down_5publicfloor_down_4publicfloor_down_3publicfloor_down_

18、2publicpressflagpublickeypublickey_flagpublicstop_flagpublictemppublicdown_flagpublicfloor_flag_5publicfloor_flag_4publicfloor_flag_3publicfloor_flag_2publicfloor_flag_1publicstartpublicclose_doorpublicrankpubliccountpublicrowkeypublicfloor_up_4publicfloor_up_3publictime_basepublicmainpublic_bcdpubl

19、icsys_initpublickeycheckpublickeysortpublic_abspublic_delayrseg ?bi?smartcar floor_up_3: dbit 1 floor_up_4: dbit 1 close_door: dbit 1 start: dbit 1 floor_flag_1: dbit 1 floor_flag_2: dbit 1 floor_flag_3: dbit 1 floor_flag_4: dbit 1 floor_flag_5: dbit 1 down_flag: dbit 1 stop_flag: dbit 1 pressflag:

20、dbit 1 floor_down_2: dbit 1 floor_down_3: dbit 1 floor_down_4: dbit 1 floor_down_5: dbit 1 up_flag: dbit 1 opendoor: dbit 1 floor_up_1: dbit 1 floor_up_2: dbit 1rseg ?dt?smartcar rowkey: ds 1 count: ds 2 rank: ds 1 temp: ds 1 key_flag: ds 16 key: ds 1 row: ds 1 i: ds 1 rankkey: ds 1rseg ?c_initsegdb

21、002hdbcountdw00000hdb010hdbkey_flagdb000hdb 000h,000h,000h,000h,000h,000h,000h,000h,000h,000hdb 000h,000h,000h,000h,000hdb001hdbkeydb000hdb001hdbidb000hdb0c1h, pressflag + 000h; bit-initdb0c1h, up_flag + 000h; bit-initdb0c1h, down_flag + 000h; bit-initdb0c1h, stop_flag + 000h; bit-initdb001hdbrowkey

22、db000hdb001hdbrankkeydb000hdb001hdbtempdb000hdb001hdbrowdb000hdb001hdbrankdb000h db0c1h, floor_flag_1 + 000h; bit-init db0c1h, floor_flag_2 + 000h; bit-initdb0c1h, floor_flag_3 + 000h; bit-initdb0c1h, floor_flag_4 + 000h; bit-initdb0c1h, floor_flag_5 + 000h; bit-initdb0c1h, floor_down_5 + 000h; bit-

23、initdb0c1h, floor_up_4 + 000h; bit-initdb0c1h, floor_down_4 + 000h; bit-initdb0c1h, floor_up_3 + 000h; bit-initdb0c1h, floor_down_3 + 000h; bit-initdb0c1h, floor_up_2 + 000h; bit-initdb0c1h, floor_down_2 + 000h; bit-initdb0c1h, floor_up_1 + 000h; bit-initdb0c1h, opendoor + 000h; bit-initdb0c1h, clos

24、e_door + 000h; bit-initdb0c1h, start + 000h; bit-init; /晶振 12mhz 6t模式,總線頻率2mhz 指令0.5us; #pragma src; #include /89c52的頭文件; ; #define t0_high 0xff /t0計時器寄存器初值; #define t0_low 0x9b /溢出計數(shù)80個,定時周期80*0.25us=20us; /為了保證主程序正常運行,定時器計數(shù)最好不要小于80個; ; #define keynumber 16 16個按鍵標志; #define keyio p2 4*4鍵盤輸入; #defin

25、e output p1 lcd12864數(shù)據(jù)d0d7; #define nobcd p0 bcd端口輸出; ; sbit clock=p30; lcd12864時鐘輸出端; sbit servo_door=p37; 舵機控制門輸出端口; int count=0; ; char key_flagkeynumber=0; 按鍵標志位; ; char key=0; char i=0; ; bit pressflag=0; bit up_flag=0; bit down_flag=0; 控制信號標志位; bit stop_flag=0; ; ; ; ; ; char rowkey=0; 鍵盤反選變量設

26、置; char rankkey=0; char temp=0; char row=0; char rank=0; ; bit floor_flag_1=0;、 各樓層標志位; bit floor_flag_2=0; bit floor_flag_3=0; bit floor_flag_4=0; bit floor_flag_5=0; bit floor_down_5=0; bit floor_up_4=0; bit floor_down_4=0; bit floor_up_3=0; bit floor_down_3=0; bit floor_up_2=0; bit floor_down_2=0

27、; bit floor_up_1=0; bit opendoor=0; bit close_door=0; bit start=0; ; /-; void delay(unsigned int i)/延時函數(shù)_delay:using0; source line # 56;- variable i?040 assigned to register r6/r7 -; ; source line # 57; unsigned char j; for(;i0;i-); source line # 59?c0001:setb cmov a,r7subb a,#00hmov a,r6subb a,#00h

28、jc ?c0007; for(j=0;j=0) return i; source line # 65clr cmov a,r6xrl a,#080hsubb a,#080hjc ?c0008ret ?c0008:; else return -i; source line # 66clr cclr asubb a,r7mov r7,aclr asubb a,r6mov r6,a; ; source line # 67?c0009:ret ; end of _abs; /-; void keysort(void)rseg ?pr?keysort?smartcarkeysort:using0; so

29、urce line # 69; ; source line # 70; for(i=0;i16;i+); source line # 71clr amov i,a?c0011:; ; source line # 72; if(key=i) key_flagi=1; source line # 73mov a,keycjne a,i,?c0013mov a,#low (key_flag) 讀并且記錄標志位函數(shù)add a,imov r0,amov r0,#01h; ; source line # 74?c0013:inc imov a,icjne a,#010h,?c0011?c0012:; ;

30、for(i=0;i4); source line # 132mov a,rankkeymov r0,#04h?c0114:mov c,acc.7rrc adjnz r0,?c0114mov rankkey,a; ; ; source line # 134; for(i=0;i=3;i+); source line # 135clr amov r4,a?c0057:; ; source line # 136; temp=0x01; source line # 137mov temp,#01h; temp=(tempi); source line # 138mov a,tempmov r0,ar4

31、inc r0sjmp ?c0116?c0115:clr crlc a?c0116:djnz r0,?c0115mov temp,a; if(rowkey&temp)!=0) row=i+1;i=4; source line # 139anl a,rowkeyjz ?c0059mov a,r4inc amov row,amov r4,#04h; ; source line # 140?c0059:inc r4setb cmov a,r4xrl a,#080hsubb a,#083hjc ?c0057?c0058:; ; ; for(i=0;i=3;i+); source line # 143cl

32、r amov r4,a?c0061:; ; source line # 144; temp=0x01; source line # 145mov temp,#01h; temp=(tempi); source line # 146mov a,tempmov r0,ar4inc r0sjmp ?c0118?c0117:clr crlc a?c0118:djnz r0,?c0117mov temp,a; if(rankkey&temp)!=0) rank=i+1;i=4; source line # 147anl a,rankkeyjz ?c0063mov a,r4inc amov rank,amov r

溫馨提示

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

評論

0/150

提交評論