找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 34068|回复: 42
收起左侧

自己制作的简易的 基于51单片机的自动升降电梯简易模型 与大家分享

  [复制链接]
ID:162229 发表于 2017-2-3 19:43 | 显示全部楼层 |阅读模式
寒假在家闲着无事,想着做点东西,但是毕竟是新手,做不了太厉害的东西,就弄了个这小玩意,纯属个人娱乐之作,与各位分享。

配上几张图片 192737jesbqbge0uqasq6w.jpg 192740pdsdcxm20cgfs0su.jpg 192743asm8bqoskqsn328z.jpg 192747wg0gruababgvamh4.jpg 192751cq23q7na772262l6.jpg 192757jhbrbq8g8wgpblah.jpg 192800z1t1tyqzpiwiq5yl.jpg ,全部程序,又做了个小视频来演示。



主程序预览:
  1. /**************************************************
  2. /*项目名称:基于51单片机的自动升降电梯简易模型
  3. /*主控芯片:STC89C52
  4. /*使用模块:28BYJ_48步进电机、ULN2003驱动模块、无源蜂鸣器、红外发射器、红外接收头、4×4软键盘
  5. /*平台搭建:废旧泡沫块、硬纸壳
  6. /*主要功能:装置供电后,通过按下红外遥控器或者软键盘选择楼层所对应的数字,选择升降方式(只上升、只下降、先升再降)
  7. /*          然后升降电梯(泡沫模拟)停在对应楼层,蜂鸣器发出“叮咚”的声响。共计16层。
  8. /*引脚说明:步进电机接P1低四位,蜂鸣器IO口接P3^7,红外接收头接P3^2,软键盘接P2口;
  9. /*时间:2017年2月3日17时22分
  10. /**************************************************/

  11. /*********************************************
  12. /*包含必要的头文件
  13. **********************************************/
  14. #include<ring.h>
  15. #include<key.h>
  16. #include<run.h>
  17. #include<red.h>

  18. /*********************************************
  19. /*定义红外接收必要数据
  20. **********************************************/
  21. unsigned char IrValue[6];
  22. unsigned char Time;
  23. /*********************************************
  24. /*定义变量
  25. **********************************************/
  26. unsigned char s,p;
  27. unsigned int m,a;
  28. /*********************************************
  29. /*主函数
  30. **********************************************/                                                                                                        
  31. void main()                                                               
  32. {
  33.         unsigned int n,w=30000;
  34.         unsigned char b;
  35.         IrInit();
  36.         while(1)
  37.         {
  38.                 if(p==2)
  39.                 {
  40.                         delay(50000);               
  41.                         Z_run(n+15);
  42.                         p=0;
  43.                 }
  44.                 if(p==4)
  45.                 {
  46.                         delay(50000);               
  47.                         Z_run(n+15);
  48.                         p=3;
  49.                 }               
  50.                 while((p!=3)&&(w>0)) w--;
  51.                 if(p==3)
  52.                 {
  53.                         delay(50000);
  54.                         D_run(n);
  55.                         p=0;
  56.                 }
  57.                 n=0;               
  58.                 s=1;
  59.                 while(s)
  60.                 {
  61.                         a=KeyDown();
  62.                 }
  63.                 if(a!=0)
  64.                 {
  65.                         if(a==14)
  66.                         {
  67.                                 a=0;
  68.                                 p=2;
  69.                         }
  70.                         else if(a==15)
  71.                         {
  72.                                 a=0;
  73.                                 p=3;
  74.                         }
  75.                         else  
  76.                         {
  77.                                 b=a;
  78.                                 p=0;
  79.                         }
  80.                         n=b*883;
  81.                 }
  82.                 else        
  83.                 {
  84.                         n=m*883;
  85.                 }
  86.         }         
  87. }


  88. /*********************************************
  89. /*红外接收,数据处理函数,使用外部中断0
  90. **********************************************/
  91. void ReadIr() interrupt 0
  92. {
  93.         unsigned char j,k;
  94.         unsigned int err;
  95.         Time=0;                                         
  96.         delay(700);
  97.         if(IRIN==0)        
  98.         {         
  99.                 err=1000;                                
  100.                 while((IRIN==0)&&(err>0))
  101.                 {                        
  102.                         delay(1);
  103.                         err--;
  104.                 }
  105.                 if(IRIN==1)               
  106.                 {
  107.                         err=500;
  108.                         while((IRIN==1)&&(err>0))               
  109.                         {
  110.                                 delay(1);
  111.                                 err--;
  112.                         }
  113.                         for(k=0;k<4;k++)        
  114.                         {                                
  115.                                 for(j=0;j<8;j++)
  116.                                 {

  117.                                         err=60;               
  118.                                         while((IRIN==0)&&(err>0))
  119.                                         {
  120.                                                 delay(1);
  121.                                                 err--;
  122.                                         }
  123.                                         err=500;
  124.                                         while((IRIN==1)&&(err>0))         
  125.                                         {
  126.                                                 delay(10);         
  127.                                                 Time++;
  128.                                                 err--;
  129.                                                 if(Time>30)
  130.                                                 {
  131.                                                         return;
  132.                                                 }
  133.                                         }
  134.                                         IrValue[k]>>=1;         
  135.                                         if(Time>=8)               
  136.                                         {
  137.                                                 IrValue[k]|=0x80;
  138.                                         }
  139.                                         Time=0;                                                               
  140.                                 }
  141.                         }
  142.                 }
  143.                 if(IrValue[2]!=~IrValue[3])
  144.                 {
  145.                         return;
  146.                 }
  147.                 s=0;
  148.                 ding();
  149.                 switch(IrValue[2])
  150.                 {
  151.                         case 0x16:
  152.                         m=0;
  153.                         break;
  154.                         case 0x0c:
  155.                         m=1;
  156.                         break;
  157.                         case 0x18:
  158.                         m=2;
  159.                         break;
  160.                         case 0x5e:
  161.                         m=3;
  162.                         break;
  163.                         case 0x08:
  164.                         m=4;
  165.                         break;
  166.                         case 0x1c:
  167.                         m=5;
  168.                         break;
  169.                         case 0x5a:
  170.                         m=6;
  171.                         break;
  172.                         case 0x42:
  173.                         m=7;
  174.                         break;
  175.                         case 0x52:
  176.                         m=8;
  177.                         break;
  178.                         case 0x4a:
  179.                         m=9;
  180.                         break;
  181.                         case 0x40:
  182.                         p=2;
  183.                         break;
  184.                         case 0x43:
  185.                         p=3;
  186.                         break;
  187.                         case 0x19:
  188.                         p=4;
  189.                         break;
  190.                         case 0x45:
  191.                         m=10;
  192.                         break;
  193.                         case 0x46:
  194.                         m=11;
  195.                         break;
  196.                         case 0x47:
  197.                         m=12;
  198.                         break;
  199.                         case 0x44:
  200.                         m=13;
  201.                         break;
  202.                         case 0x07:
  203.                         m=14;
  204.                         break;
  205.                         case 0x15:
  206.                         m=15;
  207.                         break;
  208.                         case 0x09:
  209.                         m=16;
  210.                         break;
  211.                 }
  212.         }                        
  213. }


复制代码

0.png
详细信息请参照程序(压缩包中含全部源码):
基于51的自动升降电梯程序.zip (45.6 KB, 下载次数: 217)

评分

参与人数 5黑币 +126 收起 理由
柯南的阿嘞嘞 + 5 绝世好帖!
dsjfadsjf + 4 很给力!
沉默的墓碑 + 12 很给力!
啾纠 + 5 很给力!
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:163575 发表于 2017-2-6 16:49 | 显示全部楼层
有没有仿真电路图哇大神
回复

使用道具 举报

ID:162229 发表于 2017-2-7 13:32 | 显示全部楼层
16546 发表于 2017-2-6 16:49
有没有仿真电路图哇大神

我不太习惯用protues画图,就手画了一个,其实结构很简单,画出来之后竟然就这么一点点

回复

使用道具 举报

ID:162229 发表于 2017-2-7 18:44 | 显示全部楼层

回复

使用道具 举报

ID:162229 发表于 2017-2-7 18:44 | 显示全部楼层

回复

使用道具 举报

ID:162229 发表于 2017-2-7 18:47 来自手机 | 显示全部楼层
抱歉,刚刚电脑出毛病了,图片发不上去
14864644122140.21675697640962244.jpg
回复

使用道具 举报

ID:99341 发表于 2017-2-7 22:49 | 显示全部楼层
楼主给一个详细的电路图吧!
回复

使用道具 举报

ID:162229 发表于 2017-2-8 09:18 来自手机 | 显示全部楼层
YBZYBZ 发表于 2017-2-7 22:49
楼主给一个详细的电路图吧!

刚刚画了一个,不太会用这个protues,电路基本上就是这样了。
mmexport1486516601474.jpg
回复

使用道具 举报

ID:164282 发表于 2017-2-11 22:33 | 显示全部楼层
楼主能给份原件清单吗
回复

使用道具 举报

ID:164282 发表于 2017-2-11 23:10 | 显示全部楼层
啾纠 发表于 2017-2-11 22:33
楼主能给份原件清单吗

比如PCB版是用的成品最小系统吧?
回复

使用道具 举报

ID:162229 发表于 2017-2-12 13:06 | 显示全部楼层
啾纠 发表于 2017-2-11 23:10
比如PCB版是用的成品最小系统吧?

51单片机最小系统(STC89C52)×1
ULN2003驱动模块×1
28BYJ-348步进电机×1
4×4软键盘×1
VS1838B一体化红外接收头×1
红外遥控器×1
无源蜂鸣器模块×1
电源、电源线×1
泡沫底板×1
硬纸板×若干
杜邦线×若干
回复

使用道具 举报

ID:96326 发表于 2017-3-9 08:29 | 显示全部楼层
不错的文件,顶一下。
回复

使用道具 举报

ID:192333 发表于 2017-4-22 15:30 | 显示全部楼层
可不可以用大功率的电机啊
回复

使用道具 举报

ID:194070 发表于 2017-4-27 08:49 来自手机 | 显示全部楼层
怎么联系你啊大神
回复

使用道具 举报

ID:162229 发表于 2017-5-6 23:31 | 显示全部楼层
wh150 发表于 2017-4-27 08:49
怎么联系你啊大神

不不不,不敢当,小白一枚。
回复

使用道具 举报

ID:162229 发表于 2017-5-6 23:34 | 显示全部楼层
chenyan 发表于 2017-4-22 15:30
可不可以用大功率的电机啊

如果你要做大的系统的话,可以改用大功率电机,同样驱动也要更换,我做的就是个小的模拟的东西,随便玩玩
回复

使用道具 举报

ID:195259 发表于 2017-6-5 19:05 | 显示全部楼层
大神能加一下好友吗
回复

使用道具 举报

ID:207997 发表于 2017-6-6 09:50 | 显示全部楼层
#include<ring.h>
/*********************************************
/*电梯到达提示音
**********************************************/
void ring()
{
        unsigned int c;
        for(c=0;c<140;c++)
        {
                bee=!bee;
                delay(130);
        }
        for(c=0;c<100;c++)
        {
                bee=!bee;
                delay(200);
        }
}
bee是什么意思
                        s=0;
                        ting();
                }
        }
        switch(KeyValue)
        {
                case(1):return 1;
                case(2):return 2;
                case(3):return 3;
                case(4):return 10;
                case(5):return 4;
                case(6):return 5;
                case(7):return 6;
                case(8):return 11;
                case(9):return 7;
                case(10):return 8;
                case(11):return 9;
                case(12):return 12;
                case(13):return 14;
                case(14):return 0;
                case(15):return 15;
                case(16):return 13;
                default:return 0;
        }
S=0;ting();这又是什么意思
回复

使用道具 举报

ID:202308 发表于 2017-6-6 22:33 | 显示全部楼层
支持楼主,感谢分享!
回复

使用道具 举报

ID:202308 发表于 2017-6-6 22:34 | 显示全部楼层
感谢楼主,多谢分享!!
回复

使用道具 举报

ID:209556 发表于 2017-6-21 17:26 | 显示全部楼层
为什么电机会来回转 一直抖动,求指教
回复

使用道具 举报

ID:276794 发表于 2018-1-16 23:32 来自手机 | 显示全部楼层
还在吗?  请求添加q1771716122  我也想做一个求帮忙
回复

使用道具 举报

ID:250673 发表于 2018-3-14 17:15 | 显示全部楼层
你好,请求添加q1161329168,关于这个电梯的制作遇到了困难,请求大神帮助
回复

使用道具 举报

ID:98926 发表于 2018-3-26 10:38 | 显示全部楼层
做的不错  值得学习学习
回复

使用道具 举报

ID:329032 发表于 2018-5-19 12:30 来自手机 | 显示全部楼层
大神,我借鉴你这个做课程设计,指导一下吗,谢谢,可以的话请给我留下联系方式,谢谢
回复

使用道具 举报

ID:335581 发表于 2018-5-22 13:11 | 显示全部楼层
谢谢原理图
回复

使用道具 举报

ID:317116 发表于 2018-5-23 11:39 | 显示全部楼层
话说楼主这个怎么知道他是到达那一层楼了,是怎么知道的,很疑惑,你没有有什么传感器去检测它啊?
回复

使用道具 举报

ID:294865 发表于 2018-5-23 16:11 | 显示全部楼层
学习下
回复

使用道具 举报

ID:335251 发表于 2018-5-24 13:03 来自手机 | 显示全部楼层
那个模拟高楼,一层大概几厘米?
回复

使用道具 举报

ID:392019 发表于 2018-8-31 15:09 来自手机 | 显示全部楼层
你好  楼主   
回复

使用道具 举报

ID:392019 发表于 2018-8-31 15:11 来自手机 | 显示全部楼层
楼主  你好   我要做一个毕业设计的模型   我要用到一个升降机 能向你请教一些问题吗
回复

使用道具 举报

ID:392019 发表于 2018-8-31 15:24 来自手机 | 显示全部楼层
楼主你好    想向你请教一些问题
回复

使用道具 举报

ID:392019 发表于 2018-9-3 08:49 来自手机 | 显示全部楼层
楼主   你好
回复

使用道具 举报

ID:399179 发表于 2018-10-8 19:45 来自手机 | 显示全部楼层
感谢楼主分享!!!
回复

使用道具 举报

ID:392019 发表于 2018-10-16 15:53 来自手机 | 显示全部楼层
bbxyzzj 发表于 2017-3-9 08:29
不错的文件,顶一下。

我这里下载怎么程序有问题
回复

使用道具 举报

ID:438033 发表于 2018-12-2 23:34 | 显示全部楼层
楼主,怎么判断到达第几楼呢,用步进电机的步数去计算的吗?
回复

使用道具 举报

ID:467353 发表于 2019-1-13 13:47 | 显示全部楼层
红外测距,好厉害.正常电梯是测试编码反馈的,中间有速度平稳控制
回复

使用道具 举报

ID:467353 发表于 2019-1-14 15:34 | 显示全部楼层
用普中HC6800 ES V2.0实验板,会不会简单点?接口都现成的.
回复

使用道具 举报

ID:273674 发表于 2019-3-15 21:26 | 显示全部楼层
有没有大神懂基于单片机电梯模型设计的,借鉴LZ这个做个毕设,加355052629
回复

使用道具 举报

ID:273674 发表于 2019-4-9 11:42 | 显示全部楼层
LZ可以加个好友吗,我也是做的升降,您是怎么让升一层大概3CM左右的,我QQ35505269
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表