当前位置:城玮文档网 >作文大全 > 交通信号灯控制器设计与制作毕业设计

交通信号灯控制器设计与制作毕业设计

时间:2022-08-14 14:55:04 来源:网友投稿

 目 目

  录

 第一章

 设计任务 ………………………………………………………………………… 3 1.1 任务设计与要求 ………………………………………………………………………… 3 第二章

 设计说明 …………………………………………………………………………4 2.1 系统硬件设计及说明 ……………………………………………………………………4 2.2 硬件原理 …… ………………………………… …………………………………………5 第三章

 设计成果

 ………………………………………………………………………12 3.1 仿真图 ………………………………………………………………………………………12

 3.2 源码 …………………………………………………………………………………………13

 第四章

 结束语

 …………………………………………………………………………23 第五章

 致谢 ……………… ………………………………………………………………24 第六章

 参考文献

 ………………………………………………………………………25

 第一部分

 设计任务

 1 1.1 任务设计与要求

 (1)定周控制:主干道绿灯 45 秒,支干道绿灯 25 秒; (2)每次由绿灯变为红灯时,应有 5 秒黄灯亮作为过渡; (3)分别用红、黄、绿发光二极管表示信号灯; (4)设计计时显示电路。

 1.2 主要研究(设计)方法论述:

  通过市场调研和网络搜索,分析借鉴市场上已有产品,列出几种可行方案进行对比分析,最后选择一种确实可行的方案,即确定出系统框图、控制方式、电路形式等,同时学习并掌握 PCB 板图的设计要求和方法、数码管的使用要求,为单片机电路的整体设计提供保证。

  通过 PROTEUS 软件对系统进行模拟仿真,对根据电路实际情况对模拟电路进行改进和完善。

 第二部分

 设计说明

 1 2.1 系统硬件设计及说明

 1、通过分析系统的逻辑功能,画出其原理框图如图 1 交通灯控制系统的原理框图如图 1 所示。它主要有秒脉冲发生器,分频器,控制器,计数器及倒计时显示电路组成。秒脉冲发生器是该系统中控制器的标准时钟信号源。控制器是系统的主要部分。有它来控制计数电路工作。

 图 2-1

  系统结构图 2、分析 (1)、主干道绿灯亮,支干道红灯亮。支干道禁止通行,绿灯亮足规定的时间间隔 45s 时,转到下一个工作状态。

 (2)主干道黄灯亮,支干道红灯亮。支干道禁止通行,黄灯亮足规定的时间间隔 5s 时,转到下一个工作状态。

 (3)主干道红灯亮,支干道黄灯亮。主干道禁止通行,支干道的黄灯亮足规定时间间隔的 5s 时转到下一个状态。

 (4)、主干道红灯亮,支干道绿灯亮。主干道禁止通行,支干道上的车辆允许通过绿灯亮足规定的时间间隔 25s 时,电路有转到第一种工作状态。

 交通灯的以上四种状态是由控制器的移位寄存器 74LS164 芯片和一些门电路来秒脉冲发生模块 分频模块 控制模块 计数模块 计数模块 主干道灯

 支干道灯 主干道计时显示 支干道计时显示

 进行控制的,具体介绍见后续控制器功能说明。

 2.2 硬件原理 本系统利用 AT89C51 单片机作为系统的核心控制部件,利用其定时器/计数器作为红外传感器的接收端,通过高低电平的变化来统计通过检测区域的车流量,然后通过软件计时来控制接在 P0 端口的红绿灯的点亮与熄灭状态,并在 8 段数码管(接在 P1 和 P2 端口)上显示倒计时。系统的电路图主要由电源电路、遮光式红外传感器检测电路、红绿灯显示电路、红绿灯时间倒计时电路以及紧急按键K1 电路等电路组成。系统的基本原理框图如图 2-2 所示:

  AT 89C C 51单片机紧急按键K K1 1报警电路红外传感器检测电路红绿灯显示电路数码管倒计时显示电路振荡电路复位电路 图 2-2 系统的基本原理框图

  (1)单片机介绍

  单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有 CPU 的专用处理器发展而来。最早的设计理念是通过将大量外围设备和 CPU 集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL 的 Z80[16] 是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

  早期的单片机都是 8 位或 4 位的。其中最成功的是 INTEL 的 8031,因为简

 单可靠而性能不错获得了很大的好评。此后在 8031 上发展出了 MCS51 系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了 16 位单片机,但因为性价比不理想并未得到很广泛的应用。90 年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960 系列特别是后来的 ARM 系列的广泛应用,32 位单片机迅速取代 16位单片机的高端地位,并且进入主流市场。而传统的 8 位单片机的性能也得到了飞速提高,处理能力比起 80 年代提高了数百倍。目前,高端的 32 位单片机主频已经超过 300MHz,性能直追 90 年代中期的专用处理器,而普通的型号出厂价格跌落至 1 美元,最高端的型号也只有 10 美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows 和 Linux 操作系统。

  单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了 I/O 设备。

 概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

  本文中使用的 AT89C51 单片机是 MCS-51 系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。AT89C51 单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数

 器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

 ·中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

 ·数据存储器(RAM): AT89C51 内部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。

 ·程序存储器(ROM):

 AT89C51 共有 4096 个 8 位掩膜 ROM,用于存放用户程序,原始数据或表格。

 ·定时/计数器(ROM):

 AT89C51 有两个 16 位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

 ·并行输入输出(I/O)口:

 AT89C51 共有 4 组 8 位 I/O 口(P0、 P1、P2 或 P3),用于对外部数据的传输。

 ·全双工串行口:

 AT89C51 内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

 ·中断系统:

 AT89C51 具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有 2 级的优先级别选择。

 ·时钟电路:

 AT89C51 内置最高频率达 12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但 8951 单片机需外置振荡电容。

 (2)AT89C51 单片机的外形结构为 40 条引脚双列直插式封装,下面是单片机的引脚图,以及简单的管脚说明:

 1 13132333435363738394020191817161514131211109 98 87 76 65 54 43 32 228272625242322213029A AT T8 89 9C C5 51 1ALE/ / PROGXTAL 2 2P P3 3. .7 7/ / RDP P3 3. .6 6/ / WRP P3 3. .5 5/ /T T 1 1P P3 3. .4 4/ /T T 0 0P P3 3. .3 3/ / INT 1 1P P3 3. .2 2/ / INT 0 0P P3 3. .1 1/ / TXDP P3 3. .0 0/ / RXDRST/ /V V PDP P1 1. .7 7P P1 1. .6 6P P1 1. .5 5P P1 1. .4 4P P1 1. .3 3P P1 1. .2 2P P1 1. .1 1P P1 1. .0 0XTAL 1 1V V SSP P0 0. .0 0V V CCP P0 0. .7 7P P0 0. .6 6P P0 0. .5 5P P0 0. .4 4P P0 0. .3 3P P0 0. .2 2P P0 0. .1 1V V PP / / EAPSENP P2 2. .7 7P P2 2. .6 6P P2 2. .5 5P P2 2. .4 4P P2 2. .3 3P P2 2. .2 2P P2 2. .1 1P P2 2. .0 0 图 2-3 单片机的引脚图

  VCC(40 脚):供电电压。

 GND(20 脚):接地。

 XTAL1(19 脚):反向振荡放大器的输入及内部时钟工作电路的输入。

  XTAL2(18 脚):来自反向振荡器的输出。

  振荡器特性: XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

  RST(9 脚):复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。

  ALE/PROG(30 脚):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据

 存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。

 /PSEN(29 脚):外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。

  /EA/VPP(31 脚):当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。

  0 P0 口 口(32-39 脚):P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。

  1 P1 口(1-8 脚):P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。

 2 P2 口(21-28 脚):P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。

 3 P3 口(10-17 脚):P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。

 P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示:

 P3 口管脚 备选功能

 P3.0(10 脚):RXD(串行输入口)

  P3.1(11 脚):TXD(串行输出口)

  P3.2(12 脚):/INT0(外部中断 0)

  P3.3(13 脚):/INT1(外部中断 1)

  P3.4(14 脚):T0(记时器 0 外部输入)

  P3.5(15 脚):T1(记时器 1 外部输入)

  P3.6(16 脚):/WR(外部数据存储器写选通)

  P3.7(17 脚):/RD(外部数据存储器读选通)

 P3 口同时为闪烁编程和编程校验接收一些控制信号。

 (3)

 系统总体功能流程图

  图 2-4 系统总流程图

  开始 系统初始化 东西亮绿灯,南北亮红灯 调显示子程序(动态显示)

 东西,南北方向换向 东西黄灯闪烁,南北亮红灯灯 中断处理子程序序处理 返回

 第三部分

 设计成果

  3.1 仿真图

  图 3-1 仿真图

 2 3.2 源码

 #include<reg51.h>

 #define uchar unsigned char

 uchar count,second,i,flag;

 sbit h_red=P2^1; P2.1 串口控制左右红灯

 sbit h_green=P2^2; P2.2 串口控制左右绿灯

 sbit h_yellow=P2^3; P2.3 串口控制左右黄灯

 sbit l_red=P2^4; P2.4 串口控制上下红灯

 sbit l_green=P2^5; P2.5 串口控制上下绿灯

 sbit l_yellow=P2^6; P2.6 串口控制上下黄灯

 uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

 void main()

 {

 P1=0x00;

 P3=0x00;

 flag=1;

 second=20;

 TMOD=0x01;

 TH0=0x3C;

 TL0=0xB0;

 TR0=1;

 IE=0x82;

 while(1);

 }

 void state1(void)

 {

 h_red=1; 左右红灯亮

 h_green=0; 左右绿灯不亮

 h_yellow=0; 左右黄灯不亮

 l_red=0; 上下红灯不亮

 l_green=1; 上下绿灯亮

 l_yellow=0; 上下黄灯不亮

 }

 void state2(void)

 {

 h_red=1; 左右红灯亮

 h_green=0; 左右绿灯不亮

 h_yellow=0; 左右黄灯不亮

 l_red=0; 上下红灯不亮

 l_green=0; 上下绿灯不亮

 l_yellow=0; 上下黄灯不亮

 }

 void state3(void)

 {

 h_red=1; 左右红灯亮

 h_green=0; 左右绿灯不亮

 h_yellow=0; 左右黄灯不亮

 l_red=0; 上下红灯不亮

 l_green=0; 上下绿灯不亮

 l_yellow=1; 上下黄灯亮

 }

 void state4(void)

 {

 h_red=0; 左右红灯不亮

 h_green=1; 左右绿灯亮

 h_yellow=0; 左右黄灯不亮

 l_red=1; 上下红灯亮

 l_green=0; 上下绿灯不亮

 l_yellow=0; 上下黄灯不亮

 }

 void state5(void)

 {

 h_red=0; 左右红灯不亮

 h_green=0; 左右绿灯不亮

 h_yellow=0; 左右黄灯不亮

 l_red=1; 上下红灯亮

 l_green=0; 上下绿灯不亮

 l_yellow=0; 上下黄灯不亮

 }

 void state6(void)

 {

 h_red=0; 左右红灯不亮

 h_green=0; 左右绿灯不亮

 h_yellow=1; 左右黄灯亮

 l_red=1; 上下红灯亮

 l_green=0; 上下绿灯不亮

 l_yellow=0; 上下黄灯不亮

 }

 void int_0()interrupt 1 using 0

 {

 count ++;

 TH0=0x3C;

 TL0=0xB0;

 switch(flag)

 {

 case 1:

 {

 state1();

 if(count==20)

 {

 count=0;

 if(second>0)

 {

 P1=table[second/10];

 P3=table[second%10];

 second--;

 }

 else

 {

 P1=0x3F;

 P3=0x3F;

 second=3;

 flag=2;

 }

 }

 }break;

 case 2:

 {

 state2();

 if(count>=10)

 {

 count=0;

 l_green=~l_green;

 i++;

 if(i==2)

 {

 i=0;

 if(second>0)

 {

 P3=table[second%10];

 P1=table[second/10];

 second--;

 }

 else

 {

 P1=0x3F;

 P3=0x3F;

 second=2;

 flag=3;

 i=0;

 }

 }

 }

 }break;

 case 3:

 {

 state3();

 if(count>=10)

 {

 count=0;

 l_yellow=~l_yellow;

 i++;

 if(i==2)

 {

 i=0;

 if(second>0)

 {

 P3=table[second%10];

 P1=table[second/10];

 second--;

 }

 else

 {

 P1=0x3F;

 P3=0x3F;

 second=20;

 flag=4;

 i=0;

 }

 }

 }

 }break;

 case 4:

 {

 state4();

 if(count==20)

 {

 count=0;

 if(second>0)

 {

 P1=table[second/10];

 P3=table[second%10];

 second--;

 }

 else

 {

 P1=0x3F;

 P3=0x3F;

 second=3;

 flag=5;

 }

 }

 }break;

 case 5:

 {

 state5();

 if(count>=10)

 {

 count=0;

 i++;

 h_green=~h_green;

 if(i==2)

 {

 i=0;

 P1=table[second/10];

 P3=table[second%10];

 second--;

 }

 if(second==0)

 {

 P1=0x3F;

 P3=0x3F;

 second=2;

 flag=6;

 i=0;

 }

 }

 }break;

 case 6:

 {

 state6();

 if(count>=10)

 {

 count=0;

 i++;

 h_yellow=~h_yellow;

 if(i==2)

 {

 i=0;

 if(second>0)

 {

 P3=table[second%10];

 P1=table[second/10];

 second--;

 }

 else

 {

 P1=0x3F;

 P3=0x3F;

 second=20;

 flag=1;

 i=0;

 }

 }

 }

 }break;

 default:break;}

 }

  第四部分

 结束语

  通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

 第五部分

 致谢

 本设计是在老师指导下完成的。从设计选题到课题难点的解决,都给予了本人悉心地指导。老师的治学态度、专业造诣和敬业精神都使我收益非浅,。在此,我首先向老师致以衷心的感谢! 在课题完成过程中,还得到了同学们的帮助,给我提供了很多思路与经验,对我深入理解课题的有关知识与方法起到了重要作用。在此,我对同学们也表示诚挚的谢意。

 最后,衷心感谢在百忙之中抽出时间审阅本论文的老师。

 第六部分

 参考文献

  [1].智能交通控制理论及其应用.北京:科学出版社.2003.12~14

 [2].城市交通与道路系统规划.北京:清华大学出版社.2001.23~24

  [3].智能交通信号控制系统的研究与开发.工程硕士学位论文.重庆:重庆大学,

 2006.

 [4].模糊控制和智能控制理论与应用.哈尔滨:哈尔滨工业大学出版社,1990.53~54

  [5].可编程控制器.重庆:重庆大学出版社,2003.46~114

  [6].可编程控制器原理及应用系统设计技术.北京:冶金工业出版社,1999.58~ [7].可编程控制器(PC)编程应用和维修. 北京:清华大学出版社,1994.127~ 133

  [8].可编程控制器及其系统. 重庆:重庆大学出版社,2002.31~110

  [9].可编程控制器在工业控制中的应用. 北京:化学工业出版社,2004.26~51

 [10].现代电气控制及 PLC 应用技术.北京:北京航空航天大学出版社,2003.292~ 293

  [11].基于 PLC 的模糊智能交通控制系统.公路交通科技.No.6,1998

  [12].智能交通控制理论及其应用.北京:科学出版社.2003.12~14

相关热词搜索: 信号灯 毕业设计 控制器