詳解基于單片機(jī)的四層電梯控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)赘阀,Proteus仿真和程序代碼

獲取全套設(shè)計(jì)資源,請(qǐng)見(jiàn)后文說(shuō)明~

設(shè)計(jì)要求

  1. 電梯設(shè)置內(nèi)外鍵脑奠,按下任一鍵基公,電梯控制系統(tǒng)響應(yīng);
  2. 電梯樓層和升降狀態(tài)通過(guò)數(shù)碼管宋欺、LED燈實(shí)時(shí)顯示;
  3. 具有緊急停止和聲光報(bào)警功能轰豆,保護(hù)乘客安危;
  4. 使用步進(jìn)電機(jī)模擬電梯升降,順時(shí)轉(zhuǎn)動(dòng)為升齿诞,逆時(shí)為降酸休;
  5. 電梯無(wú)人時(shí),默認(rèn)停留在一樓掌挚;

系統(tǒng)概述
本系統(tǒng)以51單片機(jī)作為控制核心雨席,實(shí)時(shí)讀取電梯內(nèi)外部操作按鍵菩咨,及時(shí)響應(yīng)乘坐要求吠式。數(shù)碼管和LED指示燈,分別表示當(dāng)前電梯所在樓層和升降狀態(tài)抽米;步進(jìn)電機(jī)模擬電梯運(yùn)行過(guò)程(電機(jī)順時(shí)針轉(zhuǎn)動(dòng)為升特占,逆時(shí)針為降)。

同時(shí)云茸,本系統(tǒng)具有電梯緊急停止和報(bào)警功能是目。電梯運(yùn)行過(guò)程中,按下報(bào)警鍵标捺,報(bào)警燈閃爍懊纳,蜂鳴器鳴叫,電梯停止運(yùn)行亡容。長(zhǎng)按啟動(dòng)鍵后嗤疯,解除報(bào)警,電梯恢復(fù)運(yùn)行闺兢;

按下緊急停止按鍵茂缚,電梯急停,數(shù)碼管顯示當(dāng)前急停樓層,上行燈和下行燈均熄滅脚囊,表明電梯處于不可用狀態(tài)龟糕。

需要注意的是,啟動(dòng)鍵用于模擬電梯關(guān)門悔耘,在電梯內(nèi)部按下要去的樓層后讲岁,再按下啟動(dòng)鍵,電梯才會(huì)開始運(yùn)行淮逊。

整個(gè)系統(tǒng)構(gòu)建如下所示:


系統(tǒng)框圖.jpg

仿真電路圖

仿真電路圖.jpg

操作說(shuō)明.jpg

仿真分析
雙擊單片機(jī)催首,加載C程序文件夾里的elevator.hex,運(yùn)行仿真泄鹏,結(jié)果如下郎任。電梯停靠在1樓备籽,上行燈點(diǎn)亮舶治,等待乘客乘坐;

電梯初始狀態(tài)车猬,兔姑停靠1樓位置

假設(shè)4樓住戶要到2樓,4樓住戶在電梯外部按下“下”的按鍵后珠闰,電梯從1樓開始上升惜浅,上行燈點(diǎn)亮,步進(jìn)電機(jī)順時(shí)轉(zhuǎn)動(dòng)伏嗜,數(shù)碼管依次顯示樓層坛悉;


電梯上升過(guò)程中,到達(dá)3樓位置

到達(dá)4樓后承绸,步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng)裸影,數(shù)碼管顯示數(shù)字4,同時(shí)黃色下行燈點(diǎn)亮军熏,表明電梯將開始下降轩猩;


電梯到達(dá)4樓位置

4樓住戶進(jìn)入電梯,按下電梯內(nèi)部按鍵2F后荡澎,再按下啟動(dòng)鍵(模擬電梯關(guān)門)均践,電梯運(yùn)行,步進(jìn)電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)摩幔;


電梯到達(dá)2樓位置

報(bào)警與急停
在電梯運(yùn)行的任何時(shí)刻彤委,按下電梯內(nèi)部報(bào)警按鈕,紅色LED報(bào)警燈點(diǎn)亮热鞍,蜂鳴器鳴叫葫慎,電梯停止在當(dāng)前樓層衔彻,步進(jìn)電機(jī)也停止轉(zhuǎn)動(dòng);長(zhǎng)按啟動(dòng)鍵偷办,警報(bào)解除艰额,電梯恢復(fù)運(yùn)行;

電梯在2樓位置報(bào)警

出現(xiàn)意外情況時(shí)椒涯,按下緊急停止按鍵后柄沮,電梯立即停止,數(shù)碼管顯示當(dāng)前急停樓層废岂,上行燈或下行燈都熄滅祖搓,表明電梯此時(shí)不可用,同時(shí)步進(jìn)電機(jī)停轉(zhuǎn)湖苞;此時(shí)只有重新運(yùn)行系統(tǒng)才可解除急停拯欧;


電梯在3樓位置急停

部分C代碼

#include <REG52.H>
#include <INTRINS.H>

unsigned char ucMotorDrvPuls; //電機(jī)運(yùn)轉(zhuǎn)時(shí)初始值
unsigned char FORREV=1; //1表示上行,0表示下行
unsigned char STOPCUR=0;//1電梯停留在當(dāng)前層财骨,0不停留
unsigned char CURFLR=1; //當(dāng)前所在樓層
unsigned char count=0;  //累計(jì)到COUNT即表示運(yùn)行過(guò)一層

#define UCTIMES 8 //設(shè)置電機(jī)轉(zhuǎn)速
#define OUTPUT P2 //電機(jī)驅(qū)動(dòng)信號(hào)口
#define COUNT 8   //電機(jī)每循環(huán)8次表示電梯經(jīng)過(guò)一層樓

sbit UP1=P3^4;
sbit DOWN2=P3^3;
sbit UP2=P3^2;
sbit DOWN3=P3^1;
sbit UP3=P3^0;
sbit DOWN4=P1^7;
sbit FLOOR1=P1^0;
sbit FLOOR2=P1^1;
sbit FLOOR3=P1^2;
sbit FLOOR4=P1^3;
sbit START=P1^4;
sbit STOP=P1^5;
sbit ALARM=P1^6;

//報(bào)警位
sbit alarmBit=P0^4;
sbit upLight=P0^5;
sbit downLight=P0^6;

void time(unsigned int ucMs);//延時(shí)單位:ms
void outPress();//按下電梯外按鈕
unsigned char inPress();//按下電梯內(nèi)樓層按鈕
unsigned char elevator();//到達(dá)某一層返回1镐作,否則返回0
void storeUP(unsigned char);//存儲(chǔ)當(dāng)前所有上行請(qǐng)求
void storeDOWN(unsigned char);//存儲(chǔ)當(dāng)前所有下行請(qǐng)求

//延時(shí)函數(shù)
void time(unsigned int ucMs);

//初始化所有燈
void initLights(void);

//設(shè)置當(dāng)前樓層
void setFloor(int floor);

//設(shè)置電梯向上運(yùn)行燈
void setUpLight();

//設(shè)置電梯向下運(yùn)行燈
void setDownLight();

//設(shè)置電梯停止運(yùn)行燈
void setStopLight();

//設(shè)置電梯向上運(yùn)行燈
void setAlarmLight();

//設(shè)置電梯報(bào)警燈和喇叭
void setAlarmLight();

//關(guān)閉電梯報(bào)警燈和喇叭
void offAlarmLight();


//報(bào)警開關(guān)
int alarmSwitch=1;

unsigned char UP_req[5]={0,0,0,0,0}; //上行請(qǐng)求
unsigned char DOWN_req[5]={0,0,0,0,0}; //下行請(qǐng)求

//電機(jī)定位
void position(void)
{
  OUTPUT=0x01|(P2&0xf0);time(200);
  OUTPUT=0x02|(P2&0xf0);time(200);
  OUTPUT=0x04|(P2&0xf0);time(200);
  OUTPUT=0x08|(P2&0xf0);time(200);
  ucMotorDrvPuls=0x11;
  OUTPUT=0x01|(P2&0xf0);    
  
}

/****************************************/
/*                 主函數(shù)               */
/****************************************/
void main(void)
{ 
  time(100);
  initLights();
  position();//電機(jī)定位
  ucMotorDrvPuls=0x11;
  OUTPUT=0x00|(P2&0xf0);//電機(jī)停止 
  setFloor(CURFLR);
  setUpLight();
  time(100);
  
  while(1)//主循環(huán)
  {
      outPress();//按下電梯外按鈕
      while(STOPCUR==1)//電梯在當(dāng)前層,電梯不動(dòng)隆箩,可以繼續(xù)接受請(qǐng)求
      {
        outPress();
        inPress();
      }  

      if(inPress())//按下電梯內(nèi)樓層按鈕
      {
        while(START)//等待啟動(dòng)按鍵按下该贾,電梯不動(dòng),可以繼續(xù)接受請(qǐng)求
        {
          outPress();
          inPress();
        }
      }

      while(1)//電機(jī)運(yùn)轉(zhuǎn)循環(huán)
      {
        if(UP_req[1]==0&&UP_req[2]==0&&UP_req[3]==0&&
        DOWN_req[2]==0&&DOWN_req[3]==0&&DOWN_req[4]==0) 
        {
          break;//沒(méi)有請(qǐng)求捌臊,跳出電機(jī)運(yùn)轉(zhuǎn)循環(huán)杨蛋,電梯不動(dòng)
        }
          
        if(FORREV)//上行 
        { 
          setUpLight();//上行燈亮

          if(STOPCUR==1){break;}//

          if(elevator())//往上到達(dá)某一層
          {
            if(CURFLR==4) {setDownLight();break;}//到達(dá)四樓
          }
          OUTPUT=(ucMotorDrvPuls&0x0f)|(P2&0xf0);
          ucMotorDrvPuls=_crol_(ucMotorDrvPuls,1);
        }
        if(!FORREV)//下行
        {
          setDownLight();//下行燈亮
;
          if(STOPCUR==1){break;}

          if(elevator())//往下到達(dá)某一層
          {
            if(CURFLR==1) {setUpLight();break;}//到達(dá)一樓
          }
          OUTPUT=(ucMotorDrvPuls&0x0f)|(P2&0xf0);
          ucMotorDrvPuls=_cror_(ucMotorDrvPuls,1);
        }   
    
        outPress();//按下電梯外按鈕
        //if(inPress())//按下電梯內(nèi)樓層按鈕
        //{
         // while(START)//等待啟動(dòng)按鍵按下
          //{
          //  outPress();
            inPress();//電梯運(yùn)行時(shí),內(nèi)部按鈕按下理澎,無(wú)需按啟動(dòng)按鈕
         // }
        //}

        time(380-UCTIMES*16);

      }//end while-電機(jī)運(yùn)轉(zhuǎn)循環(huán)
    
    OUTPUT=0x00|(P2&0xf0);//電機(jī)停止逞力,有請(qǐng)求時(shí)按下啟動(dòng)按鈕啟動(dòng)

  }//end while-主循環(huán)   
}

8層電梯控制系統(tǒng)設(shè)計(jì)
為給大家更多參考,現(xiàn)提供另一套蔣宇智的8層電梯控制系統(tǒng)原創(chuàng)設(shè)計(jì)矾端,其仿真電路如下所示掏击。

8層電梯控制系統(tǒng)

操作說(shuō)明

8層電梯仿真分析
按下電梯外部按鍵8F卵皂,模擬8層住戶需要電梯秩铆,8F LED指示燈點(diǎn)亮,數(shù)碼管從1到8依次顯示灯变,電梯上行箭頭點(diǎn)亮殴玛;

電梯上行過(guò)程中,途徑5樓

電梯到達(dá)8樓后添祸,上行箭頭閃爍后熄滅滚粟,提示音嗶兩聲,表示電梯到達(dá)8樓刃泌;


電梯到達(dá)8樓

假設(shè)8樓住戶要去5樓凡壤,按下電梯內(nèi)部按鍵5F署尤,5F LED指示燈點(diǎn)亮,數(shù)碼管從8到5依次顯示亚侠,模擬電梯下行曹体,同時(shí)下行箭頭點(diǎn)亮;


電梯下行過(guò)程中硝烂,途徑6樓

電梯到達(dá)5樓后箕别,5F LED指示燈熄滅,同樣滞谢,下行箭頭閃爍后熄滅串稀,提示音嗶兩聲,表示電梯到達(dá)5樓狮杨;


電梯達(dá)到5樓

資源內(nèi)容有
(1)四層電梯Proteus仿真文件母截;
(2)C程序;
(3)參考資料橄教;
(4)系統(tǒng)框圖微酬;
(5)設(shè)計(jì)2:八層電梯控制;

資源截圖

全套資源

四層電梯仿真文件

C程序文件

8層電梯資源

8層資源

仿真文件

程序文件

獲取4層和8層電梯控制系統(tǒng)設(shè)計(jì)的全套資源颤陶,Proteus仿真颗管、C程序等
請(qǐng)搜索關(guān)注我的公眾號(hào):交院小智

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市滓走,隨后出現(xiàn)的幾起案子垦江,更是在濱河造成了極大的恐慌,老刑警劉巖搅方,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件比吭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡姨涡,警方通過(guò)查閱死者的電腦和手機(jī)衩藤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涛漂,“玉大人赏表,你說(shuō)我怎么就攤上這事⌒僬蹋” “怎么了瓢剿?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)悠轩。 經(jīng)常有香客問(wèn)我间狂,道長(zhǎng),這世上最難降的妖魔是什么火架? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任鉴象,我火速辦了婚禮忙菠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纺弊。我一直安慰自己只搁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布俭尖。 她就那樣靜靜地躺著氢惋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稽犁。 梳的紋絲不亂的頭發(fā)上焰望,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音已亥,去河邊找鬼熊赖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛虑椎,可吹牛的內(nèi)容都是我干的震鹉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼捆姜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼传趾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起泥技,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浆兰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后珊豹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體簸呈,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年店茶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜕便。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贩幻,死狀恐怖轿腺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情段直,我是刑警寧澤吃溅,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布溶诞,位于F島的核電站鸯檬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏螺垢。R本人自食惡果不足惜喧务,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一赖歌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧功茴,春花似錦庐冯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至玲昧,卻和暖如春栖茉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孵延。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工吕漂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尘应。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓惶凝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親犬钢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苍鲜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345