




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.題 目:基于STC89C51單片機(jī)的模擬電梯設(shè)計(jì) 目錄一、 設(shè)計(jì)任務(wù)11.1 設(shè)計(jì)內(nèi)容與要求1二、設(shè)計(jì)系統(tǒng)主要功能的說明22.1 設(shè)計(jì)設(shè)備的選擇22.2 設(shè)計(jì)原理2三、硬件電路設(shè)計(jì)33.1電源部分33.2按鍵部分43.3 數(shù)碼管顯示原理53.4電機(jī)驅(qū)動原理53.5單片機(jī)最小系統(tǒng)6四、軟件設(shè)計(jì)流程74.1 延時(shí)程序控制74.1.1 循環(huán)延時(shí)服務(wù)控制84.1.2 編碼按鍵掃描控制84.2 軟件的實(shí)現(xiàn)84.2.1主程序的實(shí)現(xiàn)84.2.2子函數(shù)服務(wù)程序的實(shí)現(xiàn)94.2.3 鍵盤掃描的實(shí)現(xiàn)方法9五、軟、硬件的調(diào)試115.1 調(diào)試方案的確定115.2 調(diào)試過程11六、設(shè)計(jì)心得11參考文獻(xiàn)13附錄A 模擬電
2、梯的程序15摘要: 本設(shè)計(jì)是使用宏晶公司的STC89C51RC加外圍器件作控制單元,用數(shù)碼管顯示,制作的經(jīng)濟(jì)實(shí)惠的電梯模擬系統(tǒng)。其原理圖可分為按鍵部分、顯示部分、電機(jī)部分、最小系統(tǒng)部分。兩個(gè)按鍵(一個(gè)電梯內(nèi),一個(gè)電梯外)對應(yīng)一個(gè)樓層,另有開門、關(guān)門兩個(gè)按鍵。芯片一旦檢測到某樓層的按鍵被按下,就會在對應(yīng)端口輸出5V高電平驅(qū)動電機(jī)來到該樓層,程單序會延遲幾分鐘,等人進(jìn)入電梯后,關(guān)門,去到要去的樓層。在整個(gè)過程中,數(shù)碼管會顯示樓層數(shù)。最小系統(tǒng)為單片機(jī)提供時(shí)鐘信號和復(fù)位功能。 關(guān)鍵詞:STC89C51 單片機(jī) 模擬電梯 四位一體數(shù)碼管一、 設(shè)計(jì)任務(wù)(選題) 隨著科技的發(fā)展,單片機(jī)因強(qiáng)大的功能、低廉的價(jià)
3、格,越來越被廣泛使用,成為很多電子產(chǎn)品中不可缺少的部分。同時(shí)因?yàn)閱纹瑱C(jī)是模擬電子與數(shù)字電子的結(jié)合品,它的應(yīng)用對于我們電子專業(yè)來說是一門必要掌握的課程。 電梯對人們來說已經(jīng)是必不可少了乘載工具,所以將單片機(jī)應(yīng)用于實(shí)際的生活中,才達(dá)到學(xué)以致用、舉一反三的境界。二、 方案設(shè)計(jì)1.處理部分:現(xiàn)在的單片機(jī)越來越注重功耗和處理數(shù)據(jù)快慢的問題,目前最低功耗最有發(fā)展?jié)摿Φ膯纹瑱C(jī)是美國TI公司的MSP430系列。不過這里為了學(xué)以致用和節(jié)約成本,同時(shí)電梯的處理數(shù)據(jù)就不需要那么高的速度,所以選用8位的STC89C51單片機(jī)。2.顯示部分:本來可以用15*18的點(diǎn)陣,可是考慮到成本和接電路布線的繁瑣,更糟糕的是那耗電
4、大而不是實(shí)際的電路就沒必要。所以直接用四位的數(shù)碼管顯示就好了。3.控制部分:本來可以用4*4的鍵盤,現(xiàn)在只用了四位數(shù)碼管代表三層樓,所以只用3個(gè)按鍵代表梯內(nèi)3層樓,3個(gè)按鍵代表梯外3層樓,加上“關(guān)門”和“開門(延時(shí))鍵各一個(gè),總共8個(gè)鍵組成編碼式按鍵就行了。功能:三、 硬件部分1.原理框圖2.原理圖細(xì)分電源部分:用變壓器把交流電220V轉(zhuǎn)為交流電9V(不能小于或者等于交流電5伏,因?yàn)槿朔€(wěn)壓管7805的輸入端輸出端電波壓差為2.5V),交流9V經(jīng)過整流橋D1后得到平均值為8.1V單方向全波脈動電壓,其中停含有較大的汶波,為了得到平滑的電壓,在其后面加濾波電容濾除交流成分。滌綸電容104可用來抵
5、消輸入端的電感效應(yīng),還可以消除電源的高頻干擾。一般取值是0.1-1uF。波動較大8.1V電壓經(jīng)7805的1腳輸入,輸出端輸出穩(wěn)定的5V,最后還要用電解電容10uF和滌綸電容104再次濾波,使電壓更穩(wěn)定,以供單片機(jī)和其他元器件需要。按鍵部分:8個(gè)按鍵分別是電梯外三個(gè)鍵代表想電梯來到的每一層樓,電梯內(nèi)三個(gè)鍵代表想要去的三層樓,一個(gè)關(guān)門鍵和一個(gè)開門鍵。它們一邊直接接地,另一邊直接接STC的P1和P3口,這樣就可以用高低電平去判斷,然后執(zhí)行對應(yīng)鍵的操作函數(shù)。顯示部分:用一個(gè)四位的共陽數(shù)碼管,再用四個(gè)9015(PNP)三極管去控制顯示。這樣就不會占用四個(gè)I/O而浪費(fèi)資源。當(dāng)然數(shù)碼管還要加上100的限流電
6、阻。再備用一個(gè)LED燈。電機(jī)部分:用P20和P21輸出高低之間去驅(qū)動8550組成的對稱電路,從而控制電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)。晶振部分:用12M和30pF的滌綸電容使單片機(jī)STC89C51起振,從而為單片機(jī)STC89C51提供頻率信號。最小系統(tǒng):用一個(gè)按鍵、200和利用電容(電解電容22uF)充放電原理去使STC89C51重新上電復(fù)位。四、 軟件部分1. 程序流程圖五、 調(diào)試和驗(yàn)證首先布局好電路的擺布,如何讓人一目了然,如何好看。跟著把電路焊接完畢。 先不要急著把單片機(jī)插上去整個(gè)系統(tǒng)調(diào)試,而是先測試電源部分5V正常與否。當(dāng)我測試到5V波動很大或者直接沒有時(shí),發(fā)現(xiàn)三端穩(wěn)壓管7805之后的那個(gè)滌綸電容10
7、4已經(jīng)擊穿了,換了一個(gè)之后電源穩(wěn)定正常了。 然后在仿真軟件Proteus上對照自己設(shè)計(jì)的電路畫了個(gè)電路圖,因?yàn)樯厦鏇]有9015三極管只有通用的PNP三極管只好用這個(gè)來替補(bǔ)。當(dāng)我在Keil C51上隨便編了一個(gè)顯示5678的函數(shù)把它灌入仿真軟件上調(diào)試時(shí),發(fā)現(xiàn)數(shù)碼管四位都是顯示8。然后我再倒頭看看程序是否錯(cuò)誤,感覺真的沒錯(cuò)啊。又用另外的方式編寫了顯示1234的程序,它還是一樣顯示4444。我就在Keil 上一步一步地調(diào)試程序,真的感覺沒有錯(cuò),當(dāng)時(shí)一時(shí)懵了。最后我就做了決定,直接把把程序燒進(jìn)上,插上到電路板上,那顯示竟然與自己編寫的完全一致喔。那時(shí)一片黑云散了,心情很好。 后來覺得調(diào)試不方便,不可能
8、每次都要把程序燒進(jìn)單片機(jī)上在電路板上調(diào)試。我就仿真軟件上把那個(gè)通用三極管換成反相放大器,這樣調(diào)試就好了。六、心得每一次努力都總會有或多或少的收獲,所以當(dāng)我們做每一件事時(shí)都要全力以赴,否則就不要去做。這對我們以后工作乃至生活形成一個(gè)良好的習(xí)慣和心態(tài)。結(jié)論謝辭在、 首先感謝各位老師三年來的教導(dǎo)。俗話說入靠師傅,修行在個(gè)人。剛接觸這個(gè)專業(yè)時(shí),還不清楚學(xué)什么,能學(xué)到什么,而現(xiàn)在雖說七、參考文獻(xiàn) 譚浩強(qiáng)編著.C語言程序設(shè)計(jì)胡宴如、耿蘇燕編著.模擬電子技術(shù) 劉守義、楊宏麗、王靜霞編著.單片機(jī)應(yīng)用技術(shù) 鄭鵬思、林遠(yuǎn)長、董前程、矯津毅編著.Protel99 SE附錄A模擬電梯程序#include<reg
9、51.h>sbit key3=P11;sbit key2=P10;sbit key1=P12;sbit key4=P13;sbit key5=P14;sbit key6=P37;sbit key7=P36; /關(guān)門升降sbit key8=P35; /開門延時(shí)鍵sbit P24=P24;sbit P25=P25;sbit P26=P26;sbit P27=P27;sbit zhengzhuan=P20; /電動機(jī)正轉(zhuǎn)sbit fanzhuan=P21; /電動機(jī)反轉(zhuǎn)unsigned int i,j;unsigned char sanlou=0;unsigned charerlou=0;bi
10、t biaozhi=0;unsigned charyilou=0;unsigned char qusanlou=0;unsigned char querlou=0;unsigned char quyilou=0; unsigned char code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/-延時(shí)1ms函數(shù)-void delay(unsigned int t) for(i=0;i<t;i+) for(j=0;j<121;j+) ; /-外按三樓函數(shù)-void display3(void) if(qusanlou=
11、1) for(i=0;i<500;i+) for(j=0;j<121;j+) ; if(P26=0)/如果現(xiàn)在在一樓則顯示從一樓到三樓函數(shù) P2=0xb0; P0=tab1; for(i=0;i<500;i+) for(j=0;j<121;j+) if(key2=0) /判讀外二樓有沒有人按下 delay(10); while(key2=0); erlou=1; if(key8=0&&qusanlou=1);/同時(shí)要是之前的內(nèi)三樓鍵按下才有效 delay(10); while(key8=0); delay(1000); /如果再次開門就延時(shí)1s if(k
12、ey7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) zhengzhuan=1; fanzhuan=0; /電機(jī)正轉(zhuǎn) delay(1000); delay(1000); delay(1000); delay(1000);/上一層樓的時(shí)間 P2=0xd0; P0=tab2; for(i=0;i<500;i+) for(j=0;j<121;j+) if(key8=0&&qusanlou=1); /同時(shí)要是內(nèi)三樓鍵按下才有效 delay(10); while(key8=0); delay(1000); /如果再次開門就
13、延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) if(erlou=1) delay(1000); /在二樓停留多1s當(dāng)模擬有人進(jìn)出 zhengzhuan=0; fanzhuan=0; /電機(jī)停止 zhengzhuan=1; fanzhuan=0; /電機(jī)正轉(zhuǎn) delay(1000); delay(1000); delay(1000); delay(1000);/上一層樓的時(shí)間 P2=0xe0; P0=tab3; for(i=0;i<500;i+) for(j=0;j<121;j+) if(key8=0&a
14、mp;&qusanlou=1); /同時(shí)要是內(nèi)三樓鍵按下才有效 delay(10); while(key8=0); delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) if(P25=0) P2=0xd0; P0=tab2; zhengzhuan=1; fanzhuan=0; /電機(jī)正轉(zhuǎn) delay(1000); delay(1000); delay(1000); delay(1000); P2=0xe0; P0=tab3; if(P24=0)/如果現(xiàn)在還是顯示3樓 P2=
15、0xe0; P0=tab3; sanlou=0; erlou=0; qusanlou=0; zhengzhuan=0; fanzhuan=0; /電機(jī)停止/-外按二樓函數(shù),不過最后還是到先三樓去-void display2(void) if(querlou=1) for(i=0;i<500;i+) for(j=0;j<121;j+) ; if(P26=0) /如果現(xiàn)在在一樓則顯示從一樓到二樓再到三樓函數(shù) P2=0xb0; P0=tab1; for(i=0;i<500;i+) for(j=0;j<121;j+) if(key8=0&&querlou=1);
16、 /同時(shí)要是內(nèi)二樓鍵按下才有效 delay(10); while(key8=0); delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) zhengzhuan=1; fanzhuan=0; /電機(jī)正轉(zhuǎn) delay(1000); delay(1000); delay(1000); delay(1000); /上一層樓的時(shí)間 P2=0xd0; P0=tab2; for(i=0;i<500;i+) for(j=0;j<121;j+) if(key8=0&&qu
17、erlou=1); /同時(shí)要是內(nèi)二樓鍵按下才有效 delay(10); while(key8=0); zhengzhuan=0; fanzhuan=0; /電機(jī)停止 delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) zhengzhuan=0; fanzhuan=0; /電機(jī)停止 delay(1000); delay(1000); delay(1000);/在二樓停留多1s當(dāng)模擬有人進(jìn)出 zhengzhuan=1; fanzhuan=0; /電機(jī)正轉(zhuǎn) delay(1000); d
18、elay(1000); delay(1000); delay(1000);/上一層樓的時(shí)間 P2=0xe0; P0=tab3; for(i=0;i<500;i+) for(j=0;j<121;j+) if(key8=0&&querlou=1); /同時(shí)要是內(nèi)二樓鍵按下才有效 delay(10); while(key8=0); delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) erlou=0; biaozhi=biaozhi;/為了不讓在顯示完上升函數(shù)
19、時(shí)再去顯示下降函數(shù) /- / 如果現(xiàn)在是在三樓的話 /- if(P24=0&&biaozhi=0) /如果現(xiàn)在在三樓的話則從三樓到二樓再到一樓 P2=0xe0; P0=tab3; for(i=0;i<200;i+) for(j=0;j<121;j+) if(key8=0&&querlou=1); /同時(shí)要是內(nèi)二樓鍵按下才有效 delay(10); while(key8=0); delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) zhen
20、gzhuan=0; fanzhuan=1; /電機(jī)反轉(zhuǎn) delay(1000); delay(1000); delay(1000); delay(1000);/上一層樓的時(shí)間 P2=0xd0; P0=tab2; for(i=0;i<200;i+) for(j=0;j<121;j+) if(key8=0&&querlou=1); /同時(shí)要是內(nèi)二樓鍵按下才有效 delay(10); while(key8=0); zhengzhuan=0; fanzhuan=0; /電機(jī)停止 delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10);
21、while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) zhengzhuan=0; fanzhuan=0; /電機(jī)停止 delay(1000); /在二樓停留多2S當(dāng)模擬有人進(jìn)出 zhengzhuan=0; fanzhuan=1; /電機(jī)反轉(zhuǎn) delay(1000); delay(1000); delay(1000); delay(1000);/上一層樓的時(shí)間 P2=0xb0; P0=tab1; for(i=0;i<200;i+) for(j=0;j<121;j+) if(key8=0&&querlou=1); /同時(shí)要是內(nèi)二樓鍵按下才有效 dela
22、y(10); while(key8=0); delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) erlou=0; biaozhi=0; querlou=0; zhengzhuan=0; fanzhuan=0; /電機(jī)停止/-外按一樓函數(shù)-void display1(void) if(quyilou=1) for(i=0;i<500;i+) for(j=0;j<121;j+) ; if(P24=0) /如果現(xiàn)在在三樓則顯示從三樓到一樓函數(shù) P2=0xe0; P0=tab
23、3; for(i=0;i<200;i+) for(j=0;j<121;j+) if(key2=0)/判讀外二樓有沒有人按下 delay(10); while(key2=0); erlou=1; if(key8=0&&quyilou=1); /同時(shí)要是內(nèi)一樓鍵按下才有效 delay(10); while(key8=0); delay(1000); /如果再次開門就延時(shí)1s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) zhengzhuan=0; fanzhuan=1; /電機(jī)反轉(zhuǎn) delay(100
24、0); delay(1000); delay(1000); delay(1000);/上一層樓的時(shí)間 P2=0xd0; P0=tab2; for(i=0;i<200;i+) for(j=0;j<121;j+) if(key8=0&&quyilou=1); /同時(shí)要是內(nèi)一樓鍵按下才有效 delay(10); while(key8=0); zhengzhuan=0; fanzhuan=0; /電機(jī)停止 delay(2000); /如果再次開門就延時(shí)2s if(key7=0) delay(10); while(key7=0); i=200;/把i變成200跳出延時(shí)函數(shù) i
25、f(erlou=1) zhengzhuan=0; fanzhuan=0; /電機(jī)停止 delay(1000); /在二樓停留多1s當(dāng)模擬有人進(jìn)出 zhengzhuan=0; fanzhuan=1; /電機(jī)反轉(zhuǎn) delay(1000); delay(1000); delay(1000); delay(1000);/上一層樓的時(shí)間 P2=0xb0; P0=tab1; for(i=0;i<200;i+) for(j=0;j<121;j+) if(key8=0&&quyilou=1); /同時(shí)要是內(nèi)一樓鍵按下才有效 delay(10); while(key8=0); delay(2000); /如果再次開門就延時(shí)2s if(key7=0) delay(10); while(key7=0); i
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3725-2024 固定污染源廢氣非甲烷總經(jīng)連續(xù)監(jiān)測系統(tǒng)
- T-ZJBS 002-2024 城市公共標(biāo)識系統(tǒng)施工規(guī)范
- 二零二五年度戶口分家及遺產(chǎn)評估協(xié)議范本
- 二零二五年度股東退股及公司未來發(fā)展方向與投資布局協(xié)議
- 二零二五年度教育培訓(xùn)機(jī)構(gòu)春季招生促銷合同范本
- 二零二五年度高速公路施工安全責(zé)任豁免合同樣本
- 二零二五年度員工績效評估與職業(yè)發(fā)展輔導(dǎo)協(xié)議書
- 商業(yè)智能軟硬件開發(fā)合作協(xié)議
- 五年級數(shù)學(xué)探索圖形變化教學(xué)教案
- 優(yōu)化辦公室工作環(huán)境的策略
- 分布式光伏發(fā)電開發(fā)建設(shè)管理辦法2025
- 《科幻小說賞析與寫作》 課件 -第六章 “外星文明”的善意與惡行-《安德的游戲》
- 《我國的文化安全》課件
- 2025年貴州蔬菜集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2025蛇年一上英語寒假作業(yè)
- 2024年呼和浩特職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫參考答案
- 2025年太倉市文化旅游發(fā)展集團(tuán)限公司及子公司公開招聘12名高頻重點(diǎn)提升(共500題)附帶答案詳解
- 機(jī)械制圖題庫及答案
- 安裝承包合同(2025年)
- 云上貴州大數(shù)據(jù)(集團(tuán))有限公司招聘筆試沖刺題2024
- 人教版四年級下冊數(shù)學(xué)第二單元觀察物體(二) 單元測試
評論
0/150
提交評論