交通灯模拟报告
模电实训报告交通灯
一、实训背景随着城市化进程的加快,交通拥堵问题日益突出。
传统的交通信号灯控制系统由于响应速度慢、智能化程度低等问题,已无法满足现代交通管理的需求。
为了提高交通效率,减少交通事故,模拟交通灯控制系统应运而生。
本次实训旨在通过模拟交通灯控制系统的设计与实现,加深对模拟电子技术(模电)的理解和应用,提高学生的实践能力和创新能力。
二、实训目的1. 理解交通灯控制系统的基本原理和设计方法。
2. 掌握模拟电路的设计与调试技术。
3. 培养学生的团队协作能力和创新能力。
4. 提高学生对模拟电子技术的应用能力。
三、实训内容1. 系统需求分析根据交通灯控制系统的实际需求,确定系统功能如下:- 红灯亮时,禁止车辆和行人通行。
- 绿灯亮时,允许车辆和行人通行。
- 黄灯亮时,警告车辆和行人准备停车。
系统应具备以下特性:- 实时性:系统响应时间应小于1秒。
- 可靠性:系统应能长时间稳定运行。
- 可扩展性:系统应能方便地增加新的交通灯控制功能。
2. 系统设计根据系统需求,设计模拟交通灯控制系统如下:- 硬件设计硬件部分主要包括以下模块:- 模拟信号发生器:产生红、黄、绿灯信号。
- 比较器:用于比较信号发生器产生的信号,并输出控制信号。
- 驱动电路:用于驱动交通灯的LED灯。
- 传感器:用于检测车辆和行人。
- 软件设计软件部分主要包括以下功能:- 信号生成:根据预设的时间间隔产生红、黄、绿灯信号。
- 信号处理:对信号进行放大、滤波等处理。
- 控制逻辑:根据信号处理结果,控制交通灯的亮灯状态。
3. 系统实现根据设计图纸,搭建模拟交通灯控制系统硬件电路,并编写相应的软件程序。
在Keil uVision环境下进行编程,使用C51语言编写程序,并在PROTEUS仿真软件中进行仿真调试。
4. 系统测试将搭建好的硬件电路与仿真软件相结合,进行系统测试。
测试内容包括:- 信号生成是否稳定可靠。
- 控制逻辑是否正确。
- 系统响应时间是否符合要求。
实验报告二-模拟交通灯实验
实验报告二模拟交通灯实验序号:5 姓名: 学号:11121549一、实验目的1. 学习在PC机系统中扩展简单I/O 接口的方法。
2. 进一步学习编制数据输出程序的设计方法。
3. 学习模拟交通灯控制的方法。
二、实验内容用8255做输出口,控制十二个发光管(4组红绿黄灯)的亮灭,模拟十字路口交通灯管理。
三、电路图四、实验程序框图五、编程CODE SEGMENTASSUME CS:CODEORG 1200HSTART: MOV AL,80HMOV DX,PTDOUT DX,AL ;设置8255各口为输出模式,工作在方式0MOV DX,PTBMOV AL,0FFHOUT DX,AL ;所有黄灯熄灭MOV DX,PTCMOV AL,0F0HOUT DX,AL ;所有红灯全亮CALL DELAY3 ;延时LOP: MOV AL,10100101BMOV DX,PTCOUT DX,AL ;点亮1,3路口绿灯,点亮2,4路口红灯CALL DELAY ;延时MOV AL,11110101BOUT DX,AL ;熄灭1,3路口绿灯MOV CX,8H ;1,3路口黄灯灯闪烁8次LOP1: MOV DX,PTBMOV AL,10101111BOUT DX,AL ;1,3路口黄灯亮CALL DELAY2 ;延时MOV AL,0FFHOUT DX,AL ;1,3路口黄灯灭CALL DELAY2 ;延时LOOP LOP1 ;循环8次MOV DX,PTCMOV AL,0F0HOUT DX,AL ;所有红灯全亮CALL DELAY3 ;延时MOV AL,01011010BOUT DX,AL ;点亮2,4路口绿灯,点亮1,3路口红灯CALL DELAY ;延时MOV AL,11111010BOUT DX,AL ;熄灭2,4路口绿灯MOV CX,8H ;2,4路口黄灯灯闪烁8次LOP2: MOV DX,PTBMOV AL,01011111BOUT DX,AL ;2,4路口黄灯亮CALL DELAY2MOV AL,0FFHOUT DX,AL ;2,4路口黄灯灭CALL DELAY2LOOP LOP2MOV DX,PTCMOV AL,0F0HOUT DX,AL ;所有红灯亮CALL DELAY3JMP LOPDELAY: PUSH AX ;延时子程序1PUSH CXMOV CX,0030HL1: CALL DELAY2LOOP L1POP CXPOP AXRETDELAY2: PUSH CX ;延时子程序2MOV CX,0D000HL2: LOOP L2POP CXRETDELAY3: PUSH CX ;延时子程序3MOV CX,0FFFFHL3: LOOP L3POP CXRETCODE ENDSEND START六、调试过程:1. 按连线图连接好,检查无误后打开实验箱电源。
交通灯控制实验报告
交通灯控制实验报告交通灯控制实验报告引言:交通灯是城市交通管理的重要组成部分,通过对交通流量的控制,有效地维护交通秩序和安全。
本次实验旨在通过搭建一个简单的交通灯控制系统,探究不同交通流量下的信号灯变化规律,并分析其对交通流畅度和效率的影响。
实验装置:实验装置由红、黄、绿三种颜色的LED灯组成,分别代表红灯、黄灯和绿灯。
通过按键控制,可以切换不同灯光的显示状态。
在实验过程中,我们将模拟不同交通流量情况下的信号灯变化。
实验过程:1. 低交通流量情况下:首先,我们模拟低交通流量情况。
设置红灯时间为20秒,绿灯时间为30秒,黄灯时间为5秒。
在这种情况下,红灯的时间较长,确保道路上的车辆能够安全通过。
绿灯时间相对较短,以充分利用交通资源,提高交通效率。
黄灯时间较短,用于过渡信号灯变化。
2. 中等交通流量情况下:接下来,我们模拟中等交通流量情况。
设置红灯时间为30秒,绿灯时间为40秒,黄灯时间为5秒。
在这种情况下,红灯时间相对较长,确保道路上的车辆能够顺利通过。
绿灯时间适中,以保持交通的流畅性。
黄灯时间依然较短,用于过渡信号灯变化。
3. 高交通流量情况下:最后,我们模拟高交通流量情况。
设置红灯时间为40秒,绿灯时间为50秒,黄灯时间为5秒。
在这种情况下,红灯时间最长,确保道路上的车辆能够完全通过。
绿灯时间相对较长,以缓解交通压力,提高交通效率。
黄灯时间仍然较短,用于过渡信号灯变化。
实验结果:通过实验观察,我们发现不同交通流量下的信号灯变化对交通流畅度和效率有着明显的影响。
在低交通流量情况下,红灯时间较长,确保车辆安全通过,但可能导致交通效率稍有降低。
在中等交通流量情况下,信号灯的设置更加平衡,保证了交通的流畅性和效率。
而在高交通流量情况下,红灯时间最长,确保车辆完全通过,但也导致交通效率相对较低。
结论:通过本次实验,我们得出了以下结论:交通灯的设置应根据不同交通流量情况进行合理调整,以保证交通的流畅性和效率。
十字路口的交通灯实训报告
十字路口的交通灯实训报告一、实训目的本次实训的目的是通过模拟十字路口的交通情况,了解交通灯的设置原理及其对交通流的管理作用,从而增强我们对交通灯的认识和应用能力。
二、实训环境我们选择在校园内模拟一座真实的十字路口,设置交通灯进行实训。
该校内的十字路口为主要通行路段,交通流较大,是进行交通灯实训的理想场所。
三、实训步骤1. 实地调研:在实训开始前,我们首先进行了对实际交通情况的调研。
观察了真实交通中车辆行驶的速度、流量和行驶时的交通规则遵守情况,以此为依据来进行后续的实训设置。
2. 设计交通灯方案:根据调研结果,我们制定了相应的交通灯设置方案。
根据不同方向的车流量大小,我们合理安排了绿灯时间的长短,确保交通流畅。
3. 搭建实训模型:在选择的十字路口上,我们搭建了实训模型,设置了红灯、绿灯、黄灯,并设置了指示牌和标识牌,使实训的模型更加真实可信。
4. 进行实训操作:在实训模型搭建完成后,我们按照所制定的交通灯方案进行实训操作。
通过控制交通灯的信号,观察不同方向车辆的行驶情况及交通的流畅程度。
五、实训成果与总结通过本次实训,我们获得了以下成果与总结:1. 交通灯对交通流的控制作用确实很大。
通过控制绿灯时间的长短,我们观察到不同方向的车辆如何按照交通灯信号有序行驶,整体交通秩序明显得到了改善。
2. 交通灯设置需要结合实际情况进行合理安排。
根据我们在实地调研中观察到的交通情况,我们合理安排绿灯的时间,并设置了黄灯的时间缓冲,以确保车辆能够逐渐停车避让,确保行车安全。
3. 交通灯实训有助于我们增强交通安全意识。
通过亲身实践控制交通灯,我们深刻体会到了交通灯对交通秩序的重要性,也更加明白自己在交通中应该如何遵守交规,安全驾驶。
通过本次实训,我们对交通灯有了更深入的了解,并且提高了自己在交通安全方面的素养。
希望这次实训能够对我们今后的出行和驾驶提供借鉴和参考。
PLC交通灯实验报告
十字路口交通灯控制的模拟实验报告一、实验目的1、熟练使用各基本指令,定时器,计数器,内部指令等。
2、根据控制要求,掌握PLC的编程方法和程序调试方法。
3、掌握交通灯的实验设计与三菱PLC的连线方法。
二、实验要求交通灯模拟控制实验区中,下框中的南北红、黄、绿灯R、Y、G分别接主机的输出点Y2、Y1、Y0,东西红、黄、绿灯R、Y、G分别接主机的输出点Y5、Y4、Y3,模拟南北向行驶车的灯接主机的输出点Y6,模拟东西向行驶车的灯接主机的输出点Y7;下框中的SD接主机的输入端X0。
上框中的东西南北三组红绿黄三色发光二极管模拟十字路口的交通灯。
信号灯受一个启动开关控制,当启动开关接通时,信号灯系统开始空座,且先南北红灯亮,东西绿灯亮。
当启动开关断开时,所有信号灯都熄灭。
南北红灯亮维持25秒,在南北红灯亮的同时东西绿灯也亮,并维持20秒。
到20秒时,东西绿灯闪亮,闪亮3秒后熄灭。
在东西绿灯熄灭时,东西黄灯亮,并维持2秒。
到2秒时,东西黄灯熄灭,东西红灯亮,同时,南北红灯熄灭,绿灯亮。
东西红灯亮维持30秒。
南北绿灯亮维持25秒,然后闪亮3秒后熄灭。
同时南北黄灯亮,维持2秒后熄灭,这时南北红灯亮,东西绿灯亮。
周而复始。
三、程序设计步骤1、过程分析:过程一:东西向车行驶 2、设置定时器 当司机看到红灯变为绿灯的时候需要有时间反应,启动车辆等。
因此在车子行驶和交通灯变化之间设置1s 的间隔。
②设置T22、T222、T221、T223的原因是:T2和T7只能控制交通灯的闪亮时间,并不能使其控制。
T22一个定时器并不能同时控制东西绿灯与南北绿灯的闪烁,要分别设置控制器,所以通过T22、T222的分别作用,使东西绿灯与南北绿灯分别在高、低电平交替的时候闪亮。
南北红灯亮25s东西向车行驶东西绿灯亮20s →东西绿灯闪2s →东西黄灯亮2s 南北绿灯亮25s →南北绿灯闪3s →南北黄灯亮2s南北向车行驶 东西红灯亮30sT0: 南北红灯亮25sT6: 东西绿灯亮20s T22:东西绿灯闪烁 T1: 南北绿灯亮25sT7: 东西绿灯闪亮2s T222:南北绿灯闪烁 T2: 南北绿灯闪亮3sT10: 东西向车行驶22s T221:东西绿灯闪烁的断点 T3: 南北黄灯亮2s T11: 南北向车行驶27s T223:南北绿灯闪烁的断点T4: 东西红灯亮30s T12: 延迟1sT5: 东西黄灯亮2s T13: 延迟1s输入X0:启动开关输出Y40: 南北绿灯Y43: 东西绿灯Y41: 南北黄灯Y44: 东西黄灯Y42: 南北红灯Y45: 东西红灯Y46: 南北向车行驶Y47: 东西向车行驶4、按照设置的I/O分配进行接线。
交通灯实验报告
交通灯实验报告交通灯实验报告引言:交通灯是城市交通管理中不可或缺的一部分,它通过红、黄、绿三种信号灯的变化来引导车辆和行人的通行。
本次实验旨在通过观察交通灯的工作原理和效果,了解交通灯在交通管理中的重要性。
实验目的:1. 观察交通灯的信号灯变化规律;2. 分析交通灯对车辆和行人通行的引导作用;3. 探讨交通灯在交通管理中的优势和不足。
实验过程:在实验室中,我们使用了一套模拟交通灯系统进行实验。
该系统包括红、黄、绿三种信号灯和相应的控制器。
首先,我们观察了交通灯的信号灯变化规律。
根据实验室提供的资料,红灯表示停止,黄灯表示准备,绿灯表示通行。
交通灯的变化规律是:红灯亮→绿灯亮→黄灯亮→红灯亮。
这个变化过程是有序的,为车辆和行人提供了明确的信号。
接下来,我们进行了交通灯对车辆和行人通行的引导实验。
在实验室中,我们设置了一段模拟道路和人行横道,并安装了交通灯。
通过控制器,我们模拟了不同的交通情况,观察交通灯对车辆和行人通行的影响。
实验结果显示,当红灯亮起时,车辆停止通行,行人等待过马路;当绿灯亮起时,车辆可以通行,行人可以过马路;当黄灯亮起时,车辆应减速停车,行人应尽快过马路。
交通灯的引导作用使得车辆和行人的通行更加有序和安全。
讨论:交通灯作为一种交通管理工具,具有一定的优势和不足。
首先,交通灯通过明确的信号灯变化规律,为车辆和行人提供了明确的指示,减少了交通事故的发生。
其次,交通灯可以根据交通流量的变化进行智能调控,提高道路的通行效率。
此外,交通灯还可以与其他交通设施相结合,形成综合交通管理系统,进一步提升交通管理水平。
然而,交通灯也存在一些不足之处。
首先,当交通流量较大时,交通灯的信号周期较长,可能导致车辆和行人等待时间过长,影响通行效率。
其次,交通灯对车辆和行人的通行进行了简化处理,不能完全满足各种交通情况的需求。
例如,在某些情况下,行人可能需要额外的通行时间,以确保安全过马路。
结论:通过本次实验,我们深入了解了交通灯的工作原理和效果。
交通灯实训报告
交通灯实训报告交通灯实训报告一、实训背景交通灯是指在道路上用以指示车辆、行人等交通参与者行驶和通行的信号装置。
为了提高学生对于交通安全的认知和意识,我校在学生课程中设置了交通灯实训环节。
二、实训目的1. 增强学生对于交通规则和安全意识的认知;2. 培养学生遵守交通规则和安全驾驶的习惯;3. 提高学生的应急反应能力。
三、实训内容1. 介绍交通灯基本知识:红灯停,绿灯行,黄灯警示;2. 模拟不同情况下的交通信号控制:直行,左转,右转等;3. 学习如何正确使用人行横道线和斑马线。
四、实训过程1. 理论教育在开始实践之前,首先需要进行理论教育。
老师向同学们介绍了红绿灯的基本知识,并详细解释了每个信号颜色代表什么含义。
同时还向同学们介绍了如何正确使用人行横道线和斑马线。
2. 实践操作在理论教育之后,同学们开始进行实践操作。
老师安排了不同的情况,让同学们模拟交通信号控制。
比如:直行,左转,右转等。
同时,老师还会模拟交通事故场景,让同学们学习如何正确应对。
3. 实践总结实践结束后,老师对同学们进行了总结。
他强调了正确使用交通信号的重要性,并提醒同学们在日常生活中要时刻注意交通安全。
五、实训效果经过一次次的实践操作和理论教育,同学们的交通安全意识得到了明显提高。
他们能够更加自觉地遵守红绿灯规定,并且在人行横道线和斑马线上也有了更加规范的行为表现。
六、存在问题虽然本次实训取得了一定的效果,但是仍然存在一些问题。
比如:有些同学对于红绿灯的含义仍然不够清楚;有些同学在模拟情境中反应较慢等。
七、改进措施针对存在的问题,我们需要采取一些改进措施。
比如:加强对于红绿灯基本知识的教育;增加实践操作的时间,让同学们更加熟练掌握交通信号控制技能等。
八、实践体会通过这次实践,我深刻认识到了交通安全的重要性。
只有遵守交通规则,才能保证自己和他人的安全。
同时,我也发现自己在日常生活中存在一些不规范的行为,需要及时改正。
九、结语本次交通灯实训为同学们提供了一个很好的交通安全教育平台。
十字路口的交通灯实训报告
十字路口的交通灯实训报告交通灯是指在道路交通中为调节行人和车辆通行,保障交通安全而设置的信号装置。
在十字路口,交通灯的作用尤为重要,可以有效地控制车辆和行人的通行顺序,减少交通事故的发生。
本实训报告将对一个十字路口的交通灯进行详细分析和讨论,以了解其工作原理和实际运行情况。
首先,一个标准的十字路口交通灯通常由三个颜色的信号灯组成,分别为红灯、黄灯和绿灯。
各种信号的含义如下:- 红灯:表示停车,车辆和行人必须停下等待。
- 黄灯:表示准备停车,车辆和行人应该尽快停车准备等待。
- 绿灯:表示通行,车辆和行人可以通过路口。
在十字路口,交通灯按照特定的时间间隔进行变换。
一般来说,红灯持续时间最长,黄灯次之,绿灯最短。
这样的设置是为了同时保证交叉方向上车辆和行人的通行,避免交通堵塞和事故的发生。
除了基本的信号灯外,一些复杂的十字路口还会设置左转灯和直行灯,以提供更多的交通指示。
例如,在某些路口,绿灯可能只是左转和直行车辆的通行信号,而红灯则是右转车辆的停车信号。
这样可以减少车辆之间的冲突并提高交通效率。
交通灯的工作原理是通过电子控制系统实现的。
通过计时器和传感器,控制系统可以确定何时切换信号,并为不同方向的车辆和行人提供适当的通行时间。
这个控制系统通常由交通管理部门进行监控和调整,以适应实际的交通情况。
然而,在实际情况中,由于交通流量的变化以及行人的不规则行为,交通灯的控制并不总是完美的。
因此,一些路口还配备了交警进行指挥,以进一步确保交通的安全和顺畅。
通过这次实训,我深刻认识到交通灯在保障交通安全方面的重要作用。
交通灯的设置和运行方式需要充分考虑到实际情况,以确保车辆和行人能够安全通行。
此外,我们也应该提高交通安全意识,遵守交通规则,提高道路使用效率,共同创造一个安全和谐的道路交通环境。
总之,交通灯在十字路口扮演着至关重要的角色。
它通过设定信号灯颜色和时间间隔,控制车辆和行人的通行顺序,以保障道路交通的安全和顺畅。
微机实验 交通灯实验报告
微机实验交通灯实验报告微机实验交通灯实验报告引言交通灯作为城市交通管理的重要组成部分,对于保障交通安全和顺畅起着至关重要的作用。
本次实验旨在通过微机控制,模拟交通灯的工作原理,并实现交通灯的自动控制。
一、实验目的本次实验的主要目的是通过搭建一套微机控制系统,实现交通灯的自动控制,并通过实验验证交通灯在不同道路情况下的工作原理和效果。
二、实验原理1. 交通灯的工作原理交通灯通常由红、黄、绿三个信号灯组成。
红灯表示停止,黄灯表示准备,绿灯表示可以通行。
交通灯通过不同颜色的灯光变化,指示车辆和行人何时可以通行,以保障交通的有序进行。
2. 微机控制系统微机控制系统是利用计算机和相应的软硬件实现对设备、机器等的控制和管理。
在交通灯实验中,我们可以通过编程控制计算机输出不同的信号,从而实现交通灯的自动控制。
三、实验器材和步骤1. 实验器材- 微机控制系统:包括计算机、编程软件和控制接口等。
- 交通灯模型:模拟真实的交通灯,包括红、黄、绿三个信号灯。
2. 实验步骤- 连接交通灯模型和微机控制系统。
- 编写程序,设置交通灯的工作时间和信号灯变化规律。
- 运行程序,观察交通灯的工作状态和变化过程。
四、实验结果和分析通过实验,我们成功地实现了交通灯的自动控制。
在程序中,我们设置了红灯亮10秒,黄灯亮3秒,绿灯亮15秒的时间间隔,模拟了真实交通灯的工作规律。
在实验过程中,我们观察到交通灯按照预设的时间间隔循环变化,红灯亮起时车辆停止,绿灯亮起时车辆可以通行。
这样的交通灯控制方式可以有效地维持交通的有序进行,减少交通事故的发生。
五、实验总结通过本次实验,我们深入了解了交通灯的工作原理和微机控制系统的应用。
微机控制系统作为一种高效、精确的控制手段,可以广泛应用于各个领域,提高设备的自动化程度和工作效率。
在今后的学习和工作中,我们将继续深入学习微机控制系统的原理和应用,掌握更多的编程技巧和控制方法,为实现更多实际问题的自动化解决方案做出贡献。
模拟交通灯实验报告
模拟交通灯实验报告模拟交通灯实验报告引言:交通安全一直是社会关注的焦点,而交通信号灯作为交通管理的重要手段,对于维护交通秩序和减少交通事故起着至关重要的作用。
本实验旨在通过模拟交通灯实验,研究交通灯的工作原理和对交通流量的控制效果,以期提高交通系统的效率和安全性。
一、实验目的本实验的主要目的是研究交通灯在不同条件下的工作原理,探究交通灯对交通流量的控制效果以及对交通系统的影响。
二、实验器材和方法1. 实验器材:- 电脑模拟软件- 交通灯模拟装置2. 实验方法:- 设定不同的交通流量条件,模拟不同的交通灯工作模式;- 观察并记录交通灯在不同情况下的工作状态和交通流量情况;- 分析交通灯对交通流量的控制效果。
三、实验过程与结果1. 实验过程:- 首先,我们设置了一个高峰时段的交通流量条件,模拟交通灯的工作。
根据交通流量的变化,交通灯会自动切换不同的信号灯状态,包括红灯、绿灯和黄灯。
- 其次,我们调整了交通灯的周期时长和绿灯时间长度,观察交通流量的变化和交通灯的工作效果。
- 最后,我们分析了不同交通灯工作模式下的交通流量情况,并对交通灯的控制效果进行了评估。
2. 实验结果:- 在高峰时段,交通灯的工作起到了明显的交通流量控制作用。
绿灯时,交通流量明显增加,车辆通行速度加快,而红灯时,车辆停止通行,交通流量减少。
- 调整交通灯的周期时长和绿灯时间长度对交通流量的控制效果有显著影响。
周期时长过长会导致车辆等待时间过长,造成交通拥堵;而周期时长过短会导致交通流量无法得到有效控制。
- 合理调整绿灯时间长度可以有效平衡交通流量,减少交通拥堵和事故发生的可能性。
四、实验讨论与结论1. 实验讨论:- 交通灯作为交通管理的重要手段,对交通流量的控制效果直接影响着交通系统的效率和安全性。
通过本次实验,我们发现交通灯能够有效地控制交通流量,减少交通事故的发生。
- 合理调整交通灯的周期时长和绿灯时间长度,可以最大程度地平衡交通流量,提高交通系统的运行效率。
模拟交通灯设计报告_毕业设计
模拟交通灯设计报告【摘要】当今世界正处于一个自动化时代,交通灯控制等很多行业的设备都需要计算机来控制。
因此,一个好的交通灯控制系统能在道路拥挤、违章控制等方面起到很大作用。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机STC89C52为中心器件来设计交通灯控制器,实现了红、黄、绿灯燃亮功能;红黄绿灯循环点亮。
实现模拟交通灯的功能。
本系统实用性强、操作简单、扩展功能强。
关键词:单片机(89C52)交通灯数码管 LED一、整体方案设计1.基本要求在十字路的东西南北方向各设置一组红黄绿灯以及一个转向灯并设置一个两位数码管,编程实现十字路口红黄绿灯交替点亮与数码管倒计时显示。
2.实现功能1)正常情况东西车道与南北车道交替通行,每次通行时间为20秒,东西方向红灯亮30秒同时其方位的数码管倒计时30秒,南北向绿灯亮20秒之后黄灯闪5秒同时其方位的数码管倒计时25秒,之后南北向转向灯亮5秒数码管倒计时5秒。
东西向绿灯亮20秒之后黄灯闪5秒同时南北向红灯亮30秒。
2)紧急情况a) 通过按压“禁止通行键”可使东西南北全部红灯,即全都不通,以应付突发情况。
b) 按压“东西紧急键”,则东西方向绿灯,南北方向红灯;再按一次解除东西紧急通行状态。
按压“南北紧急键”,则南北方向绿灯,东西方向红灯;再按一次后解除南北紧急通状态。
c) 按压“东西转向键”,则东西转向灯开;按压“南北转向键”,则南北转向灯开。
3) 交通灯显示状态3. 总体设计方案框图二、 方案原理采用单片机STC89C52的I/O 口P1口通过锁存器控制共阴极数码管,,在十字路口的四组红、黄、绿交通灯及转向灯中,由单片机P0口管脚分别控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极连接,因此I/O口输出低电平时,与之相连的灯会亮,并通过数码管显示时间倒计时。
Ardioun交通灯实验报告
Ardioun交通灯实验报告
1.实验说明
我想大家都看见过交通灯,就是马路上十字路口的红绿灯。
如果您开过车,我想您一定仔细观察过交通灯,如果您还没有驾驶过车,您是否仔细观察过交通灯呢?在我们这个套件中,就包含一个交通灯模块。
我们经常会用红绿黄3个LED外接电路来模拟路边的红绿黄灯闪烁。
因此我们特别设计了这款模块,模块上自带了红黄绿3个LED 灯,我们这个实验就做一个模拟交通灯。
2.实验原理
前面第一课我们就学习了如何控制一个LED,由原理图容易得知,控制这个模块就好比分别控制3个独立的LED灯(我们这个灯可直接由单片机IO口驱动),给对应颜色灯高电平就亮起对应的颜色。
比如,我们给信号“R”输出高电平,也就是5V,则红色LED点亮。
3.测试结果
上传实验程序成功,上电后,模块上绿色LED亮5秒然后熄灭,黄色LED闪烁3秒然后熄灭,再然后红色LED亮5秒,然后熄灭,模块上3个LED自动模拟交通灯循环运行。
模拟交通灯实验报告
单片机综合实验报告题目: 模拟真实交通灯班级:姓名:学号:指导老师:时间:一、实验内容:用8255芯片的PA、PB口低四位做输出口,控制十二个发光二极管燃灭,模拟十字路口交通灯管理,并利用数码显示器进行倒计时显示(采用单片机内部定时器定时)。
通过外部中断能使交通灯暂停运行,并点亮4个红灯。
通过16*16点阵中的图形模拟控制行人过马路的人形“走”、“停”指示灯,可参考下图所示。
选做增加项目:在交通灯开始之前可通过开关对红绿灯亮灭时间的初始值进行增、减设定或者交通灯暂停时加上乐曲报警。
二、实验电路及功能说明电路:74LS138译码器电路8255与发光二极管连线图数码LED显示器电路(不需接线)16×16LED点阵显示电要求:交通灯亮灭过程同“8255控制交通灯实验”,倒计时显示只需两位数(0~99),用定时器定时进行倒计时,每秒钟减1。
在16*16点阵中显示的人形“走”、“停”标志可自定义,由专门软件可转换为相应显示代码,不需自己推理。
三、实验程序流程图:主程序:子程序:详细程序请参考程序清单。
四、实验结果分析对程序进行仿真可以观察到:点阵中交替显示如图(a)、(b)所示图像,且交替显示时间为30秒。
当显示图像为(a)时,表示可以容行人通过,限时30秒;当显示图像为(b)时,表示不容行人通过,也限时30秒。
如此,在十字路口各置一对点阵即可模拟实景。
五、心得体会通过此次实验,对单片机的I/O口的使用的条件有了更深的理解,对单片机的各个管脚功能的理解也加深了,以及在常用编程设计思路技巧的掌握方面也向前迈了一大步。
这次的课程设计让我把单片机的理论知识应用在实践中,实现了理论和实践相结合,从中更懂得理论是实践的基础,实践有助于检验理论的正确性的道理,对我以后参加工作或者继续学习深造将产生巨大的帮助和影响。
六、程序清单#include <reg51.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int#define ROW1 XBYTE[0XFFE3]#define ROW2 XBYTE[0XFFE0]#define COL1 XBYTE[0XFFE2]#define COL2 XBYTE[0XFFE1]#define PA XBYTE[0xffd8]#define PB XBYTE[0xffd9]#define CTL XBYTE[0xffdb]#define SEG XBYTE[0xffdc]#define BIT XBYTE[0xffdd]#define allredend 10#define ewredend 2*ewstarter+allredend#define snyellowend ewredend+10#define snredend snyellowend+2*snstarter#define ewyellowend snredend+10sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;sbit P32=P3^2;uchar tongBu;uchar code ewTable[]={0xb6,0x75,0xf3,0xf7,0xae,0x9e,0xbe};uchar code nsTable[]={0xd,0xd,0xc,0xd,0xb,0x7,0xf};//uchar tempa,tempb;int time=1,cnt,change,intflag,inttime=1,ewstarter=10,snstarter=15;int tempseg;uchar key1=0;uchar buffer[]={0,0,0,0,0,0};uchar table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};/*-- 行走--*//*-- 宽度x高度=16x16 --*/uchar code led1[]={0x01,0x80,0x02,0x40,0x02,0x40,0x01,0x80,0x03,0xC0,0x06,0x60,0x0A,0x50,0x0A,0x5 0,0x0B,0xD0,0x12,0x48,0x02,0x40,0x02,0x60,0x04,0x20,0x04,0x20,0x08,0x20,0x18,0x60};/*-- 停止--*//*-- 宽度x高度=16x16 --*/uchar code led2[]={0x01,0x80,0x02,0x40,0x02,0x40,0x01,0x80,0x07,0xE0,0x7E,0x7E,0x02,0x40,0x02,0x40 ,0x03,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0xC0};/*-- 文字: 高--*//*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --uchar code led2[]={0x02,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x0F,0xE0,0x08,0x20,0x0F,0xE0,0x00,0x0 0,0x7F,0xFC,0x40,0x04,0x4F,0xE4,0x48,0x24,0x48,0x24,0x4F,0xE4,0x40,0x14,0x40,0x08};*/ void delayshort(){char n;for(n=50;n>0;n--);}uchar changeleft(uchar led){uchar temp;temp=0;temp|=(led<<7)&0x80;temp|=(led<<5)&0x40;temp|=(led<<3)&0x20;temp|=(led<<1)&0x10;temp|=(led>>1)&0x08;temp|=(led>>3)&0x04;temp|=(led>>5)&0x02;temp|=(led>>7)&0x01;return(temp);}void led16_16display(uchar *table,uchar length){uchar i=length/2,scan1=0x1,scan2=0x1;for(i=0;i<16;i++){if(i<8){ROW1=0;ROW2=0;COL1=scan1;COL2=0;ROW1=changeleft(table[2*i]);ROW2=table[2*i+1];COL1=scan1;COL2=0;delayshort();scan1<<=1;}else{ROW1=0;ROW2=0;COL1=0;COL2=scan2;ROW1=changeleft(table[2*i]);ROW2=table[2*i+1];COL1=0;COL2=scan2;delayshort();scan2<<=1;}}}void changeseg(){if(key1==0){buffer[3]=10;buffer[0]=10;buffer[5]=tempseg%10;buffer[4]=tempseg/10;buffer[2]=tempseg%10;buffer[1]=tempseg/10;}else if(key1==1){buffer[3]=10;buffer[0]=10;buffer[5]=ewstarter%10;buffer[4]=ewstarter/10;buffer[2]=ewstarter%10;buffer[1]=ewstarter/10;}else{buffer[3]=10;buffer[0]=10;buffer[5]=snstarter%10;buffer[4]=snstarter/10;buffer[2]=snstarter%10;buffer[1]=snstarter/10;}}void timer1()interrupt 3{static uchar temp=0x20,cnt1;TH1=(65536-1000)/256;TL1=(65536-1000)%256;changeseg();SEG=0xff;SEG=table[buffer[cnt1]];cnt1++;if(cnt1==6)cnt1=0;BIT=temp;temp>>=1;if(temp==0)temp=0x20;}void int_0()interrupt 0{delayshort();if(P32==0){PA=0xB6;PB=0xd;PT0=1;PT1=1;intflag=1;while(inttime<=20)led16_16display(led2,32);inttime=1;intflag=0;PT0=0;PT1=0;PA=ewTable[tongBu];PB=nsTable[tongBu];}}void timer0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt==5){cnt=0;if(intflag==1){inttime++;tempseg=10-inttime/2;}else{time++;if(time<=allredend){tongBu=0;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=allredend/2-(time+1)/2;}else if((time>allredend)&&(time<=ewredend)){tongBu=1;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=ewstarter+allredend/2-(time+1)/2;}else if((time>ewredend)&&(time<=snyellowend)){if(change==0){tongBu=2;PA=ewTable[tongBu];PB=nsTable[tongBu];change=1;}else{tongBu=3;PA=ewTable[tongBu];PB=nsTable[tongBu];change=0;}tempseg=ewstarter+allredend/2+5-(time+1)/2;}else if((time>snyellowend)&&(time<=snredend)){tongBu=4;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=ewstarter+allredend/2+5+snstarter-(time+1)/2;}else if((time>snredend)&&(time<=ewyellowend)){if(change==0){tongBu=5;PA=ewTable[tongBu];PB=nsTable[tongBu];change=1;}else{tongBu=6;PA=ewTable[tongBu];PB=nsTable[tongBu];change=0;}tempseg=ewstarter+10+allredend/2+snstarter-(time+1)/2;}else{tongBu=1;time=allredend+1;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=ewstarter+allredend/2-(time+1)/2;}}}}void key(){uchar keynum;keynum=~(P1|0XF8);switch(keynum){case 0x1:while(KEY1==0)led16_16display(led2,32);key1++;TR0=0;if(key1==3){key1=0;TR0=1;}break;case 0x2:while(KEY2==0)led16_16display(led2,32);if(key1==1){ewstarter++;if(ewstarter==100)ewstarter=0;}if(key1==2){snstarter++;if(snstarter==100)snstarter=0;}break;case 0x4:while(KEY3==0)led16_16display(led2,32);if(key1==1){ewstarter--;if(ewstarter==-1)ewstarter=99;}if(key1==2){snstarter--;if(snstarter==-1)snstarter=99;}break;default:break;}}void main(){IE=0x8b;IT0=1;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;CTL=0x80;tongBu=0;TR1=1;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=allredend/2-(time+1)/2;TR0=1;while(1){key();if(intflag==0){if(key1==0){if(time<=allredend)led16_16display(led2,32);else if(time>allredend&&time<=snyellowend)led16_16display(led1,32);else if(time>snyellowend&&time<=ewyellowend)led16_16display(led2,32);}elseled16_16display(led2,32);}}}。
模拟交通信号灯实训报告
一、实训背景随着城市化进程的加快,交通拥堵问题日益严重,交通信号灯作为交通管理的重要手段,对于提高道路通行效率、保障交通安全具有重要意义。
为了提高学生的实践能力,了解交通信号灯的工作原理,本实训采用模拟交通信号灯系统进行实践操作。
二、实训目的1. 了解交通信号灯的工作原理和组成。
2. 掌握交通信号灯系统的设计方法。
3. 学会使用相关软件进行交通信号灯系统的仿真。
4. 提高学生的动手能力和团队协作能力。
三、实训内容1. 交通信号灯系统组成交通信号灯系统主要由以下部分组成:(1)控制器:负责控制信号灯的时序、状态切换和故障处理。
(2)信号灯:包括红、黄、绿三种颜色的信号灯,分别表示停车、等待和通行。
(3)感应器:检测车辆和行人通行情况,为控制器提供实时数据。
(4)显示屏:显示信号灯状态、倒计时等信息。
2. 交通信号灯系统设计(1)控制器设计控制器采用单片机作为核心控制单元,负责信号灯的时序控制、状态切换和故障处理。
控制器通过定时器实现信号灯的定时切换,同时根据感应器采集的数据调整信号灯的时长。
(2)信号灯设计信号灯采用LED灯作为发光元件,通过单片机控制LED灯的亮灭实现信号灯的显示。
信号灯包括红、黄、绿三种颜色的LED灯,分别表示停车、等待和通行。
(3)感应器设计感应器采用红外感应器或超声波感应器,用于检测车辆和行人通行情况。
当感应器检测到车辆或行人时,向控制器发送信号,控制器根据信号调整信号灯时长。
(4)显示屏设计显示屏采用LCD显示屏,用于显示信号灯状态、倒计时等信息。
显示屏通过单片机控制,实现信息的实时显示。
3. 交通信号灯系统仿真采用Proteus软件进行交通信号灯系统的仿真。
Proteus软件是一款电路仿真软件,可以模拟各种电路的工作原理,包括交通信号灯系统。
在Proteus软件中,搭建交通信号灯系统的电路图,设置参数,运行仿真,观察信号灯的工作状态。
四、实训过程1. 熟悉Proteus软件首先,学生需要熟悉Proteus软件的操作,包括电路搭建、参数设置、仿真运行等。
交通灯模拟控制plc实验报告
交通灯模拟控制plc实验报告交通灯模拟控制PLC实验报告一、实验背景与目的交通灯是城市道路交通管理的重要设施,安全的交通灯控制是保障行人和车辆安全通行的重要保障。
本实验是以PLC控制器为核心设计的交通灯模拟控制实验,旨在通过实验学习PLC的基础知识,了解PLC在交通灯控制中的运用方式,掌握常用的PLC控制方法,进一步提高学生的工程实践能力。
二、实验原理1.交通灯控制方式通常情况下,交通灯主要采用三种控制方式:定时控制、信号协调控制和应急控制。
其中,定时控制是指交通灯按固定的时间间隔进行交替控制,适用于交通量少、时间规律的路段;信号协调控制是基于交通流量实时监测和协调控制交通灯,以提高交通能力和效率,适用于交通量较大、较为复杂的路段,如城市繁忙路口、高速公路入口等;应急控制是指在一定情况下强制交通灯进行跳闸或其他应急控制方法,以保障交通安全和畅通。
2.PLC控制原理PLC,全称可编程逻辑控制器,是一种工业控制计算机,广泛应用于现代制造业、工业自动化等领域。
PLC可通过编写相应的程序来实现对机器人、自动化生产线、传感器等设备的控制,可以有效提高生产效率和控制精度。
在交通灯控制中,PLC主要通过接收来自传感器等外部设备的输入信号和内部程序自动判断下一步操作,并通过控制输出口控制交通灯的开关状态,以实现交通灯的自动控制。
三、实验器材PLC控制器、交通灯模拟器、计算机、连线电缆等。
四、实验步骤本次实验的PLC控制程序采用三段式控制方式,分别为红灯亮、倒计时、绿灯亮,时间周期均为10秒。
具体实验步骤如下:1.将PLC控制器与计算机通过连线电缆连接,使得PLC控制器能够接收计算机传来的控制程序。
2.将模拟交通灯的控制线路连接至PLC控制器的输入口,将交通灯的灯泡接到PLC输出口;3.在计算机上编写PLC控制程序,实现三段式控制方式,并将程序加载至PLC控制器;4.打开PLC控制程序,通过模拟交通灯的测试,验证PLC 控制程序的正确性;5.在实验结束后,关闭实验设备,并将连线电缆拔出。
实验报告二-模拟交通灯实验
实验报告二-模拟交通灯实验实验目的:本次实验旨在通过模拟交通灯实验,了解交通灯的工作原理、设计及调节方法。
实验原理:交通灯是城市交通管理中不可缺少的部分,广泛应用于道路、路口等地方,用以调整交通流量和保障行人和车辆的交通安全。
基本上,每个交通灯系统都由信号控制器、信号球、绿地检测器组成。
信号控制器是交通灯系统的核心部分,通过控制信号球的点灯和熄灭,向车辆、行人发出指令。
实验器材:1. Arduino控制板;2. LED灯若干;3. 面包板;4. 杜邦线;5. 电阻。
实验步骤:1. 通过面包板将Arduino控制板与电阻、LED灯连接;2. 在Arduino控制板上编写程序,实现交通灯模拟;3. 连接电源,通过Arduino IDE输入程序运行。
实验结果:经过程序处理,LED灯按照交通灯的颜色进行变换,使得其能够模拟实际交通灯的工作状态,达到预期效果。
实验教训:在实验过程中,我们发现LED灯的管脚与面包板接触不良时,会出现程序不能正常运行的情况。
因此,我们在连接器件时要确保接触良好,并注意防静电。
实验思考:本次实验通过模拟交通灯,我们深刻认识到交通灯的工作原理以及对道路交通的重要意义。
合理设置交通灯,不仅能够保障行人和车辆安全,而且还能提高道路的通行效率。
因此,在今后的实践活动中,我们应该更加注重交通灯的科学研究和实际应用。
结语:通过本次实验,我们进一步认识到交通灯对于城市交通管理的重要性,同时也掌握了基本的交通灯原理和设计方法。
相信在今后的学习和研究中,我们将能够更好地提高交通管理的水平和效率。
模拟交通指示灯的控制报告书
目录1. 技术要求 (1)2. 设计方案 (1)3. 设计总体框图 (2)4. 设计单元电路 (2)4.1 交通指示灯电路 (2)4.2 紧急通车及复位电路...................................... (4)4.3 倒计时数显电路 (5)5. 电路原理说明 (6)6. 调试报告 (8)7. 心得体会 (9)8. 参考文献 (10)附录: (11)附录1:源程序代码 (11)附录2:系统整体实现电路图 (14)附录3:元器件清单 (15)模拟交通指示灯的控制1.技术要求假设十字路口有东南两个方向的交通信号指示灯,每个方向各有3个指示灯(用发光二极管模拟),这三个指示灯分别用来标识前行、暂停、左拐,要求如下:A、每个方向的指示灯按照要求点亮不同的时间,前行指示灯点亮10秒熄灭,接着暂停指示灯点亮2秒熄灭,然后左拐指示灯点亮8秒熄灭,按照这种方式进行循环;B、当向东方向的前行指示灯点亮的时候,向南方向的前行指示灯熄灭,暂停指示灯和左拐指示灯分别点亮;C、当向南方向的前行指示灯点亮的时候,向东方向的前行指示灯熄灭,暂停指示灯和左拐指示灯点亮。
2.设计方案十字路口有东西南北四个方向的交通信号指示灯,每个方向各有3个指示灯,分别用绿色、红色、黄色的发光二极管来模拟,其中绿色指示灯用来标识前行,红色指示灯用来标识暂停,黄色指示灯用来标识左拐。
指示灯的亮灭规律如下:当东西方向的绿色指示灯点亮10秒时,东西方向的红色指示灯和黄色指示灯以及南北方向的绿色指示灯熄灭,与此同时,在南北方向上,红色指示灯先点亮2秒后熄灭,接着黄色指示灯点亮8秒,10秒结束后,东西方向的绿色指示灯、南北方向的红色指示灯和黄色指示灯熄灭,南北方向的绿色指示灯点亮10秒,与此同时,在东西方向上,红色指示灯先点亮2秒后接着黄色指示灯点亮8秒。
东西和南北方向的指示灯就这样循环交替进行点亮和熄灭。
为了更贴近生活,我还考虑了紧急通车情况,通过外部中断请求信号来响应,当紧急通车结束后或者指示灯的规律出现错误后,需要复位来重新回到正常状态。
LED模拟交通灯实验实训报告
实训报告FPGA系统LED模拟交通灯实验姓名:学号:班级:专业:指导教师:年月日一、大规模多FPGA系统概述大规模多FPGA系统是针对大学、研究机构和集成电路设计公司的教学及科研推出的多FPGA开发平台。
该平台采用了Altera公司的FPGA芯片,核心芯片选择了Cyclone II系列的EP2C20,该平台可以支持四块FPGA芯片的单独下载及调试,也支持级联下载以应对更为复杂的设计。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
二、FPGA的应用及本次试验主要器件FPGA的应用可分为三个层面:电路设计,产品设计,系统设计。
电路设计:连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石。
事实上在电路设计中应用FPGA要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)。
产品设计:把相对成熟的技术应用到某些特定领域开发出满足行业需要并能被行业客户接受的产品。
综合课程设计——模拟交通灯实验报告
标准实验报告学生姓名:指导教师:一、实验室名称:二、实验项目名称:综合课程设计1——模拟交通灯实验三、实验原理:1、交通信号灯基本转换原理本实验所模拟的交通信号灯的转换原理如下图:转移状态图默认的初始状态为红灯状态,做30 秒减计时。
当时间从30 秒递减到0 秒后,红灯状态变为绿灯状态;重新30 秒减计时,递减到0 秒后,绿灯状态变为黄灯状态;做5 秒减计时,递减到0 秒后,黄灯状态变为红灯状态。
如此循环进行转换。
2、自由按键电路KEY1 对应P102,KEY2 对应P101。
3、八段数码管和动态显示原理八段就是指数码管里有八个小LED 发光二极管,通过控制不同的LED 发光二极管的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型。
共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮;共阳极就是将八个LED 的阳极连在一起。
其原理图如下:数码管电路原理图其中引脚图的两个COM 端连在一起就是公共端。
共阴极数码管要将其接地,共阳极数码管将其接+5V 电源。
一个八段数码管用来表示一位,多个数码管并列在一起即可构成多位数字,它们的段选线(即a,b,c,d,e,f,g,dp)都连在一起,而各自的公共端为位选线。
显示时,数据都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8 段即对应一个字节(Byte)的8 位,a 对应最低位,dp 对应最高位。
所以如果想让数码管显示数字0,那么共阴极数码管的字符编码为00111111 即0x3f;共阳极数码管的字符编码为11000000 即0xc0。
可以看出两个编码的各位正好相反。
如下图所示:8段数码管的共阴共阳差异4、数码动态显示数码管动态显示即轮流向各位数码管送出字符编码和相应的位选信号,利用发光二极管的余辉和人眼的视觉暂留作用,使人感觉好像各位的数码管都同时在显示。
相比于静态显示,动态显示的亮度要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
LED模拟交通灯实验报告
switch(Operation_Type)
{
case 1: //东西向绿灯与南北向红灯亮
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
DelayMS(2000);
Operation_Type=2;
break;
case 2: //东西向黄灯闪烁,绿灯关闭
DelayMS(300);
YELLOW_A=~YELLOW_A;GREEN_A=1;
if(++Flash_Count!=10) return; //闪烁5次
Flash_Count=0;
Operation_Type=3;
break;
case 3: //东西向红灯,南北向绿灯亮
RED_A=0;YELLOW_A=1;GREEN_A=1;
一、LED模拟交通灯实验实验
一、实验目的及要求
1、学习P0口的使用方法
2、学习延时子程序的编写
本实验中12只LED分成东西向和南北向两组,各组指示灯均有相向的2只红色、2只黄色与2只绿色的LED,实验对相应的LED单独进行定义,程序运行时模拟了十字路口交通信号灯的切换过程与显示交果。
源程序中用6行sbit对东西和南北向的红、黄、绿指示灯分别进行定义,这样便于对Fra bibliotek们进行单独控制。
sbit GREEN_B=P0^5;
uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量
//延时
void DelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥学院计算机科学与技术系课程设计报告2010~2011学年第一学期课程JA V A语言程序设计课程设计名称交通灯模拟程序专业班级08网络工程<1>班姓名王啸指导教师金莹郭昌建2011年9月一、需求分析随着城市汽车数量越来越多,城市的交通拥挤问题正逐渐引起人们的注意。
交通灯是交管部分管理城市交通的重要工具。
目前绝大部分交通灯其时间都是设定好的,不管是车流高峰还是低谷,红绿灯的时间都固定不变;还有一些交通灯能根据简单划分的时间段来调整时间,但控制起来都不是很灵活,这使得城市车流的调节不能达到最优。
本文所述设计正是针对这一弊端进行了改进,根据实时车流量对各路口的绿灯时间进行动态调节,大大加强了其灵活性和实时性。
二、设计1.设计思想根据设计要求首先用JAVA语言的GUI画出十字路口和交通灯设计程序界面,画出十字路口和交通灯。
可以手工设置红、绿等的时间间隔,程序按设定值自动变换每个路口的交通灯颜色。
异步随机生成按照各个路线行驶的车辆:由南向北的直行车辆由北向南的直行车辆由东向西的直行车辆由西向东的直行车辆信号灯考录黄灯、红灯和绿灯,具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻,南北向车辆与东西向车辆交替放行。
随机产生一些车辆,这些车辆遵守红灯停、绿灯行的交通规则。
生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置。
2.功能设计程序主要实现了以下三大功能:(1)设计程序界面,画出十字路口和交通灯。
这一功能主要由Java图形用户界面实现,画出十字路口和东西南北四个方向的的双向车道,交叉路口各个方向的交通灯。
(2)可以手工设置红、绿灯的时间间隔,程序按设置值自动变换每个路口交通灯的颜色。
程序界面设有三个文本框,分别可供用户输入红灯时间,绿灯时间,黄灯时间,填完各项数据之后,按下“设置”按钮,程序将根据用户填写数据调整红绿亮灯时间,在用户没有填入符合要求的数据或者没有数据填入时,程序默认的红灯亮灯时间为8秒,绿灯为10秒,黄灯为3秒。
南北方向红灯亮时,东西方向绿灯亮,南北方向绿灯亮时,东西方向红灯亮,红绿灯亮灯时间一致。
四个方向的黄灯同时亮。
(3)随机产生一些车辆,这些车辆遵守红灯停、绿灯行的交通规则随机产生小车,小车方向随机,通过type = (int) (((Math.random())*(new Date().getTime())*10)%4);Type值随机取值0,1,2,3四个整数,四个数分别各代表四个方向。
再根据不同方向选择不同的汽车图片。
图1是一个典型的十字路口示意图。
分别用0、1、2、3表明四个流向的主车道,通过分析很容易得知,在同一时间,最多只能有两个车道通行,如0、1通行时,2、3车道都会被阻断。
所以在设计红绿灯时,可以两两组合,共有两组(0-1、2-3);而各车道中车辆行驶时间按照交通灯设计时间来决定,红绿灯时间可以自行设定。
图1 十字路口交通图随意产生车辆是由设定存放车辆的list中 (list是有序的collection使用此接口能够精确的控制每个车辆插入的位置),还使用了可实现可变大小的ArrayList 数组(每个ArrayList实例都有一个容量Capacity,用于存放数组的大小,这个容量可以随着添加新车辆而自动增加)。
整个程序中用到多个线程,其中有随机产生车辆、小车行驶方向、控制小车的行驶等,通过线程的同步实现交通控制。
3.详细设计首先在面板中画固定大小的画布Image image = createImage(2000, 2000); Graphics g=image.getGraphics();,然后在画布上画出路线和红绿灯,并且把画布画在面板中。
程序中主要设计流程:图2 程序流程图以下是程序中主要设计对象:(1)每条路线上都会出现多辆车,路线上要随机增加新的车,在相应的灯绿期间车辆各行其道。
若是车运行出面板则会移除该车:if(car.getType() == 0){//由西向东的车辆if(car.getX()>2000){cars.remove(car);i--;continue;}其他方向的车辆也会按此方式移除。
(2)每条路线上随机增加新的车辆,增加到一个集合list中保存private List<Car> cars = Collections.synchronizedList(new ArrayList<Car>()) (3)每条路线上当车运行到十字路口时都会判断,都会检查对应路口的信号灯颜色如何,控制本路线的灯若为黄灯或是红灯则车辆就会停下来,若是车辆行驶停在十字路口,则其后的车经过判断必须停在后面,等待绿灯亮时继续行驶。
判断当前行驶的车前方是否有车辆停下:private boolean hasObstructor(Car car, List<Car> cars),若有循环考虑接下来运行的车辆,否则car.setX(car.getX()+/-5)或car.setY(car.getY()+/-5)小车以5像素的大小前移。
(4)控制小车运行方向:public Car() {type = (int) (((Math.random())*(new Date().getTime())*10)%4);随机产生四个方向的小车。
Im = Toolkit.getDefaultToolkit().getImage((type + 1) + ".jpg");获取小车图片if(type==0){x = 0;y = 240;}小车方向由西东else if(type==1){x = 1500;y = 200;}小车方向由东向西else if(type==2){x = 235;y = 0;}小车方向由北向南else if(type==3){x = 280;y = 1500;}小车方向由南向北(5)设计交通灯:每个交通灯都维护一个状态:变红、变绿或是变黄,每个交通灯要有变亮和变黑的方法,并且能返回自己的亮黑状态。
在编程处理时,只要从这两组中各取出两个灯,对这4个灯两两依次轮询变亮,与这4个灯方向对应的灯则随之一同变化,因此交通灯类中要有一个变量来记住自己相反方向的灯,在一个交通灯对象的变亮和变黑方法中,将对应方向的灯也变亮和变黑。
每个灯变黑时,都伴随者下一个灯的变亮。
信号灯运行周期:public class PaintThread implements Runnable {public void run() {for (int i = 0; i < redTimes+greenTimes+yellowTimes+yellowTimes; i++) {if(i==0){j = 0;redStatus = true;//红灯亮greenStatus = false;yellowStatus = false;}else if(i==redTimes){j = 0;redStatus = false;greenStatus = false;yellowStatus = true;//黄灯亮}else if(i==redTimes+yellowTimes){j = 0;redStatus = false;greenStatus = true;//绿灯亮yellowStatus = false;}else if(i==redTimes+greenTimes+yellowTimes){j = 0;redStatus = false;greenStatus = false;yellowStatus = true;//黄灯亮}repaint();j++;if (i == redTimes+greenTimes+yellowTimes+yellowTimes-1)i = -1;try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}三. 调试及测试1、调试过程中遇到的主要问题及解决方法在调试过程中主要是控制小车行驶比较难以实现,起初当所有面板中静态的图片处理完成后,无法将下载的小车图片加入面板后进行运动操作,主要问题是开始把小车运动想的太简单了以为完成完成下列操作即可:(1)创建Image类的对象数组car,用来缓存要演示的小车图片,(2)利用getDocumentBase()函数方法获取图片信息,(3)再使用Thread.sleep()方法,但是当运行程序时会报错,显示找不到getDocumentBase(),原因是所做的程序是Application程序,不能使用函数getDocumentBase(),而使用 Im = Toolkit.getDefaultToolkit().getImage((type + 1) + ".jpg"),才可完成获取图片信息的功能。
2、对设计和编码的回顾讨论和分析该程序的设计主要用到以下类库:import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dialog;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.image.BufferStrategy;//处理和操作来自于网上的图片定义图像对象,双缓存import java.util.ArrayList;//实现可变大小的数组import java.util.Collections;//java.util.* 是包括集合、事件处理模式、日期时间工具等各类常用工具包import java.util.Date;import java.util.List;//list是有序的collection,使用此接口能够精确的控制每个元素插入的位置import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;程序中还多次用到线程控制,比如控制小车行驶线程CarRunThread,随机产生小车线程CarThread,控制红绿灯状态线程PaintThread等。