精华内容
下载资源
问答
  • 交通灯原理图

    2014-05-05 15:17:30
    基于avr的交通灯
  • 交通灯 原理图 PCB

    2012-04-05 20:20:59
    交通灯 原理图 PCB 大学生毕业设计 交通灯
  • 交通灯原理图以及源程序,供开发者研究学习
  • 交通灯原理图,51单片机,带四组数码管,显示时间,每组两个
  • 交通灯原理图绘制及PCB板设计.pdf
  • 交通灯原理图,基于数字电子技术的交通灯原理图,可用作基础学习之用,如果能帮助您学习我很高兴,相互学习资源共享是我们的目的
  • 基于51单片机的交通灯原理图加代码

    万次阅读 多人点赞 2019-07-21 17:59:54
    花了一个星期制作的交通灯仿真程序+原理图,通过数码管显示路口的时间,通过led显示红绿灯。@TOC ![#include<reg51.H>      // 对单片机的口进行了定义 #define uint unsigned int #...

    花了一个星期制作的交通灯仿真程序+原理图,通过数码管显示路口的时间,通过led显示红绿灯。@[TOC]在这里插入图片描述
    #include<reg51.H> // 对单片机的口进行了定义

    #define uint unsigned int

    #define uchar unsigned char

    uchar code a[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//段码组合,共阳极

    uchar code b[4]={0x01,0x02,0x04,0x08}; //位码组合

    uchar code c[4]={0xcc,0xd4,0x78,0xb8};/P1 绿红、黄红、红绿、红黄/

    //12MHz

    //*************************************************************************************

    uchar NB=25,DX=30,NBG=25,DXG=15,H=5; /数码管显示值设置/

    uchar i,k=0,cnt=0,j=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=NBG,DX=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) /每2050ms=1s自减一*/

    {

    NB–;

    DX–;

    cnt=0;

    if(NB0||DX0)

    {

    k++;

    if(k>3) /k取0,1,2,3/

    k=0;

    switch(k)

    {

    case 0:NB=NBG,DX=NBG+H;j=0;P1=c[k];break;   /*主干道通行显示绿红*/
    
       case 1:NB=H;j=1;P1=c[k];break;        /*主干道黄灯闪烁*/
    
    case 2:NB=DXG+H,DX=DXG;j=0;P1=c[k];break;   /*支干道通行显示红绿*/
    
    case 3:DX=H;j=2;P1=c[k];break;        /*支干道黄灯闪烁*/
    

    }

    }

    }

    }

    void delay(uchar t) //延时程序延时0.1*nms

    {

    uchar i;

    do

    {

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

    } while(t–);

    }

    void settime()

    {

    P2=b[0],P0=a[(NBG+H)%10]; /*显示主干道通行时间  */
    
       delay(20); 
    
    
    
    P2=b[1],P0=a[(NBG+H)/10]; 
    
    delay(20); 
    
    
    
    P2=b[2],P0=a[(DXG+H)%10];  /*显示支干道通行时间*/
    
    delay(20); 
    
           
    
       P2=b[3],P0=a[(DXG+H)/10]; 
    
    delay(20); 
    

    }

    void key() //键盘程序用KO K1模拟一道有车一道无车

    {

     if(K1==0)        /*主干道有车支干道无车*/
    
    {  
    
       delay(40);
    
       if(K1==0)    
    
       { 
    
          while(!K1)
    
          {  
    
            display();
    
          }
    
      k=0,P1=c[k];cnt=0;
    
          NB=NBG, DX=NBG+H;
    
         display();
    
       }
    
    }
    
    if(K0==0)         /*支干道有车主干道无车*/
    
    {  
    
       delay(40);
    
       if(K0==0)
    
       {
    
          while(!K0)
    
          {
    
           display(); 
    
          }
    
         k=2,P1=c[k];cnt=0;
    
          NB=DXG+H,DX=DXG;
    
            display(); 
    
    }
    

    }

    }

    void display() //显示程序

    {

    P2=b[0],P0=a[NB%10]; /由k的不同值进入确定显示数值/

    delay(20);

    P2=b[1],P0=a[NB/10];

    delay(20);

    P2=b[2],P0=a[DX%10];

    delay(20);

    P2=b[3],P0=a[DX/10];

    delay(20);

    }

    void main(void)

    { //主程序

    init();

    for(;?

    {

    display();

    key();

    //黄灯闪烁程序

    while(j==1) /主干道黄灯闪烁/

       {              
    
       P1=0xdc;         /*给黄灯一高电平黄灯灭*/    
    
    for(i=83;i>0;i--){display();}      /*执行for循环延时*/   
    
    P1=c[k];         /*再给黄灯一低电平黄灯亮*/
    
    for(i=83;i>0;i--){display();}
    

    }

    while(j==2)

         {              /*支干道黄灯闪烁*/
    
      
    
    P1=0xf8;
    
    for(i=83;i>0;i--){display();}
    
    P1=c[k];
    
    for(i=83;i>0;i--){display();}
    

    }

    }

    }

    展开全文
  • 通过红外线扫描来统计车辆的数量,再通过车流量来加长或缩减红灯的时间。
  • 基于单片机80C51 C语言制作LED模拟交通灯,包含Proteus仿真原理图及Keil C51源码。 资源来源网络,仅供学习参考,请勿用于商业用途。
  • 用altium10 制作,的 就是数字电路逻辑设计的 一些原理图
  • Proteus仿真原理图:Keil C源程序:#include#define uchar unsigned char#define uint unsigned intsbit RED_DONGXI = P1^0;//南北方向红灯亮sbit YELLOW_DONGXI = P1^1;//南北方向黄灯亮sbit RED_NANBEI = P1^3;//...

    Proteus

    仿真原理图:

    Keil C源程序:

    #include

    #define uchar unsigned char

    #define uint unsigned int

    sbit RED_DONGXI = P1^0;//南北方向红灯亮

    sbit YELLOW_DONGXI = P1^1;//南北方向黄灯亮

    sbit RED_NANBEI = P1^3;//东西方向红灯亮

    sbit GREEN_DONGXI = P1^2;//南北方向绿灯亮

    sbit YELLOW_NANBEI = P1^4;//东西方向黄灯亮

    sbit GREEN_NANBEI = P1^5;//东西方向绿灯亮

    sbit DXweixuan1 = P1^6;//南北方向数码管位选1

    sbit DXweixuan2 = P1^7;//南北方向数码管位选2

    sbit NBweixuan1 = P3^0;//东西方向数码管位选1

    sbit NBweixuan2 = P3^1;//东西方向数码管位选2

    sbit L1=P3^5;

    sbit L2=P3^6;

    sbit L3=P3^7;

    uint aa, bai,shi,ge,bb;

    uint shi1,ge1,shi2,ge2;

    uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};

    void delay(uint z);

    void init(uint a);

    void display(uint shi1,uint ge1,uint shi2,uint ge2);

    void xtimer0();

    void init1();

    void init2();

    void init3();

    void init4();

    void init5();

    void xint1();

    void xint0();

    void LED_ON();

    void LED_OFF();

    void main()

    {

    P0=0xFF;

    P1=0xFF;

    P2=0x00;

    P3=0xFF;

    EA=1;

    EX0=1;

    IT0=0;

    init1();

    while(1)

    {

    init2();//第2个状态

    init3(); //第3个状态

    init4(); //第4个状态

    init5();//第5个状态

    }

    }

    void init1()//第一个状态:东西、南北方向均亮红灯5S

    {

    uint temp;

    temp=5;

    TMOD=0x01;

    TH0=(65535-50000)/256;

    TL0=(65535-50000)%256;

    EA=1;

    ET0=1;

    TR0=1;

    while(1)

    {

    } } RED_DONGXI=0; //第一个状态东西、南北均亮红灯5S RED_NANBEI=0; GREEN_DONGXI=1; GREEN_NANBEI=1; YELLOW_DONGXI=1; YELLOW_NANBEI=1; if(aa==20)//定时20*50MS=1S { aa=0; temp--; } shi1=shi2=temp/10; ge1=ge2=temp%10; if(temp==0) { temp=5; break; } display(ge1,shi1,ge2,shi2);

    void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S; {

    uint temp;

    temp=26;

    TMOD=0x01;

    TH0=(65535-50000)/256;

    TL0=(65535-50000)%256;

    EA=1;

    ET0=1;

    TR0=1;

    while(1)

    {

    RED_DONGXI=1;

    RED_NANBEI=0;

    GREEN_DONGXI=0;

    GREEN_NANBEI=1;

    YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯 YELLOW_NANBEI=1;

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

    {

    aa=0;

    temp--;

    shi1=(temp+5)/10;

    ge1=(temp+5)%10;

    shi2=temp/10;

    ge2=temp%10;

    if(temp==0)

    {

    temp=26;

    break;

    }

    }

    display(ge1,shi1,ge2,shi2);

    }

    }

    void init3() //第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S {

    uint temp;

    temp=6;

    TMOD=0x01;

    TH0=(65535-50000)/256;

    TL0=(65535-50000)%256;

    EA=1;

    ET0=1;

    TR0=1;

    while(1)

    {

    RED_NANBEI=0;

    GREEN_DONGXI=1;

    } } if(aa==20)//定时20*50MS=1S { aa=0; temp--; YELLOW_DONGXI=~YELLOW_DONGXI; shi1=temp/10; shi2=shi1; ge1=temp%10; ge2=ge1; } if(temp==0) { temp=6; break; } display(ge1,shi1,ge2,shi2);

    void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S; {

    uint temp;

    temp=26;

    TMOD=0x01;

    TH0=(65535-50000)/256;

    TL0=(65535-50000)%256;

    EA=1;

    ET0=1;

    TR0=1;

    while(1)

    {

    RED_DONGXI=0;

    RED_NANBEI=1;

    }

    } YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5S GREEN_NANBEI=0; if(aa==20) { aa=0; temp--; shi1=temp/10; shi2=(temp+5)/10; ge1=temp%10; ge2=(temp+5)%10; if(temp==0) { temp=26; break; } } display(ge1,shi1,ge2,shi2);

    void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S {

    uint temp;

    temp=6;

    TMOD=0x01;

    TH0=(65535-50000)/256;

    TL0=(65535-50000)%256;

    EA=1;

    ET0=1;

    TR0=1;

    while(1)

    {

    RED_NANBEI=1;

    RED_DONGXI=0;

    GREEN_DONGXI=1;

    GREEN_NANBEI=1;

    if(aa==20)

    {

    aa=0;

    temp--;

    YELLOW_NANBEI=~YELLOW_NANBEI;

    shi1=temp/10;

    shi2=shi2;

    ge1=temp%10;

    ge2=ge1;

    if(temp==0)

    {

    temp=6;

    break;

    }

    }

    display(ge1,shi1,ge2,shi2);

    }

    }

    void display(uint shi1,uint ge1,uint shi2,uint ge2) {

    DXweixuan1=0;

    DXweixuan2=1;

    NBweixuan1=1;

    NBweixuan2=1;

    P0=table[ge1];

    delay(5);

    DXweixuan1=1;

    DXweixuan2=0;

    NBweixuan1=1;

    NBweixuan2=1;

    P0=table[shi1];

    delay(5);

    DXweixuan1=1;

    DXweixuan2=1;

    NBweixuan1=0;

    NBweixuan2=1;

    P0=table[ge2]; delay(5);

    DXweixuan1=1; DXweixuan2=1; NBweixuan1=1; NBweixuan2=0; P0=table[shi2]; delay(5);

    }

    void xint0() interrupt 0 {

    RED_NANBEI=0; RED_DONGXI=0; GREEN_NANBEI=1; GREEN_DONGXI=1; YELLOW_NANBEI=1; YELLOW_DONGXI=1; P0=0x00;

    NBweixuan1=0; NBweixuan2=0; DXweixuan1=0; DXweixuan2=0; delay(2);

    return ;

    }

    void xint1() interrupt 2 {

    RED_NANBEI=1; RED_DONGXI=1; GREEN_NANBEI=0; GREEN_DONGXI=0; YELLOW_NANBEI=1; YELLOW_DONGXI=1; P0=0x00;

    NBweixuan1=0; NBweixuan2=0; DXweixuan1=0; DXweixuan2=0; delay(2);

    return ;

    }

    void xtimer0() interrupt 1 {

    TH0=(65535-50000)/256;

    TL0=(65535-50000)%256; aa++;

    }

    void delay(uint z) {uint x,y;

    for(x=0;x

    for(y=0;y

    展开全文
  • 交通灯单片机仿真原理图,很不错的程序实现的现实交通灯原理图,可以直接使用或者修改使用
  • 8086交通灯 原理图及代码 简单但很全面
  • 交通灯控制系统原理图 protel原理图
  • 纯数电实现模拟交通灯控制功能
  • 51单片机 交通灯 仿真与原理图 51单片机 交通灯 仿真与原理图51单片机 交通灯 仿真与原理图
  • 基于单片机的交通灯设计的原理图 protel绘制
  • 里面包好开题报告,任务书,制作详解,芯片资料,元件清单,论文,答辩问题,交通灯程序设计,原理图,PCB图,所需的任何软件都有。
  • 交通灯原理图、PCB3d图、Solidworks外壳图,爆炸效果图)
  • 交通交通灯资料全 pcb 原理图 c程序全
  • 交通灯设计的eda程序,有原理,有程序,还有原理图,可以下载看看
  • 51交通灯程序,板子原理图,pcb,希望下载
  • 用PROTEL画出交通信号原理图,实现红绿黄灯的交替变化
  • 设计了一个东西方向和南北方向十字路口的交通灯控制电路。并且包含了两种模式,该设计完全符合单片机课程设计,还包含51的各种常见元器件,简单封装添加入库即可。
  • 交通灯系统 模拟十字路口交通灯变化 当南北为红灯时 东西为绿 反之也一样 数码管计时 包括 ad(原理图+原理图库)+ keil(源程序)+ proteus(仿真原理图
  • 通过51单片机控制交通灯,包括代码和原理图,值得拥有。
  • 原理图设计 C++程序设计 欢迎下载 急需积分单片机交通灯设计
  • 基于89c52单片机的数据采集交通灯控制系统设计原理图
  • 基于AT89C51的十字路口交通灯设计(proteus原理图、keil汇编程序)
  • 交通灯,内含完整原理图及c程序,c源程序有带注释。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,048
精华内容 2,019
关键字:

交通灯原理图