1. 关于51单片机的红绿灯实验的c语言程序,注意是要C语言程序。
主函数部分:
void main(void)
{
    InitTimer1() ;
	Time=30;
	P1=0xFF;
	Flag=0;
	while(1)
	{
	  
	  if(Time==0) 
	  {
	     if(Flag) Time=20;
		 else     Time=30;
		 Flag=~Flag;
	  }
	  if(Time>3 && (!Flag)) 
	  {
	    EastR=OFF;    EastG=ON;
		WestR=OFF;	  WestG=ON;
		SouthR=ON;    SouthG=OFF;
		NorthR=ON;    NorthG=OFF;
		display(Time,1);
	  }
	  else if(Time>3 && Flag)
	  {
	  	EastR=ON;     EastG=OFF;
		WestR=ON;	  WestG=OFF;
		SouthR=OFF;   SouthG=ON;
		NorthR=OFF;   NorthG=ON;
		display(Time,0);
	  }
	}
}
其他已发到邮箱啦
2. 单片机红绿灯交通信号c语言编程
仿真实例可以参考一下,仿真试试。
3. 用单片机编写红绿灯程序,用C语言,红灯10s,绿灯10s,
定时器中断、亮灯主函数
4. 51单片机关于红绿灯的C语言程序设计
51单片机关于红绿灯的C语言程序设 
肯定非常不一样的
好的
5. 用C语言编程模拟交通路口(十字路口)红绿灯的控制功能
本系统的设计首先必须了解交通路灯的亮灭规律。设有一个十字路口,1、3 为南,北
方向, 2、4 为东,西方向,初始态为4 个路口的红灯全亮。之后, 1、3 路口的绿灯亮,
2、4 路口的红灯亮, 1、3 路口方向通车。延迟一段时间后, 1、3 路口的绿灯熄灭,而1、
3 路口的黄灯开始闪烁。闪烁若干次后, 1、3 路口的红灯亮, 同时 2、4 路口的绿灯亮, 2、
4 路口方向开始通车。延迟一段时间后, 2、4 路口的绿灯熄灭,而黄灯开始闪烁。闪烁若
干次后,再切换到1、3 路口方向。之后,重复上述过程。对于各组灯的亮灭,我们运用的
是8255A 的输入输出功能。
6. 如何用C语言汇编红绿灯的程序
用random生成一个随机数,或者是用户自己输入一个数字,用switch语句来响应,当是1时,红灯亮,当是2时,绿灯亮等。
7. c语言怎么写出交通灯的简单程序
我实训是做了这个项目,发给你看看,功能主要和交通灯的差不多,还可以显示具体的时间,跳转的时候,时间是倒计时的,当到0以后,下面灯转换
#include<reg51.h>
unsigned int shi,ge,js;
void delay(unsigned char i);
sbit P2_0=P2^0;
sbit P2_1=P2^1;
unsigned int i=0;
unsigned char key_press();
unsigned char key_scan();
unsigned int m=0;m2=0;n1=6;n2=2;
void TIMERO_1();
void TIMERO_0();
unsigned char led[4]={0xee,0xdb,0xf5,0xdb};
unsigned char code tabe[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x00};
unsigned char num;
unsigned char key_scan()
{   unsigned char hang,lie,key;   
    P3=0x0f;                    
 if(P3!=0x0f)              
 delay(100);              
 if(P3!=0x0f)
 {
  switch(P3&0x0f)
  {
   case 0x0e:hang=0;break;
   case 0x0d:hang=1;break;
   case 0x0b:hang=2;break;
   //case 0x07:hang=3;break;
  }
  P3=0xf0;
  switch(P3&0xf0)
  {
   case 0xe0:lie=0;break;
   case 0xd0:lie=1;break;
   case 0xb0:lie=2;break;
   case 0x70:lie=3;break;
  }              
  while(P3!=0xf0);   
  key=hang*4+lie;
 }
// else
 // key=12;
return (key);
}
unsigned char key_press()       
{
    unsigned char temp,key_flag;
 P3=0x0f;
    delay(100);
    temp=P3;
    if (temp!=0x0f)
 {
     key_flag=1;
 }
    else
    {
        key_flag=0;
    }
    return key_flag;
}
void TIMERO_0() interrupt 1
{
 TH0=0X3C;
 TL0=0XB0;
 m++;
 if(m==20)
 {
 m=0;
 n1--;
 shi=n1/10;
 ge=n1%10;
 }
if(n1==0)
{i=i+1;
n2=3;
TR1=1;
TR0=0;
}
//if(ge==0)
//{ge=2;}
}
void TIMERO_1() interrupt 3
{
 TH1=0X3C;
 TL1=0XB0;
 m2++;
 if(m2==20)
 {
 m2=0;
 n2--;
 shi=n2/10;
 ge=n2%10;
}
if(n2==0)
{
i=i+1;
n1=js;
TR0=1;
TR1=0;
if(i== 4)
 {
 i=0;
 }
//if(ge==0)
//{ge=js;}
}
}
void display(unsigned char a,b,c,d,e,f)
{
 P2_1=1;
 P2_0=0;
 P0=0x20;
P2_0=1;
P2_1=0;
P0=tabe[a];
delay(10);
P0=0x00;
P2_1=1;
P2_0=0;
P0=0X10;
P2_0=1;
P2_1=0;
P0=tabe[b];
delay(10);
P0=0x00;
P2_1=1;
 P2_0=0;
 P0=0x08;
P2_0=1;
P2_1=0;
P0=tabe[c];
delay(10);
P0=0x00;
P2_1=1;
 P2_0=0;
 P0=0x04;
P2_0=1;
P2_1=0;
P0=tabe[d];
delay(10);
P0=0x00;
P2_1=1;
 P2_0=0;
 P0=0x02;
P2_0=1;
P2_1=0;
P0=tabe[e];
delay(10);
P0=0x00;
P2_1=1;
P2_0=0;
P0=0x01;
P2_0=1;
P2_1=0;
P0=tabe[f];
delay(10);
P0=0x00;
delay(10);
}
void main()
{
 TMOD=0X11;
TH0=0X3C;
 TL0=0XB0;
 TH1=0X3C;
 TL1=0XB0;
 ET1=1;
 ET0=1;
 EA=1;
 
P1=0XFF;
 while(1)
 {
  P0=0;
if(key_press())
     {   num=key_scan();
      if(num<=9)      
   {  
       
    shi=ge;
    ge=num;
    js=shi*10+ge;
    n1=js;
   }  
            if(num==10)
   {
    TR0=0;
    TR1=0;
             shi=ge;
    ge=num;
   
   }
             if(num==11)
    {
     TR0=1;
              i=0;
     js=shi*10+ge;
    }
    
             }
    P1=led[i];
display(12,12,12,12,shi,ge);
}
}
void delay(unsigned char i )
{
  unsigned char j, k;
 for(k=0;k<i;k++);
 for(j=0;j<255;j++);
}
8. C语言程序设计编写一个交通红绿灯的控制,各位高手帮帮忙急!
unsigned char counter;
sbit red_nb=P2^0;
......
void main()
{
TMOD=
TH0
TL0
ET0
TR0
while(1)    //根据楼主所给,有4种状态
{
state1;
state2;
state3;
state4;
}
}
void timer0() interrupt 1 //定时器0
{
TH0=0x3c;
TL0=0xb0;
counter++;
}
void state1() //控制南北红灯亮,东西绿灯亮,30s
{  
unsigned char temp = 30;
 red_nb=1;
.....
green_dx=1;
while(1)
{
if( counter>19){counter=0;temp--} //每次counter=20,即1s,temp自减
if(temp) break;                                //当temp为0时,即30秒,退出状态1,进入状态2
}
}
没经过测试,完全是5分诱惑不大。。
9. 求一个C语言的红绿灯程序 80C51
#include<reg51.h>/*下面中n代表north.  n s w e分别代表四个不同的方向*/
sbit rednts=P1^0;
sbit yellownts=P1^1;
sbit greennts=P1^2;
sbit redwte=P1^3;
sbit yellowwte=P1^4;
sbit greenwte=P1^5;//由于实验实的板只用了P1口作输入
int tmp1=0;
int tmp2=0;
int i; 
void begins()
{
    rednts=0;
    yellownts=0;
    greennts=0;
    redwte=0;
    yellowwte=0;
    greenwte=0;
}
void TimeInt() interrupt 1 //这是中断函数,1对应是定时、计数器0
{ 
i++; 
if(i==2000)
    {
        i=0;
        tmp1++;
        if(10==tmp1) tmp1=0;
    }//若到了,得清0 //判断是否到了0.5MS*2000=1S} 
void ExteriorInt() interrupt 0
{
    tmp2=!tmp2;
}
void main()
{       //int time1s,time2s,time3;;
        TMOD=0x02; //启用定时器工作模式2 
        TH0=6;//装定时器初值高8位,0.5ms中断一次 。2US*250=0.5MS
        TL0=6;//装定时器初值低8位
        EA=1; //打开总中断允许
        ET0=1; //打开定时器0的中断允许
        TR0=1; //T0工作1******以上是对定时器0的初始化********
        TCON=0x11;//TCON的设置必须保持定时器0在工作
        EX0=1;//********以上是对外部中断0的初始化***********
        
    while(1)
    {   
        if(tmp2) 
        {
            begins();
            rednts=1;
            redwte=1;
        }
        else if(tmp1<3) 
        {   
            begins();
            rednts=1;
            greenwte=1;
        }
        else if(tmp1<4)
        {
            begins();
        }
        else if(tmp1<5)
        {
            yellownts=1;
            yellowwte=1;
        }
        else if(tmp1<6)
        {
            begins();
        }
        else if(tmp1<7)
        {
            yellownts=1;
            yellowwte=1;
        }
        else if(tmp1<10)
        {
            begins();
            greennts=1;
            redwte=1;
        }
       
    }}
10. 十万火急。求一个 用C语言编写的红绿灯程序。(在tc上运行。)
#include<stdio.h>
#include <string.h>
#include <malloc.h>
void main()
{
int front,rear,temp,n,m,i,j,k,l,group,pre,result[100],newer[100],r[100][100]={0};/*front为队列当前元素在队列中的序号,rear为队尾元素在队列中的序号,temp为当前                                                                                     元素在direction中的序号,group为组号,pre为前一出列元素在direction中的序号。                                                                                  */
char **direction,*p1,*p2;//direction为方向集合。
printf("请输入可以通行的方向的个数:\n");
scanf("%d",&n);
printf("请输入各个方向:\n");
direction=(char **)malloc(2*n*n);
for(i=0;i<n;i++)
{
 *(direction+i)=(char *)malloc(2);
 scanf("%s",*(direction+i));
}
printf("请输入不能同时通行的两个方向的个数:\n");
scanf("%d",&m);
printf("请输入各个方向:\n");
for(i=0;i<m;i++)
{
 p1=(char*)malloc(2);
 p2=(char*)malloc(2);
 scanf("%s%s",p1,p2);
 k=-1;
 l=-1;
 for(j=0;j<n;j++)
 {
  if(!strcmp(*(direction+j),p1))
  k=j;
  if(!strcmp(*(direction+j),p2))
  l=j;
  if(k>=0&&l>=0)
  break;
 }
 free(p1);
 free(p2);
 r[k][l]=1;
 r[l][k]=1;
}
front=n-1;
rear=n-1;
for(i=0;i<n;i++)
{
 *(newer+i)=0;
}
group=1;
pre=0;
do
{
 front++;
 if(front==rear+1)
 front=0;
 for(i=0;i<n;i++)
 {
  if(!strcmp(*(direction+i),*(direction+front)))
  {
   temp=i;
   break;
  }
 }
 if(temp<pre)
 {group++;
  *(result+temp)=group;
  for(i=0;i<n;i++)
  {
   *(newer+i)=r[temp][i];
  }
 }
 else if(*(newer+temp)!=0)
      {
       rear++;
       if(front==rear)
       {
        for(i=n;i<n+rear;i++)
        free(*(direction+i));
        rear=0;
       }
       else
       *(direction+rear)=(char *)malloc(2);
       *(direction+rear)=*(direction+temp);
      }
      else
      {
       *(result+temp)=group;
       for(i=0;i<n;i++)
       *(newer+i)=*(newer+i)+r[temp][i];
      }
 pre=temp;
}while(front!=rear);
printf("所需要的信号灯数目为%d个\n",group);
for(i=1;i<group+1;i++)
{
 printf("%d ",i);
 for(j=0;j<n;j++)
 {
  if(*(result+j)==i)
  printf("%s ",*(direction+j));
 }
 printf("\n");
}
free(direction);
}
//参考
