加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

《Parking system》

发布时间:2020-12-15 06:24:54 所属栏目:百科 来源:网络整理
导读:? ?????????? 自己根据状态转移图的思想,花了两天时间写的程序....写程序,其实,挺好的,挺有意思,个中的感受,偶很难讲明白,一个字“爽”!!其实,这个系统也挺有前途的呵呵!!! ?“讲白了”,写这个程序的目的,其实是因为,“不爽”*,总在我面前摆
?

?????????? 自己根据状态转移图的思想,花了两天时间写的程序....写程序,其实,挺好的,挺有意思,个中的感受,偶很难讲明白,一个字“爽”!!其实,这个系统也挺有前途的呵呵!!!

?“讲白了”,写这个程序的目的,其实是因为,“不爽”*,总在我面前摆出一副很自信很牛的样子,看样子让人很不爽~~~亨(在程序员面前挑战技术,表面上看是在挑战技术,其实是在挑战他们的自尊!)、(其实,我觉得我很低调,很多时候都不喜欢表现自己,而且愿意倾听别人的意见,我想说的是“我低调并不代表我不行,我沉默不是我喜欢这样子的,是环境让我变成这样,正如老大说“要深入研究得耐得住寂寞!!””)为了自尊,偶决定亲自操刀~~~你懂的,难道我就不会吗?我贴出来也不给你~~~~亨!

?

//==================================================================
//document's instruction
//Project Name:Parking system
// Author:?MicroAC
// Date:? 2011.07.13


//C? P? U :
//时钟频率:11.0592MHz

//????????? I(输入)?????????? /????????? O(输出)分配表

//?? 1/2#停止按钮?? X0?? P0.0?????? 警示灯???????? Y0?? P1.0??
//?? 1#启动按钮???? X1?? P0.1??防坠落得电??? Y1?? P1.1
//?? 2#启动按钮???? X2?? P0.2??受阻语音??? Y2?? P1.2
//?? 1/2#出车按钮?? X3?? P0.3??启动语音??? Y3?? P1.3
//?? 1/2#入车按钮?? X4?? P0.4??1#电源???? Y4?? P1.4
//?? 1/2#上限???? X5?? P0.5??2#电源???? Y5?? P1.5
//?? 1/2#下限???? X6?? P0.6??1/2#前移电机?? Y6?? P1.6
//?? 1/2#前限???? X7?? P0.7??1/2#后移电机?? Y7?? P1.7

//?? 1#后限????? X10? P2.7? ??1#上升电机??? Y10? P3.2
//?? 2#后限???X11? P2.6??1#下降电机??? Y11? P3.3
//?? 允许下降??X12? P2.5??2#上升电机??? Y12? P3.4
//????????????????????????????????? 2#下降电机??? Y13? P3.5
//?? 1#上限???X14? P2.3??停止灯???? Y14? P3.6
//?? 2#上限???X15? P2.2??出车指示灯??? Y15? P3.7
//????????????????????????????????? 入车指示灯??? Y16? P3.0
//????????????????????????????????? 到位语音??? Y17? P3.1

//==================================================================
//Source Code

#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

//=====================================================
//Definnation WDT_CONTR AND Time-"?"(CRYSTA 11.0592MHZ)
//STC12 Serials
//00111 000 :?71.1ms??-0x38
//00111 001?:?142.2ms??-0x39
//00111?010?:?284.4ms??-0x3A
//00111?011?:?568.8ms??-0x3B
//00111?100?:?1.1377s??-0x3C
//00111?101?:?2.27555s?-0x3D
//00111?110?:?4.5511s??-0x3E
//00111 111 :?9.1022s??-0x3F

sfr WDT_CONTR=0xC1;
//add your necessary time here.
#define WDT_EAT?0x3D ???

//=====================================================
#define N_T0_FRE 10??? //T0_FRE's times.

//初始化操作

void Init_MCU(void);
void Init_Set_T0(void);
void Reset_T0(void);
//void Check_System_Wrong(void);

//语音处理函数

void Start_Voice(void);
void Block_Voice(void);
void Inplace_Voice(void);

//LED of Singal processor

void Stop_LED(void);
void OutCar_LED(void);
void InCar_LED(void);

//DELAY FUNCTIONS.

void Delay(void);
void Delay500ms(void);

//STATUS FUNCTIONS.

void State0(void);
void State20(void);
void State21(void);
void State27(void);
void State22(void);
void State23(void);
void State24(void);
void State25(void);
void State26(void);

sfr AUXR=0x8e;

//I(输入)口位定义

sbit X0=P0^0;
sbit X1=P0^1;
sbit X2=P0^2;
sbit X3=P0^3;
sbit X4=P0^4;
sbit X5=P0^5;
sbit X6=P0^6;
sbit X7=P0^7;

sbit X10=P2^7;
sbit X11=P2^6;
sbit X12=P2^5;
sbit X14=P2^3;
sbit X15=P2^2;

//O(输出)口位定义

sbit Y0=P1^0;
sbit Y1=P1^1;
sbit Y2=P1^2;
sbit Y3=P1^3;
sbit Y4=P1^4;
sbit Y5=P1^5;
sbit Y6=P1^6;
sbit Y7=P1^7;

sbit Y10=P3^2;
sbit Y11=P3^3;
sbit Y12=P3^4;
sbit Y13=P3^5;
sbit Y14=P3^6;
sbit Y15=P3^7;
sbit Y16=P3^0;
sbit Y17=P3^1;

//STATUS:状态寄存器

uchar data STATUS=0;

//标志flag

uchar data flag=0;
uchar data Off_On_Led=0;
uchar data Counter=0;
void main(void)
{
?Init_MCU();
??? Check_System_Wrong();
?while(1)
?{
??WDT_CONTR=WDT_EAT;??//feed up the dog
??switch(STATUS)
??{?
?? ?case 0:? State0() ;break;
???case 20: State20();break;
???case 21: State21();break;
???case 27: State27();break;
???case 22: State22();break;
???case 23: State23();break;
???case 24: State24();break;
???case 25: State25();break;
???case 26: State26();break;
???while(1);??//capture trap
???
??}
?}

}

//Init MCU

void Init_MCU(void)
{
?//add your code here.
?uchar i=0;
?for(i=0;i<3;i )
?{
??B=0;
??SP=0x07;
??P0=0xff;
??P1=0xff;
??P2=0xff;
??P3=0xff;
??IE=0x00;
??TCON=0x00;
??TH0=0x00;
??TL0=0x00;
??TH1=0x00;
??TL1=0x00;
??ACC=0x00;
??PSW=0x00;
??IP=0x00;
??TMOD=0x00;
??SCON=0x00;
??PCON=0x00;
??AUXR=0x00;
?}
}

//Check System'Fault.
/*
void Check_System_Wrong(void)
{
?? //add your code here.

}
*/

//Delay Function.

void Delay()
{
?uchar i=0;
?i=200;
?for(;i>0;i--);
}

void Delay500ms(void)?????????????
{
??? uchar i,j,k;
??? for(i=15;i>0;i--)
?????? for(j=202;j>0;j--)
?????????? for(k=81;k>0;k--);
???
}

//状态0

void State0(void)
{
?//车位选择
?if(X1==0&&X2==1)
?{
??Delay();
??if(X1==0&&X2==1)
??{
???STATUS=20;
??}
?
?}
?else if(X2==0&&X1==1)
?{
??Delay();
??if(X2==0&&X1==1)
??{
???STATUS=30;
??}
?
?}
?else
??STATUS=0;
}

?//状态20
void State20()
{
?Y4=0;
?if(X0==0)
?{
??Delay();
??if(X0==0)
??{
???Block_Voice();
???STATUS=0;?
??}?
?}
?else if(X3==0)
?{
??Delay();
??if(X3==0)
??{
???STATUS=21;
??}
?}

}
?//状态21
void State21()
{
?Y4=0;
?if(X0==0||flag==1)
?{
??Delay();
??if(X0==0||flag==1)
??{
???Block_Voice();
???flag=1;
???Y6=1;????//stop process
???Off_On_Led=0;??//没有指示灯
???OutCar_LED();

???//没有启动语音
???Off_On_Led=1;??//停止灯亮!
???Stop_LED();??
??}
?}
?else
?{
??Y6=0;????//start process
??Off_On_Led=1;?? ?//出车指示灯!
??OutCar_LED();
??Start_Voice();??//启动语音!??
?}
?if(X3==0)
?{
??Delay();
??if(X3==0)
??{
???flag=0;
??}
??
?}
?else if(X4==0&&flag==1)
?{
??Delay();
??if(X4==0&&flag==1)
??{
???flag=0;
???Off_On_Led=0;?//停止灯灭
???Stop_LED();
???STATUS=25;?
??}??
?}
?else if(X7==0)
?{
??Delay();
??if(X7==0)
??{
???Y6=1; ???//关闭前行电机
???STATUS=27;
??}?
?}?
}
?//状态27
void State27()
{
?uchar i=0;
?Y4=0;
?if(X0==0||flag==1)
?{
??Delay();
??if(X0==0||flag==1)
??{
???Block_Voice();
???flag=1;
???Off_On_Led=0;?//没有出车指示灯??
???OutCar_LED();?
???Y1=1;
???Off_On_Led=1;?//停止灯亮!
???Stop_LED();
??}?
?}
?else
?{
??//出车指示灯!
??Off_On_Led=1;
??OutCar_LED();
??//Delay 2.5 second!
??for(i=5;i>0;i--)
??{
???Delay500ms();
??}?
??Y1=0;?
?}
?if(X3==0)
?{
??if(X3==0)
??{
???flag=0;
??}
??
?}
?else if(X12==0)
?{
??Delay();
??if(X12==0)
??{
???Y1=1;
???STATUS=22;
??}
?}

}
?//状态22
void State22()
{
?Y4=0;
?if(X0==0||flag==1)
?{
??Delay();
??if(X0==0||flag==1)
??{
???Block_Voice();
???flag=1;
???Y11=1; ??//stop process
????? //没有出车指示灯
???Off_On_Led=0;
???OutCar_LED();
???Y1=1;
???//停止灯亮
???Off_On_Led=1;
???Stop_LED();
??}?
?}
?else
?{
??//Delay 0.5 second!
??Delay500ms();
??Y11=0; ??? //start process
??//出车指示灯!
??Off_On_Led=1;
??OutCar_LED();
??Y1=0;
?}
?if(X3==0)
?{
??if(X3==0)
??{
???flag=0;
??}
??
?}
?else if(X4==0&&flag==1)
?{
? ?Delay();
??if(X4==0&&flag==1)
??{
???flag=0;
???//停止灯灭!
???Off_On_Led=0;
???Stop_LED();
???STATUS=24;??
??}
?}
?else if(X6==0)
?{
??Delay();
??if(X6==0)
??{
???Y11=1;
???Y1=1;
???STATUS=23;
??}
?}??

}
?//状态23
void State23()
{
?Y4=0;
?Inplace_Voice();??//下降到位语音!
?if(X4==0)
?{
??Delay();
??if(X4==0)
??{
???STATUS=24;
??}
?}

}
?//状态24
void State24()
{
?Y4=0;
?if(X0==0||flag==1)
?{
??Delay();
??if(X0==0||flag==1)
??{
???Block_Voice();
???flag=1;
???Y10=1;
???//没有入车指示灯
???Off_On_Led=0;
???OutCar_LED();
???//停止灯亮
???Off_On_Led=1;
???Stop_LED();
??}?
?}
?else
?{
??Y10=0;
??//入车指示灯!
??Off_On_Led=1;
??InCar_LED();????
?}
?if(X4==0)
?{
??if(X4==0)
??{
???flag=0;
??}
???
?}
?else if(X3==0&&flag==1)
?{
??Delay();
??if(X3==0&&flag==1)
??{
???flag=0;
???//停止灯关闭!
???Off_On_Led=0;
???Stop_LED();
???STATUS=22;?
??}
?}
?else if(X5==0)
?{
??Delay();
??if(X5==0)
??{
???Y10=1;???//上升电机关
???STATUS=25;
??}
?}?
}
?//状态25
void State25()
{
?Y4=0;
?if(X0==0||flag==1)
?{
??Delay();
??if(X0==0||flag==1)
??{
???Block_Voice();
???flag=1;
???//停止灯亮
???Off_On_Led=1;
???Stop_LED();
???//没有入车指示灯
???Off_On_Led=0;
???InCar_LED();
???//没有延时
???Y7=1;
??}?
?}
?else
?{
??//入车指示灯!
??Off_On_Led=1;
??InCar_LED();
??//Delay 0.5 second!
??Delay500ms();
??Y7=0;?
?}
?if(X4==0)
?{
??Delay();
??if(X4==0)
??{
???flag=0;
??}
???
?}
?else if(X3==0&&flag==1)
?{
??Delay();
??if(X3==0&&flag==1)
??{
???flag=0;
???//停止灯关闭!
????? Off_On_Led=0;
???Stop_LED();
???STATUS=21;?
??}
?}
?else if(X10==0)
?{
??Delay();
??if(X10==0)
??{
???Y7=1;???//关闭后移电机
???STATUS=26;
??}
?
?}???

}
?//状态26
void State26()
{
?uchar i=0;
?Y4=0;
?//Delay 2.5 second!
?for(i=5;i>0;i--)
??{
???Delay500ms();
??}
?Inplace_Voice();????//后行到位语音
?//Delay 1.5 second!
?for(i=3;i>0;i--)
??{
???Delay500ms();
??}
?STATUS=0;
}

//VOICE PROCESS

void Start_Voice(void)
{
?Y3=1;
?_nop_();
?_nop_();
?_nop_();
?Y3=0;
}
void Block_Voice(void)
{
?Y2=1;
?_nop_();
?_nop_();
?_nop_();
?Y2=0;
}
void Inplace_Voice(void)
{
?Y17=1;
?_nop_();
?_nop_();
?_nop_();
?Y17=0;
}
//LED PROCESS

void Stop_LED(void)
{
?if(Off_On_Led)
?{
???? Off_On_Led=0;
??Init_Set_T0();
?}
?else
?{
? ?Reset_T0();
?
?}
}
void OutCar_LED(void)
{
?if(Off_On_Led)
?{
? ?Off_On_Led=0;
??Init_Set_T0();
?}
?else
?{
??Reset_T0();
?
?}
}
void InCar_LED(void)
{
?if(Off_On_Led)
?{
? ?Off_On_Led=0;
??Init_Set_T0();
?}
?else
?{
??Reset_T0();
?}
}

//T0's Configuration.

void Init_Set_T0(void)
{
?//add your code here-T0 Setting.
?TMOD=0x01;??? ???//T0 Style 1
?TH0=(65536-15536)/256;??//50ms
?TL0=(65536-15536)%256;
?PT0=1;
?ET0=1;
?EA=1;
?TR0=1;
}
void Reset_T0(void)
{
?//add your code here-T0 Reset.
?EA=0;
?ET0=0;
?TR0=0;
?TMOD=0x00;??? ???
?TH0=0x00;??
?TL0=0x00;
?PT0=0;
}

//T0中断函数

void timer0 () interrupt? 1
{
?//add your T0 initial value here.
?TH0=(65536-15536)/256;??//50ms
?TL0=(65536-15536)%256;
?Counter ;
?if(Counter>N_T0_FRE)??//Setting Flash LED's Frequence.
?{???????????? //50ms*N_T0_FRE
??Counter=0;
??Y14=~Y14;????????? //FLASH Stop's LED.
?}

}

?

//===========================================================================

???????????行了,明天有领导来视察,我不得不挑灯夜战,写好报告和PPT,以应付“领导”们~~~忙去鸟!!!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读