51单片机模拟智能电梯系统代码及注释.docx
《51单片机模拟智能电梯系统代码及注释.docx》由会员分享,可在线阅读,更多相关《51单片机模拟智能电梯系统代码及注释.docx(15页珍藏版)》请在冰豆网上搜索。
51单片机模拟智能电梯系统代码及注释
SETTINGS.H
#include
#defineuintunsignedint
#defineucharunsignedchar
//延时程序,以毫秒为单位,用软件计时,输入的参数为毫秒数
voidDelay_ms(uintTime);
//电梯向上走
voidUp();
//电梯向下走
voidDown();
//报警函数
voidWarnning();
//获取目的楼层
voidDestination();
//显示某一楼层
voidDisplay(ucharn,uchara);
//闪烁显示到达的楼层
voidFlash(uchara);
//点阵键盘扫描
ucharKBScan();
//延时
voiddl_ms();
//解析出按键所代表的楼层
ucharReprsent();
SIMPLE.C
#include"settings.h"
ucharcodeTAB[16]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
sbitP0_0=P0^0;
sbitP0_1=P0^1;
sbitP0_2=P0^2;
sbitP0_3=P0^3;
sbitP0_4=P0^4;
sbitP0_5=P0^5;
sbitP0_6=P0^6;
sbitP0_7=P0^7;
sbitP1_0=P1^0;
ucharlift=1;//电梯所在的楼层
uchardestination1=1;//电梯的目的楼层
ucharflag=0;//进入电梯程序的标志
ucharkey;//按键的键码
ucharrequest[]={0,0,0,0,0,0,0,0,0};//1~8楼有无请求,有请求为1
ucharstatus=1;//电梯往上还是往下走,1为上,0为下
//报警的响声的频率产生
voidTimer1()interrupt3
{
P1_0=~P1_0;
TH1=0xfc;
TL1=0x0c;
}
intmain()
{
uchari;
P0=0xff;
P2=0x76;//数码管‘H’
EA=1;//开启外部中断INT0
EX0=1;
IT0=1;
while
(1)//检查flag标志
{//flag初始化为0
if(flag==1)//在中断中将其置1
{
break;
}
P1=0x01;//数码管跑马显示H
Delay_ms(100);//flag置1后则进入电梯程序
for(i=0;i<5;++i)
{
P1=P1<<1;
Delay_ms(100);
}
}
while
(1)//电梯程序的循环
{
if((key=KBscan())==0x77)//若点阵按键右下角的按键(其代码为0x77)按下
{
Warnning();//则报警
}
else
{
Destination();//查询有无楼层请求到达
if(destination1>=lift)//请求的楼层比要到达的楼层高
{
Up();//电梯向上走
}
else
{
Down();//否则电梯向下走
}
}
}
return0;
}
//中断请求,将flag置1,表示要进入电梯程序
voidInt0()interrupt0
{
flag=1;
}
//延时程序,以毫秒为单位,用软件计时,输入的参数
voidDelay_ms(uintTime)
{
uinti=0,j=0;
for(i=0;i