欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 51單片機(jī)電梯控制 [打印本頁(yè)]

作者: hsj199668    時(shí)間: 2018-5-7 10:39
標(biāo)題: 51單片機(jī)電梯控制
第二章 電梯控制的原理
2.1基于MSC-51單片機(jī)的簡(jiǎn)單電梯控制
方案一:為了更有效的進(jìn)行電梯控制,現(xiàn)在使用最左邊的數(shù)碼管表示電梯上升和下降狀態(tài),使用“∧”表示上升狀態(tài),是同“∨“表示下降狀態(tài),使用另外一個(gè)一個(gè)數(shù)碼管表示電梯此時(shí)所在的樓層,使用按鍵K1和K2來控制電梯上升或者下降的狀態(tài)。
在每層樓之后需要進(jìn)行判斷上升或者下降。如果是在上升過程中,應(yīng)先判斷是否繼續(xù)上升,然后在判斷是否下降。如果是在下降過程中,應(yīng)先判斷是否繼續(xù)下降,在判斷是否上升。在上升改變?yōu)橄陆禒顟B(tài)時(shí),或者下降改變?yōu)樯仙隣顟B(tài)時(shí)。
數(shù)碼管的狀態(tài)應(yīng)該相應(yīng)改變。
方案二:依然使用最左邊的數(shù)碼管表示電梯上升和下降狀態(tài),使用“∧”表示上升狀態(tài),是同“∨“表示下降狀態(tài),使用另外一個(gè)一個(gè)數(shù)碼管表示電梯此時(shí)所在的樓層,不過此時(shí)又八個(gè)按鍵來代表電梯的層數(shù),使用k11代表1樓,k12代表2樓,k13代表3樓,k14代表4樓,k21代表5樓,k22代表6樓,k23代表7樓,k24代表8樓。
如果默認(rèn)電梯在一樓,比如按下k22按鍵,數(shù)碼管則由1變化到6,此時(shí)是上升狀態(tài)。然后數(shù)碼管就顯示6,直至再次按鍵。如果按的是k13,則數(shù)碼管從6變化到3,此時(shí)是下降狀態(tài)。數(shù)碼管顯示3,直到再次按鍵才改變當(dāng)前狀態(tài)。
2.2方案一的討論
2.2.1方案一的優(yōu)點(diǎn)
1.方案一的思路十分清晰明了。僅有由1至8的上升狀態(tài)或者8至1的下降狀態(tài),程序書寫比較簡(jiǎn)單。
2.方案一對(duì)于初學(xué)者來說比較友好,會(huì)基礎(chǔ)C語(yǔ)言語(yǔ)句以及51單片機(jī)定時(shí)器的使用方法就可以比較輕松的做出程序。
    3.因?yàn)樯仙^程中,僅計(jì)數(shù)8次,定時(shí)器的參數(shù)就可以使用一個(gè)宏定義的常數(shù)代替,定時(shí)器的程序也可以大大化簡(jiǎn)。
2.2.2方案一的缺點(diǎn)
方案一最大的缺點(diǎn)是對(duì)于電梯的運(yùn)行過程過于簡(jiǎn)化,僅僅考慮了上升或者下降的兩個(gè)過程。而實(shí)際的電梯運(yùn)行時(shí),僅有在有人使用的時(shí)候才會(huì)運(yùn)行,不然是會(huì)一直停靠在某層樓的。為了簡(jiǎn)化過程編寫程序的便利而犧牲了電梯本來可以實(shí)現(xiàn)的功能,是這個(gè)方案最大的缺陷。
2.3方案二的討論
2.3.1方案的優(yōu)點(diǎn)
1.方案二是方案一的強(qiáng)化改良版本,基本可以實(shí)現(xiàn)真實(shí)電梯的功能
2.方案二可以按照所需要去的樓層數(shù)的不同而數(shù)碼管的變化不同,這是方案一所無法達(dá)到的。
3.方案二的思路也比較清晰,默認(rèn)電梯在一樓,去了6樓之后便停在6樓,然后從6樓在去其他樓層,在停靠在某個(gè)樓層。
2.3.2方案二的缺點(diǎn)
方案二最大的缺點(diǎn)是雖然思路清晰,但是編寫程序的過程還是比較復(fù)雜的。首先默認(rèn)電梯在某樓,將此樓作為參數(shù)進(jìn)入子函數(shù)1中,然后對(duì)8個(gè)按鍵哪個(gè)按鍵按下進(jìn)行判斷,然后進(jìn)入子程序2中,先判斷要去的樓層和現(xiàn)在所在的樓層的大小關(guān)系,有三種情況,對(duì)應(yīng)三個(gè)條件語(yǔ)句。然后執(zhí)行完子函數(shù)2之后,在將去的層數(shù)作為參數(shù)再次進(jìn)入子函數(shù)1中。而且因?yàn)樗菍硬煌〞r(shí)器的參數(shù)也會(huì)相應(yīng)改變,編寫程序比較繁雜。
2.4兩種方法的比較以及選擇
根據(jù)實(shí)際編寫程序者的水平以及對(duì)于操作者水平的可行性來說,方案一對(duì)于新手來說相對(duì)友好了很多,不需要考慮過于復(fù)雜的情況只需要想一個(gè)相對(duì)來說很理想,電梯只從1樓上升到8樓,在每層樓只停相同的時(shí)間。而方案二則對(duì)于編寫者的水平要求就要高了很多,對(duì)于新手來說在兩天到三天過程幾乎是個(gè)不可能完成的任務(wù),所以還是決定選擇方案一。

第三章硬件電路設(shè)備及軟件流程代碼
3.1控制芯片簡(jiǎn)介
本設(shè)計(jì)中,AT89S52 是Atmel公司生產(chǎn)的一種低功耗、高性能CMOS 8位微控制器,具有8 位在系統(tǒng)可編程Flash存儲(chǔ)器。AT89S52 使用Atme  公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash 允許程序存儲(chǔ)器在系統(tǒng)可編程,也適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52 為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。  AT89S52 具有PDIP、PLCC、TQFP3 種封裝形式以適用于不同的使用場(chǎng)合。
AT89S52是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),內(nèi)含2k字節(jié)的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和128字節(jié)的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),其擦寫周期約1000次。器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大。AT89S52單片機(jī)的工作電壓范圍較寬,可在2.7V~6V電壓范圍內(nèi)工作。它的工作頻率為0Hz~24MHz,支持降至0Hz的靜態(tài)邏輯操作,并支持兩種可選的節(jié)電工作模式(低功耗空閑和掉電模式),空閑方式下停止CPU的工作,但允許RAM、定時(shí)/計(jì)數(shù)器、串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式下保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。AT89S52還具有兩級(jí)加密程序存儲(chǔ)器,使用者可以根據(jù)需要對(duì)程序進(jìn)行加密,實(shí)現(xiàn)版權(quán)保護(hù)的目的。考慮到在單片機(jī)的很多應(yīng)用中,需要使用發(fā)光二極管(LED)進(jìn)行指示,AT89S52的輸出端口被設(shè)計(jì)成可直接驅(qū)動(dòng)LED,可以省去外加的驅(qū)動(dòng)電路,節(jié)省資源[6]。
AT89S52內(nèi)部資源主要有:2k字節(jié)Flash閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,15個(gè)I/O口線(其中P1是一個(gè)完整的8位雙向I/O口),兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口(可編程串行UART通道),精密模擬比較器,片內(nèi)振蕩器以及時(shí)鐘電路。
AT89S52引腳如圖3.1所示。

主程序流程圖如下圖所示:
圖3.2 主程序流程圖
3.2主程序代碼設(shè)計(jì)
根據(jù)流程圖,設(shè)計(jì)主程序代碼如下:
首先是主函數(shù),主函數(shù)比較簡(jiǎn)單,僅需判斷按鍵k1或者k2是否按下,來判斷對(duì)應(yīng)的上升還是下降的狀態(tài)。
void main()
{
         init();
         while(1)  
        {
            if(k1==0)      //按下K1鍵,啟動(dòng)定時(shí)器,進(jìn)入子函數(shù)up中
           {
               TR0=1;   
                h=1;
            }
            if(h==1)
            {
up();
}
      
             if(k2==0)    //按下K2鍵,啟動(dòng)定時(shí)器,進(jìn)入子函數(shù)down中
            {
               TR0=1;
                h=0;
             }
              if(h==0)
             {
down();
}
         }
}
然后根據(jù)按鍵的結(jié)果進(jìn)入對(duì)應(yīng)的兩個(gè)子函數(shù)up或者down中。
下面就是這兩個(gè)子函數(shù)的程序:
void up()   
{                 
      W1=0;
      P0= DIG4_CODE;    //給右邊的數(shù)碼管附上相應(yīng)的數(shù)字
      delay(1);
      W1=1;
      W2=0;
      P0= DIG1_CODE [0];   //給左邊的數(shù)碼管附上相應(yīng)上升的標(biāo)記。
      delay(1);
      W2=1;
      if(i==7)               //上升到第八層的時(shí)候,停止定時(shí)器
      {TR0=0;}
      j=i+1;
}
void down()
{
      W1=0;
      P0= DIG4_CODE [j-1];    //給右邊的數(shù)碼管附上相應(yīng)的數(shù)字
      delay(1);
      W1=1;
      W2=0;
      P0= DIG1_CODE [1];     //給左邊的數(shù)碼管附上相應(yīng)下降的標(biāo)記
      delay(1);
      W2=1;
      if(j==1)                 //下降到第一層的時(shí)候,停止定時(shí)器
      {TR0=0;}
      i=j-1;
}
第三部分就是定時(shí)器所相對(duì)應(yīng)的函數(shù)。
程序如下:
void time0()interrupt 1         
{
      TH0=(65535-50000)/256;
      TL0=(65535-50000)%256;
      num++;           
      if(num==40)              //計(jì)算一次5ms,40次恰好2S
      {
     num=0;
       j--;
       if(j==0)
        {
j=8;
}
               
     i++;
    if(i==8)               
       {
        i=0;
        }
      }     
}         
3.3功能測(cè)試
經(jīng)過測(cè)試發(fā)現(xiàn)完成了方案一所要完成的功能。
    可以在由一樓上升到八樓過程中,按下下降按鍵則可以改變上升狀態(tài)變?yōu)橄陆禒顟B(tài)。然后在八樓到一樓的下降過程中,按下上升按鍵則可以改變下降狀態(tài)為上升狀態(tài)。在任意樓層按下上升或者下降按鍵,都可以產(chǎn)生相應(yīng)的上升或者下降的狀態(tài)。
這說明此次的實(shí)驗(yàn)比較成功,因?yàn)槌绦虮容^簡(jiǎn)單,使用的功能也比較簡(jiǎn)單讓我比較容易的完成了該實(shí)驗(yàn)。







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1