微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 紧急救助 急 !急!急!

紧急救助 急 !急!急!

时间:10-02 整理:3721RD 点击:
现在的 情况是灯不亮 数码管只是闪烁  数码管是共阳极的

技术指标

1、红灯亮15S

  2、绿灯亮15S

  3、黄灯亮5S并闪烁

  4、绿灯变红灯有黄灯过度

  5、红灯可直接变绿灯


#include<reg51.h>//头文件

#include<intrins.h>//头文件

#define uchar  unsigned  char//宏定义

#define uint   unsigned   int//宏定义

sbit  RED_ZHU    =  P1^0;

sbit  YELLOW_ZHU =  P1^1;

sbit  GREEN_ZHU  =  P1^2;

sbit  RED_ZHI    =  P1^3;

sbit  YELLOW_ZHI =  P1^4;

sbit  GREEN_ZHI  =  P1^5;  

uintaa, bai,shi,ge,bb;

/*数码管显示0-9*/

uintcode table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/*子函数声明*/

void delay0(uint z);

void init1();

void init2();

void init3();

void init4();

void init5();

void display(uint shi,uint ge);

void main()

{

init1();//第一个状态

while(1)

{

init2();//第二个状态

init3();//第三个状态

init4();//第四个状态

init5();//第五个状态

}

}

//第一个状态:主干道、支干道均亮红灯5S

void init1()  

{  

int temp;

temp=6;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1

TH0=0x4c;

TL0=0x00;//定时器赋初值  

EA=1;//开中断

ET0=1;//开定时中断  

TR0=1;//开定时器T0

while(1)

{  

RED_ZHU=0;      

RED_ZHI=0;

GREEN_ZHU=1;

GREEN_ZHI=1;

YELLOW_ZHU=1;

YELLOW_ZHI=1;  

if(aa==20)//定时20*50MS=1S  

{   

aa=0;//定时完成一次后清0  

temp--;//变量自减  

if(temp<0)    {    break;    }   

shi=temp/10;//显示十位

ge=temp%10;//显示个位     

}

display (shi,ge);

}

}

//第二个状态:主干道亮绿灯27S、支干道亮红灯

void init2()

{  

inttemp;  

temp=31;//变量赋初值  

TMOD=0x01;//定时器T0工作于方式1  

TH0=0x4c;

TL0=0x00;//定时器赋初值  

EA=1;//开中断  

ET0=1;//开定时中断  

TR0=1;//开定时器T0  

while(1)

{     

RED_ZHU=1;  

  RED_ZHI=0;  

   GREEN_ZHU=0;   

GREEN_ZHI=1;  

YELLOW_ZHU=1;     

YELLOW_ZHI=1;   

if(aa==20)//定时20*50MS=1S   

{   aa=0;//定时完成一次后清0

temp--;//变量自减

if(temp==3)   

{    break;    }   

shi=temp/10;//显示十位   

ge=temp%10;//显示个位   

       }  

display(shi,ge);  

}

}

void init3()//第三个状态:主干道黄灯闪烁、支干道红灯闪烁

{  

int temp;

temp=4;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1

  TH0=0x4c;

   TL0=0x00;//定时器赋初值  

       EA=1;//开中断

        ET0=1;//开定时中断  

        TR0=1;//开定时器T0

         while(1)

          {   

          GREEN_ZHU=1;   

          if(aa==20)//定时20*50MS=1S   

          {   

           aa=0;//定时完成一次后清0   

               temp--;//变量自减   

               YELLOW_ZHU=~YELLOW_ZHU;   

                RED_ZHI=~RED_ZHI;   

                if(temp<0)   

                {     break;    }   

                 shi=temp/10;//显示十位   

                      ge=temp%10;//显示个位      

}  

display(shi,ge);

}

}

void init4()//第四个状态:主干道亮红灯、支干道亮绿灯22S  

{  inttemp;

temp=26;//变量赋初值

TMOD=0x01;//定时器T0工作于方式1  

TH0=0x4c;  

TL0=0x00;//定时器赋初值  

EA=1;//开中断  

ET0=1;//开定时中断  

TR0=1;//开定时器T0

  while(1)

    {   

         RED_ZHU=0;  

          RED_ZHI=1;  

          YELLOW_ZHU=1;      

          GREEN_ZHI=0;   

          if(aa==20)//定时20*50MS=1S   

          {   

          aa=0;//定时完成一次后清0   

          temp--;//变量自减   

          if(temp==3)  

           {  break;    }   

               shi=temp/10;//显示十位   

               ge=temp%10;//显示个位     

                }   

               display(shi,ge);

                }

                }  

void init5()//第五个状态:主干道红灯闪烁、支干道黄灯闪烁

{

  inttemp;  

temp=4;//变量赋初值  

TMOD=0x01;//定时器T0工作于方式1  

TH0=0x4c;

TL0=0x00;//定时器赋初值

EA=1;//开中断  

ET0=1;//开定时中断  

TR0=1;//开定时器T0  

while(1)

{   

RED_ZHI=1;

GREEN_ZHU=1;  

  GREEN_ZHI=1;  

   if(aa==20)//定时20*50MS=1S  

        { aa=0;//定时完成一次后清0   

        temp--;//变量自减   

         YELLOW_ZHI=~YELLOW_ZHI;   

         RED_ZHU=~RED_ZHU;   

         if(temp<0)   

         {    break;    }   

          shi=temp/10;//显示十位   

           ge=temp%10;//显示个位     

               }   

               display(shi,ge);

                }

                }   

  /*显示子函数*/

voiddisplay(uint shi,uint ge)

{

   P2=0x00;

        P0=table[shi];//显示十位

       delay0(5);  

P2=0x04;

P0=table[ge];//显示个位

delay0(5);

}

/*定时中断子函数*/

void TO_time()  interrupt 1

{  

TH0=0x4c;

TL0=0x00;

aa++;

}

/*延时子函数*/

void delay0(uint z)

{

uint i,j;

  for(i=0;i<z;i++)

     for(j=0;j<110;j++);

         }  



实物图


电路图


单片机是不是工作,电路乱七八糟的,是否连错或者有开路

手绘电路图

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top