| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 465 人关注过本帖
标题:下面是交通灯的程序,求大侠们帮忙改下程序
只看楼主 加入收藏
攸诺
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-2-19
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
下面是交通灯的程序,求大侠们帮忙改下程序
#include <reg51.h>
#include <stdio.h>
#define uchar     unsigned char
#define uint      unsigned int

uchar h;
uint r=0;
uint s;
uchar code  dis[]={
                           
    0Xc0,/*0*/
    0Xf9,/*1*/
    0Xa4,/*2*/
    0Xb0,/*3*/
    0X99,/*4*/
    0X92,/*5*/
    0X82,/*6*/
    0Xf8,/*7*/
    0X80,/*8*/
    0X90,/*9*/
    0Xff,/*NULL*/
};


void delay(uint c)
{
   uint i,j;
    for(i=0;i<c;i++)
      for(j=0;j<100;j++);
   
}

 //interrupt 1
void t0(void) interrupt 0 using 1
{
  delay(2);
   if(INT0==0)
    {
      r++;
      if(r==2)
       {
          r=0;
       }
      r%=2;
      if(r==0)
       {
        P0=0xeb;
        P1=0x00;
        P2=0xff;
       }while(1)
        {
           if(INT0==0|INT1==0|T0==0)
          {
          delay(2);
          if(INT0==0|INT1==0|T0==0)
              break;
          }

        };
      
    }

}

 //interrupt 2
void t1(void) interrupt 2 using 1
{
  delay(2);
   if(INT1==0)
    {
      r++;
      if(r==2)
       {
          r=0;
       }
      r%=2;
      if(r==0)
       {
        P0=0xdd;
        P1=0x00;
        P2=0xff;
       }while(1)
        {
           if(INT1==0|INT0==0|T0==0)
          {
           delay(2);
           if(INT1==0|INT0==0|T0==0)
              break;
          }

        };
      
    }

}

//interrupt 3
void t2(void) interrupt 1 using 1
{
  TH0=0xff;
  TL0=0xff;
    delay(2);
     if(T0==0)
       {
        P0=0xdb;
        P1=0x00;
        P2=0xff;
       }while(1)
        {
           if(INT0==0|INT1==0)
          {     
            delay(2);
            if(INT0==0|INT1==0)
              break;
          }

        };

}



void main(void)
{
  TMOD=0x06;
  TH0=0xff;
  TL0=0xff;
  TR0=1;
  EA=1;
  EX0=1;
  EX1=1;
  ET0=1;
  
  
 while(1)
{

    P0=0xeb;
     for(h=28;h>0;h--)
     {
       for(s=248;s>0;s--)
       {
        P1=0x00;
        P2=0xff;
        P1=0x01;
        P2=dis[h/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x02;
        P2=dis[h%10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x04;
        P2=dis[(h+2)/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x08;
        P2=dis[(h+2)%10];
         delay(1);
       }
     }

    delay(248);

    P0=0xf3;
     for(h=3;h>0;h--)
     {
        delay(392);
         P0=0xf3;
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0xaa;
        P2=dis[(h-1)%10];
         delay(600);
        P0=0xfb;
     }

    delay(248);
     
    P0=0xdd;
     for(h=38;h>0;h--)
     {
       for(s=248;s>0;s--)
       {
        
        P1=0x00;
        P2=0xff;
        P1=0x01;
        P2=dis[(h+2)/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x02;
        P2=dis[(h+2)%10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x04;
        P2=dis[h/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x08;
        P2=dis[h%10];
         delay(1);
       }
     }

    delay(248);

    P0=0xde;
     for(h=3;h>0;h--)
     {
        delay(392);
        P0=0xde;
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0xaa;
        P2=dis[(h-1)%10];
        delay(600);
        P0=0xdf;
      
     }

     delay(248);
     
   }
  
}
这个是交通灯的程序,百度下载的哈。我想把黄灯的闪烁时间改为5秒,红灯的时间改为55秒,绿灯的时间改为25秒。有区分东西方向和南北方向。麻烦大侠们帮忙解答下,怎么修改这个程序,谢谢
搜索更多相关主题的帖子: void 100 include 交通灯 
2012-03-19 17:01
C_596322153
Rank: 6Rank: 6
来 自:徽州
等 级:侠之大者
帖 子:182
专家分:466
注 册:2012-1-10
收藏
得分:5 
找到一个以前写的:
程序代码:
 #include <reg51.h>

#define uchar unsigned char
#define uint unsigned int

void delay(uint);
void convert();
void display();
void disLed();
void time0();
void init_Time();

//共阴:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
unsigned char Led[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};     
uchar dis[4]={0},time,flag; 

sbit GLedA = P0^0;
sbit RLedA = P0^1;
sbit YLedA = P0^2;
sbit GLedB = P0^3;
sbit RLedB = P0^4;
sbit YLedB = P0^5;    


void main()
{           
     init_Time();
    time=10;
    flag=0;
     while(1)
      {
          display();
        disLed();       
      } 
}

//************  定时器初始化 *************
void init_Time()
{
    TMOD=0X01;
    TH0=0X3C; //50MS
    TL0=0XB0;
    EA=1;
    ET0=1;
    TR0=1;
}
//************  定时器0中断 *************
void time0() interrupt 1
{
    static num;
    num++;
    if(num==20)
    {
        time--;
        if(time==0)
        {
            flag++;
            switch(flag)
            {
                case 0:
                case 2: time=10; break;
                case 1:
                case 3: time=3;  break; 
                case 4:    time=10;flag=0; break;           
            }
        }
        num=0;            
    }
    TH0=0X3C; //50MS
    TL0=0XB0;   
}

//************  数码管显示 *************
void display()
{
    uchar i;
    convert();
    for(i=0;i<4;i++)
    {
        P2=i;                              //设置点亮的位置
        P1=Led[dis[i]];                    //点亮
        delay(20);    
    }
}
void convert()
{
    dis[0]=dis[2]=time%10;
    dis[1]=dis[3]=time/10;
}

//************  红绿灯显示 *************
void disLed()
{
   
    switch(flag)
    {
        case 0: GLedA=0; RLedA=1; YLedA=1;      //A为绿灯;B为红灯
                GLedB=1; RLedB=0; YLedB=1;       
                break;
        case 1:    GLedA=1; RLedA=1; YLedA=0;      //A为黄灯;B为红灯
                GLedB=1; RLedB=0; YLedB=1;
                break;
        case 2:    GLedA=1; RLedA=0; YLedA=1;      //A为红灯;B为绿灯
                GLedB=0; RLedB=1; YLedB=1;
                break;
        case 3:    GLedA=1; RLedA=0; YLedA=1;      //A为红灯;B为黄灯
                GLedB=1; RLedB=1; YLedB=0;
                break;
    }   
   
}
//************  延时程序 *************
void delay(uint i)
{
    while(i--);
}

2012-03-19 18:06
攸诺
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-2-19
收藏
得分:0 
回复 2楼 C_596322153
麻烦在我的程序上,帮我改一下哈
2012-03-19 22:32
姚杰
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:169
专家分:477
注 册:2010-6-1
收藏
得分:5 
。。。。。。。。。。。。。。。。。。

持之以恒,别留遗憾,加油
2012-03-20 08:06
以中
Rank: 3Rank: 3
来 自:长沙
等 级:论坛游侠
帖 子:108
专家分:129
注 册:2010-4-13
收藏
得分:5 
#include <reg51.h>,请问下这个文件打不开是什么原因?


道之所存,师之所存。
2012-03-20 14:15
攸诺
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-2-19
收藏
得分:0 
回复 5楼 以中
额,这个是51单片机的头文件,直接百度就可以找到里面的内容了
2012-03-20 14:36
快速回复:下面是交通灯的程序,求大侠们帮忙改下程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019164 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved