2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 红绿灯c语言程序及仿真图 AT89C51单片机十字路口交通灯设计(仿真 keil源代码以及实物图)...

红绿灯c语言程序及仿真图 AT89C51单片机十字路口交通灯设计(仿真 keil源代码以及实物图)...

时间:2018-12-02 08:16:56

相关推荐

红绿灯c语言程序及仿真图 AT89C51单片机十字路口交通灯设计(仿真 keil源代码以及实物图)...

/*****************************************************

* 王瑾毕设-交通灯

*

*

*

*****************************************************/

#include

sbit NS_GRE = P2^5;

sbit NS_YEL = P2^4;

sbit NS_RED = P2^3;

sbit EW_GRE = P2^2;

sbit EW_YEL = P2^1;

sbit EW_RED = P2^0;

uint8EW_Timer = unused8;//东西方向红灯定时器

uint8NS_Timer = unused8;//南北方向红灯定时器

uint8YEL_Timer = unused8; //黄灯 5s定时器

int main(void)

{

Timer_Init(); //定时器初始化

INT0_Init(); //外部中断初始化

EA=1; //打开全局中断

NS_GRE = OFF; //所有的灯都灭

NS_YEL = OFF;

NS_RED = OFF;

EW_GRE = OFF;

EW_YEL = OFF;

EW_RED = OFF;

P3 = 0xFF; //所有显示灭

//先让东西方向红灯亮 南北方向通行

EW_Timer = EWTime_Count;//东西方向开始计时

while(1)

{

if((EW_Timer != unused8) && (EW_Timer != 0)){ //东西方向做红灯倒计时

display1(EW_Timer/10, EW_Timer%10); //东西方向显示时间 南北方向不显示

EW_RED_ON(); //东西方向保持红灯

NS_GRE_ON(); //南北方向保持绿灯

}

else if((EW_Timer != unused8) && (EW_Timer == 0) && (YEL_Timer == unused8)){//东西方向红灯计时到 东西方向保持红灯 南北方向变黄灯 开始黄灯5s计时

EW_RED_ON(); //东西方向红灯

NS_YEL_ON(); //南北方向黄灯

YEL_Timer = YELTime_Count;//5s计时

}

if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){

display1(YEL_Timer/10, YEL_Timer%10); //东西方向显示时间 南北方向不显示

}

if((EW_Timer != unused8) && (YEL_Timer == 0)){ //东西方向红-南北方向黄灯5s计时到 东西红灯定时器关 黄灯定时器关 南北红灯 东西绿灯 南北计时器开

EW_Timer = unused8; //东西红灯定时器关

YEL_Timer = unused8; //黄灯定时器关

NS_RED_ON(); //南北变红灯

EW_GRE_ON(); //东西变绿灯

NS_Timer = NSTime_Count;//南北红灯定时器开

}

if((NS_Timer != unused8) && (NS_Timer != 0)){ //南北红灯定时器正在计时

display2(NS_Timer/10, NS_Timer%10); //南北方向显示时间 东西方向不显示

EW_GRE_ON(); //东西保持绿灯

NS_RED_ON(); //南北保持红灯

}

else if((NS_Timer != unused8) && (NS_Timer == 0) && (YEL_Timer == unused8)){ //南北方向红灯计时到 南北方向保持红灯 东西方向变黄灯 开始黄灯5s计时

NS_RED_ON(); //南北方向保持红灯

EW_YEL_ON(); //东西方向变黄灯

YEL_Timer = YELTime_Count;//5s计时

}

if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){

display2(YEL_Timer/10, YEL_Timer%10); //南北方向显示时间 东西方向不显示

}

if((NS_Timer != unused8) && (YEL_Timer == 0)){//南北方向红-东西方向黄灯5s计时到 南北方向定时器关 黄灯定时器关 东西方向变红灯 南北方向变绿灯 东西方向红灯计时器开始计时

NS_Timer = unused8;

YEL_Timer = unused8;

EW_RED_ON(); //东西方向变红灯

NS_GRE_ON(); //南北方向变绿灯

EW_Timer = EWTime_Count;//东西方向开始计时

}

if(Flag_Key == 1){ //如果急停按键按下 则全红灯 显示灭

P3 = 0xFF; //所有显示灭

EW_RED_ON(); //东西方向红灯

NS_RED_ON(); //南北方向红灯

EW_Timer = unused8;//关闭所有定时器

NS_Timer = unused8;

YEL_Timer = unused8;

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。