精华内容
下载资源
问答
  • 单片机交通灯课程设计单片机交通灯课程设计单片机交通灯课程设计单片机交通灯课程设计
  • 交通灯课程设计文档,通过单片机实现,自己做的。使用了数码管等。AT89s52。
  • 单片机交通 灯课程设计报告单片机交 通灯课程设计报告单片机交通灯课程设计 报告单片机交通灯课程设计报告单片机交通 灯课程设计报告单片机交通灯课程设计报告
  • 51单片机交通灯课程设计,含源码程序,视频讲解,元件清单,操作说明,原理图,毕业论文等超全,是毕业设计非常有用的参考资料
  • 单片机交通灯课程设计 1. 实验目的和器件 1.1实验目的 (1)通过单片机课程设计,熟练掌握C语言的编写方法,将理论联系到实际中去,提高我们的动手和动脑能力。 (2)通过交通信号灯控制系统的设计,掌握定时器/...

    单片机交通灯课程设计

    1. 实验目的和器件

    1.1实验目的

    (1)通过单片机课程设计,熟练掌握C语言的编写方法,将理论联系到实际中去,提高我们的动手和动脑能力。
    (2)通过交通信号灯控制系统的设计,掌握定时器/计数器及中断的使用方法,和简单的程序编写,最总提高我们的逻辑抽象能力。

    2.2实验器件

    AT89C52、电源、红绿灯、导线若干

    2.设计任务和性能指标

    2.1设计任务

    东西、南北干道交与一个十字路口,各干道有一组红、黄、绿三色的指示灯,指示车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意绿灯的状态即将切换,切黄灯燃亮时间为东西南北两干道的公共停车时间。指示灯燃亮的方案如下所示。
    10s 5s 3s 2s ……
    东西道 红灯亮 红灯亮 红灯亮 红灯亮 ……
    南北道 绿灯亮 绿灯闪 黄灯闪 红灯亮 ……

    2.2性能指标

    (1)利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。用控制按钮控制两个中断:1、东西红南北绿。2、南北红东西绿。
    (2)当东西方向为红灯,此道车辆禁止通行,东西道行人可通行;南北道为绿灯,此道车辆通过,行人禁止通行,通行时间为15S。
    (3)当东西方向为绿灯,此道车辆通行;南北道为红灯,此道车辆禁止通行,行人通行,通行时间为15S。

    3.设计方案

    3.1任务分析

    在交通灯控制系统中,东西南北四个方向各有红黄绿三种颜色的指示灯各一盏,共计12盏指示灯,用以来指挥车辆和行人交通安全通行。当红色指示灯亮的时候表示禁止该方向的车辆和行人通行,当黄色指示灯亮的时候提示人们绿灯的状态即将切换。并且黄灯燃亮时为东西和南北两干道的公共停车时间。初始状态0为东西南北都红灯亮。然后转为状态1南北绿灯通车,东西红灯亮。过一段时间后,转为状态2,南北绿灯灭,黄灯闪几下变红灯,东西还是红灯。再转为状态3, 南北红灯亮,东西绿灯通车。过一段时间后转为状态4,东西绿灯灭,闪几下黄灯后转为红灯,南北还是为红灯亮,一段时间后,又循环至状态1。为了达到上述设计要求,可以用一片AT89C52单片机实现。可以用一个AT89C52的P1(P1.0-P1.6)别接上垂直两个道口的6盏信号灯,由AT89C52单片机的P1口送交通信号信息,在这个系统中采取的是共阴极红绿灯,所以当P1口的各引脚输出为高电平时,显示红、绿、黄灯的燃亮情况。用AT89C52的P0口显示绿、黄灯的燃亮的倒计时时间,时间由定时器来控制,由P1口作为倒计时时间的个位:数码,用四个数码管的显示用动态显示方法实现。P3口用来接应急开关K3、K4,对特殊情况的处理,当按下开关时交通显示东西红南北绿或北红东西绿,使殊车辆通过。

    3.2硬件设计

    根据以上的设计思路分析可以得到十字路口交通灯控制系统的硬件电路设计图。
    在这里插入图片描述

    3.3软件设计

    1)主流程图

    通过设计思路的分析,得到主流程如下。
    在这里插入图片描述
    在这里插入图片描述

    4.程序清单

    #include<reg52.h>
    typedef unsigned char u8;
    typedef unsigned int u16;

    sbit led1r=P1^0; //红
    sbit led1g=P1^1; //绿
    sbit led1y=P1^2; //黄
    sbit led2r=P1^4; //红
    sbit led2g=P1^5; //绿
    sbit led2y=P1^6; //黄
    sbit k1=P3^0;
    sbit k2=P3^1;
    sbit k3=P3^2;
    sbit k4=P3^3;
    sbit LSA=P2^2;
    sbit LSB=P2^3;
    sbit LSC=P2^4;
    u8 code SegCode[]={0x3F,0x06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X00}; //数码管段选号
    u8 num=0,DisplayDate[8];
    u16 i;

    void delay500ms() //500ms延时函数
    {
    unsigned char a,b,c;
    for(c=23;c>0;c–)
    for(b=152;b>0;b–)
    for(a=70;a>0;a–);
    }

    void Time1Init()
    { //定时器1
    TMOD|=0x10;
    TH1=0X3C;
    TL1=0XAF;
    ET1=1;
    EA=1;
    TR1=1;
    }
    void Int0Tnit() //外中断0
    {
    IT0=0; //低电平有效
    EX0=1;
    EA=1;
    }

    void Int1Tnit() //外中断1
    {
    IT1=0; //低电平有效
    EX1=1;
    EA=1;
    }

    void main()
    {

    Int0Tnit();
    Time1Init();
    Int1Tnit();
    while(1);

    }

    void Time1() interrupt 3 //红绿灯正常运行
    {

    TH1=0X3C;
    TL1=0XAF;
    i++;

    if(i<=200)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[10];
    led1g=1;
    led1r=0;
    led1y=0;

    led2r=1;
    led2y=0;
    led2g=0;
    }
    else
    {
    if(i<=210)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[8];
    led1g=1;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=220)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[8];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {

    if(i<=230)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[7];
    led1g=1;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {

    if(i<=240)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[7];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=250)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[6];
    led1g=1;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=260)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[6];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=270)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[5];
    led1g=1;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=280)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[5];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    { if(i<=290)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[4];
    led1g=1;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=300)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[4];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=310)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[3];
    led1g=0;
    led1y=1;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=320)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[3];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=330)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[2];
    led1g=0;
    led1y=1;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=340)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[2];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=350)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[1];
    led1g=0;
    led1y=1;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    if(i<=360)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[1];
    led1g=0;
    led1y=0;
    led1r=0;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    { if(i<=400)
    {
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[10];
    led1g=0;
    led1y=0;
    led1r=1;
    led2r=1;
    led2g=0;
    led2y=0;
    }
    else
    {
    switch(i/10)
    {
    case 40: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 41: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 42: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 43: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 44: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 45: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 46: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 47: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 48: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 49: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 50: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 51: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 52: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 53: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 54: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 55: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 56: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 57: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 58: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 59: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 60: LSA=0;LSB=0;LSC=0;P0=SegCode[8];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 61: LSA=0;LSB=0;LSC=0;P0=SegCode[8];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 62: LSA=0;LSB=0;LSC=0;P0=SegCode[7];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 63: LSA=0;LSB=0;LSC=0;P0=SegCode[7];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 64: LSA=0;LSB=0;LSC=0;P0=SegCode[6];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 65: LSA=0;LSB=0;LSC=0;P0=SegCode[6];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 66: LSA=0;LSB=0;LSC=0;P0=SegCode[5];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 67: LSA=0;LSB=0;LSC=0;P0=SegCode[5];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 68: LSA=0;LSB=0;LSC=0;P0=SegCode[4];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=1;break;
    case 69: LSA=0;LSB=0;LSC=0;P0=SegCode[4];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 70: LSA=0;LSB=0;LSC=0;P0=SegCode[3];led1r=1;led1y=0;led1g=0;led2r=0;led2y=1;led2g=0;break;
    case 71: LSA=0;LSB=0;LSC=0;P0=SegCode[3];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 72: LSA=0;LSB=0;LSC=0;P0=SegCode[2];led1r=1;led1y=0;led1g=0;led2r=0;led2y=1;led2g=0;break;
    case 73: LSA=0;LSB=0;LSC=0;P0=SegCode[2];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 74: LSA=0;LSB=0;LSC=0;P0=SegCode[1];led1r=1;led1y=0;led1g=0;led2r=0;led2y=1;led2g=0;break;
    case 75: LSA=0;LSB=0;LSC=0;P0=SegCode[1];led1r=1;led1y=0;led1g=0;led2r=0;led2y=0;led2g=0;break;
    case 76: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=1;led2y=0;led2g=0;break;
    case 77: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=1;led2y=0;led2g=0;break;
    case 78: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=1;led2y=0;led2g=0;break;
    case 79: LSA=0;LSB=0;LSC=0;P0=SegCode[10];led1r=1;led1y=0;led1g=0;led2r=1;led2y=0;led2g=0;break;
    case 80: i=0;break;
    }
    }

    }}}}}}}}}}}}}}}}}}
    

    void Int0() interrupt 0 //1方向为红灯,2方向为绿灯
    {
    while(!k3)
    {
    if(led1g==1) //判断之前1方向是否为绿
    {
    LSA=0;LSB=0;LSC=0; //如果为绿则变成黄灯闪烁3次
    P0=SegCode[3];
    led1r=0;
    led1g=0;
    led1y=1;
    led2r=0;
    led2g=1;
    led2y=0;
    delay500ms();
    led1y=0;
    delay500ms();
    P0=SegCode[2];
    led1y=1;
    delay500ms();
    led1y=0;
    delay500ms();
    P0=SegCode[1];
    led1y=1;
    delay500ms();
    led1y=0;
    delay500ms();
    }
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[10];
    led1r=1;
    led1g=0;
    led1y=0;
    led2r=0;
    led2g=1;
    led2y=0;

    }
    led1r=1;																//退出中断时2方向绿灯变成黄灯闪烁3次
    led2g=0;
    led2y=1;
    P0=SegCode[3];
    delay500ms();
    led2y=0;
    delay500ms();
    led2y=1;
    P0=SegCode[2];
    delay500ms();
    led2y=0;
    delay500ms();
    led2y=1;
    P0=SegCode[1];
    delay500ms();
    led2y=0;
    delay500ms();
    i=0;
    

    }

    void Int1() interrupt 2 //1方向为绿灯,2方向为红灯
    {
    while(!k4)
    {
    if(led2g==1) //判断2方向之前是否为绿
    {
    LSA=0;LSB=0;LSC=0; //如果为绿则变成黄灯闪烁3次
    P0=SegCode[3];
    led1r=0;
    led1g=1;
    led1y=0;
    led2r=0;
    led2g=0;
    led2y=1;
    delay500ms();
    led2y=0;
    delay500ms();
    P0=SegCode[2];
    led2y=1;
    delay500ms();
    led2y=0;
    delay500ms();
    P0=SegCode[1];
    led2y=1;
    delay500ms();
    led2y=0;
    delay500ms();
    }
    LSA=0;LSB=0;LSC=0;
    P0=SegCode[10];
    led1r=0;
    led1g=1;
    led1y=0;
    led2r=1;
    led2g=0;
    led2y=0;

    }
    led2r=1;															  //退出中断时1方向绿灯变成黄灯闪烁3次
    led1g=0;
    led1y=1;
    P0=SegCode[3];
    delay500ms();
    led1y=0;
    delay500ms();
    led1y=1;
    P0=SegCode[2];
    delay500ms();
    led1y=0;
    delay500ms();
    led1y=1;
    P0=SegCode[1];
    delay500ms();
    led1y=0;
    delay500ms();
    i=400;
    

    }

    展开全文
  • 利用C51单片机做的一个关于交通灯设计,其中包含按键中断的扩展,压缩文件内包含代码、Proteus仿真和实验报告。(C语言)
  • 基于AT89S52单片机的十字路口交通灯控制系统
  • 两个单片机课设(电子时钟的设计与实现和单片机交通灯课程设计报告(含电路图,源程序)
  • 挺好的 挺使用的 我可是几个一花了好长时间才做好的 大家共同进步吧`````
  • 论文全套:仿真图,总结,源程序,流程图,仿真电路,生WAVE成的HEX文件~~~
  • 基于89s52的交通灯控制系统,内含电路图,源程序,完整的设计报告格式~~可以直接使用
  • 89C51单片机交通灯课程设计,红绿灯控制.
  • 简单的单片机交通灯 包含程序+proteus仿真 系统实现的功能:系统电路上电后 (一)东西方向显示绿灯时,南北方向显示红灯,持续20秒钟后,绿灯变为黄灯并持续3秒钟; (二)然后东西方向显示红灯,南北方向显示...
  • 单片机控制交通灯课程设计报告
  • 单片机c语言交通灯课程设计

    热门讨论 2009-10-27 21:49:09
    单片机C语言的交通灯课程设计,有报告有源文件!!!!!!!!
  • 基于51单片机交通灯课程设计,包括源代码,论文正文,仿真图。
  • 单片机为核心,设计一个智能交通灯控制系统,设A车道与B车道交叉组成十字路口,A是主道,B是支道。两个方向分别设置红、绿、黄3种指示灯,正常情况下,A、B两车道轮流放行,A车道通行时间长于B车道通行时间;...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 280
精华内容 112
关键字:

单片机交通灯课程设计