單片機(jī)課程設(shè)計(jì)報(bào)告電梯_第1頁
單片機(jī)課程設(shè)計(jì)報(bào)告電梯_第2頁
單片機(jī)課程設(shè)計(jì)報(bào)告電梯_第3頁
單片機(jī)課程設(shè)計(jì)報(bào)告電梯_第4頁
單片機(jī)課程設(shè)計(jì)報(bào)告電梯_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-.z單片機(jī)課程設(shè)計(jì)一、設(shè)計(jì)名稱:電梯控制系統(tǒng)設(shè)計(jì)二、設(shè)計(jì)人員:周海峰、柳、吳晶晶、鄒敏三、指導(dǎo)教師:王憲菊四、設(shè)計(jì)要求:樓層:共六層設(shè)計(jì)名稱:電梯控制系統(tǒng)設(shè)計(jì)六個(gè)按鍵:用來輸入要去的樓層點(diǎn)陣1:顯示當(dāng)前樓層點(diǎn)陣2:顯示"↑〞或"↓〞箭頭例如:當(dāng)前電梯停在三樓,當(dāng)按下鍵1時(shí),點(diǎn)陣1間隔一秒依次顯示"2〞,"1〞,點(diǎn)陣2顯示箭頭↓;當(dāng)按下鍵6時(shí),點(diǎn)陣1間隔一秒依次顯示"4〞,"5〞,"6〞,點(diǎn)陣2顯示箭頭↑。器件:89c51芯片、兩個(gè)8*8點(diǎn)陣、6個(gè)按鍵五、器件介紹:89c51芯片:89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory〕的低電壓、高性能CMOS8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的89C51是一種高效微控制器,89C2051是它的一種精簡(jiǎn)版本。89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。構(gòu)造特點(diǎn):8位CPU;片振蕩器和時(shí)鐘電路;32根I/O線;外部存貯器尋址圍ROM、RAM64K;2個(gè)16位的定時(shí)器/計(jì)數(shù)器;5個(gè)中斷源,兩個(gè)中斷優(yōu)先級(jí);全雙工串行口;布爾處理器;管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)展校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫"1〞時(shí),其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)展存取時(shí),P2口輸出地址的高八位。在給出地址"1〞時(shí),它利用部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)展讀寫時(shí),P2口輸出其特殊功能存放器的容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入"1〞后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流〔ILL〕這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選功能P3.0R*D〔串行輸入口〕P3.1T*D〔串行輸出口〕P3.2/INT0〔外部中斷0〕P3.3/INT1〔外部中斷1〕P3.4T0〔記時(shí)器0外部輸入〕P3.5T1〔記時(shí)器1外部輸入〕P3.6/WR〔外部數(shù)據(jù)存儲(chǔ)器寫選通〕P3.7/RD〔外部數(shù)據(jù)存儲(chǔ)器讀選通〕P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想制止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOV*,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE制止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器〔0000H-FFFFH〕,不管是否有部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP〕。*TAL1:反向振蕩放大器的輸入及部時(shí)鐘工作電路的輸入。*TAL2:來自反向振蕩器的輸出8*8點(diǎn)陣顯示:8*8點(diǎn)陣LED構(gòu)造如下列圖所示

從圖中可以看出,8*8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的穿插點(diǎn)上,當(dāng)對(duì)應(yīng)的*一列置1電平,*一行置0電平,則相應(yīng)的二極管就亮;因此要實(shí)現(xiàn)一根柱形的亮法,如下圖,對(duì)應(yīng)的一列為一根豎柱,或者對(duì)應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮的方法如下所述:

一根豎柱:對(duì)應(yīng)的列置1,而行則采用掃描的方法來實(shí)現(xiàn)。

一根橫柱:對(duì)應(yīng)的行置0,而列則采用掃描的方法來實(shí)現(xiàn)。

硬件電路連線

(1).

把"單片機(jī)系統(tǒng)〞區(qū)域中的P1端口用8芯排芯連接到"點(diǎn)陣模塊〞區(qū)域中的"DR1-DR8〞端口上;

(2).

把"單片機(jī)系統(tǒng)〞區(qū)域中的P3端口用8芯排芯連接到"點(diǎn)陣模塊〞區(qū)域中的"DC1-DC8〞端口上;開場(chǎng)六、設(shè)計(jì)流程圖:開場(chǎng)初始化,顯示第3層是否按鍵.是否大于當(dāng)前樓層.初始化,顯示第3層是否按鍵.是否大于當(dāng)前樓層.點(diǎn)陣1顯示樓層;點(diǎn)陣2顯示↑。點(diǎn)陣1顯示樓層;點(diǎn)陣2顯示↓。Y七、設(shè)計(jì)程序:Y*include<reg51.h>*defineucharunsignedchar*defineuintunsignedint*definen800//宏定義電梯暫留時(shí)間sbitk1=P2^0;//鍵盤位定義sbitk2=P2^1;sbitk3=P2^2;sbitk4=P2^3;sbitk5=P2^4;sbitk6=P2^5;ucharcodetab[]={0*00,0*10,0*30,0*10,0*10,0*10,0*10,0*38,//-1- 0*00,0*38,0*44,0*04,0*08,0*10,0*20,0*7C,//-2- 0*00,0*38,0*44,0*04,0*38,0*04,0*44,0*38,//-3- 0*00,0*08,0*18,0*28,0*48,0*7C,0*08,0*08,//-4- 0*00,0*7C,0*40,0*40,0*38,0*04,0*44,0*38,//-5- 0*00,0*38,0*44,0*40,0*78,0*44,0*44,0*38//-6-};ucharcodetab1[]={0*00,0*18,0*18,0*18,0*99,0*5A,0*3C,0*18,0*00,0*18,0*18,0*18,0*99,0*5A,0*3C,0*18, 0*00,0*18,0*18,0*18,0*99,0*5A,0*3C,0*18, 0*00,0*18,0*18,0*18,0*99,0*5A,0*3C,0*18, 0*00,0*18,0*18,0*18,0*99,0*5A,0*3C,0*18, 0*00,0*18,0*18,0*18,0*99,0*5A,0*3C,0*18 };ucharcodetab2[]={0*00,0*18,0*3C,0*5A,0*99,0*18,0*18,0*18, 0*00,0*18,0*3C,0*5A,0*99,0*18,0*18,0*18, 0*00,0*18,0*3C,0*5A,0*99,0*18,0*18,0*18, 0*00,0*18,0*3C,0*5A,0*99,0*18,0*18,0*18, 0*00,0*18,0*3C,0*5A,0*99,0*18,0*18,0*18, 0*00,0*18,0*3C,0*5A,0*99,0*18,0*18,0*18};//下ucharflag=16,aa;//flag滾屏位uchara,b,c,d,e,f,g,h;//a,b,c,d,e,g樓層按鍵標(biāo)志位,f樓層號(hào)標(biāo)志位,h電梯方向標(biāo)志位;voidjianpan();//鍵盤檢測(cè)函數(shù)voidinit()//定時(shí)器0初始化{ f=flag;//讓電梯停在當(dāng)前3樓 TMOD=0*01; TH0=0*3c; TL0=0*b0; EA=1; ET0=1; TR0=1;//定時(shí)器T0開關(guān)位}voiddelay(uinttime)//延時(shí)us{while(time)time--;}voiddelay1(uintz)//延時(shí)ms,且顯示點(diǎn)陣且檢測(cè)鍵盤;用于讓電梯在*樓暫留等待人們出去{ uintj,i;for(j=z;j>0;j--) { for(i=110;i>0;i--); jianpan(); for(i=0;i<8;i++) { P3=i; {if(h==1||h==0) P0=tab2[i+flag]; if(h==2) P0=tab1[i+flag]; P1=tab[i+flag]; delay(20); } } }} voidmain(){uchari; init();//初始化T0 while(1) { for(i=0;i<8;i++)//顯示點(diǎn)陣 { P3=i;//行掃描 { if(h==1||h==0)//檢測(cè)電梯方向,上 P0=tab2[i+flag];//向上滾箭頭 if(h==2)//檢測(cè)電梯方向,下 P0=tab1[i+flag];//向下滾箭頭 P1=tab[i+flag];//滾數(shù)字 delay(20);//延時(shí)us } }if(h==2)//檢測(cè)電梯向下 { if(a==1&&flag==0)//檢測(cè)樓層2鍵盤按下,是否到達(dá)樓1 { TR0=0;//關(guān)閉定時(shí)器 delay1(n);//延時(shí)讓電梯暫留 TR0=1;//翻開T0 a=0;//重置鍵盤 } if(b==1&&flag==8)//檢測(cè)樓層2鍵盤按下,是否到達(dá)樓1 { TR0=0;//關(guān)閉定時(shí)器 delay1(n);//延時(shí)讓電梯暫留 TR0=1;//翻開T0 b=0;//重置鍵盤 } if(c==1&&flag==16) { TR0=0; delay1(n); TR0=1; c=0; } if(d==1&&flag==24) { TR0=0; delay1(n); TR0=1; d=0; } if(e==1&&flag==32) { TR0=0; delay1(n); TR0=1; e=0; } if(g==1&&flag==40) { TR0=0; delay1(n); TR0=1; g=0; } } if(h==1)//檢測(cè)電梯向上 { if(a==1&&flag==0)//檢測(cè)樓層1鍵盤按下,是否到達(dá)樓1 { TR0=0;//關(guān)閉定時(shí)器 delay1(n);//延時(shí)讓電梯暫留; TR0=1;//翻開T0 a=0;//重置鍵盤 } if(b==1&&flag==8)//檢測(cè)樓層1鍵盤按下,是否到達(dá)樓1 { TR0=0;//關(guān)閉定時(shí)器 delay1(n);//延時(shí)讓電梯暫留; TR0=1;//翻開T0 b=0;//重置鍵盤 } if(c==1&&flag==16) { TR0=0; delay1(n); TR0=1; c=0; } if(d==1&&flag==24) { TR0=0; delay1(n); TR0=1; d=0; } if(e==1&&flag==32) { TR0=0; delay1(n); TR0=1; e=0; } if(g==1&&flag==40) { TR0=0; delay1(n); TR0=1; g=0; } }}} voidtime0()interrupt1{ TH0=0*3c; TL0=0*b0; jianpan();//鍵盤檢測(cè) aa++; if(aa==6) { aa=0; if(h==1)//檢測(cè)電梯向上 flag++;//向上滾屏 if(h==2)//檢測(cè)電梯向下 flag--;//向下滾屏 if(flag==f&&h==1)//到達(dá)最高 { h=0;//重置電梯方向位h if(g==1)f=40;//檢測(cè)低樓層鍵 if(e==1)f=32; if(d==1)f=24; if(c==1)f=16; if(b==1)f=8; if(a==1)f=0; } if(flag==f&&h==2)//到達(dá)最低樓層 { h=0;//重置電梯方向位h if(a==1)f=0;//檢測(cè)高樓層鍵 if(b==1)f=8; if(c==1)f=16; if(d==1)f=24; if(e==1)f=32; if(g==1)f=40; } } }voidjianpan(){ if(k1==0)//檢測(cè)樓層1鍵盤 {a=1;f=0;}//賦樓層1鍵盤標(biāo)志位a=1,樓層號(hào)標(biāo)志位f=0 if(k2==0)//檢測(cè)樓層2鍵盤 {b=1;f=8;}//賦樓層2鍵盤標(biāo)志位b=1,樓層號(hào)標(biāo)志位f=16 if(k3==0)//檢測(cè)樓層3鍵盤 {c=1;f=16;}//賦樓層3鍵盤標(biāo)志位c=1,樓層號(hào)標(biāo)志位f=24 if(k4==0){d=1;f=24;} if(k5==0) {e=1;f=32;} if(k6==0) {g=1;f=40;} if(flag<f&&h==0)//檢測(cè)電梯首次運(yùn)行方向,向上 h=1;//向上標(biāo)志位h=1 if(h==1)//檢測(cè)最高樓層按鍵重新賦值f { if(b==1)f=8; if(c==1)f=16; if(d==1)f=24; if(e==1)f=32; if(g==1)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論