一.硬件方案
本次设计是采用开关控制实现上下到指定楼层,通过电机转动带动电梯箱上下运动,到达指定楼层。显示模块是显示此时的楼层,报警模块具有错误操作报警以及楼层到达的提示功能。
主要由51单片机+共阴数码管+红外发射和接收模块+按键+指示灯+蜂鸣器设计而成;如图:
二.设计功能
(1)通电后,系统默认电梯停在一层。
(2)按下不同的按键电梯可以到达不同的楼层,如果电梯在上行,下面的楼层有呼叫电梯会继续上行,直到上行完了才会下行。同样如果电梯在下行,上面的楼层有呼叫 电梯会继续上行 ,直到下行完了才会上行。
(3)如需上行,请按下所要到达楼层的上行呼叫按钮,电梯显示开始上行,所经楼层号用数码管进行显示,到达,楼层号持续显示,并有蜂鸣器鸣叫以示到达。
(4)由LED箭头指示电梯是上行和下行的方向。
(5)如上下行同时呼叫,则按先上后下原则实现。
所有资料:
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
(3)PCB图如下:
四.软件设计
(1)程序流程图
(2)主程序源码
/******************主程序**********************/
void main()
{
uchar i;
P1 = 0x00;
P0 = 0X00; //单片机IO口初始化
time_init(); //定时器初始化
while(1)
{
key(); //按键程序
if(key_can < 20)
{
if(dt_s_x == 0)
{
value2 = 0;
flag_stop = 1;
}
key_with();
}
tiandi_shang_xia(); //当电梯不动时、判断是向上、还是向下
P0 = ~smg_du[dt_value]; //显示
if(flag_100ms == 1)
{
flag_100ms = 0;
td_dis(); //电梯处理函数
}
if(flag_start == 1)
{
for(i=0;i<4;i++)
{
if(flag_z_f == 0)
{
}
else
{
}
Delay(650);
}
}
}
}
/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{
static uchar value;
TH0 = 0x3c;
TL0 = 0xb0; // 50ms
value ++;
if(value % 2 == 0)
{
flag_100ms = 1 ;
}
}
全套资料下载链接: