久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6686|回復: 10
收起左側

基于51單片機控制可上下樓的電梯proteus仿真及程序

  [復制鏈接]
ID:214709 發表于 2017-7-2 10:15 | 顯示全部樓層 |閱讀模式
基于51單片機控制的可上下樓的電梯
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):

0.png 0.png 0.png


單片機源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar code table[]={0x3f,0x06,0x5b,0x4f};
  6. uchar num,temp,busy,flag,uf,df,ref,now,next,setf,floor;
  7. uint tn;
  8. sbit start=P1^0;
  9. sbit F1=P1^1;
  10. sbit F2=P1^2;
  11. sbit F3=P1^3;
  12. sbit UPI=P1^4;
  13. sbit DNI=P1^5;
  14. sbit UPO=P1^6;
  15. sbit DNO=P1^7;
  16. sbit UP1=P3^0;
  17. sbit UP2=P3^1;
  18. sbit DN2=P3^2;
  19. sbit DN3=P3^3;
  20. void display(uchar now);
  21. void delay(uint z);
  22. uchar keyscan();
  23. void pause();
  24. void ocdoor();
  25. void main()
  26. {
  27.     now=1;        //初始化
  28.         flag=1;
  29.         num=0;
  30.         P1=0xff;
  31.         P2=0xfd;
  32.         P3=0x0f;
  33.         TMOD=0x01;//設置為定時器0 方式1
  34.         TH0=0X3C;
  35.         TL0=0XB0;
  36.         EA=1;//CPU允許中斷
  37.         ET0=1;//開定時器0中斷
  38.         while(1)
  39.         {
  40.           display(now);//顯示初始樓層
  41.           if(P2!=0xfc)// 有按鍵按下則掃描
  42.           {
  43.             delay(20);
  44.                 if(P2!=0xfc)
  45.                 {
  46.                   keyscan();}
  47.           }
  48.           
  49. //************************************
  50. //1樓的分析程序
  51.      while(now==1)
  52.          {
  53.           display(now);
  54.           if(UP2==0||F2==0||DN2==0)
  55.           {
  56.            TR0=1;UPI=1;flag=1;floor=2;}//delay(50);UPI=0;開啟定時到2
  57.            else if(DN3==0||F3==0)
  58.            {
  59.            TR0=1;
  60.            UPO=UPI=0;
  61.            TR0=1;
  62.            floor=3;
  63.            flag=1;
  64.            }
  65.            P2=0xfc;
  66.            if(P2!=0xfc)
  67.            {
  68.               delay(20);
  69.                   if(P2!=0xfc)
  70.                   {  keyscan();}
  71.                   }
  72.         }
  73. //********************************
  74. //2樓的分析程序
  75. while(now==2)
  76.          {
  77.           display(now);
  78.           if(UP2==0||DN2==0) TR0=1;
  79.           if(DN3==0||F3==0)
  80.            {TR0=1;UPO=0;flag=1;floor=3;}//delay(50);UPI=0;開啟定時到2
  81.            else if(UP1==0||F1==0)
  82.            {
  83.            TR0=1;
  84.            DNI=0;
  85.            floor=1;
  86.            flag=0;
  87.            } if(DN3==1&&F3==1&&UP1==1&&F1==1&&DN2==1&&floor!=now)
  88.            P2=0xfc;
  89.            if(P2!=0xfc)
  90.            {
  91.               delay(20);
  92.                   if(P2!=0xfc)
  93.                   {  keyscan();}
  94.                   }
  95.         }
  96. //3樓的分析程序
  97. while(now==3)
  98.          {
  99.           display(now);
  100.           if(DN3==0)
  101.           TR0=1;
  102.           if(DN2==0||UP2==0||F2==0)
  103.           {
  104.            TR0=1;DNO=0;flag=0;floor=2;}
  105.            else if(UP1==0||F1==0)
  106.            {
  107.            TR0=1;
  108.            DNO=DNI=0;
  109.           
  110.            floor=1;
  111.            flag=0;
  112.            }
  113.            if(DN2==1&&UP2==1&&UP1==1&&DN3==1&&floor!=now) TR0=1;

  114.            P2=0xfc;
  115.            if(P2!=0xfc)
  116.            {
  117.               delay(20);
  118.                   if(P2!=0xfc)
  119.                   {  keyscan();}
  120.                   }
  121.         }
  122.         }
  123.         }
  124. //中斷服務程序
  125. void time0() interrupt 1
  126. {
  127. tn++;

  128. TH0=0X3C;TL0=0XB0;TR0=1;TF0=0;
  129. if(tn==40)
  130. {
  131.    tn=0;
  132.    display(now);
  133.    if(now==floor)
  134.    {
  135.      switch(now)
  136.          {
  137.            case 1:TR0=0;
  138.                    pause();
  139.                            ocdoor();
  140.                            F1=1;
  141.                            UP1=1;
  142.                            flag=1;
  143.                            start=1;
  144.                            UPI=UPO=DNI=DNO=1;
  145.                            break;
  146.                 case 2:UP2=1;
  147.                         TR0=0;
  148.                                 pause();
  149.                                 DN2=1;
  150.                                 TR0=0;
  151.                                 pause();
  152.                                 F2=1;
  153.                                 start=1;
  154.                                 TR0=0;
  155.                                 UPI=UPO=DNI=DNO=1;
  156.                                 break;
  157.                 case 3:TR0=0;
  158.                         pause();
  159.                                 F3=1;
  160.                                 DN3=1;
  161.                                 flag=0;
  162.                                 start=1;
  163.                                 UPI=UPO=DNI=DNO=1;
  164.                                 break;
  165.                         default:TR0=0;now=1;break;
  166.                 }
  167.         }
  168. else
  169.    {
  170.     if(floor<now&&flag==1)
  171.              flag=0;
  172.         if(floor>now&&flag==0)
  173.              flag=1;
  174.                  if(flag==0)
  175.                  now--;
  176.                  if(flag==1)
  177.                  now++;
  178.                 }
  179. }
  180. }//***********************************
  181. //鍵盤掃描子程序
  182. uchar keyscan()
  183. {
  184.    P2=0xfe;          //掃描第一行
  185.     temp=P2;
  186.         temp=temp&0xfc;
  187.         while(temp!=0xfc)
  188.         {
  189.           delay(5);
  190.           temp=P2;
  191.           temp=temp&0xfc;
  192.           while(temp!=0xfc)
  193.           {
  194.             temp=P2;
  195.                 switch(temp)
  196.                 {
  197.                 case 0xfa :num=0;start=0;break;
  198.                 case 0xf6 :num=1;F1=0;floor=1;break;
  199.             case 0xee :num=2;F2=0;floor=2;break;
  200.                 case 0xde :num=3;F3=0;floor=3;break;
  201.                 }
  202.         while(temp!=0xfc)
  203.         {
  204.           temp=P2;
  205.           temp=temp&0xfc;
  206.         }
  207.         }
  208.    }
  209.    P2=0xfd;//掃描第二行
  210.    temp=P2;
  211.    temp=temp&0xfc;
  212.    while(temp!=0xfc)
  213.      {
  214.            delay(5);
  215.            temp=P2;
  216.            temp=temp&0xfc;
  217.            while(temp!=0xfc)
  218.            {
  219.               temp=2;
  220.         switch(temp)
  221.         {
  222.                 case 0xf9 :num=4;UP1=0;break;
  223.                 case 0xf5 :num=5;UP2=0;break;
  224.                 case 0xed :num=6;DN2=0;break;
  225.                 case 0xdd :num=7;DN3=0;break;
  226.                 }
  227.                 while(temp!=0xfc)
  228.                 {
  229.                   temp=P2;
  230.                   temp=temp&0xfc;
  231.                   }
  232.                 }
  233.         }
  234. return num;
  235. }
  236. //******************************************
  237. //數碼管顯示函數
  238. void display(uchar now)
  239. ……………………

  240. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
基于51單片機可上下樓的電梯.zip (102.56 KB, 下載次數: 247)

評分

參與人數 2黑幣 +52 收起 理由
qpwoeiruty + 2 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:326022 發表于 2018-5-9 18:28 | 顯示全部樓層
上下樓指示燈和電機不能夠正常工作
回復

使用道具 舉報

ID:450537 發表于 2018-12-20 10:27 | 顯示全部樓層
很好。。。。。。
回復

使用道具 舉報

ID:424947 發表于 2019-1-5 00:47 | 顯示全部樓層
那個,四樓后面的三個鍵有什么作用啊?
回復

使用道具 舉報

ID:613259 發表于 2019-9-18 20:28 | 顯示全部樓層
數碼管不工作呀,按了沒反應0.0
回復

使用道具 舉報

ID:648148 發表于 2019-11-25 08:57 | 顯示全部樓層
很好。。。。。。
回復

使用道具 舉報

ID:648148 發表于 2019-11-25 09:24 | 顯示全部樓層
非常棒,,,,,
回復

使用道具 舉報

ID:654035 發表于 2019-12-2 10:14 來自手機 | 顯示全部樓層
太棒了
回復

使用道具 舉報

ID:654035 發表于 2019-12-2 11:22 來自手機 | 顯示全部樓層
這個好像不行啊
回復

使用道具 舉報

ID:648959 發表于 2019-12-2 16:35 | 顯示全部樓層
運行不行啊
回復

使用道具 舉報

ID:520605 發表于 2020-4-29 13:46 | 顯示全部樓層
樓主這個運行時好像有點問題
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久伊人精品 | 日韩综合在线 | 精品国产乱码久久久久久88av | 日韩在线中文 | 亚洲精品一区中文字幕乱码 | 日本综合在线观看 | 精品粉嫩超白一线天av | 欧美日韩不卡合集视频 | 男女羞羞在线观看 | 久久99深爱久久99精品 | 亚洲精品在线观 | 在线播放一区二区三区 | 色综合一区二区 | 欧美一二三区 | 国产一区免费视频 | 欧美成人免费在线 | 亚洲精品专区 | 国产免费观看一级国产 | 中文字幕av在线一二三区 | 麻豆av在线 | 国产亚洲成av人片在线观看桃 | 国产精品一卡二卡三卡 | 在线观看视频h | 黄篇网址 | 国产精品www | 欧美一区二区三区视频在线观看 | 久久精品国产一区二区三区 | 国产视频一区二区 | 涩涩视频网站在线观看 | 国产97在线 | 日韩 | 久久久久久久久91 | 精品一区二区三区在线观看国产 | 日韩一级电影免费观看 | 国产网站久久 | www.日韩在线 | av三级在线观看 | 日韩一区在线观看视频 | 黄视频国产| 久久精品综合网 | 色在线免费 | 涩涩视频网站在线观看 |