1、十字路口道路交通信号灯控制毕业的设计doc精品文档重庆 xxx 大学毕业设计系部名称:专业班级:课 题 名 称: 十字路口道路交通信号灯控制指导教师:学生姓名:学 号:二O一二年十一月随意编辑精品文档摘要红绿灯控制是智能交通系统的一个重要部分。在高度科技化的今天,交通系统也在自动化上不断地更新、发展和完善,道路更宽敞,路口更复杂。交通灯出现了更多的变化, 从最早的红绿灯, 发展到现今的箭头指向红绿灯,人行红绿灯等。这些改变都只有一个目的,为使道路更通畅,更安全。随着社会的不断进步,传统的交通灯的缺陷也日益出现,其中设计过于死板,达不到道路的最大通行效率是最明显的问题,红绿灯交替变换时间过于程式
2、化。基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。利用单片机控制技术提出了软件和硬件设计方案,能够实现道路的最大通行效率。本文所设计的单片机控制交通灯系统是基于十字路口交通信号灯控制,并对放行和禁行时间进行倒计时显示(秒) 。单片机即单片微型计算机。由 RAM ,ROM , CPU 构成,其集定时、计数和多种接口与一体的微控制器。它体积小、成本低、功能强,广泛的应用于只能产业和工业自动化上。而 51 系列单片机是各类单片机中最为典型和富有代表性的一种。单片机的十字路口道路交
3、通信号灯控制器设计,利用单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭, 并且用 4 只 LED 数码管显示器显示十字路口南北、东西两个方向的通行时间(绿灯点亮的时间) 、暂缓通行时间(黄灯点亮的时间) 、禁止通行时间(红灯点亮的时间) 。C语言是一种结构化的高级语言,以其优点是可读性好、移植容易的特点被普遍应用于单片机编程。本设计即使用 C 语言编程,使程序条理清晰、功能扩展性好、实用性强。关键词:单片机 红绿灯 AT89C51 Proteus 仿真随意编辑精品文档1 概述 11.1 课题名称 11.2 设计要求 12 系统总体方案及硬件设计 12.1 AT89S51 单片机
4、简介 12.2 AT89S51 芯片内部结构简介 22.3 主要引脚功能 42.4 系统方框图 62.5 工作原理 62.6 电路原理图 72.7 单片机最小系统 82.8 时间显示电路 82.9 交通灯电路 93 软件设计 103.1 整体系统分析 103.2 通行方案设计 103.2 程序主体设计流程 113.3 子程序模块设计 124 Proteus 软件仿真 13参考文献 14附录 源程序代码 15设计体会 20随意编辑精品文档1概述1.1 课题名称基于 MCS-51 单片机的十字路口道路交通信号灯控制器设计1.2 设计要求1)信号灯受一个起动开关控制,当起动开关接通时,信号系统开始工
5、作,且南北红灯亮,东西绿灯亮,反之则东西红灯亮,南北绿灯亮。当起动开关断开时,所有信号灯都熄灭。2)南北红灯亮,维持 25S 。在南北红灯亮的同时东西绿灯也亮,并维持 20S。到 20S 时,东西绿灯闪烁,闪烁 3S 后熄灭。在东西绿灯熄灭时,东西黄灯亮,并维持 2S。到 2S 时,东西黄灯熄,东西红灯亮。同时,南北红灯熄灭,南北绿灯亮。3)东西红灯亮,维持 30S 。南北绿灯亮,维持 25S。然后闪烁 3S,熄灭。同时南北黄灯亮,维持 2S 后熄灭,这时南北红灯亮,东西绿灯亮。4)每个灯亮时,辅以电子秒表并倒计时。如按前面描述,南北红灯亮25 秒并倒计时,最后 3 秒钟时闪烁,归零时即切换为
6、绿灯并同时开始倒计时;东西绿灯与南北红灯同时亮 25 秒并倒计时, 20 秒起闪烁 3 秒钟,然后再变成黄色 2 秒钟。5)周而复始6) Proteus 软件仿真2系统总体方案及硬件设计2.1 AT89S51 单片机简介AT89S51 是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4k bytes 的可系统编程的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、 非易失性存储技术生产, 兼容标准 8051 指令系统及引脚。它集 Flash 程序存储器 既可在线编程( ISP)也可用传统方法进行编程及通用 8 位微处理器于单片芯片中, ATMEL 公
7、司的功能强大,低价位 AT89S51 单片机可为您提供许多高性价比的应用场合, 可灵活应用于各种控随意编辑精品文档制领域。单片机以体积小、 功能全、性价比等诸多优点而独具特色, 在工业控制、尖端武器、通信设备、家用电器等嵌入式应用领域中独占鳌头。如果说 C 语言程序设计课程设计的基础课,那么单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。2.2 AT89S51 芯片内部结构简介8051 单片机(其管脚图如图 -1 所示)包含中央处理器( CPU)、程序存储器 (ROM) 、数据存储器 (RAM) 、定时 /计数器、并行接口、串行接口和中断系统等几大单元及数据
8、总线、地址总线和控制总线等三大总线 , 现在我们分别加以说明:1.中央处理器( CPU)中央处理器 (CPU) 是整个单片机的核心部件,是 8位数据宽度的处理器,能处理 8 位二进制数据或代码, CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。(图 -1)2.数据存储器( RAM )8051 内部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元,它们是统一编址的, 专用寄存器只能用于存放控制指令数据, 用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。3
9、.程序存储器 (内部 ROM) :程序存储器用于存放程序和固定不变的常数等。通常采用只读存储器,且其又多种类型,在 89 系列单片机中全部采用闪存。 AT89S51 内部配置了4KB 闪存。3.1. 定时 / 计数器 (ROM) :随意编辑精品文档定时 / 计数器用于实现定时和计数功能。 AT89S51 共有 2 个 16 位定时 /计数器。3.2. 并行输入输出 (I/O) 口:8051 共有 4 组 8 位 I/O 口(P0 、 P1、P2 或 P3),用于对外部数据的传输。每个口都由 1 个锁存器和一个驱动器组成。它们主要用于实现与外部设备中数据的并行输入与输出,有些 I/O 口还有其他
10、功能。4.全双工串行口:A89S51 内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。5.时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。6.中断系统:中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89S51 共有 5 个中断源:2 个外部中断,即 /INT0 (P3.2 )和/INT1 (P3.3 );3 个片内中断,即定时器 T0 的溢出中断、定时器 T1 的溢出中断和串行口中断。随意编辑精品文档除去图中的存储电路和 I/O 部件,剩下的是 CPU,它可以分为运算器和控制器两部分。运算器功能部
11、件包括算术逻辑运算单元 ALU 、累加器 ACC、寄存器 B、暂存寄存器 TMP1 、TMP2 、程序状态字寄存器 PSW 等。控制器功能部件包括程序计数器 PC、指令寄存器 IR、指令译码器 ID 、定时控制逻辑电路 CU 、数据指针寄存器 DPTR、堆栈指针 SP 及时钟电路等。7.定时 / 计数器8051 有两个 16 位的可编程定时 / 计数器,以实现定时或计数产生中断用于控制程序转向。2.3 主要引脚功能 P0口: P0 口是一组 8 位漏极开路型双向 I 0 口,也即地址数据总线复用口。作为输出口用时,每位能驱动 8 个 TTL 逻辑门电路,对端口写“ l ” 可作为高阻抗输入端用
12、。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。 P1口:Pl 是一个带内部上拉电阻的 8 位双向 IO 口,Pl 的输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对端口写“ l ”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,某个引脚被外部信号拉低时会输出一个电流。 Flash 编程和程序校验期间, Pl 接收低 8 位地址。如下表 1 所示:端口引脚 第二功能:P1.5 MOSI (用于 ISP 编程)P1.6 MOSI (用于 ISP 编程)P1.7 MOSI (用于 ISP 编
13、程)表 1P2口:P2 是一个带有内部上拉电阻的 8 位双向 IO 口,P2 的输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对端口写“ 1 ”,通过内部的上拉电阻把端口拉到高电平, 此时可作输入口, 作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流( IIL )。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVX DPTR 指令)时, P2 口送出高 8 位地址数据。在访问 8 位地址的外部数随意编辑精品文档据存储器(如执行 MOVX Ri 指令)时, P2 口线上的内容(也即特殊功能寄存器( SFR)区中 P2 寄存器的内
14、容),在整个访问期间不改变。 Flash 编程或校验时, P2 亦接收高位地址和其它控制信号。 P3口:P3 口是一组带有内部上拉电阻的 8 位双向 I0 口。P3 口输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对 P3 口写入“ l ” 时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的 P3 口将用上拉电阻输出电流( IIL )。 P3 口除了作为一般的 I0 口线外,更重要的用途是它的第二功能,如下表 2 所示:端口引脚第二功能:P3.0RXD (串行输入口)P3.1TXD (串行输出口)P3.2/INT0 (外中断 0)P3.3/ INT1 (外中
15、断 1)P3.4T0 (定时计数器0 外部输入)P3.5T1 (定时计数器1 外部输入)P3.6/ WR (外部数据存储器写选通)P3.7/ RD 外部数据存储器读选通)表 2P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。 WDT 溢出将使该引脚输出高电平,设置 SFR AUXR 的 DISRT0 位(地址 8EH )可打开或关闭该功能。 DISRT0 位缺省为 RESET输出高电平打开状态。ALEPROG:当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁
16、存地址的低 8 位字节。即使不访问外部存储器, ALE 仍以时钟振荡频率的 16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 F1ash 存储器编程期间,该引脚还用于输入编程脉冲( PROG)。如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 M0VX 和 M0VC 指令 ALE 才会被激随意编辑精品文档活。此外,该引脚会被微弱拉高, 单片机执行外部程序时, 应设置 ALE 无效。 PSEN程序储存允许( PSEN)输出是外部程序存储器的读
17、选通信号,当AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN有效,即输出两个脉冲。 当访问外部数据存储器, 没有两次有效的 PSEN信号。2.4 系统方框图电 源交通灯时间显示部分时钟电路 AT89C52复位交通灯电路2.5 工作原理由软件设置交通灯的初始时间,南北方向通行 30 秒,东西方向通行20 秒,数码管采用动态显示, P0口送字形码, P2口送字位选通信号, 通过单片机的 P1口控制各种信号灯的燃亮与熄灭。东西方向EW南北方向NSG Y R G Y R随意编辑系统控制精品文档2.6 电路原理图随意编辑精品文档(图 -2)2.7 单片机最小系统(图 -3)
18、单片机最小系统以 80C52 为核心,外加时钟和复位电路 ,电路结构简单,抗干扰能力强 ,成本相对较低,非常符合本设计的所有要求。时钟电路在单片机的外部通过 XTAL1 ,XTAL2 这两个引脚跨接晶体振荡器和微调电容, 构成稳定的自激振荡器。 本系统采用的为 12MHz 的晶振,一个机器周期为 1us ,C1, C2 为 30pF 。复位电路分为上电自动复位和按键手动复位, RST 引脚是复位信号的输入端,复位信号是高电平有效 .上电自动复位通过电容 C3 和电阻 R1 来实现,按键手动复位是图中复位键来实现的。2.8 时间显示电路随意编辑精品文档(图 -4)倒计时显示可以提醒驾驶员在信号灯
19、灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的 1 种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。因为系统要求南北和东西方向的信号灯时间不一样,所以就利用单片机的 P0 口送出数据的段码, 位选信号用 P2 口送出,用动态扫描的方法显示东西、南北的倒计时间 (如图 -4 所示 )。数码管使用共阴数码管,需要接上 470 上拉电阻以提供足够大的电流来驱动数码管,数码管的每段的电流
20、是约 10 毫安。2.9 交通灯电路本设计利用单片机的 p1 口来驱动和控制各种信号灯的燃亮和燃亮时间,在实际中,交通灯的信号灯需要用高电压控制,在这里我们只是模拟一下它的控制信号,所以我们就只用单片机的信号引脚直接来控制发光二极管(如图-5 所示)随意编辑精品文档(图 -5)3软件设计3.1 整体系统分析总体流程图(实现各种状态间的转换):南北红灯南北红灯 亮南北红灯东西绿灯东西绿灯闪东西黄灯南北黄灯南北绿灯闪南北绿灯东西红灯东西红灯亮东西红灯3.2 通行方案设计设在十字路口, 分为东西向和南北向, 在任一时刻只有一个方向通行, 另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向
21、对换。其具体状态如下图所示。说明:彩色表示亮,白色表示灭。交通状态从状态1 开始变换,直至状态 6 然后循环至状 1,周而复始,直至状态 6 然后循环至状态 1 ,通过具体的路口交通灯状态的演示分析我们把其中灯颜色变化的随意编辑精品文档4个状态归结如下:状态1 状态3状态4 状态63.2 程序主体设计流程全部控制程序实际上分为若干模块:按键扫描程序,红绿灯控制程序, LED 显示程序,消抖动延时程序,初始化程序,中断服务子程序等。流程图如图(图 -6 )所示:开始初始化按键扫描停止启动 or 停随止意编?辑启动精品文档(图 -6)3.3 子程序模块设计3.3.1 按键扫描子程序首先系统不执行按
22、键扫描子程序,以判断 K1 按键是否被按下。本系统要求信号灯受一个起动开关控制,当起动开关接通时,信号系统开始工作 ;当起动开关断开时,所有信号灯都熄灭。关键程序如下, action 为程序启动标志位。if(!action)P0=P1=P2=P3=0xff;(*(void(*)( )0) ( );检测到按下按键停止程序时,关闭显示,同时使程序回到起点,下一次启动时重头执行。3.3.2 红绿灯控制程序分析得实际控制的灯只有 6 个,即:东西红灯,东西黄灯,东西绿灯,南北红灯,南北黄灯,南北绿灯。定义 IO 端口如下,其均是低电平有效。将交通灯颜色变化的四种状态进行分析后整理 P1 口四种情况的编
23、码表如下 : unsigned char code c4=0xDE,0xEE,0xF3,0xF5;随意编辑精品文档分别是: 0xDE 南北红灯,东西绿灯0xEE 南北红灯,东西黄灯0xF3 南北绿灯,东西红灯0xF5 南北黄灯,东西红灯程序应用:P1=ck;/* 交通灯对应着 k 的值变化 */3.3.3 LED 倒计时显示程序LED 计时每一秒都要刷新一次,将时间数据的个位、十位分开送显。单片机的 P0 口送出数据的段码, 位选信号用 P2 口送出,用动态扫描的方法显示东西、南北的时间。动态显示节省了 I/O 口,降低了能耗。应用实例如下:P2=b0,P0=aSN%10;/* 显示南北方向个
24、位 */delay(5);P2=b1,P0=aSN/10;/* 显示南北方向十位 */delay(5);P2=b2,P0=aWE%10;/* 显示东西方向个位 */delay(5);P2=b3,P0=aWE/10;/* 显示东西方向十位 */delay(5);4 Proteus 软件仿真系统仿真电路图交通灯控制系统正常运行时仿真图(见图 -7 )。随意编辑精品文档(图 -7)参考文献1王为青,邱文勋 . 51 单片机开发案例精选 J.人民邮电出版社, 2001 ,(5) :45-47.2张鑫,华臻,陈书谦 . 单片机原理及应用 J.电子工业出版社, 2008(5).3张洪润,张亚凡 .单片机原
25、理及应用 J. 清华大学出版社, 2005 , (4).4黄智伟 .凌阳单片机课程设计指导 J. 北京航空航天大学出版社, 2007 ,(6)5蒋辉平,周国雄 . 基于 Proteus 的单片机系统设计与仿真实例 M. 机械工业出版社, 2009.6陈梓城 电子技术实训 M. 北京:机械工业出版社 20037先锋工作室 单片机程序实例 M. 北京:清华大学出版社 ,2002.8李学海 标准 80C51 单片机基础教程 M. 北京:北京航空航天大学出版社 20069张萌单片机应用系统开发综合实例第二版清华大学出版社2005 年随意编辑精品文档10张一工现代电力电子技术原理与应用第一版科学出版社2
26、002 年11吴黎明 单片机原理及应用技术 M. 北京:科学出版社 200312欧阳文ATMEL89 系列单片机的原理与开发实践第一版中国电力出版社2007 年附录 源程序代码#include#define uchar unsigned char /* 定义字符串类型为无符号型 */uchar codea10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;uchar code b4=0x0D,0x0E,0x07,0x0B; /*P2 口,低有效 */uchar code c4=0xDE,0xEE,0xF3,0xF5; /*P1 口,低有效
27、*/char SN=25,WE=30;char SN_G=25,WE_G=15,Y=5;uchar i,k=0,count=0;bit action=0;随意编辑精品文档sbit K1=P37;/* 开关 K1 接 P37 管脚 */sbit SNG=P12;/* 东西绿灯 */sbit WEG=P15;/* 南北绿灯 */void delay(uchar t);void start_keyscan();void light();void led();/* 程序初始化 */void init(void)/*12MHz */TMOD=0x01;TH1=(65536-50000)/256;TL1=
28、(65536-50000)%256;/* 计 50000个数,用时 50ms*/ET0=1;/*允许 T0 中断 */TR0=1;/*启动计数器 */EA=1;/*CPU 开放总中断 */* 定时函数 */void time1(void) interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;/* 延时 t 毫秒 */void delay(uchar t)随意编辑精品文档uchar i;for(t;t0;t-)for(i=255;i0;i-) ;/* 开关键启动关闭 */void start_keyscan()if(K1=0)delay(10);if(K1=0)action=action;while(!K1);if(!action)EA=0;P0=P1=P2=P3=0xff;(*(void(*)()0)();/* 交通灯函数 */void light()if(k=0|k=2)P1=ck;/* 交通灯对应着 k 的值变化 */if(k=1)if
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1