找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21938|回复: 3
收起左侧

交通灯的远程控制 单片机课程设计报告

[复制链接]
ID:137190 发表于 2016-9-24 15:22 | 显示全部楼层 |阅读模式
单片机课程设计报告
专    业: 电气工程及其自动化                       
班    级: 电1401-2                       
学    号: 20142536                       
姓    名: 刘鑫                       
指导教师: 何峰                        
完成日期: 2016/9/9                     
0.png
所有资料打包下载:
http://www.51hei.com/bbs/dpj-55650-1.html

一、课程设计的目的
1.学会用AD软件绘制电路原理图、线路板图,通过画图巩固已学的专业     知识,学习电路设计方法,提高动手能力,培养创新意识
  • 练习51单片机程序的编写
  • 掌握相关软件(AD,keil,Proteus ISIS,韦福6000)的使用

   二、课程设计的主要内容
1.课程设计题目:交通灯的远程控制
2.主要内容:本课题主要从单片机的应用上来实现十字路口交通灯智能化的管理,用以控制过往车辆的正常运作。设计采用AT89C51单片机的最小系统,通过烧录程序实现。设计方法有查阅法(通过手机和网络知识进行概述)、实验法(在实验室里做出单片机口的交通灯控制系统)、对比法(单片机口的交通灯控制系统技术与其他技术进行比较)。采用MCS-51系列单片机AT89C51为中心器件来设计交通灯控制电路,实现了的功能包括:(注S2,S3,S4为开关,具体接法见原理图)
    (1)定时器控制(在程序中加定时器中断)
    (2)开关S2为开始开关,交警按下开关S2交通灯开始工作
    (3)开关S3为紧急停车开关,当十字路口发生交通事故时,交警按下S3,东西南北四个方向全变为红灯,车全部停下,待交通事故处理完毕按开始开关恢复通信
    (4)开关S4控制南北方向通行,东西方向停止通行
    (5)开关S5控制东西方向通行,南北方向停止通行

设计方案
   1.设计思想    基于对交通灯功能的认识和对51单片机的掌握,对交通灯实现手动控制可通过设置外部中断的方式做到,交通灯红黄绿灯交替闪烁可设置延迟函数和定时器中断。以上是对系统软件的描述,至于硬件部分较简单,基于51单片机的最小系统,时钟电路,复位电路,AT89C51单片机,加上东南西北四个方向各3盏灯。每个方向三盏灯依次为红黄绿。这12盏灯与单片机P1口相应引脚相连可通过程序点亮。
   2.设计说明
    交通灯是城市交通有序、安全、快速运行的重要保障,而保障交通灯信号灯正常工作就成了保障交通有序、安全、快速运行的关键。 交通灯远程控制系统的设计可以在专业技能方面得到一个很大的提高。同时在制板,画板,排布等方面可以得到全面的思维锻炼并熟练技巧。因此,研究交通灯有着十分重要的意义。基于所学知识完全可以实现交通灯的远程控制,想法切实可行。同时本次课设做的交通灯功能较完善,除拐弯灯,倒计时外与平时用的交通灯没什么差别。

   3.方案选择
  能实现此电路的方法很多,我们根据实际将范围定在以下几个比较切合我们的方案中。
第一种方案:采用数字电子技术实现。用基本的555芯片(利用单稳态实现定时),计数芯片(如74LS163,74LS160等)完成计时功能,控制电路芯片,译码芯片(如74LS138)等基本芯片,结合电阻,电容等基本元件,通过逻辑电路实现交通灯的功能。
第二种方案:使用单片可编程来实现交通灯的功能。利用单片机的外围扩展,显示电路构成基本硬件。然后编程实现对定时,控制,显示电路的控制,然后调试,完成设计。
结合实际情况,根据毕业设计任务书的要求,经过讨论和论证,最终一致选
用第二种方案的设计思路对交通灯控制系统进行设计。


  • 硬件系统设计
整个系统的构成以AT89C51单片机为核心,由I/O口扩展,LED灯,紧急情况中断电路还有复位电路等组成。
单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机、时钟电路、复位电路等组成。
行车方向指示采用LED发光二极管,可有红、绿两种颜色指示放行与禁止,黄灯作为红绿转换的提示,形象直观。
行人通行指示也同样采用LED发光二极管,用红、绿两种颜色指示放行与禁止,黄灯作为红绿转换的提示,形象直观,简洁明了,更方便控制。
按键控制台,可供警察在室内实时监视交通状况。通过按键可设置紧急情况发生时的交通灯状态控制。本次设计用了三个中断开关,(1)开关S3为紧急停车开关,当十字路口发生交通事故时,交警按下S3,东西南北四个方向全变为红灯,车全部停下,待交通事故处理完毕按开始开关恢复通信(2)开关S4控制南北方向通行,东西方向停止通行(3)开关S5控制东西方向通行,南北方向停止通行;另外还设计了一个开关用于打开交通灯或者恢复交通灯的正常工作。





系统所需硬件清单表

元件名称
数量
备注
单片机
1
AT89C51
晶振
1
12Mhz
电容
3
150pf  10uf
电解电容
1
10uf
电阻
14
220欧 10k欧
复位开关
5

发光二极管
红灯   4
黄灯   4
绿灯   4



  • 晶振电路设计
采用12MHZ的晶振构成时钟电路为单片机提供时钟信号,在单片机系统里晶振提供的时钟频率越高,那么单片机运行的速度越快,单片机的指令都是建立在时钟频率上。
一个系统共用一个晶振,便于同步,本系统晶振如下所示。
1.001.jpg



2.复位电路设计
复位电路通常采用上电自动复位和按钮复位两种方式。
通常在复位引脚RST上链接一个电容到VCC再接一个电阻到GND,由此形成一个RC充放电回路保证单片机上电时RST脚上有足够的的时间对高电平进行复位,随后回归到低电平进入正常工作状态,电阻电容取典型值10k和10uf。按键复位就是当开关按下后电容放电,RST被拉到高电平。
本系统复位电路如下图
1.002.jpg

    3.LED灯模拟十字路口交通灯电路图设计
    LED电路如下。
1.003.jpg

4.系统原理图
1.004.jpg
系统PCB图
1.005.jpg

   工作原理:
(1)开关S2为开始开关,交警按下开关S2交通灯开始工作
(2)按下S2后交通灯开始工作。由89C51单片机的P0口显示红、绿、黄灯的亮灭情况;绿、黄、红时间分别为20秒、5秒、20秒循环。 南北红,东西绿,红灯20秒后然后灭。 南北黄,东西黄,黄灯闪动5秒。 南北绿,东西红,绿灯20秒后,重新开始循环。
(3)开关S3为紧急停车开关,当十字路口发生交通事故时,交警按下S3,东西南北四个方向全变为红灯,车全部停下,待交通事故处理完毕按开始开关恢复通信
(4)开关S4控制南北方向通行,东西方向停止通行,即按下S4后南北方向均为绿灯,东西方向均为红灯,通过S2恢复
(5)开关S5控制东西方向通行,南北方向停止通行 即按下S5后东西方向均为绿灯,南北方向均为红灯,通过S2恢复

软件系统设计
单片机的应用由硬件软件组成,我们需要编写交通灯点亮的程序,来实现发光二极管按照要求亮灭,为了实现想要的功能,在程序编写过程中我们加入了一个定时器中断,四个开关按键实现手动控制。
    1.软件流程图


  • 源程序

#include
#define uint unsigned int
#define uchar unsigned char

sbit RED_A = P0^0;
sbit YELLOW_A = P0^1;
sbit GREEN_A = P0^2;
sbit RED_B = P0^3;
sbit YELLOW_B = P0^4;
sbit GREEN_B = P0^5;
sbit KEY=P3^2;
sbit nbkey=P1^0;
sbit dxkey=P1^1;
uchar Time_Count = 0,Flash_Count = 0,Operation_Type = 1;

void main()
{
              TMOD = 0x01;
              IE = 0x82;
        EA =1;
        EX1=1;
        IT1=1;
        TR0=0;
              EX0 = 1;
        PX0=1;
              TCON = 0x01;
        nbkey=1;
        dxkey=1;
              while(1)

{ if(nbkey==0)                               //nbkey表示控制只南北方   
                                              向通行的按键,即按键S4
        { TR0=0;
        GREEN_A=1;
        YELLOW_A=1;
        YELLOW_B=1;
        GREEN_B=0;
        RED_A=0;
        RED_B=1;
        }

if(dxkey==0)                           //nbkey表示控制只东西方   
                                          向通行的按键,即按键S5

        { TR0=0;
        GREEN_A=0;
        YELLOW_A=1;
        YELLOW_B=1;
        GREEN_B=1;
        RED_A=1;
        RED_B=0;
        }


}
        }

void External_Interrupt_0() interrupt 0      //外部中断0,对应开始按
                                             钮S2,交通灯开始工作

     {
    TR0=1;
      }
void External_Interrupt_1() interrupt 2     //外部中断1,对应紧急按
                                             钮S3,全亮红灯


{  TR0=0;
   P0=0xf6;
      }
void T0_INT() interrupt 1               //定时器控制LED灯按要求   
                                          计时循环点亮
{
              TH0 = -20000/256;
              TL0 = -20000%256;
              switch(Operation_Type)
              {
                            case 1:
                                          RED_A=1;YELLOW_A=1;GREEN_A=0;
                                          RED_B=0;YELLOW_B=1;GREEN_B=1;
                        if(++Time_Count != 100) return;
                                          Time_Count=0;
                                          Operation_Type = 2;
                                          break;
                            case 2:
                                          if(++Time_Count !=20) return;
                                          Time_Count=0;
                                          YELLOW_A=!YELLOW_A;
                                          GREEN_A=0;

                                          if(++Flash_Count != 10) return;
                                          Flash_Count=0;
                                          Operation_Type = 3;
                                          break;
                            case 3:
                                          RED_A=0;YELLOW_A=1;GREEN_A=1;
                                          RED_B=1;YELLOW_B=1;GREEN_B=0;


                                          if(++Time_Count != 100) return;
                                          Time_Count=0;
                                          Operation_Type = 4;
                                          break;
                            case 4:
                                          if(++Time_Count != 20) return;
                                          Time_Count=0;
                                          YELLOW_B=!YELLOW_B;
                                          GREEN_B=0;

                              if(++Flash_Count !=10)
                                                        return;
                                          Flash_Count=0;
                                          Operation_Type = 1;
                                          break;
              }
}













附 仿真图
1.S2未按下之前的状态,交通灯未开始工作
1.076.jpg
  • S2按下,交通灯正常工作的状态

1.077.jpg
3.S3按下,全为红灯
1.078.jpg
4.S4按下,南北方向通行
1.079.jpg
5.S5按下,东西方向通行
1.080.jpg

总结及心得体会
本次课设很有收获,自己的独立思考能力,动手能力和发现问题,解决问题的能力都有所提高。
在完成课设的过程中我们熟悉了完成一个作品需要的步骤。选定题目之后,我们进行了构思,对相关电路进行了设计,制作了一个操作流程,完成了自己的初步设计之后我们上网查阅了相关的模块,并对每个模块进行了分析,取长补短,将处理的比较好的部分加以升华用于我们的课设。通过分析和比较,加上自己的设计,我们最终明确了自己的设计思路,以及每一部分需要改进的地方。然后,我们着手开始课设的制作,硬件方面我们按所需基于AT89C51单片机的最小系统设计了交通灯电路,并用AD软件进行了原理图和PCB板的设计,确认硬件电路无误后我们进行了软件部分的设计,通过4个开关实现交通灯的手动控制,为此我们在程序里加入了外部中断。在程序的编写过程中我们用了韦福6000和keil编译软件对程序进行编译,编译无误之后我们用Proteus ISIS进行了仿真,看是否符合我们需要的现象。如果与要求不符,返回编译软件继续进行程序的编译和调试。在程序编写和调试的过程中,我们进一步锻炼了自己编写程序的能力,更好的运用C51语言控制单片机实现一定的功能。在调试过程中我们也遇到了许多问题,程序改了又改,由于功能较多,得协调各个中断。在编写调试过程中由于编写不正确,往往实现这个功能,那个功能没了,不过还好,最后这些问题都解决了。最后,通过努力,我们编写的程序实现了要求的功能,仿真也符合要求,AD和PCB 制作也弄好之后,我们开始进行报告的撰写,报告的撰写也挺重要的,因为他是对所做成果的一个总结。
通过这次课设我不仅熟悉了做一件产品的具体流程,还进一步巩固了课上所学的理论知识,并将理论转化为实践,即将知识用活,致力于实际应用。硬件制作中,我进一步熟悉了常用元件的用途,接法,相关参数的意思。在软件,即程序的编写调试过程中,进一步掌握了用C51语言实现单片机对外部电路的控制。同时,进行程序编写了进一步熟练掌握了程序编译软件韦福6000和keil的使用。在进行硬件电路设计过程中学会用AD进行硬件电路的设计。在仿真过程中,学会用Proteus ISIS软件进行仿真。这些软件对于以后的学习都会很有帮助,熟练掌握他们是我们应该做到的。



回复

使用道具 举报

ID:294139 发表于 2018-3-19 17:27 | 显示全部楼层
学习一下,谢谢楼主
回复

使用道具 举报

ID:170318 发表于 2017-9-19 11:03 | 显示全部楼层
这是一个交通灯的控制,但体现不了远程的控制功能
回复

使用道具 举报

ID:233789 发表于 2017-9-18 10:35 | 显示全部楼层
楼主666666666666赞一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表