资源简介

51单片机Protues,仿真交通灯。程序+仿真

资源截图

代码片段和文件信息

	
#include   // 对单片机的口进行了定义
#define uint unsigned int
#define uchar unsigned char
uchar code a[10]={0x400x790x240x300x190x120x020x780x000x10};//段码组合共阳极
uchar code b[4]={0x010x020x040x08}; //位码组合  
uchar code c[4]={0xcc0xd40x780xb8};/*P1 绿红、黄红、红绿、红黄*/ 
   
//12MHz   
//*************************************************************************************
uchar NB=25DX=30NBG=25DXG=15H=5;  /*数码管显示值设置*/
uchar  ik=0cnt=0j=0; 

sbit K0=P3^4;     /*支干道通行*/
sbit K1=P3^5;     /*主干道通行*/
sbit K4=P3^6;     /*返回*/
sbit K3=P3^2; /*设置时间*/
sbit K2=P3^3; /*紧急刹车*/

void delay(uchar t); /*定义延时程序*/
void key(); /*定义键盘程序*/
void display(); /*定义显示程序*/
void settime(); /*定义时间设置显示程序*/
//*************************程序初始*********************************************
void init(void)
{
TMOD=0x01;   /*使用定时器0模式一*/
TH0=0x3c;   /*(65536-5000)/256*/
TL0=0xb0;   /*(65536-5000)%256*/
IT0=1;   //开中断
ET0=1;
TR0=1;
EA=1;
EX0=1;
EX1=1;
P1=c[k];    //开启交通灯
}
//*************************中断0处理程序***************************************
void int0(void) interrupt 0  // 通行时间设置
{  
  EA=0;
  P1=0xd8; /*红灯全亮*/
  
for(;;)
{
   settime();

   if(K1==0)    /*P3^6=0设置主干道通行时间*/
   {  
          delay(40);
          if(K1==0)
  {
             while(!K1)
             {settime();}
  DXG++; /*主干道通行时间加1*/
             if(DXG==100)
             DXG=0;
          }
   }
  
   if(K0==0)   /*P3^5=0设置支干道通行时间*/
   {  
             delay(40);
             if(K0==0)
     {
               while(!K0)
               {settime();}
   NBG++; /*支干道通行时间加1*/
               if(NBG==100)
               NBG=0;
             }
   }
  
   if(K4==0)    /*P3^7=0返回*/ 
       {  
        delay(40);
    if(K4==0)
    {
       while(!K4)
   {
   }
            k=0;P1=c[k];
   NB=NBGDX=NBG+H;
       display(); 
   EA=1;
 
           break;
    }                
       }
    }
}

 
//***********************************中断1处理程序********************
void int1(void) interrupt 2   //紧急情况
{    
 /*东西南北红灯亮*/
EA=0;
TR0=!TR0;     /*停止计数*/

for(;;)    /*主支干道显示全为0*/

P1=0xd8
P0=a[0];
   P2=b[0];
   delay(20);
   
     P2=b[1];
   delay(20);

   P2=b[2];
   delay(20);

   P2=b[3];
   delay(20);
   

   if(K4==0)    /*返回*/

  delay(20);
EA=1;
   
P1=c[k];   /*返回紧急前状态开始计数*/
TR0=!TR0; /*重启计数*/
break;    
}
}
}
void time1(void) interrupt 1 /*交通灯控制程序*/
{
TH0=0x3c; /*定时50ms*/
TL0=0xb0;  
cnt++;

if(cnt>=20)    /*每20*50ms=1s自减一*/
{
NB--;
DX--;
cnt=0;
if(NB==0||DX==0)
{
k++;
if(k>3) /*k取0123*/
k=0;
switch(k)
{
case 0:NB=NBGDX=NBG+H;j=0;P1=c[k];break;   /*主干道通行显示绿红*/
     case 1:NB=H;j=

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     123979  2013-05-16 20:38  交通灯仿真\交通灯.DSN

     文件       2950  2013-05-16 20:32  交通灯仿真\仿真交通灯.hex

     文件      10185  2014-03-08 16:25  交通灯仿真\程序\交通灯

     文件       5292  2014-03-08 16:20  交通灯仿真\程序\交通灯.c

     文件       2950  2014-03-08 16:25  交通灯仿真\程序\交通灯.hex

     文件         29  2014-03-08 16:25  交通灯仿真\程序\交通灯.lnp

     文件      13825  2014-03-08 16:25  交通灯仿真\程序\交通灯.LST

     文件      13500  2014-03-08 16:25  交通灯仿真\程序\交通灯.M51

     文件      12057  2014-03-08 16:25  交通灯仿真\程序\交通灯.OBJ

     文件       1018  2014-03-08 16:25  交通灯仿真\程序\交通灯.Opt

     文件       1581  2014-03-08 16:25  交通灯仿真\程序\交通灯.plg

     文件       1994  2013-11-27 11:05  交通灯仿真\程序\交通灯.Uv2

     文件       1018  2014-03-08 16:14  交通灯仿真\程序\交通灯_Opt.Bak

     文件          0  2013-11-27 10:57  交通灯仿真\程序\交通灯_Uv2.Bak

     目录          0  2017-06-04 18:57  交通灯仿真\程序

     目录          0  2017-06-04 18:57  交通灯仿真

----------- ---------  ---------- -----  ----

               190378                    16


评论

共有 条评论