找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2465|回复: 6
收起左侧

请问谁有基于51单片机控制可上下楼的电梯程序?

[复制链接]
ID:326022 发表于 2018-5-9 18:39 | 显示全部楼层 |阅读模式
在论坛找到一个但是有些问题,改了一下午也没有达到目的。希望老司机们教导一下。
另外由于最初的源程序是别人写的我不知道能不能以附件形式发上来所以没发,如果允许的话我会补上
回复

使用道具 举报

ID:123289 发表于 2018-5-9 19:42 | 显示全部楼层
你如何证明他人的程序是靠谱的呢?
自己画个框图,再按图写程序不就好了,
过程中自己也能学到东西。
回复

使用道具 举报

ID:467353 发表于 2019-1-14 15:55 | 显示全部楼层
传上来,可以分析一下
回复

使用道具 举报

ID:149389 发表于 2019-1-14 18:38 | 显示全部楼层
看你设计的复杂程度,最简单的不用单片机,手动按钮控制电梯也可以上下楼。
回复

使用道具 举报

ID:213173 发表于 2019-1-14 20:42 | 显示全部楼层
weidoit 发表于 2019-1-14 18:38
看你设计的复杂程度,最简单的不用单片机,手动按钮控制电梯也可以上下楼。

你说的不是电梯,是升降机,安检标准不在一个档次。电梯允许出故障不允许出事故,否则要追究责任的。
回复

使用道具 举报

ID:454000 发表于 2019-1-15 00:06 | 显示全部楼层
不知你要的是不是下面这种
2222.jpg

这是源码:


#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Table_OF_Digits[]=
{
            0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,
                0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,
                0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,
                0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00,
                0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,
                0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00,
                0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00,
                0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,
                0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,
                0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00,
};
uchar Num_Index = 1,wei = 0,floor,i,mark,t;
void Delay()
{
        uint x;
        for( x = 0 ; x < 110 ; x++);
}
void LED_Init()
{
        Delay();
        t = _cror_(t,1);
        P3 = t;
        P0 = Table_OF_Digits[Num_Index * 8 +i];
        if(++i == 8)
        {
                i = 0;
        }
}
void LED_Screen_Display(int temp)
{
        Delay();
        t = _cror_(t,1);
        P3 = t;
        if( mark )
                P0 = (Table_OF_Digits[Num_Index *8 +temp] >> wei) +
                (Table_OF_Digits[(Num_Index - 1 )*8 +temp] << (8-wei)) ;
        else
                P0 = (Table_OF_Digits[Num_Index *8 +temp] << wei) +
                (Table_OF_Digits[(Num_Index + 1 )*8 +temp] >> (8-wei)) ;
}
void Control_Move()
{
        int temp1,temp2;
        if(Num_Index > floor)
                mark = 1;
        else
                mark = 0;
        for( temp2 = 0 ;temp2 < 30 ; temp2 ++ )
        {
                for ( temp1 = 0 ;temp1 < 8 ; temp1 ++)
                {
                        LED_Screen_Display(temp1);
                }
        }
        if( ++wei == 8 )
        {
                wei =0;
                if( mark )
                        if( (Num_Index --) == floor)
                                P1 = 0xFF;
                        else
                                P2 = 0xFF;
                        else
                                if( ++ Num_Index == floor)
                                        P1 = 0xFF;
        }
}
void ProcessKey()
{
        switch(P1)
        {
        case 0xFE : P1 = 0xFE ; floor = 5;
                if(Num_Index == floor)
                        P1 = 0xFF;
                else
                        Control_Move();
                break;
        case 0xFD : P1 = 0xFD ; floor = 4;
                if(Num_Index == floor)
                        P1 = 0xFF;
                else
                        Control_Move();
                break;
        case 0xFB : P1 = 0xFB ; floor = 3;
                if(Num_Index == floor)
                        P1 = 0xFF;
                else
                        Control_Move();
                break;
        case 0xF7 : P1 = 0xF7 ; floor = 2;
                if(Num_Index == floor)
                        P1 = 0xFF;
                else
                        Control_Move();
                break;
        case 0xEF : P1 = 0xEF ; floor = 1;
                if(Num_Index == floor)
                        P1 = 0xFF;
                else
                        Control_Move();
                break;
        default : break;
        }
}
void main()
{
        t = 0x7F;
        while(1)
        {
                if(P1 != 0xFF)
                {
                        i = 0;
                        t = 0x7F;
                        ProcessKey();
                }
                else
                {
                        LED_Init();
                }
        }
}
2222.jpg

评分

参与人数 3黑币 +62 收起 理由
sheng7533967 + 15
Sawardeakar + 35
yoxi + 12 绝世好帖!

查看全部评分

回复

使用道具 举报

ID:149389 发表于 2019-1-15 08:39 | 显示全部楼层
wulin 发表于 2019-1-14 20:42
你说的不是电梯,是升降机,安检标准不在一个档次。电梯允许出故障不允许出事故,否则要追究责任的。

坐等51商用电梯。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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