最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

51单片机综合实验交通灯设计报告

来源:动视网 责编:小OO 时间:2025-09-24 14:49:42
文档

51单片机综合实验交通灯设计报告

51单片机综合实验交通灯设计报告班级:学生姓名:学号:指导教师:一实验题目交通灯控制系统设计二实验目的1、学会用8051单片机开发简单的计算机控制系统;2、学会用汇编语言和C语言开发系统软件;3、学会8051单片机开发环境wave或KeiluVision3软件的使用;4、学会Proteus软件的使用方法,会用Proteus单片机系统进行仿真;5、学会Protel软件的使用方法,会用Protel绘制电气原理图和印制板图;6、熟悉七位数码管显示的使用方法;7、了解交通灯控制系统的基本组成。三实验要
推荐度:
导读51单片机综合实验交通灯设计报告班级:学生姓名:学号:指导教师:一实验题目交通灯控制系统设计二实验目的1、学会用8051单片机开发简单的计算机控制系统;2、学会用汇编语言和C语言开发系统软件;3、学会8051单片机开发环境wave或KeiluVision3软件的使用;4、学会Proteus软件的使用方法,会用Proteus单片机系统进行仿真;5、学会Protel软件的使用方法,会用Protel绘制电气原理图和印制板图;6、熟悉七位数码管显示的使用方法;7、了解交通灯控制系统的基本组成。三实验要
51单片机综合实验交通灯设计报告

班       级: 

学 生 姓 名:

学       号:

指 导 教 师: 

一实验题目

交通灯控制系统设计

二实验目的

1、学会用8051单片机开发简单的计算机控制系统;

2、学会用汇编语言和C语言开发系统软件;

3、学会8051单片机开发环境wave或Keil uVision3软件的使用;

4、学会Proteus软件的使用方法,会用Proteus单片机系统进行仿真;

5、学会Protel软件的使用方法,会用Protel绘制电气原理图和印制板图;

6、熟悉七位数码管显示的使用方法;

7、了解交通灯控制系统的基本组成。

三实验要求

交通灯处在十字路口上。它有红﹑黄﹑绿三种颜色的灯组成。红灯亮时道路上的车辆停止运行;黄灯是一种过渡用的信号灯,当它亮时,表示道路上的红绿色信号灯即将进行转换。下面拿东西南北四个方向来说明。当东西方向允许行车(或者左转)的时候,南北方向就禁止行车,即此时东西方向的绿灯亮红灯灭,而南北方向的绿灯灭红灯亮。反之当南北方向允许行车(或者左转)的时候,东西方向就禁止行车,即此时南北方向的绿灯亮红灯灭,而东西方向的绿灯灭红灯亮。交通灯配置示意图如图1所示。同时当有特殊的情况发生时,能手动控制各个方向的信号灯。设计任务就是将这一电路用单片机来实现具体的控制。

图1  十字路口交通灯配置示意图

四 设计内容与原理

为了在后面的分析中便于说明,将南北方向允许直行命名为状态1,南北方向允许左转命名为状态2,南北方向行车到东西方向行车的转换阶段命名为状态3,将东西方向允许直行命名为状态4,东西方向允许左转命名为状态5,东西方向行车到南北方向方向行车的转换阶段命名为状态6。

假定直行绿灯点亮的时间为25s,左转绿灯点亮的时间为20s,黄灯点亮的时间为5s,则对方红灯的点亮时间为50秒。黄灯每隔500ms亮一次,之后灭500ms(亮灭一次叫作闪烁一次),一共闪烁5次,持续5s。各个状态之间的变换情况如下:

状态1  状态2  状态3  状态4  状态5  状态6  状态1

具体显示周期如下:

25s20s5s50s
状态1状态2状态3状态4状态5状态6
南北路口

直行

绿灯亮

左转

绿灯亮

黄灯亮

缓行

红灯亮禁行
东西路口

红灯亮禁行直行

绿灯亮

左转

绿灯亮

黄灯亮

缓行

50s25s20s5s
 

图2交通信号灯点亮时间图

设计电路中每个路口的控制信号灯应有四个,即绿灯两个、黄灯、红灯各一个,同时需要七段数码管一个。因此,本电路的设计中应用到绿灯八个,黄灯四个,红灯四个,七段数码管两个(东西方向相同,南北方向相同,为节省空间可省略一对)。

五 电路设计分析

根据前面的设计内容与原理分析,电路设计中应有控制模块(单片机电路)、显示模块(十六个信号灯和两个七段数码管)本电路的设计,将发光二极管作为16个信号灯的材料。电源将采用5V的直流电源。东西两个方向的绿灯是同时亮的,为了简化电路可以让这两个灯接同一个引脚。同理,东西方向的黄灯、红灯也可以分别接同一个引脚。南北方向同上。这样我们可以用一个8位口控制16盏信号灯。

各信号灯均是共阴极接法,LED负极均接地,正极通过保护电阻接单片机P1口。这样单片机引脚的输出一个高电平时,相应的信号灯就被点亮。七段数码管经过8位排阻RESPACK-8连接。

单片机中应包括复位电路和晶振电路。本设计中,采用上电复位形式,由于本系统应用的机器周期为ls,所以晶振选择为12MHz,根据调试电容选择30pF.

图3:复位电路

图4:晶振电路

六 硬件原理图

七 程序流程

本程序的程序流程图如图所示

八 心得体会

    这次系统实验历时一个月的时间,在这实验过程里我们巩固了从编程、软件使用到调试的专业知识,逻辑思维和动手能力都得到了很大的提高。

   要解决的主要问题就是程序的设计和仿真,虽然初期在设计和布局、编程时思路比较清晰,但是到了细节处,也出了不少问题,而且很难被检查出来,如在定时器使用方面出了一些错误。但是最后经过不断努力,还是写出来正确的代码。

   通过这次系统实验,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力,同时提高了对专业的认识及兴趣,对于我们工科生来说,对以后就业很有帮助。

附录  程序代码:

#define    uchar    unsigned char

#define    uint    unsigned int

#include    

/*****定义控制位**********************/

sbit    EW_LED2=P2^3;    //东西数码管个位

sbit    EW_LED1=P2^2;    //东西数码管十位

sbit    SN_LED2=P2^1;    //南北数码管个位

sbit    SN_LED1=P2^0;    //南北数码管十位_

sbit    SN_Yellow=P1^6;//南北黄灯

sbit    EW_Yellow=P1^2;//东西黄灯

sbit    EW_Red=P1^3;//东西红灯

sbit    SN_Red=P1^7;//南北红灯

sbit       Busy_Btton=P3^4;

bit     Flag_SN_Yellow; //南北黄灯标志位

bit     Flag_EW_Yellow;//东西黄灯标志位

char    Time_EW;//东西方向倒计时单元

char    Time_SN;//南北方向倒计时单元

uchar EW=50,SN=25,EWL=20,SNL=20; //程序初始化赋值

uchar EW1=50,SN1=25,EWL1=20,SNL1=20;//用于存放修改值的变量1-9段选码

uchar 

code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90    };

uchar code S[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信号灯控制代码

/**********************延时子程序************************/

void    Delay(uchar     a)

    {

        uchar    i;

        i=a;

        while(i--){;}

    }

/*****************显示子函数**************************/

void    Display(void)

    {

        char h,l;

        h=Time_EW/10;

        l=Time_EW%10;

          P0=table[l];

        EW_LED2=1;

        Delay(200);

        EW_LED2=0;

        P0=table[h];

        EW_LED1=1;

        Delay(200);

        EW_LED1=0;

        h=Time_SN/10;

        l=Time_SN%10;

        P0=table[l];

        SN_LED2=1;

        Delay(200);

        SN_LED2=0;

        P0=table[h];

        SN_LED1=1;

        Delay(200);

        SN_LED1=0;

        

}

/**********************T0中断服务程序*******************/

    void timer0(void)interrupt 1 using 1

{

    static uchar count;

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    count++;

    

    if(count==10)

    {

      if(Flag_SN_Yellow==1) //南北黄灯标志位

      {SN_Yellow=~SN_Yellow;}

      if(Flag_EW_Yellow==1)  //东西黄灯标志位

      {EW_Yellow=~EW_Yellow;} 

    }

    if(count==20)

    {

    Time_EW--;

    Time_SN--;

    if(Flag_SN_Yellow==1)//南北黄灯标志位

    {    Time_SN=Time_EW;

        {

        SN_Yellow=~SN_Yellow;}

            }

    if(Flag_EW_Yellow==1)//东西黄灯标志位

    {    Time_EW=Time_SN;

        {

        EW_Yellow=~EW_Yellow;

}

        }

    count=0;

    }

    

}

void    main(void)

    IT0=1;    //INT0负跳变触发    

    TMOD=0x01;//定时器工作于方式1

    TH0=(65536-50000)/256;//定时器赋初值

    TL0=(65536-50000)%256;

    EA=1; //开中断总允许

    ET0=1;//开定时中断

    EX0=1;//开外部INTO中断

    TR0=1;//启动定时

     while(1)

{                /*******状态1**********/

                Flag_EW_Yellow=0;       //EW关黄灯显示信号

                Time_EW=EW;    

                Time_SN=SN;        

                while(Time_SN>0)

                {P1=S[0];     //SN通行,EW红灯

                 Display();}

            

                /*******状态2**********/

                Flag_SN_Yellow=0; //SN关黄灯显示信号

                Time_SN=SNL;

                while(Time_SN>0)

                {P1=S[2];//SN左拐绿灯亮,EW红灯

                 Display();}

              /*******状态3**********/

                P1=0x00;

                while(Time_EW>0)

               {Flag_SN_Yellow=1;    //SN开黄灯信号位

               

                EW_Red=1;      //SN黄灯亮,等待停止信号,EW红灯

                     //SN_LED1=EW_LED1;

                  //SN_LED2=EW_LED2;

               Display();

                }

               /***********赋值**********/

                EW=EW1;

                SN=SN1;

                EWL=EWL1;

                SNL=SNL1;

            /*******状态4**********/

                Flag_SN_Yellow=0;  //SN关黄灯显示信号

                Time_EW=SN;

                Time_SN=EW;

                while(Time_EW>0)

                {P1=S[4];     //EW通行,SN红灯

                 Display();}

                

                /*******状态5**********/

                Flag_EW_Yellow=0;        //EW关黄灯显示信号

                Time_EW=EWL;

                while(Time_EW>0)

                {P1=S[6];//EW左拐绿灯亮,SN红灯

                 Display();}

                /*******状态6**********/

                P1=0X00;

                while(Time_SN>0)

               {Flag_EW_Yellow=1; //EN开黄灯信号位

                SN_Red=1;//EW黄灯亮,等待停止信号,SN红灯    

                Display();}

            

                    /***********赋值**********/

                EW=EW1;

                SN=SN1;

                EWL=EWL1;

                SNL=SNL1;

            }

    }

文档

51单片机综合实验交通灯设计报告

51单片机综合实验交通灯设计报告班级:学生姓名:学号:指导教师:一实验题目交通灯控制系统设计二实验目的1、学会用8051单片机开发简单的计算机控制系统;2、学会用汇编语言和C语言开发系统软件;3、学会8051单片机开发环境wave或KeiluVision3软件的使用;4、学会Proteus软件的使用方法,会用Proteus单片机系统进行仿真;5、学会Protel软件的使用方法,会用Protel绘制电气原理图和印制板图;6、熟悉七位数码管显示的使用方法;7、了解交通灯控制系统的基本组成。三实验要
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top