收藏 分享(赏)

单片机:交通灯控制系统设计.doc

上传人:scg750829 文档编号:6726987 上传时间:2019-04-21 格式:DOC 页数:16 大小:115.50KB
下载 相关 举报
单片机:交通灯控制系统设计.doc_第1页
第1页 / 共16页
单片机:交通灯控制系统设计.doc_第2页
第2页 / 共16页
单片机:交通灯控制系统设计.doc_第3页
第3页 / 共16页
单片机:交通灯控制系统设计.doc_第4页
第4页 / 共16页
单片机:交通灯控制系统设计.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、交通灯控制系统设计摘要:本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。关键词:AT89S51,交通规则一、 方案比较、设计与论证1 电源提供方案为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺

2、点是输出功率不高。综上所述,我们选择第二种方案。2 显示界面方案该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案:方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。方案二:完全采用点阵式 LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。方案三:采用数码管与点阵 LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与 LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一

3、二方案的优缺,我们决定采用方案三以实现系统的显示功能。3 输入方案:题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:方案一:采用 8155 扩展 I/O 口及键盘,显示等。该方案的优点是:使用灵活可编程,并且有 RAM,及计数器。若用该方案,可提供较多 I/O 口,但操作起来稍显复杂。方案二: 直接在 IO 口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是 K1、K2 、K3、K4。由于该系统对于交通灯及数码管的控制,只用单片机本身的 I/O 口就可实现,且本身的计数器及 RAM 已经够用,故选择方案二。二、理论分析与计算1交通

4、灯显示时序的理论分析与计算对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量= 车流 / 时间 来表示。先设定一些标号如图 21 所示。说明:此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西路口灯。图 22 所示为一种红绿灯规则的状态图,分别设定为 S1、S2 、S3、S4,交通灯以这四的状态为一个周期,循环执行(见图 23)。请注意图 21b 和图 21d,它们在一个时间段中四个方向都可以通车,这种状态能在一定的时间内达到较大的车流量,效率特别高。依据上述的车辆行驶的状态图,可以列

5、出各个路口灯的逻辑表,由于相向的灯的状态图是一样的,所以只需写出相邻路口的灯的逻辑表;根据图 23 可以看出,相邻路口的灯它们的状态在相位上相差 180。因此最终只需写出一组 S1、S2、S3、S4 的逻辑状态表。如表 21 所示。表中的“”代表是红灯亮(也代表逻辑上的 0),“”是代表绿灯亮(也代表逻辑上的 1),依上表,就可以向相应的端口送逻辑值。2交通灯显示时间的理论分析与计算东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且S1、S2、S3、S4 各个状态保持的时间之有严格的对应关系,其公式如下所示。T-S1+T-S2=T-S3T-S2=T-S4T-S1=T-S

6、3我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参考。三、电路图及设计文件1灯控制电路设计由于 32 个 LED 来实现红绿灯状态,若直接接在单片机的口线,路口倒计时的显示就不能实现,所以本次设计中采用一种新型的电路如图 31 所示。图中 74LS04 的作用是倒相和驱动,它输出的电流大约 48mA,实际测试发现足以满足要求,而且发光管也能达到足够的亮度。观察图可以看出:两组发光管(一组红、一组绿)由于反相器的作用,其逻辑状态恰恰相反。图中和电阻串联的二极管的作用是为了分压,防止因上下两

7、组发光管分压不同导致逻辑的错误。共四组和上述相同的电路分别代表东西南北四个方向的红绿灯,使用两片 74LS04 作为驱动。2倒计时显示电路设计前面已经分析过相向的灯的状态和倒计时都是相同的,所以为了节省,采用两组四个数码管作为倒计时的显示;同时为了节省口资源,采用串口显示的方式驱动数码管。见图 32 所示。四、程序设计思路与流程图1主程序流程图主程序中主要是一个死循环,不停的循环四个状态,如图 41 所示。2按键子程序流程图它包含倒计时调整和紧急状态两个状态。主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子程序处理。当检测到 K2 键按下的时候就自动返回到主程序。当

8、出现紧急的情况的时候,按下 K3 或者 K4 就切换到紧急状态,当紧急事件处理完毕的时候,按下 K2,就可以返回正常状态。五、测试、数据及结果分析1状态灯显示测试当电路连接完毕后,将写好的测试程序刷写到芯片内,K1 和 K2 分别给端口送高电平和低电平,通电即可检测。2数码管的测试将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。3整体电路测试系统上电,刷写好程序即可开始测试,观测一个周期(共计 S1S4 四个状态,默认 140秒)灯的显示状态是否正常,同时观察倒计的计数是否正常。六、总结由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而

9、且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则不效率还不是很高等等,这需要在实践中进一步完善。附录 系统总体电路图1.满足南北向红绿灯亮,东西向红灯亮,占 25 秒南北向黄灯亮,东西向红灯亮,占 5秒南北向红灯亮,东西向绿灯亮,占 25 秒南北向红灯亮,东西向黄灯亮,占 5 秒。如此循环,周而复始。 2.十字路口要有数字显示,提示行人把握时间:当某方向绿灯亮时,置显示器为 24,然后以每秒减 1 计数方式工作,直到减为 0,绿灯灭,黄灯亮。黄灯灭,红灯亮时,再次置显示器为 29,并开始减计数,直到为 0,十字

10、路口红绿灯交换,完成一次工作循环。 3.可手动调整和自动调整,夜间为黄灯闪耀。下面是一个单片机交通灯程序/* * * * * Keil C 89S51 交通信号控制程序 * * (C) 版权所有 Dai_W * * * * */ #include “reg51.h“ #define UINT unsigned int #define ULONG unsigned long #define UCHAR unsigned char /* 信号灯变量 南北方向绿灯 sbit n_bike_g = P10; /自行车 sbit n_right_g = P11; /右转 sbit n_up_g = P1

11、2; /直行 sbit n_left_g = P13; /左转 调头 南北方向红灯 sbit n_bike_r = P14; /自行车 sbit n_right_r = P15; /右转 sbit n_up_r = P16; /直行 sbit n_left_r = P17; /左转 调头 南北方向黄灯 sbit n_bike_y = P30; /自行车 sbit n_right_y = P31; /右转 sbit n_up_y = P32; /直行 sbit n_left_y = P33; /左转 调头 东西方向绿灯 sbit e_bike_g = P20; /自行车 sbit e_right

12、_g = P21; /右转 sbit e_up_g = P22; /直行 东西方向红灯 sbit e_bike_r = P24; /自行车 sbit e_right_r = P25; /右转 sbit e_up_r = P26; /直行 东西方向黄灯 sbit e_bike_y = P34; /自行车 sbit e_right_y = P35; /右转 sbit e_up_y = P36; /直行 */ /延时 void delay(UINT t, UINT s) while (t) UINT i; for (i = 0; i s; i+) t -; /信号灯状态 void time_x(UC

13、HAR P_P1, UCHAR P_P2, UCHAR P_P3) P1 = P_P1; P2 = P_P2; P3 = P_P3; delay(150, 65535); void time_s(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3, UCHAR P_P11, UCHAR P_P22) UINT i; for (i = 0; i 3; i +) P1 = P_P1; P2 = P_P2; delay(5, 65535); P1 = P_P11; P2 = P_P22; delay(5, 65535); P1 = P_P1; P2 = P_P2; P3 = P_P

14、3; delay(10, 65535); /主程序 void main() P1 = P2 = P3 = 0x0; while (1) time_x(0xA5, 0x38, 0x0); time_s(0xA4, 0x38, 0x1, 0xA5, 0x38); time_x(0x96, 0x52, 0x0); time_s(0x92, 0x52, 0x4, 0x96, 0x52); time_x(0x5A, 0x52, 0x0); time_s(0x50, 0x50, 0x2A, 0x5A, 0x52); time_x(0xF0, 0x25, 0x0); time_s(0xF0, 0x24, 0

15、x20, 0xF0, 0x25); time_x(0xD2, 0x16, 0x0); time_s(0xD0, 0x10, 0x62, 0xD2, 0x16); 给你一个定时控制的信号系统,我只做的简单的测试,至于延时我用的软件,你自己想办法。_ Dai_Weis 于 2005-5-4 13:43:23 重新给你说明 /* * * * * Keil C AT89S51 交通信号控制程序 * * (C) 版权所有 Dai_W * * * * 开发说明: 固定时间信号变换,南北设置调头、左传、直行、右转、自行车。 东西设置左传、直行、右转、自行车。 时序状态: 红 绿 红 绿 序号 左 前 右 自

16、 左 前 右 自 前 右 自 前 右 自 1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 2 1 0 0 1 0 1 1 0 1 0 1 0 1 0 3 0 1 0 1 1 0 1 0 1 0 1 0 1 0 4 1 1 1 1 0 0 0 0 0 1 0 1 0 1 5 1 1 0 1 0 0 1 0 0 0 1 1 1 0 */ 另外修正个错误 while (1) time_x(0xA5, 0x70, 0x0); time_s(0xA4, 0x70, 0x1, 0xA5, 0x70);材料:1、89S5111.0592M 晶振1K 电阻 、10UF 电容12 个灯,红、黄、绿各

17、四个, 12 个 1K 电阻 ,十字路口嘛。蜂鸣器一个。按键一个,按键复位采用 AT89s51 型号的单片机,由于交通十字路口的对称性,所以一个引脚可以同时控制两个灯,将发光二极管分别接到 P1 各个引脚,在其中加入一个时振荡当电路,来控制时间,在 P3.0 引脚接入蜂鸣器只黄灯亮的时候发出声响,这里我们让每次黄灯亮的时候发出六声响,通过 C 程序的控制就可以实现,每次循环是 10 秒。2、9cm*15cm 万用板 1 片单片机及 IC 座 1 套12M 晶振 1 只22P 电容 2 只10uF 电容 1 只10K 电阻 1 只1K 排阻 1 只两位一体数码管 2 只DC 座 1 只自锁开关 1 只发光二极管红绿黄 各 4 只按键 7 只USB 电源线 1 条导线 若干1、基于 51 系列单片机(型号:STC89C52、AT89C51/C52、AT89S51/S52,随机选择,如有特殊要求请与店主讨论)设计实现。(以上几种单片机全部为 51 系列单片机,除了名字不一样外,功能及应用完全一样,互相兼容)2、两个两位一体数码管显示东西、南北方向时间。3、四方向各有红绿黄三颗灯。4、七个按键操作,分别是:禁止通行、东西通行、南北通行、时间加、时间减、切换方向、确认。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报