

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> ××大學(xué)××學(xué)院課程設(shè)計(jì)</p><p><b> ××大學(xué)××學(xué)院</b></p><p><b> 二○一一年六月</b></p><p> 摘要:當(dāng)前,人們對住房的需求量越來越多,很多家庭都不止一套住房。但是
2、,我國的住房面積有限,為了更好的解決這一問題,于是,很多住房都像商務(wù)建筑一樣,修建成電梯公寓的形式,這樣便能容納更多的住戶。對于電梯的人性化設(shè)計(jì),也顯得很重要了。</p><p> 本次設(shè)計(jì),就是基于AT89S51系列單片機(jī)的自動(dòng)電梯工作的模擬方案。其中涉及到按鍵中斷模塊、LCD人機(jī)交互顯示界面模塊、LED流水燈控制模塊、PWM步進(jìn)電機(jī)模擬控制模塊。</p><p> 關(guān)鍵字:AT89
3、S51 ,電梯, 脈寬調(diào)制</p><p> Abstract:Currently, more people demand for housing condition, many families have more than an apartment. However,the area we can use is limited, in order to better solving this problem
4、, so many houses are the same as commercial buildings, elevator apartment building into a form that can accommodate more tenants. The user-friendly design for the elevator, it is very important. The design is based o
5、n AT89S51 MCU escalator works as a simulation program. Refering to key interrupt module, LCD int</p><p> Key words:AT89S51 ,Elevator ,PWM</p><p><b> 目 錄</b></p><p>
6、; 1.總體設(shè)計(jì)方案1</p><p> 1.1 硬件設(shè)計(jì)框圖1</p><p> 1.2 軟件設(shè)計(jì)流程圖2</p><p><b> 2.模塊設(shè)計(jì)3</b></p><p> 2.1 電源設(shè)計(jì)3</p><p> 2.1.1 電源相關(guān)元件的選取3</p>
7、;<p><b> ?。?)電容3</b></p><p><b> ?。?)穩(wěn)壓芯片3</b></p><p> 2.2 電梯升降狀態(tài)指示燈4</p><p> 3.硬件電路設(shè)計(jì)5</p><p> 3.1 原理圖5</p><p> 3
8、.2 PCB圖5</p><p> 4.軟件程序代碼6</p><p> 4.1 相關(guān)頭文件6</p><p> 4.2 主程序代碼9</p><p><b> 5.設(shè)計(jì)總結(jié)14</b></p><p><b> 6.參考文獻(xiàn)15</b></
9、p><p><b> 前言</b></p><p> 隨著經(jīng)濟(jì)的發(fā)展,人們對住房的需求量越來越多,很多家庭都不止一套住房。但是,我國的住房面積有限,為了更好的解決這一問題,于是,很多住房都像商務(wù)建筑一樣,修建成電梯公寓的形式,這樣便能容納更多的住戶。對于電梯的人性化設(shè)計(jì),也顯得很重要了。</p><p> 本次設(shè)計(jì),就是基于AT89S51系列
10、單片機(jī)的自動(dòng)電梯工作的模擬方案。其中設(shè)計(jì)到按鍵中斷模塊、LCD人機(jī)交互顯示界面模塊、LED流水燈控制模塊、PWM步進(jìn)電機(jī)模擬控制模塊。</p><p> 首先,通過按鍵和LCD1602設(shè)置電梯運(yùn)行環(huán)境,比如說總共樓層設(shè)置、報(bào)警設(shè)置等(還可以新增其他功能,即是對系統(tǒng)進(jìn)行升級)。然后,電梯開始運(yùn)動(dòng),電梯每隔20秒上(或下)一層樓,每到一層樓,停留20秒。通過流水燈方向,可以判斷電梯的上下情況,通過LCD1602的顯
11、示內(nèi)容,可以得到電梯當(dāng)前所到的樓層。</p><p> 本次設(shè)計(jì)沒有使用任何已被別人寫好的程序或者電路模塊,所有工程文件都是從開始創(chuàng)建到最終定稿的步驟完成的,也許有很多不足之處,但通過不斷升級、改進(jìn),相信會做到更好的。</p><p><b> 1.總體設(shè)計(jì)方案</b></p><p> 1.1 硬件設(shè)計(jì)框圖</p><
12、;p> 圖1 硬件結(jié)構(gòu)框圖</p><p> 硬件結(jié)構(gòu)相對簡單,除最小系統(tǒng)外,其他外設(shè)包括:LCD1602顯示(負(fù)責(zé)設(shè)置電梯工作環(huán)境時(shí)人機(jī)交互界面和當(dāng)前樓層的顯示)、帶方向箭頭的LED燈群(一流水燈得形式負(fù)責(zé)指示電梯升降狀態(tài))、電機(jī)模擬燈(兩個(gè)燈分別模擬PWM控制電梯電機(jī)的正反轉(zhuǎn))以及一個(gè)簡單的按鍵電路(負(fù)責(zé)電機(jī)的工作環(huán)境的初始化設(shè)置。</p><p> 1.2 軟件設(shè)計(jì)流程
13、圖</p><p><b> 圖2 程序流程圖</b></p><p><b> 2.模塊設(shè)計(jì)</b></p><p><b> 2.1 電源設(shè)計(jì)</b></p><p> 2.1.1 電源相關(guān)元件的選取</p><p><b>
14、(1)電容</b></p><p> 電路設(shè)計(jì)中,在電源的設(shè)計(jì)部分時(shí),都要考慮到電源的穩(wěn)定性。在一般與電網(wǎng)相連的情況下,都會有各種各樣的干擾信號,為了保證電路能夠正常工作,我們需要對電源的輸入輸出部分進(jìn)行濾波、整流。因而會用到旁路、去耦電容。通過計(jì)算,選取104或者105電容,效果較好。另外,為了使輸出端的信號更平滑,可以加上22UF~220UF的電容。</p><p>&l
15、t;b> (2)穩(wěn)壓芯片</b></p><p> 在很多簡單的電源電路,使用5V穩(wěn)壓芯片7805的居多,但這塊芯片有很多不足之處,很重要的一個(gè)因素就是它的輸入端要求比輸出端高3V以上的電壓才能正常工作。在實(shí)際電路中,要滿足8V的電壓輸入,似乎有些繁瑣。所以本次設(shè)計(jì)采用了三端可調(diào)穩(wěn)壓管LM317作為電源部分的穩(wěn)壓芯片。可以通過一個(gè)10K的變阻器調(diào)節(jié)輸出端的電壓,如圖3。</p>
16、<p> 圖 3 穩(wěn)壓模塊電路圖</p><p> 輸出電壓可通過公式進(jìn)行運(yùn)算。因?yàn)榭刂圃谛∮?00uA時(shí),這一項(xiàng)的誤差可以忽略不計(jì)。因此,調(diào)節(jié)R2與R1的關(guān)系就可得到我們在應(yīng)用中需要的輸出電壓。加上濾波電容,就是我們的電源模塊,如圖4。</p><p><b> 圖4 電源電路圖</b></p><p> 2.2 電梯
17、升降狀態(tài)指示燈</p><p> 圖5 升降狀態(tài)指示燈群</p><p> 當(dāng)電梯向上或者向下運(yùn)動(dòng)的時(shí)候,都會有對應(yīng)的帶方向的箭頭LED燈群像流水燈一樣動(dòng)態(tài)顯示。如上圖,豎直一列的6個(gè)LED燈兩旁的箭頭燈都是由另外的IO口控制共同控制的。這個(gè)效果在實(shí)物工作的時(shí)候,就很容易觀賞到。再看每個(gè)箭頭部分,其限流保護(hù)電阻的阻值略有不同,這是因?yàn)橥瑯拥腎O口,驅(qū)動(dòng)的LED的數(shù)量卻不同,為了盡量是
18、每只LED發(fā)光強(qiáng)度一樣,所以選擇的電阻有所差異。</p><p><b> 3.硬件電路設(shè)計(jì)</b></p><p><b> 3.1電路原理圖</b></p><p><b> 圖6 電路原理圖</b></p><p> 3.2 電路PCB圖</p>
19、<p> 圖7 電路PCB圖</p><p><b> 4.軟件程序代碼</b></p><p><b> 4.1頭文件程序</b></p><p> 軟件代碼部分自己寫的頭文件代碼只包含一個(gè)與LCD1602顯示的H文件-“1602C51.h”。</p><p><b>
20、; 詳細(xì)代碼內(nèi)容如下:</b></p><p> //使用該1602驅(qū)動(dòng)庫文件時(shí),須調(diào)用包含文件<reg51.h>或<regx52.h></p><p> #define dataport P0 //定義相關(guān)端口和引腳</p><p> sbit RS=P2^3;</p><p&
21、gt; sbit RW=P2^4;</p><p> sbit EN=P2^5;</p><p> sbit busy_flag=P0^7;</p><p> void delay(void)</p><p><b> {</b></p><p> unsigned char i;&l
22、t;/p><p> for(i=0;i<140;i++);</p><p><b> }</b></p><p> /*void check_busy(void)//查忙信號函數(shù) </p><p><b> { </b></p><p><b&
23、gt; do{</b></p><p> dataport=0xff;</p><p><b> RS=0;</b></p><p><b> RW=1; </b></p><p><b> EN=1; </b></p><p>
24、;<b> EN=0;</b></p><p><b> delay();</b></p><p> } while(busy_flag);</p><p><b> } */</b></p><p> void command(unsigned char dat)
25、 //指令操作函數(shù)</p><p><b> {</b></p><p><b> RS=0;</b></p><p><b> RW=0;</b></p><p> dataport=dat;</p><p><b>
26、EN=1;</b></p><p><b> EN=0;</b></p><p><b> delay();</b></p><p><b> }</b></p><p> void init(void)//LCD1602初始化</
27、p><p><b> { </b></p><p> command(0x38);</p><p><b> delay();</b></p><p> command(0x38);</p><p><b> delay();</b><
28、/p><p> command(0x38);</p><p><b> delay();</b></p><p> command(0x38);</p><p><b> delay();</b></p><p> command(0x18);</p>&
29、lt;p><b> delay();</b></p><p> command(0x06);</p><p><b> delay();</b></p><p> command(0x0c);</p><p><b> delay();</b></p>
30、;<p> command(0x01);</p><p><b> delay();</b></p><p> command(0x01);</p><p><b> delay();</b></p><p><b> }</b></p>
31、<p> void display_addr(unsigned char x,unsigned char y) //顯示字符時(shí)須//調(diào)用顯示地址初始值、設(shè)置函數(shù)</p><p><b> {</b></p><p><b> if(x<16)</b></p><p><b> {<
32、/b></p><p> if(y==0) x=0x80+x;</p><p> else x=0xc0+x;</p><p> command(x);</p><p><b> }</b></p><p><b> }</b></p>
33、<p> void w_char(unsigned char dat) //顯示字符</p><p><b> {</b></p><p> //check_busy();</p><p><b> RS=1;</b></p><p><b> RW=0
34、;</b></p><p> dataport=dat; </p><p><b> EN=1;</b></p><p><b> EN=0; </b></p><p><b> delay();</b></p><p><b
35、> }</b></p><p> void w_str(unsigned char x,unsigned char y,unsigned char *s) //顯示字</p><p><b> //符串</b></p><p><b> {</b></p><p> d
36、isplay_addr(x,y);</p><p> while(*s!='\0')</p><p><b> {</b></p><p> w_char(*(s++));</p><p><b> }</b></p><p><b> }
37、</b></p><p><b> 4.2 主程序代碼</b></p><p> #include"regx52.h"</p><p> #include"1602C51.h"</p><p> #define U8 unsigned char</p>
38、;<p> #define U16 unsigned int</p><p> #define floor_init 50 // Default the numbers of floors</p><p> #define LEDS_PORT P1 // defined for describing elevator's status</p
39、><p> sbit sw_up=P2^7; // defined for describing elevator's direction and low level is effective</p><p> sbit sw_down=P2^6; // defined for describing elevator's direction and
40、 low level is effective</p><p> sbit LED1=P2^0; // defined for describing motor to step forward</p><p> sbit LED2=P2^1; // defined for describing motor to step backward</p>
41、<p> U8 *str="0123456789"; //define string str for LCD1602's displaying</p><p> U8 key_1;//record the value of keys</p><p> bit key_2=0;</p><p> U8 flo
42、ors=floor_init; //max value is floor_init</p><p> U8 floors_counter=1; //max value is floors</p><p> U8 LED_flow=0; //max value is 7 for there are 7 status LEDS</p><p> U8 c
43、lock_counter=80*floor_init;//within 20 seconds past a floor and pause for 20 seconds</p><p> bit clock_flag=0;</p><p> bit motor_PWM_flag=0;</p><p> bit up_down_flag=0; //‘0’for
44、 up , '1'for down</p><p> bit motor_pause=0;</p><p> void delay_nms(U8 i)</p><p><b> {</b></p><p><b> U8 j;</b></p><p>
45、<b> U16 k;</b></p><p> for(j=0;j<i;j++)</p><p> for(k=0;k<1000;k++);</p><p><b> }</b></p><p> void lcd_disp(void)</p><p>
46、;<b> {</b></p><p> switch(key_1)</p><p><b> {</b></p><p><b> case(0):</b></p><p><b> {</b></p><p> w_
47、str(0,0,"current floor is");</p><p> display_addr(0,1);</p><p> w_char('~');</p><p> w_char(str[floors_counter/10]);</p><p> w_char(str[floors_cou
48、nter%10]);</p><p> w_str(4,1,"key1 to set");</p><p><b> break;</b></p><p><b> }</b></p><p><b> case(1):</b></p>
49、<p><b> {</b></p><p> if(key_2!=key_2)floors++;</p><p> if(floors==(floor_init+1))floors=1;</p><p> w_str(0,0,"set floors' No. ");</p><
50、;p> w_str(0,1,"floors No. is:");</p><p> display_addr(15,1);</p><p> w_char(str[floors/10]);</p><p> w_char(str[floors%10]);</p><p><b> break;&l
51、t;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> main(void)</p><p><b> {</b></p&
52、gt;<p><b> IT0=1;</b></p><p><b> IT1=1;</b></p><p> TMOD=0x01;</p><p> TH0=(65536-500)/256;</p><p> TL0=(65536-500)%256;</p>
53、<p> TMOD=0x10;</p><p> TH1=(65536-200)/256;</p><p> TL1=(65536-200)%256;</p><p><b> ET1=1;</b></p><p><b> ET0=1;</b></p><
54、p><b> TR1=1;</b></p><p><b> EX0=1;</b></p><p><b> EX1=1;</b></p><p><b> EA=1;</b></p><p> init(); //LCD
55、1602 initialized</p><p> key_1=key_2=0;</p><p><b> while(1)</b></p><p><b> {</b></p><p> lcd_disp();</p><p> if(motor_pause==1
56、)</p><p><b> {</b></p><p> if(up_down_flag==0) //up</p><p><b> {</b></p><p> sw_down=1;</p><p><b> sw_up=0;</b>
57、</p><p> LEDS_PORT=0xff<<LED_flow;</p><p><b> LED2=0;</b></p><p> LED1=motor_PWM_flag;</p><p><b> }</b></p><p> else
58、 //down</p><p><b> { </b></p><p><b> sw_up=1;</b></p><p> sw_down=0;</p><p> LEDS_PORT=0x3f>>(8-LED_flow);</p><p>
59、<b> LED1=0;</b></p><p> LED2=motor_PWM_flag;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p>&
60、lt;p><b> {</b></p><p><b> LED1=1;</b></p><p><b> LED2=1;</b></p><p><b> }</b></p><p><b> }</b></
61、p><p><b> }</b></p><p> void t0(void) interrupt 1</p><p><b> {</b></p><p> TH0=(65536-500)/256;</p><p> TL0=(65536-500)%256;</
62、p><p><b> TF0=0; </b></p><p> clock_flag=~clock_flag; //5ms signal used when it is nessary</p><p> LED_flow++;</p><p> if(LED_flow==7)LED_flow=0;</p
63、><p> clock_counter++;</p><p> if(clock_counter==80*floors)</p><p> clock_counter=0;</p><p> if((clock_counter%80)/40)//</p><p> motor_pause=0;</p>
64、<p> else motor_pause=1;</p><p> if(!(clock_counter%80))floors_counter++;</p><p> if(floors_counter==(floors+1))</p><p><b> {</b></p><p> floors
65、_counter=1;</p><p> up_down_flag=~up_down_flag;</p><p><b> }</b></p><p><b> }</b></p><p> void t1(void) interrupt 3</p><p>&l
66、t;b> {</b></p><p> TH1=(65536-200)/256;</p><p> TL1=(65536-200)%256;</p><p><b> TF1=0;</b></p><p> motor_PWM_flag=~motor_PWM_flag;</p>
67、<p><b> }</b></p><p> void key1(void) interrupt 0</p><p><b> {</b></p><p> delay_nms(15);</p><p><b> }</b></p><
68、p> void key1(void) interrupt 0</p><p><b> {</b></p><p> delay_nms(15);</p><p><b> IE0=0;</b></p><p> if(key_1<1)</p><p>
69、<b> key_1++;</b></p><p> else key_1=0;</p><p><b> }</b></p><p> void key2(void) interrupt 2</p><p><b> {</b></p><p&g
70、t; delay_nms(15);</p><p><b> IE1=0;</b></p><p> key_2=~key_2;</p><p><b> }</b></p><p><b> 5.設(shè)計(jì)總結(jié)</b></p><p> 本次課程
71、設(shè)計(jì)的時(shí)間并不充裕,因?yàn)橹八募壙荚嚮ㄙM(fèi)了大量時(shí)間,而且各科考試也即將來臨,所以用在課程設(shè)計(jì)上的時(shí)間并不多。因此這次能夠順利完成課程設(shè)計(jì)歸功于××教授以及實(shí)驗(yàn)指導(dǎo)老師××提供的大量的幫助與指導(dǎo)顯得尤為的重要。在這次課程設(shè)計(jì)中,我學(xué)到了很多以前未能學(xué)到的東西,比如說團(tuán)隊(duì)精神。作為組員,我還需要完成自己的任務(wù)。在這次課程設(shè)計(jì)中,我負(fù)責(zé)的是為系統(tǒng)設(shè)計(jì)原理圖,編寫源程序代碼。如何提高硬件與軟件之間的兼容性
72、,如何保證硬件與軟件的穩(wěn)定性,也是我面臨的問題。</p><p> 其次,作為一個(gè)組長,我時(shí)時(shí)刻刻都在為如何調(diào)度組員任務(wù)已經(jīng)搜集他們的意見而努力著。當(dāng)我們遇到新的問題時(shí),我必須要第一時(shí)間搜集起來,然后及時(shí)地上網(wǎng)搜索相關(guān)答案,或者尋求老師幫助以解決問題。對于各組員所做的任務(wù),我還需要審核與協(xié)助修改,尤其是負(fù)責(zé)書寫報(bào)告的同學(xué),他所給出的理論解釋、功能描述是否合理,是否清楚,這些問題都需要認(rèn)真的審核。</p&g
73、t;<p> 最后,再次感謝××老師和××教授提供的幫助,感謝各位組員的積極配合和熱心參與。</p><p><b> 6.參考文獻(xiàn)</b></p><p> [1]康華光,張林等.電子技術(shù)基礎(chǔ)模擬部分[M].高等教育出版社,2003.5.120-135.</p><p> [2]閻
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯課程設(shè)計(jì)---電梯模擬控制系統(tǒng)設(shè)計(jì)
- 模擬電梯微機(jī)原理課程設(shè)計(jì)
- c語言課程設(shè)計(jì)-自動(dòng)提款模擬系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--電梯模擬
- 四層電梯自動(dòng)控制課程設(shè)計(jì)
- 課程設(shè)計(jì)---四層電梯plc控制系統(tǒng)的模擬
- 四層電梯自動(dòng)控制系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--電梯模擬
- plc課程設(shè)計(jì)---四層電梯自動(dòng)控制
- 四層電梯自動(dòng)控制plc課程設(shè)計(jì)
- 四層電梯自動(dòng)控制系統(tǒng) 課程設(shè)計(jì)報(bào)告
- 四層電梯自動(dòng)控制plc課程設(shè)計(jì)
- 電梯課程設(shè)計(jì)-- 基于plc的電梯控制系統(tǒng)設(shè)計(jì)
- plc電梯和自動(dòng)混洗課程設(shè)計(jì)-- 三層電梯自動(dòng)控制
- _課程設(shè)計(jì)(論文)-plc控制電梯系統(tǒng)設(shè)計(jì)
- plc課程設(shè)計(jì)報(bào)告---四層電梯控制系統(tǒng)的模擬
- 電梯控制課程設(shè)計(jì)
- 電梯控制課程設(shè)計(jì)
- 電梯控制課程設(shè)計(jì)
- 電梯課程設(shè)計(jì)報(bào)告
評論
0/150
提交評論