基于單片機的電梯控制程序
//頭文件包含特殊功能寄存器的定義
sbit SCL=P2^0;
sbit SDA=P2^1;
sbit led=P2^2;
sbit led1=P1^5;
sbit tz=P2^3; //停止按鈕
sbit lc1=P2^4; //一層樓按鈕
sbit lc2=P2^5; //二層樓按鈕
sbit lc3=P2^6; //三層樓按鈕
sbit lc4=P2^7; //四層樓按鈕
sbit mb=P0^0; //門保險傳感器處理
sbit dw1=P0^1; //一層樓到位處理
sbit dw2x=P0^2; //一層樓到位處理
sbit dw2s=P0^3; //一層樓到位處理
sbit dw3x=P0^4; //一層樓到位處理
sbit dw3s=P0^5; //一層樓到位處理
sbit dw4=P0^6; //一層樓到位處理
sbit jd1=P3^5; // 停止總電源常閉繼電器
sbit jd2=P3^6; //上升繼電器
sbit jd3=P3^7; //下降繼電器
bit fg,fg1,fg2; //位處理
bit sb,jb; // 上升標志位 下降標志位
bit dw2,dw3; //二樓 三樓到位標志
bit lch12; // 1-2樓層之間標志
bit lch23; // 2-3樓層之間標志
bit lch34; // 3-4樓層之間標志
unsigned char num,num1,num2;
unsigned char jylc; // 記憶層號變量
void Delay(unsigned int t); //函數聲明
void Init_Timer0(void);
/*------------------------------------------------
主函數
------------------------------------------------*/
void main (void)
{
char i,a;
char lch,lch1; // 樓層號變量 ,lch1 用在數碼管掃描時只掃描一次
SDA=0;
lch=2; fg=1;
Delay(60);
if(dw1==0)
{ lch=1;fg=1;lc1=1; }
if(dw2x==0||dw2s==0)
{ lch=2;fg=1;lc2=1;}
if(dw3x==0||dw3s==0)
{ lch=3;fg=1;lc3=1;}
if(dw4==0)
{ lch=4;fg=1;lc4=1; }
Init_Timer0(); //定時器初始化
while (1) //主循環(huán)
{
if(lc1==1&&lc2==1&&lc3==1&&lc4==1)
a=1;
if(lc1==0&&a==1&&dw1!=0) //樓層選擇
{ a=0;jylc=1;lc1=0; }
if(lc2==0&&a==1&&dw2!=0)
{ a=0;jylc=2;lc2=0; }
if(lc3==0&&a==1&&dw3!=0)
{ a=0;jylc=3;lc3=0; }
if(lc4==0&&a==1&&dw4!=0)
{ a=0;jylc=4;lc4=0; }
if(tz==0||mb==1) //停止按鈕按下
{
lc1=1;lc2=1;lc3=1;lc4=1; //樓層按鈕復位
jylc=0; //記憶樓層復位
if(lch12==0&&lch23==0&&lch34==0&&(sb==1||jb==1))
{
fg1=1;
if(lch==1&&sb==1)
lch12=1;
if(lch==2&&sb==1)
lch23=1;
if(lch==2&&jb==1)
lch12=1;
if(lch==3&&sb==1)
lch34=1;
if(lch==3&&jb==1)
lch23=1;
if(lch==4&&jb==1)
lch34=1;
}
jd2=1;jd3=1; // 繼電器停止通電 電梯停止
}
關鍵詞:
單片機電梯控
評論