毕业设计(论文)-基于AT89S52单片机的交通灯信号控制器设计.doc
《毕业设计(论文)-基于AT89S52单片机的交通灯信号控制器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于AT89S52单片机的交通灯信号控制器设计.doc(33页珍藏版)》请在三一文库上搜索。
1、本科毕业论文(设计) 题 目 交通灯信号控制器设计 指导老师 职称 副教授 学生姓名 学号 专 业 电子信息工程 班级 电信 (1)班 院 (系) 电子信息工程学院 完成时间 2011 年 04 月 12 日 I 交通灯信号控制器设计 摘 要 本设计是单片机控制的交通灯信号控制器设计,使用 12MHZ 晶振与单片机 AT89 S52 相连接,通过软件编程的方法实现十字路口的交通灯控制。其输入装置是键盘开 关,用于控制交通灯的运行模式以及设置通行时间,显示装置是两位的 LED 七段数 码管。总体由单片机系统、LED 显示、交通灯演示系统、键盘电路及其控制电路组 成。该系统除基本交通灯功能外,还具
2、有倒计时、紧急情况处理、调整通行时间以 及根据具体情况手动控制等功能。 关键字 AT89S52 单片机/交通灯/LED 显示/键盘开关电路 II THE TRAFFIC SIGNAL CONTROLLER DESIGN ABSTRACT This design is single-chip microcomputer control of traffic light signal controller design, use 12MHZ crystals and monolithic integrated circuit AT89S52 connections, through softwar
3、e programming method of realization of intersection traffic control. Its input device is a keyboard switch, used to control the traffic operation mode and setting passage of time, display device is two LED seven segment digital tube. Overall by single- chip microcomputer system, LED display, traffic
4、 lights demonstration system, keyboard circuit and control circuit component. This system in addition to the basic traffic lights function outside, still have the countdown, emergency, adjust the passage of time and according to the specific circumstances of manual control etc. Function. KEY WORDS A
5、T89S52 SCM, the lights, LED display, keyboard switch circuit. 1 目 录 摘 要.I ABSTRACTII 1 概述.1 1.1 设计背景1 1.2 设计目的1 1.3 设计要求1 2 系统总体方案及硬件设计2 2.1 总体方案2 2.2 各功能模块设计.3 2.2.1 单片机 AT89S52 介绍.3 2.2.2 设计思路.4 2.2.3 时钟电路模块4 2.2.4 复位电路模块5 2.2.5 交通灯演示模块.5 2.2.6 LED 显示模块.6 2.2.7 键盘开关模块7 3 软件设计.9 3.1 系统流程图.9 3.2 系统软
6、件设计.10 3.2.1 LED 的编程. 10 3.2.2 交通灯模块的编写设计 11 3.2.3 定时器程序11 2 3.2.4 键盘程序. 12 4 PROTEUS 仿真 14 4.1 正常工作状态. 14 4.2 时间调整. 16 4.3 状态调整.18 结 论 19 致 谢. 20 参考文献. 21 附 录22 附录 1 系统原理图 22 附录 2 源程序代码 23 1 1 概述 1.1 设计背景 在车辆日渐增多的今天,人们也越来越关注交通问题,而交通灯在安全行车过 程中无疑起着十分重要的作用。现在交通灯一般都设在十字路口,用红、绿、黄三 种颜色的指示灯和一个倒计时的显示计时器来控制
7、行车, 对一般情况下的安全行车、 车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 主要有如下几个缺点: 1、车道轮流放行时间相对固定, 不能根据实际情况中两个车道的车辆多少来设置改 变通行时间;2、 没有考虑紧急车辆通过时, 两车道应采取的措施。 譬如, 有消防 车通过执行紧急任务时, 两个车道的车都应停止, 让紧急车辆通过。因此如何合理 高效地利用交通灯指示交通情况,是一个亟需解决的问题。 1.2 设计目的 1. 实现交通灯基本的指挥控制车辆通行功能; 2. 增加部分新功能,使交通灯信号控制更加合理、有效。 1.3 设计要求 假设一十字路口为南北方向(主干道)车道和东西方向(支干道)
8、 ,设计一个 交通灯信号控制电路,具体要求如下: 1.实现交通灯的基本控制通行功能: 南北方向车道和东西方向车道两条交叉道路上的车辆交替运行,主干道每次 通行时间设为 40 秒、支干道每次通行时间为 25 秒; 在绿灯转为红灯时,要求黄灯先亮 5 秒钟,才能变换运行车道; 黄灯亮时,要求每秒闪亮一次; 东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都 用显示器进行显示(采用计时的方法) 。 2. 新增部分功能: 各干道上通行时间可根据实际情况进行调整设置; 2 一道有车而另一道无车(实验时用开关 K0 和 K1 控制),通过手动控制交 通灯系统,使立即指示有车道放行; 有紧急
9、车辆要求通过时,系统要能禁止普通车辆通行,两个道均为红灯。 2 系统总体方案及硬件设计 2.1 总体方案 本设计使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能 也比较强大,而且可以随时更新系统,根据道路情况适时调整交通灯的状态,全面 有效地利用交通灯指示交通情况。 该设计是以单片机 AT89S52 为核心完成的,在硬件电路中采用 P1 口点亮交通指 示灯,采用 P0 口和 P2 口作为 2 位 LED 数码管的驱动接口,可显示各个方向的交通 灯的持续时间,单片机外围接有按键开关电路,可以响应外部中断及键盘程序,实 现紧急情况处理、调整交通灯的点亮时间等功能。 电路由下列部分组成
10、:时钟电路、复位电路、键盘电路、交通灯演示电路、LED 显示电路。 AT89S52 复位电路 交通灯演示电路 LED 显示电路 键盘电路 时钟电路 图 01 原理框图 3 2.2 各功能模块设计 2.2.1 单片机 AT89S52 介绍 AT89S52 是一个低电压,高性能 CMOS 型 8 位单片机,片内含 8KB 的可反复擦写 的 Flash 只读程序存储器(ROM)和 256 B 的随机存取数据存储器(RAM)。 AT89S52 是一个低功耗高性能单片机,40 个引脚,32 个外部双向输入/输出 (I/O)端口,同时内含 2 个外中断口,2 个 16 位可编程定时计数器,2 个全双工串
11、行通信口,AT89S52 可以按照常规方法进行编程,也可以在线编程。其将通用的微 处理器和 Flash 存储器结合在一起,特别是可反复擦写的 Flash 存储器可有效地降 低开发成本。 引脚使用说明: I/O 端口的编程实际上就是根据应用电路的具体功能和要求对 I/O 寄存器进行 编程。具体步骤如下: l. 根据实际电路的要求,选择要使用哪些 I/O 端口; 2. 初始化端口的数据输出寄存器,应避免端口作为输出时的开始阶段出现不确 定状态,影响外围电路正常工作; 3. 根据外围电路功能,确定 PO 端口的方向,初始化端口的数据方向寄存器。 对于用作输入的端口可以不考虑方向初始化; 4. 用作输
12、入的 PO 管脚,需上拉电阻; 5. 最后对 I/O 端口进行输出(写数据输出寄存器)和输入(读端口)编程,完成对外 围电路的相应功能。 几个特殊管脚: XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平。 4 2.2.2 设计思路 假设此交通灯系统位于南北和东西的十字路口,南北方向为主干道,东西方向 为支干道。各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人安全通行。红 灯亮禁止通行,绿灯亮允许通行,黄灯亮提示人们注意红、绿灯的状态即将切换。 此交通灯系统工作过程分为
13、4 个状态。状态 0 南北方向绿灯亮,东西方向红灯 亮。过 35 秒后转为状态 1,南北方向绿灯灭,黄灯每秒闪亮一次,东西方向还是红 灯亮。历时 5 秒钟再转为状态 2,南北方向红灯亮,东西方向绿灯亮。过 20 秒后转 为状态 3,南北方向还是红灯亮,东西方向绿灯灭,黄灯每秒闪亮一次。历时 5 秒 钟又循环至状态 0。 交通灯的状态表如下: 主干道SN支干道WE 状态(时间) 红R绿G黄Y红R绿G黄Y 0010100 1001/0100 2100010 3100001/0 表 01 交通灯的状态表 注: 1:SN南北方向;WE东西方向。 2:状态:0熄; 1亮; 1/0闪。 2.2.3 时钟电
14、路模块 时钟电路模块给单片机提供特定的时钟周期,以备单片机工作使用。单片机的 机器周期有 6MHz 和 12MHz 的两种。这里采用的是 12MHZ 的晶振,以给单片机提 供 12MHz 的机器周期。另外有两个 30P 的电容,两晶振引脚分别连到 XTAL1 和 XTAL2 振荡脉冲输入引脚。 其电路图如图 02 所示: 5 图 02 时钟电路模块 2.2.4 复位电路模块 单片机系统的复位电路采用的是上电+按钮复位的电路形式,其中电阻 R 采用 10K 的阻值,电容采用电容值为 10F 的电解电容。 其具体连接电路如图 03 所示: 图 03 复位电路模块 2.2.5 交通灯演示模块 此交通
15、灯演示模块由单片机的 P1 口作信号输出端来控制 12 个交通灯的亮灭, 交通灯采用的是发光二极管。因为单片机的输出电流非常小,为了使发光二极管能 够发光或者更亮,二极管采用共阳极接法。即阳极通过 470 电阻接+5V 直流电源, 阴极接单片机 P1 口。同时南北方向同色灯连同上拉电阻一起并联,东西方向也是一 样,以保证同一干道上的同色灯同时点亮或熄灭,并且流过二极管的电流不会因并 联而减半。 其具体连接电路如图 04 所示: 6 图 04 交通灯演示电路 2.2.6 LED 显示模块 由于同一干道上的两个方向的红灯,绿灯,黄灯点亮时间相同,所以南北方向 只需一个数码管显示相应的时间即可,同理
16、东西方向也只需一个。 本次交通灯设计采用两位一体的共阴极数码管来显示相应的时间。由单片机的 P0 口输出字型码,P2 口的前四位 P2.0P2.3 作位选端。 位选端接 LED 的共阴极, 故低电位有效。因为单片机 I/O 口的驱动电流很小,一般只有几个毫安。为了增加 驱动能力,每个 LED 上都加上一个上拉电阻,接入+5V 电源,本次设计采用的是排 阻。当 P0 口输出低电平时,LED 不导通,上拉电阻电流灌进单片机,而当 P0 口输 出高电平时,LED 导通。而且上拉电阻的电流也通过 LED,这自然就增加了 LED 的发 光亮度。 其具体连接电路如图 05 所示: 7 图 05 LED 显
17、示电路 2.2.7 键盘开关模块 此系统通过 5 个开关实现所有的要求,开关一端接地,另一端接单片机的 P3 口。 K0 接 P37,当主干道有车而支干道无车时,按一下 K0 键,可以实现主干道通行。K1 接 P36,当支干道有车而主干道无车时,按一下 K1 键,可以实现支干道通行。K2 接 P33,利用中断 1 的方式对紧急情况进行处理,即使东南西北四个方向都亮红灯 停车。K4 接 P32,利用中断 0 的方式对各个干道的通行时间进行设置。在相应中断 0 期间,K0,K1 起调整时间的作用。每按一下 K0,主干道通行时间加一,每按一下 K0,主干道通行时间加一。K3 接 P35,按一下 K3
18、,可以使系统退出中断,回到主 程序。 其具体连接电路如 06 图示: 8 图 06 键盘开关电路 9 3 软件设计 3.1 系统流程图 N Y N Y Y N N Y N Y N Y Y N N Y N Y Y N Y N Y N Y Y N Y N N Y N Y 开始 k=0,SN=25 中断 按 K0 按 K1 SN=0 倒计时 响应中断 k=1,SN= 5 k=3,WE= 5 k=2,WE=1 5 倒计时 倒计时 倒计时 中断 按 K0 按 K1 WE=0 00 按 K1 SN=0 按 K0 中断 中断 WE=-0 按 K1 按 K0 响应中断 响应中断 响应中断 图 07 系统流程图
19、 10 3.2 系统软件设计 本次单片机课程设计软件部分利用 C 语言编程,采用模块化程序设计。程序部 分由主程序、定时器程序、T0/T1 中断服务程序、键盘扫描程序、交通灯点亮程序、 LED 数码管扫描显示程序和延时程序构成。 3.2.1 LED 的编程 本次交通灯设计采用两位一体的共阴极数码管来显示相应的时间。数码管为七 段数码管,由 8 个发光二极管构成,通过不同的组合可用来显示数字 0-9,字符 A- F、H、L、P、R、U、Y、符号“-”及小数点“.” 。本设计只需要显示数字 0-9,来 表示相应的时间。 共阴极数码管的 8 个发光二极管的阴极连接在一起接位选端。两个两位一体的 共阴
20、极数码管共有 4 个位选端,分别接在P2O-P23,低电平有效。数码管各个 阳极管脚接各段的驱动电路输出端,既 P0 口。P00 接 a,P01 接 b,P06 接 g,P07 接 dp,高电平有效。 本设计采用逐位扫描的方式实现相应时间的动态显示。先将 P21 置低电平, P20、P22、P23 置高电平,来选中南北方向数码管的个位,此时 P0 口的数据接 传送给它显示。经延时一段时间,将 P21 置低电位选中南北方向数码管的十位,此 时 P0 口的数据接传送给它显示。再用同样的方法依次驱动东西方向数码管。通过不 断改变 P0 口、P2 口的输出,用循环扫描的方式,即可实现 LED 的动态显
21、示。 LED 动态显示的流程图如图 08: 显示南北方向个位 开始 显示南北方向十位 显示东西方向个位 显示东西方向十位 图 08 LED 显示 11 3.2.2 交通灯模块的编写设计 本次设计的交通灯演示模块由单片机的 P1 口作信号输出端来控制 12 个交通灯 的亮灭。P11-P16 依次连接南北的红灯、绿灯、黄灯,东西的红灯、绿灯,黄灯。 所以 4 种状态依次为 0x6A,0x66,0x5C,0x3C。当交通灯的剩余时间为零时,改变 P1 口的输出,进而改变交通灯的点亮状态。交通灯依次循环上面的 4 个状态,就可以 实现指挥交通的作用。 3.2.3 定时器程序 本次设计用定时计数器 T1
22、,TMOD 是定时计算器的工作方式控制寄存器,通过对 该寄存器的操作可以改变 T1 的工作方式。T1 有 4 种工作方式,由 TMOD 寄存器中间 的 M1、M0 这两位来决定。本次设计的定时计数器工作在工作方式 1,M1、M0 设定为 01。定时计算器采用加 1 计数的方式,当接收到一个驱动事件时计数器加 1。工作 方式 1 的内部计数器宽度为 16 位,由 TH1 的 8 位和 TL1 的 8 位组成。当 TL1 溢出时 将向 TH1 进位,当 TH1 溢出后会产生相应的溢出中断。 驱动事件之间的时间间隔即为定时计数器的定时宽度。在定时的工作方式下, 定时宽度是单片机的机械周期,也是外部时
23、钟频率的 1/12。本次设计的外部时钟频 率为 12MHz。可知,接收 106个驱动事件的时间为 1s。 定是 1s 的流程图如图 09 所示: N Y Y N 定时器初始化 开始 count=0 溢出中断 SN-.WE- 结束 图 09 定时器流程图 计数 conut+ count=20 12 3.2.4 键盘程序 为了实现设置通行时间、紧急情况处理、有车放行等功能,本次设计中有键盘 电路。通行时间设置由外部中断 0 实现,紧急情况由外部中断 1 处理,有车放行是 用普通的键盘程序实现的。 按键实际是一种常用的按钮,按键未按下时,键的两个触点处于断开状态,按 键按下时,两个触点闭合。按键是利
24、用机械触点来实现键的闭合和释放,由于弹性 作用的影响,机械触点在闭合及断开瞬间均有抖动过程,从而使键输入也出现抖动。 抖动时间一般为 510ms。本次设计采用软件的办法消抖。在第一次检测到有 键按下时不动作,延时 10ms,再次检测按键的状态,如果仍保持闭合状态,则确定 真的有键按下。当按键释放后,转入按键的处理程序 延时程序如下: /*延时 t 毫秒*/ void delay(uchar t) uchar i; /*定义无符号字符常量*/ for(t;t0;t-) /*执行 t 次循环*/ for(i=2000;i0;i-) /*由于时钟脉冲是 12MHz,执行 2000 次循环的时间为 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 AT89S52 单片机 交通灯 信号 控制器 设计
链接地址:https://www.31doc.com/p-3282782.html