交通灯设计实验报告(硬件原理图+程序)
- 格式:doc
- 大小:548.00 KB
- 文档页数:33
数字电路课程设计实验报告(一)课程设计题目题目:交通灯控制电路设计(二)实现功能1、设计一个十字路口的交通灯控制电路,要求东西方向车道和南北方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为60秒(数字显示自59到00)。
2、在绿灯转为红灯时,要求黄灯先亮5秒钟(数字显示自04到00),才能变换运行车道;黄灯亮时,要求每秒闪亮一次。
3、东西方向、南北方向车道除了有指示灯外,每一种灯亮的时间都用显示器进行显示(采用倒计时的方法)。
(三)设计原理与参考电路1、分析系统的逻辑功能,画出框图交通灯控制系统原理如下秒脉冲发生器倒计时计时器T4T0信号灯转换器东西方向车道信号灯南北方向车道信号灯图1.交通灯控制系统原理框图2、信号转换表1.控制器工作状态及功能表控制状态信号灯状态车道运行状态S0(00) 东西向绿灯亮东西车道通行,南北车道禁止通行S1(01) 东西向黄灯亮东西车道缓行,南北车道禁止通行S2(11) 东西红灯亮、南北绿灯亮东西车道禁止通行,南北车道通行S3(10) 东西红灯亮、南北黄灯亮东西车道禁止通行,南北车道缓行AGreen=1 东西绿灯亮BGreen=1 南北绿灯亮AYellow=1 东西黄灯亮BYellow=1 南北黄灯亮ARed=1 东西红灯亮BRed=1 南北红灯亮3、方案选用JK触发器,设状态编码为:S0=00,S1=01,S2=11,S3=10,其输出为Q1 Q0 ,则其状态表为:表2. 状态编码与信号灯关系现态次态输出Q1n Q0n Q1n+1Q0n+1AG AY AR BG BY BR0 0 0 1 1 0 0 0 0 10 1 1 1 0 1 0 0 0 11 1 1 0 0 0 1 1 0 01 0 0 0 0 0 1 0 1 03.1 倒计时计数器十字路口除指示灯显示外,还有数字倒计时显示。
具体为:当某方向绿灯亮时,置显示器为某值,然后以每秒减1的计数方式工作,直至减到数字为“04”时绿灯灭,黄灯亮。
交通信号灯控制电路的设计一、设计任务与要求1、任务用红、黄、绿三色发光二极管作为信号灯,设计一个甲乙两条交叉道路上的车辆交替运行,且通行时间都为25s的十字路口交通信号灯,并且由绿灯变为红灯时,黄灯先亮5s,黄灯亮时每秒钟闪亮一次。
2、要求画出电路的组成框图,用中、小规模集成电路进行设计与实现用EAD软件对设计的部分逻辑电路进行仿真,并打印出仿真波形图。
对设计的电路进行组装与调试,最后给出完整的电路图,并写出设计性实验报告。
二、设计原理和系统框图(一)设计原理1、分析系统的逻辑功能,画出其框图交通信号灯控制系统的原理框图如图2所示。
它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。
秒脉冲信号发生器是该系统中定时器和该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。
图1 交通灯控制电路设计框图图中:Tl:表示甲车道或乙车道绿灯亮的时间间隔为25s,即车辆正常通行的时间间隔。
定时时间到,Tl=1,否则,Tl=0.Ty:表示黄灯亮的时间间隔为5s。
定时时间到,Ty=1,否则,Ty=0。
St:表示定时器到了规定的时间后,由控制器发出状态转换信号。
它一方面控制定时器开始下一个工作状态的定时,另一方面控制着交通信号灯状态转换。
2、画出交通信号灯控制器ASM图(1)甲车道绿灯亮,乙车道红灯亮。
表示甲车道上的车辆允许通行,乙车道禁止通行。
绿灯亮足规定的时间隔TL时控制器发出状态信号ST转到下一工作状态。
(2)乙车道黄灯亮乙车道红灯亮。
表示甲车道上未过停车线的车辆停止通行已过停车线的车辆继续通行乙车道禁止通行。
黄灯亮足规定时间间隔TY时控制器发出状态转换信号ST转到下一工作状态。
(3)甲车道红灯亮乙车道绿灯亮。
表示甲车道禁止通行乙车道上的车辆允许通行绿灯亮足规定的时间间隔TL时 控制器发出状态转换信号ST转到下一工作状态。
单片机交通灯实验报告一、实验目的二、实验原理三、实验器材四、实验步骤五、实验结果六、实验分析与讨论七、实验总结一、实验目的:本次单片机交通灯实验的主要目的是通过使用单片机控制LED灯的亮灭,模拟交通信号灯的运行状态,并能够正确地掌握单片机编程技巧和硬件连接技术。
二、实验原理:本次交通灯实验采用了单片机作为中央处理器,通过编写程序控制LED灯的亮灭来模拟交通信号灯。
在程序中,我们需要使用到延时函数和条件判断语句。
具体来说,在红绿黄三个LED灯之间切换时,需要设定一个时间段,并在该时间段内循环执行红绿黄三个LED灯亮度变化的循环语句。
三、实验器材:1. 单片机开发板一块;2. LED 灯若干;3. 杜邦线若干。
四、实验步骤:1. 将红色 LED 灯连接至 P0 口;2. 将黄色 LED 灯连接至 P1 口;3. 将绿色 LED 灯连接至 P2 口;4. 将单片机开发板与电脑连接,打开 Keil 软件;5. 编写程序,将红色 LED 灯亮起来;6. 编写程序,将黄色 LED 灯亮起来;7. 编写程序,将绿色 LED 灯亮起来;8. 编写程序,模拟交通信号灯的运行状态。
五、实验结果:在完成了上述步骤后,我们成功地模拟出了交通信号灯的运行状态。
具体来说,在程序中我们设定了一个时间段为10s,在这个时间段内,红灯亮 5s,黄灯亮 2s,绿灯亮 3s。
在这个时间段结束后,循环执行该过程。
六、实验分析与讨论:通过本次交通灯实验,我们学习到了如何使用单片机控制LED灯的亮灭,并能够正确地编写程序模拟交通信号灯的运行状态。
在编写过程中需要注意以下几点:1. 在使用延时函数时要注意时间单位和精度;2. 在编写条件判断语句时要注意逻辑结构和语法规范;3. 在硬件连接时要注意杜邦线的颜色对应关系和插口位置。
七、实验总结:本次单片机交通灯实验是一次非常有意义的实践活动。
通过此次实验,我们掌握了单片机编程技巧和硬件连接技术,并能够正确地模拟交通信号灯的运行状态。
一、实验目的1. 理解交通灯控制系统的工作原理。
2. 掌握使用单片机进行交通灯控制系统的设计与实现。
3. 提高动手实践能力和问题解决能力。
二、实验原理交通灯控制系统通常采用单片机作为核心控制单元,通过编程实现对交通灯的红、黄、绿三种灯光状态的切换。
本实验采用单片机(如STC89C52)作为核心控制单元,利用定时器实现灯光的定时切换,并通过LED灯模拟交通灯的灯光状态。
三、实验器材1. 单片机开发板(如STC89C52开发板)2. LED灯(红、黄、绿各一个)3. 电阻(根据LED灯的规格选择)4. 跳线5. 编程器6. 计算机四、实验步骤1. 硬件连接:- 将红、黄、绿LED灯分别连接到单片机的P1.0、P1.1、P1.2端口。
- 将电阻串联在每个LED灯的两端,防止LED灯过载。
- 将跳线连接到单片机的相关引脚,用于编程和调试。
2. 软件编程:- 使用Keil软件编写单片机程序,实现交通灯的控制逻辑。
- 设置定时器,实现灯光的定时切换。
- 编写主循环程序,根据定时器的值切换LED灯的状态。
3. 程序调试:- 将程序烧录到单片机中。
- 使用示波器或逻辑分析仪观察LED灯的状态,确保程序运行正常。
4. 实验验证:- 将LED灯连接到实际交通灯的位置。
- 启动单片机,观察LED灯的状态是否符合交通灯的控制逻辑。
五、实验结果与分析1. 实验结果:- 红灯亮时,表示禁止通行。
- 绿灯亮时,表示允许通行。
- 黄灯亮时,表示准备切换到红灯。
2. 实验分析:- 通过本次实验,掌握了使用单片机进行交通灯控制系统的设计与实现。
- 了解了定时器在实现灯光切换中的作用。
- 提高了动手实践能力和问题解决能力。
六、实验总结1. 优点:- 实验操作简单,易于上手。
- 理论与实践相结合,提高了学生的动手能力。
2. 不足:- 实验内容较为简单,未能涉及到复杂交通灯控制系统的设计。
- 实验器材较为有限,限制了实验的拓展性。
七、实验拓展1. 研究复杂交通灯控制系统的设计,如多路口交通灯协同控制。
交通信号灯控制器实验报告交通信号灯控制器⼀、设计任务及要求 (2)⼆、总体⽅案设计以及系统原理框图 (2)2.1、设计思路 (2)2.2、各模块相应的功能 (2)2.3、系统原理图 (3)三、单元电路设计 (3)3.1、车辆检测电路 (3)3.2、主控电路 (4)3.3、灯控电路 (5)3.4、计时控制电路 (6)3.5、计时显⽰电路 (6)3.6、反馈控制电路 (7)3.7、置数电路 (7)3.8、时基电路 (7)四、⼯作原理 (8)五、电路的软件仿真及结果分析 (8)5.1、时基电路(555接成的多谐振荡器)的电路图以及波形的显⽰ (8)5.2、结果分析 (10)六、电路的组装调试 (10)6.1、使⽤的主要仪器和仪表 (10)6.2、调试电路的⽅法和技巧 (10)6.3、调试中出现的问题、原因和排除⽅法 (11)七、收获、存在的问题和进⼀步的改进意见 (11)7.1、存在的问题和进⼀步的改进意见 (11)7.2、收获以及⼼得体会 (12)附录⼀:电路所⽤元器件 (14)附录⼆:电路全图 (15)附录三:实际电路图 (16)⼀、设计任务及要求在⼀个主⼲道和⽀⼲道汇交叉的⼗字路⼝,为了确保车辆⾏车安全,迅速通⾏,设计⼀个交通信号灯控制电路,要求如下:1、⽤两组红、绿、黄发光⼆极管作信号灯,分别指⽰主道和⽀道的通⾏状态。
2、通⾏状态⾃动交替转换,主道每次通⾏30秒,⽀道每次通⾏20秒,通⾏交替间隔时为5秒。
3、通⾏状态转换依照“主道优先”的原则,即:当主道通⾏30秒后,若⽀道⽆车则继续通⾏;当⽀道通⾏20秒后,只有当⽀道有车且主道⽆车时才允许继续通⾏。
(⽤按键模拟路⼝是否有车)4、设计计时显⽰电路,计时⽅式尽量采⽤倒计时。
⼆、总体⽅案设计以及系统原理框图2.1、设计思路本次设计采⽤模块划分的⽅法,每个模块完成⼀项功能,最后将各个模块连接起来,设计完成后,⽤Multisim进⾏仿真,仿真成功后,再去实验室焊接调试。
交通灯实验报告一、实验分析:利用计数器74LS192做60秒、57秒和3秒的倒计时(在计数器74LS192的,当计数器上的十位上的计数器为九时置5做成一个六十秒的倒计时)做倒计时3秒和倒计时六十秒相与得到倒计时57秒和3秒。
做倒计时的57秒和3秒的分析过程可以根据以下图一可知:红灯南北(东西):绿灯东西(南北):黄灯东西(南北):图一做好倒计时后,放入JK触发器后做好各个方向的灯的信号,加入三极管增大负载后接入灯泡。
二、实验目的:1、熟悉计数器74LS192、触发器、三极管、和各种门电路的应用。
2、利用各种器材做出交通灯。
三、实验器材:计数器74LS192、7SEG-BCD、JK触发器、三极管2N1711、电阻、与门、与非门、红灯LED-RED、绿灯LED-BIRG、黄灯LED-BIBY。
四、实验步骤:1、倒计时的制作:用计数器74LS192做60秒的倒计时把脉冲接到计数器的DN端,在十位的那里用九置五,个位的满一周后接一个脉冲放在十位的DN上,个位和十位的计数器的UP和清零端(高电平有效)接低电平。
接的图如图二所示:图二做3秒的脉冲把个位的B3、B2与起来以后与B7、B6、B5、B1非后的数在与非得到B11。
做三秒脉冲时的分析:(当B3和B2为高电平的数有3、7、13、17、23、27、33、37、43、47、53、57所以当为三秒的时候就只能B3、B2的时候为高电平就得排除B7、B6、B5、B1)连接的图如下图三所示:图三做57秒的脉冲和3秒的脉冲之和就为60秒脉冲所以就可以把B11、B10与起来以后做黄灯和绿灯的脉冲,六十秒做红灯的脉冲。
分析图和实验图如图四和图五所示:红灯南北(东西):绿灯东西(南北):黄灯东西(南北):图四图五2、利用JK触发器对红绿灯的控制:把步骤1上做的控制红绿黄的倒计时脉冲接在JK触发器上的脉冲处。
根据JK触发器的特性方程Q*=JQ’+K’Q,特性表如下图六所示可以知道为了要达到控制红绿灯的要求Q*=Q’,所以J和K端都要接高电平。
单片机c语言程序设计---C51-交通灯实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: C51-交通灯实验一、实验目的和要求1.熟悉单片机的硬件结构及其工作原理2.掌握单片机的C51编程二、实验内容和原理(1)硬件设计使用P1端口连接VD1、VD2、VD3,模拟路口东面的红、黄、绿灯;P0端口连接VD9、VD10、VD11,模拟路口西面的红、黄、绿灯;P3端口连接VD17、VD18、VD19,模拟路口南面的红、黄、绿灯;P2端口连接VD25、VD26、VD27,模拟路口北面的红、黄、绿灯。
路口红绿灯的显示规律为:①南面和北面显示红灯(即VD17和VD25为红灯)时,东面和西面显示绿灯(即VD3和VD11为绿灯)。
②南面和北面,东面和西面都变成黄灯。
③南面和北面显示绿灯,东面和西面显示红灯④南面和北面,东面和西面都变成黄灯,然后再从①进行循环(需注意:此处设置的黄灯显示时长应短于红灯或绿灯的显示时长)(2)protues仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
三、主要仪器设备四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
五、实验结果与分析void S_N(void){VD1=0;VD9=0;VD19=0;VD27=0;Delay(1000);VD1=1;VD9=1;VD19=1;VD27=1;}int main (void) {while(1){E_W();NOT();S_N();NOT();}}六、讨论和心得。
西安郵電學院硬件课程设计报告题目:微机原理与接口课程设计;^院系名称:计算机学院专业名称:软件工程班级:软件0802学生姓名:王晶晶学号(8位): 04085047指导教师:刘军设计起止时间:2011年05月23日~2011年05月27日[一、设计目的通过可编程并行接口芯片8255A和可编程定时器/计数器芯片8253/8254以及中断控制器 8259实现十字路口交通灯的模拟控制,进一步掌握并行接口和定时器/计数器及数码管控制的实际应用。
二、设计内容1.用试验台提供的发光二极管(红绿黄各两支,共六支)作为南北路口(红绿黄各一支)和东西路口(红绿黄各一支)的模拟交通灯。
2.用可编程并行接口芯片8255A控制模拟交通灯的亮与灭和数码管的倒计时显示。
3.用可编程定时器/计数器芯片8253实现模拟交通灯亮与灭的时间延迟控制。
4.用数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示。
'5.用汇编语言编程使六个灯按交通灯变化规律“亮/灭”。
交通灯变化规律要求:① 南北路口的绿灯,东西路口的红灯同时亮30秒,且数码管30秒倒计时显示。
② 南北路口的黄灯闪烁3秒(三亮三灭),同时东西路口的红灯继续亮,且数码管3秒倒计时显示。
③ 南北路口的红灯,东西路口的绿灯同时亮20秒,且数码管20秒倒计时显示。
④ 南北路口的红灯继续亮,同时东西路口的黄灯闪烁3秒(三亮三灭),且数码管3秒倒计时显示。
⑤ 转①重复⑥按压“东西紧急键”,则东西方向绿灯,南北方向红灯;再次按压“东西紧急键”,解除东西紧急通行状态。
(“东西紧急键”可是键盘键,亦可是逻辑开关键)⑦按压“南北紧急键”,则南北方向绿灯,东西方向红灯;再次按压“南北紧急键”,解除南北紧急通行状态。
(“南北紧急键”可是键盘键,亦可是逻辑开关键)"⑧按 <ESC>键退出程序。
备注:1、按键用 8255A 芯片的 PC 口实现或用键盘模拟实现。
2、8253定时到可以通过8259,用中断的方式实现定时器。
交通灯控制系统设计-实验报告
实验目的:设计一个交通灯控制系统,实现对交通灯的自动控制。
实验材料:
1. Arduino UNO开发板
2. 红绿黄LED灯各1个
3. 杜邦线若干
实验原理:
交通灯系统的控制主要是通过控制LED灯的亮灭来实现。
红
色LED灯表示停止,绿色LED灯表示通行,黄色LED灯表
示警示。
通过控制不同LED灯的亮灭状态,可以模拟交通灯
的不同信号。
实验步骤:
1. 将红色LED灯连接到Arduino开发板的数字输出引脚13,
绿色LED灯连接到数字输出引脚12,黄色LED灯连接到数
字输出引脚11。
2. 在Arduino开发环境中编写控制交通灯的程序。
3. 将Arduino开发板与计算机连接,将程序上传到Arduino开
发板中。
4. 接通Arduino开发板的电源,观察交通灯的亮灭状态。
实验结果:
根据程序编写的逻辑,交通灯会按照规定的时间间隔进行变换,实现红绿灯的循环。
实验总结:
通过本次实验,我们设计并实现了一个简单的交通灯控制系统。
掌握了Arduino编程和控制LED灯的方法,加深了对控制系
统的理解。
通过实验,我们发现了交通灯控制系统的重要性和意义,为今后的交通控制提供了一种可行的解决方案。
一、实验目的1. 理解交通灯控制系统的工作原理和基本组成。
2. 掌握PLC(可编程逻辑控制器)编程和调试方法。
3. 学习交通灯控制系统的硬件连接和电路设计。
4. 提高实际应用中解决复杂问题的能力。
二、实验原理交通灯控制系统是城市交通管理的重要组成部分,其基本原理是通过对交通信号灯进行控制,实现交通流量的有序疏导。
本实验采用PLC作为控制核心,通过编写程序实现对交通灯的定时控制。
三、实验器材1. PLC主机2. 交通灯控制模块3. 电源模块4. 交通灯模型5. 连接线四、实验步骤1. 硬件连接:- 将PLC主机与交通灯控制模块、电源模块和交通灯模型连接。
- 将PLC主机与计算机连接,以便进行程序编写和调试。
2. 程序编写:- 根据交通灯控制要求,编写PLC程序。
- 程序主要包括以下部分:- 启动信号处理:检测启动开关状态,控制交通灯开始工作。
- 定时控制:根据设定的时间,控制交通灯的红、黄、绿灯亮灭。
- 紧急处理:检测紧急处理开关状态,实现交通灯的紧急控制。
3. 程序调试:- 在计算机上运行PLC程序,观察程序运行效果。
- 根据实际情况,对程序进行调试和优化。
4. 实验验证:- 在实际硬件环境中运行程序,观察交通灯控制效果。
- 验证程序是否满足实验要求。
五、实验结果与分析1. 实验结果:- 在实验过程中,成功实现了交通灯的控制,实现了红、黄、绿灯的定时切换。
- 在紧急情况下,能够实现交通灯的紧急控制。
2. 结果分析:- 通过实验,掌握了PLC编程和调试方法,提高了实际应用中解决复杂问题的能力。
- 实验结果表明,所设计的交通灯控制系统具有良好的稳定性和可靠性。
六、实验总结本次实验成功实现了交通灯控制系统的设计与实现,达到了预期目标。
通过实验,我们掌握了以下知识点:1. 交通灯控制系统的工作原理和基本组成。
2. PLC编程和调试方法。
3. 交通灯控制系统的硬件连接和电路设计。
本次实验提高了我们的实际应用能力,为以后从事相关领域工作奠定了基础。
实验报告交通灯范文实验报告:交通灯设计与制作一、实验目的通过设计与制作交通灯,了解交通灯的原理与性能特点,并能够实现其正常运行。
二、实验器材1. ATmega16开发板2.LED灯x33.电阻、电容等电子元件4.连接电线、面包板等实验用具三、实验原理与方法交通灯是一种交通信号设备,用于指示各种交通情况下的行车和行人通行。
本实验通过使用ATmega16开发板控制LED灯的亮灭,实现交通灯的正常运行。
具体的原理与方法如下:1. 硬件部分:使用ATmega16开发板作为主控制器,通过连接LED灯和其他相关电子元件,控制LED灯的亮灭。
通过设置不同的亮灭模式,实现交通灯的切换。
2.软件部分:使用C语言编写程序,通过控制IO口的高低电平,实现对LED灯的控制。
通过循环控制,实现交通灯的切换。
四、实验步骤1. 硬件连接:根据电路原理图连接ATmega16开发板、LED灯、电阻、电容等电子元件。
2.软件编写:通过使用C语言编写程序,实现交通灯的正常运行。
具体的软件编写步骤如下:(1)包含头文件:引入所需的头文件,包括IO口设置、延时、函数等。
(2)定义IO口:通过定义IO口,实现对LED灯的控制。
(3)初始化:初始化相关变量和IO口。
(4)交通灯模式设置:通过设置不同的亮灭模式,实现交通灯的切换。
(5)主循环控制:通过循环控制,实现交通灯的正常运行。
3. 烧录程序:将编写好的程序通过编程器烧录到ATmega16开发板中。
4.实验现象观察:观察LED灯的亮灭情况,验证交通灯的正常运行。
五、实验结果与分析经过实验,我们成功地实现了交通灯的设计与制作,并验证了交通灯的正常运行。
当设置不同的亮灭模式时,LED灯能够按照预定的程序顺序进行亮灭,实现了交通灯的切换。
通过观察LED灯的亮灭情况,我们可以有效地判断交通灯的当前状态,指导车辆和行人的通行。
六、实验总结通过本次实验,我们对交通灯的原理与性能有了更深入的了解,并通过实践掌握了交通灯的设计与制作方法。
单片机交通灯实验报告(二)引言概述本报告旨在介绍单片机交通灯实验的进一步研究。
通过对单片机交通灯实验的深入探讨,我们将了解交通信号灯电路的设计原理、控制逻辑以及实际应用的相关知识。
本文将分为五个大点进行阐述,包括:电路设计、控制逻辑编程、硬件连接、功能扩展和实验结果分析。
正文一、电路设计1. 确定交通信号灯的基本电路结构2. 选择适当的电子元件并进行电路布局3. 绘制电路原理图和PCB布局图4. 按照电路设计进行焊接和组装二、控制逻辑编程1. 理解交通信号灯的控制逻辑2. 学习并掌握单片机编程语言3. 根据控制逻辑编写程序代码4. 调试程序的运行,确保交通信号灯按照预期进行切换5. 优化控制逻辑,提高程序效率和稳定性三、硬件连接1. 连接交通信号灯的LED灯及其它电子元件2. 理解并实现灯光的正反相控制3. 使用适当的电阻进行电流限制4. 连接并配置单片机与电路的通信接口5. 建立单片机与计算机之间的连接,方便程序下载与调试四、功能扩展1. 添加电子组件以实现交通信号灯的更多功能2. 尝试不同的交通灯控制算法3. 增加人车辨别传感器以实现智能化控制4. 加入音效与声光提示功能,提高交通信号灯的可视性和可听性5. 设计并实现交通流量的实时监测和统计功能五、实验结果分析1. 对交通信号灯的各项功能进行实验验证2. 分析实验结果,评估系统的性能和稳定性3. 总结实验中遇到的问题和解决方案4. 提出改进交通信号灯设计的建议总结通过本文详细的阐述,我们了解了单片机交通灯实验的电路设计、控制逻辑编程、硬件连接、功能扩展以及实验结果分析等方面的知识。
这些内容不仅对于我们更深入地了解交通信号灯的工作原理和应用具有重要意义,而且为我们开展相关实际项目提供了指导和启示。
希望本报告能够帮助读者更好地理解和应用单片机交通灯实验。
实验二十字路口交通灯控制实验1. 实验目的(1)练习定时器、计数器的基本使用方法。
(2)掌握PLC的编程和调试方法。
(3)对应用PLC解决实际问题的全过程有个初步了解。
2. 实验设备(1)编程器1台(PC机)。
(2)实验装置1台(含S7-200 24点CPU)。
(3)交通灯实验模板一块。
(4)导线若干。
图1.12 交通灯模拟控制板3. 控制要求及参考交通路口红、黄、绿灯的基本控制要求如下:路口某方向绿灯显示(另一方向亮红灯)10秒后,黄灯以占空比为50%的一秒周期(0.5秒脉冲宽度)闪烁3次(另一方向亮红灯),然后变为红灯(另一方向绿灯亮、黄灯闪烁),如此循环工作。
PLC I/O端口分配:SB1 I0.0 起动按钮SB2 I0.1 停止按钮HL1(HL7)Q0.0 东西红灯HL2(HL8)Q0.1 东西黄灯HL3(HL9)Q0.2 东西绿灯HL4(HL10)Q0.4 南北红灯HL5(HL11)Q0.5 南北黄灯HL6(HL12)Q0.6 南北绿灯PLC 参考电路:图1.13 红绿灯控制PLC 电气原理图4. 实验内容及要求(1)按参考电路图完成PLC 电路接线(配合通用器件板开关元器件)。
(2)输入参考程序并编辑。
(3)编译、下载、调试应用程序。
功能表图如下:Q0.51L 1M+24V NL12L GND Q0.6SB2SB1Q0.1I0.1Q0.4Q0.2PLCI0.0Q0.0HL5220VACHL6+24VHL2HL4HL3HL1梯形图如下:指令代码程序如下:LD I0.0O M0.0AN I0.1= M0.0LD M0.0LPSAN Q0.3AN T41TON T37 , +250 LRDA T37TON T38 , +250 LRD A T38TON T39 , +30 LRDA T39TON T40 , +20 LRDA T37TON T41 , +300 LRDA T44TON T42 , +20 LRDAN Q0.3AN T37TON T43 , +200 LRDA T43TON T44 , +30 LRDAN T46TON T45 , +5 LRDA T45TON T46 , +5 LRDAN T37AN Q0.3= Q0.2 LRDLD Q0.6 AN T38LD T 38 AN T39A T45 OLDALD= Q0.0 LRD AN T38 AN T40 = Q0.1 LRDLD Q0.2 AN T43 LD T43 AN T44 A T45 OLDALD= Q0.4 LPPLPSA T44 AN T42 = Q0.5 LRDA T37 = Q0.6 LPPA Q0.0 A Q0.4 = Q0.35.思考练习(1)采用经验设计法应该如何实现?、。
交通灯控制系统一、实验目的(1)(1)用用PLC 构成十字路口交通灯控制系统。
(2)(2)掌握程序调试的步骤和方法。
掌握程序调试的步骤和方法。
(3)(3)掌握构建实际掌握构建实际PLC 控制系统的能力。
二、实验要求(1)(1)复复习PLC 常用指令的功能及用法。
(2)(2)复复习PLC 程序设计的一般方法。
(3)(3)根根据实验要求提前编写程序,待上机验证调试修改。
三、实验环境软件:STEP 7-Micro_WIN V40+ SP9:S7-200的编程软件STEP 7-Micro_WIN V32指令库硬件:THSMS-2A 型PLC 实验箱(西门子)、电脑、连接导线、USB-PPI 通信电缆四、实验内容及步骤交通灯控制系统面板图如上图所示,控制要求如下:交通信号灯受一个总控制开关控制,当总控制开关接通时,信号灯系统开始工作。
开始工作后,南北红灯和东西绿灯同时点亮,4秒后东西绿灯开始闪烁,闪烁2秒后熄灭,熄灭同时切换成东西黄灯亮,2秒后东西黄灯和南北红灯同时熄灭,东西红灯和南北绿灯同时点亮。
4秒后南北绿灯开始闪烁,闪烁2秒后熄灭,熄灭同时切换成南北黄灯亮,2秒后南北黄灯和东西红灯同时熄灭,再次切换成南北红灯和东西绿灯同时点亮。
如此循环,周而复始。
当总控制开关断开时,所有信号灯都熄灭。
(1)确定I/O 点数。
列出详细的I/O 地址分配表。
如(该表仅为举例,具体I/O I/O分分配自己考虑):输入输出地址 设备描述 地址 设备描述 I0.0 启动按钮 Q0.0 南北红灯 ……………………(2)按照S7-200设备的要求,仔细检查连接线,先PLC 电源线,再I/O 连接线。
然后接通硬件电源。
(3)(3)输输入编好的PLC 控制程序。
(4)(4)运运行程序,按控制要求设置各输入量,观察PLC PLC运运行情况,记录南北、东西各灯顺序亮、灭的运行情况。
调试程序直至正确为止。
解:由题目要求得,① 确定I/O I/O点点数,如下表:输入输出地址 设备描述 地址 设备描述 I0.0 启动按钮 Q0.0 南北绿灯 Q0.1 南北黄灯 Q0.2 南北红灯 Q0.3 东西绿灯 Q0.4 东西黄灯Q0.5东西红灯②梯形图如下图①,语句表如下图②,时序图如下图③:图①图①图①图②图②图③五、注意事项(1)(1)程程序中的各输入输出点应与外部实际IO 正确连接。
测控技术与装置课程实验报告
五、实验结果与分析(包括实验数据记录、程序运行结果等)
开关SD为启动系统,当其接通时红绿灯按要求运行,断开后所有灯熄灭。
系统开始运行时首先东西方向的绿灯、南北方向的红灯亮,50秒后两个方向的黄灯闪(每秒一次,占空比50%),5秒后东西方向的红灯、南北方向的绿灯亮,40秒后,东西方向的绿灯、南北方向的红灯亮,如此往复。
六、实验总结(包括注意事项、收获体会、存在不足、改进措施等)
1、通过本次实验进一步掌握了S7-200PLC的简单梯形图程序编制,S7-200PLC 开发环境STEP7microWIN的使用。
2、实验平台接线较多,实验过程中要注意正确接线,防止电路短路破坏实验设备。
3、实验过程中发现线圈受重复控制导致未出现应有的实验现象,因此在编写梯形图的过程中一定要注意中间变量的使用,还要避免一个线圈受多个触点控制。
4、此次实验花费了较长时间才完成,说明我对于梯形图的逻辑编写还不是很熟练,编写程序块的能力需要加强提高。
5、由于时间关系,未能完成题设要求的用SD开关作为启动系统,在接下来的实验中会找时间完成。
七、附录(包括实验源程序等)。
交通灯信号灯自动控制系统交通灯原理图一、系统的基本功能要求(1)以秒为计时单位,两位数码管以十进制递减计数形式作定时显示,在递减计数回零瞬间完成换灯操作。
(2)通过键盘红黄绿三色信号灯所亮时间在0~99秒内任意设定。
(3)十字路口的通行起始状态可人工设定,运行中可通过人工干预使十字路口通行状态固定于任何一种工作模式。
硬件设计1.系统总体框图2.电路设计(1)显示模块倒计时与时钟说明:⑴共阴极两位数码管用于倒计时;段选端由锁存器控制,位选端用P3_0与P3_1控制⑵两个四位共阴极数码组成八位数码管用于时钟显示段位选分别由两个锁存器控制(2)红绿灯模块说明:⑴图为两方向的红绿黄灯,分别接在P0口上,由P0口控制⑵51系列单片机的P0口内部没有集成上拉电阻,加上拉就是提高驱动能力,必须要通过上拉电阻接VCC。
上拉电阻一般接1K的。
(3)键盘模块说明⑴P2键控制功能说明:P2^6 key0绿灯位选择P2^5 key1黄灯位选择P2^4 key2 加1操作P2^3 key3 减1操作P2^2 key4 信号灯状态固定P2^1 key5 信号灯状态切换P2^0 key6时钟时分秒设置键⑵键盘加上拉电阻为了提高驱动能力3.复位电路:4.时钟电路:说明:用12M晶振时电容要选择30p软件部分1、主程序流程图2、时钟初值控制子程序3、绿灯,黄灯初值设置子程序4、时钟控制与倒计时控制时钟,倒计时初值通过键盘输入。
倒计时使用52单片机内部定时器1实现计数,时钟控制部分是使用定时、计数器2实现计时,以秒为基本单位在数码管中显示。
时钟部分:当秒的个位计时到了10,则秒个位清0,同时十位进一,以此类推;倒计时部分显示是则递减显示。
此过程通过判断语句实现。
5、.灯状态控制灯的状态通过键盘扫描控制。
状态固定键按下时,关闭定时器1;再次按下此键时,打开定时器。
状态选择键按下时,程序跳至下一个状态的程序控制部分,从而实现状态改变。
基本功能:(1)A B干道分别有两组红黄绿灯,各自的亮灯时间与状态由键盘控制。
(2)两位数码管用于倒计时,记录各个灯的亮灯时间,定时时间由键盘设定。
(3)十字路口通行状态可由键盘切换。
发挥部分功能:(1) 由八位数码管显示,初试时间可由键盘设定,且在05:00~23:00黄灯闪烁显示。
(2) 绿灯倒计时最后三秒和黄灯显示时闪烁显示(频率1HZ)。
(3)人行道的红绿灯配合车辆的红绿灯同时工作。
(1) 共阴数码管10个:8个显示时间,2个显示倒计时时间(2) 红黄绿发光二极管个4个:模拟十字路口信号灯。
令各加1个人行道上的红灯和绿灯(3) 74HC573锁存器2个:段码和位选锁存各一个(4) STC单片机一块按键8个12M晶振一个排线排针电阻电容若干(1)问题:每次通电后都要在十八、十十九口触发一下才能正常工作。
分析:晶振电路与单片机距离过远,输入噪声很大解决:把晶振电路改在紧挨单片机位置就可排除干扰。
(2) 共阳数码管需要接三极管放大驱动电流,为节约成本选用共阴数码管。
(3) 键盘扫描程序中加了按键前沿消抖延时,但按键不够灵敏加了后延消抖后使得按键足够灵敏。
(4) 在段锁存器给各个数码管送段码时相互之间有影响,在显示函数中加消影程序解决相互之间的影响。
(5) 在第一次焊接时一次性焊接完,调试时无法检查错误,而在第二次焊接时采用边调试边焊接的方法,加快速度,提高了准确度。
(6) 杜邦线数码管、锁存器等接线比较多,用单根导线焊接容易相互连接且不易检查错误,用杜邦线便于检查和模块化调试。
本次设计,我们花了不少时间和精力,但收获很大:(1) 这次设计时间很长,期间,我们自学了单片机教程,keil 2、proteus、protel 99se等软件,自学能力达到很大的提高(2)本次设计过程中,我们充分体会到了团体合作的重要性。
通过我们三个人的合理分工,设计过程完成的比较成功(3)通过本次设计,我们学到了对复杂程序模块化的编程方法和对其进行检查与修改方法。
(4)本次设计过程中,我们的动手能力得到很大的提高,例如说焊接技术、对电路板的总体规划,等等。
<<单片机原理与应用及C51程序设计>>清华大学大学出版社附:软件C程序//********************实验板上完整程序#include"reg52.h"#define uint unsigned int#define uchar unsigned charuchar aa,bb,cc,dd,ee,ff,a1,a3,con32,con31; uchar temp,ye,shi1,ge1,shi2,ge2,shi,ge,flag; int b,c=0,d=0,m=1,t;uint n1,n2;sbit p0_3=P0^3; //A干道黄灯sbit p0_2=P0^2; //A干道红灯sbit p0_4=P0^4; //A干道绿灯sbit p0_6=P0^6; //B干道黄灯sbit p0_7=P0^7; //B干道红灯sbit p0_5=P0^5; //B干道绿灯sbit wela=P3^0;sbit dula=P3^1;sbit p3_2=P3^2;sbit p3_3=P3^3;uchar data timedate1[3]={0x00,0x00,0x00};//显示缓冲区两位数字uchar data timedate2[3]={0x00,0x00,0x00};//显示缓冲区两位数字uchar data timedate3[7]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};//显示缓冲区两位数字char code wei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位扫描sbit key0=P2^6; //绿灯控制键sbit key1=P2^5; //黄灯控制键sbit key2=P2^4; //加一键sbit key3=P2^3; //减一键sbit key4=P2^2; //保存状态sbit key5=P2^1; //状态改变sbit key6=P2^0; //时钟控制键uchar data con3=0x00;uchar data con=0x00;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};void display(uchar shi,uchar ge);void display3(uchar aa,uchar bb,uchar cc,uchar dd,uchar ee,uchar ff);void delay(uint z);void init();keyscan1() ;keyscan2() ;keyscan3() ;void main(){init();//初始化子程序while(1){//*************************键盘扫描控制程序if(con==0&&ye==0)keyscan3();display3(aa,bb,cc,dd,ee,ff);if(con3==0&&ye==0) //调用键盘扫描程序{keyscan1();shi1=n1/10;ge1=n1%10;display(shi1,ge1);}if(con==0&&con3==0){keyscan2();shi2=n2/10;ge2=n2%10;display(shi2,ge2);}if((con>=3&&ye==0)||(ye>=3&&con==0)) display(0,0);P0=0xff;delay(1);// ***************************保存当前状态if(key4==0){delay(12);while(key4==0) ;delay(12);d++;if(d%2)TR0=0;//关闭计数器,下面else if语句不执行,直接到delay()显示语句else TR0=1;}//****************************状态改变,进入下一个状态if(key5==0){delay(12);while(key5==0) ;delay(12);m++;c++;if(c%2) temp=n2;else temp=n1;}//****************************状态选择if(t<5||t>=23){if(a1/10==0){p0_3=0;p0_6=0;}else {p0_3=1;p0_6=1;}delay(1);}else{if(m%4==1){p0_6=1;p0_2=1;if(temp>3)p0_4=0;else{if(a1/10==0)p0_4=0;else p0_4=1;} //A绿灯p0_7=0; //B红灯delay(1);}else if(m%4==2){p0_4=1;if(a1/10==0)p0_3=0; else p0_3=1;//A黄灯p0_7=0; //B红灯delay(1);}else if(m%4==3){p0_3=1;p0_7=1;p0_2=0; //A红灯if(temp>3)p0_5=0;else{if(a1/10==0)p0_5=0;else p0_5=1;} //B绿灯delay(1);}else if(m%4==0){p0_5=1;p0_2=0; //A红灯if(a1/10==0)p0_6=0; else p0_6=1; //B黄灯delay(1);}}//*****************************************倒计时if(con>=3&&ye>=3){TR0=1;if (b!=0) temp=n1; //只有当扫描到有输入时temp才等于n,否则为自减后的值shi=temp/10;ge=temp%10;if(a1==20){ a1=0;temp--;if(temp==-1){ c++; //进入下一个状态,赋倒计时起始值m++; //进入下一个状态,赋灯的状态if(c%2) temp=n2;else temp=n1;}}display(shi,ge);}b=0;}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(uchar shi,uchar ge) { P1=0x00;wela=0;p3_2=1;dula=1;P1=table[shi];dula=0;p3_3=0;delay(1);p3_3=1;dula=1;P1=table[ge];dula=0;p3_2=0;delay(1);p3_2=1;}void display3(uchar aa,uchar bb,uchar cc,uchar dd,uchar ee,uchar ff){ p3_2=1;p3_3=1;P1=0xff;wela=1;P1=wei[7];wela=0;P1=0x00;dula=1;P1=table[aa];dula=0;delay(1);dula=1;P1=table[bb];dula=0;P1= 0xff;wela=1;P1=wei[6];wela=0;dula=1;P1=table[10]; dula=0;P1=0xff;wela=1;P1= wei[5]; wela=0;delay(1);dula=1;P1=table[cc]; dula=0;P1=0xff;wela=1;P1= wei[4]; wela=0;delay(1);P1=table[dd]; dula=0;P1= 0xff;wela=1;P1=wei[3]; wela=0;delay(1);dula=1;P1=table[10]; dula=0;P1=0xff;wela=1;P1= wei[2]; wela=0;delay(1);dula=1;P1=table[ee];P1=0xff;wela=1;P1= wei[1];wela=0;delay(1);dula=1;P1=table[ff];dula=0;P1= 0xff;wela=1;P1=wei[0];wela=0;delay(1);}void init(){wela=0;dula=0;TH1=(65536-50000)/256;TL1=(65536-50000)%256;TMOD=0x11; EA=1;ET1=1;TR1=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;TR0=0;}//************************绿灯键盘扫描程序keyscan1(){if(key0==0){//b=0;delay(12);while(key0==0) ;delay(12);con++;//b++;}if(con!=0) //con=1||2时的加一运算if(key2==0){delay(12);while(key2==0) ;delay(12);timedate1[con]++;if(timedate1[con]>9)timedate1[con]=0;shi1=timedate1[1];ge1=timedate1[2];display(shi1,ge1);n1=10*shi1+ge1;}if(con!=0) //con=1||2时的减一运算if(key3==0){delay(12);while(key3==0) ;delay(12);timedate1[con]--;if(timedate1[con]==255)timedate1[con]=9;shi1=timedate1[1];ge1=timedate1[2];display(shi1,ge1);n1=10*shi1+ge1;}}//*********************黄灯控制键扫描keyscan2(){if(key1==0){b=0;delay(12);while(key1==0) ;delay(12);ye++;b++;}if(ye!=0) //con=1||2时的加一运算if(key2==0){delay(12);while(key2==0) ;delay(12);timedate2[ye]++;if(timedate2[ye]>9)timedate2[ye]=0;shi2=timedate2[1];ge2=timedate2[2];display(shi2,ge2) ;n2=10*shi2+ge2;}if(ye!=0) //con=1||2时的减一运算if(key3==0){delay(12);while(key3==0) ;delay(12);timedate2[ye]--;if(timedate2[ye]==255)timedate2[ye]=9;shi2=timedate2[1];ge2=timedate2[2];display(shi2,ge2);n2=10*shi2+ge2;}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;a1++;}//******************时钟控制键扫描程序keyscan3(){if(key6==0){delay(12);while(key6==0) ;delay(12);con3++;TR1=0;if(con3==5){TR0=1;con3=0; }}if(con3!=0) //con=1||2时的加一运算if(key2==0){delay(12);while(key2==0) ;delay(12);timedate3[con3]++;if(con3==1)con31=2;else if(con3==2)con31=9;else if(con3==3)con31=5;else if(con3==4)con31=9;if(timedate3[con3]>con31)timedate3[con3]=0;if(timedate3[1]==2&&timedate3[2]==4){timedate3[2]=0;timedate3[1]=0;}}if(con3!=0)if(key3==0){delay(12);while(key3==0) ;delay(12);timedate3[con3]--;}if(con3==1) con32=2;else if(con3==2) con32=9;else if(con3==3) con32=5;else if(con3==4) con32=9;if(timedate3[con3]==255)timedate3[con3]=con32;if(timedate3[1]==2&&timedate3[2]==9)timedate3[2]=3;aa=timedate3[1]; //小时的十是位bb=timedate3[2];cc=timedate3[3];dd=timedate3[4];ee=timedate3[5];ff=timedate3[6];t=10*aa+bb;}void time_intt3(void) interrupt 3{TH0=(65536-50000)/256;TL0=(65536-50000)%256;a3++;if(a3==20){a3=0;timedate3[6]++;if(timedate3[6]==10){timedate3[6]=0;timedate3[5]++;} if(timedate3[5]==6){timedate3[5]=0;timedate3[4]++;} if(timedate3[4]==10){timedate3[4]=0;timedate3[3]++;} if(timedate3[3]==6){timedate3[3]=0;timedate3[2]++;} if(timedate3[2]==10){timedate3[2]=0;timedate3[1]++;} if(timedate3[1]==2&&timedate3[2]==4) {timedate3[1]=0;timedate3[2]=0;} aa=timedate3[1];bb=timedate3[2];cc=timedate3[3];dd=timedate3[4];ee=timedate3[5];ff=timedate3[6];t=10*aa+bb;}}。