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);
}
//參考
