0010基于单片机交通灯控制系统设计

资料下载地址!!!!!!!

交通灯,十字路口

 

 


/*****************************************************
*   王瑾毕设-交通灯
*
*
*
*****************************************************/
#include<include.h>

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;   



uint8  EW_Timer = unused8;  //东西方向红灯定时器
uint8  NS_Timer = unused8;  //南北方向红灯定时器
uint8  YEL_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;
           }
    }
}



















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈晨电子工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值