单片机实训--交通灯
(完整word版)单片机交通灯实训报告
第一章设计目的及要求1.1 设计目的1. 通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加深“单片机原理与应用”课程的基本知识,掌握电子设计知识在实际中的简单应用。
2. 综合运用“单片机原理与应用”课程和先修课程的理论及生产实际知识去分析和解决电子设计问题,进行电子设计的训练。
3. 学习电子设计的一般方法,掌握AT89C52芯片以及简单电子设计过程和运行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是总体设计能力。
4. 通过计算和绘制原理图、布线图和流程图,学会运用标准、规范、手册、图册和查阅有关技术资料等,培养电子设计的基本技能。
5. 通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统全过程,为今后从事的工作打基础.1。
2 设计要求1。
利用单片机的定时器定时,实现道路的红绿灯交替点亮和熄灭。
2.以AT89C52单片机为核心,设计一个十字路口交通灯控制系统。
用单片机控制LED 灯模拟交通信号灯显示。
假定东西、南北方向方向通行(绿灯)时间为25秒,缓冲(黄灯)时间5秒,停止(红灯)时间35秒.第二章实验原理2.1 基本原理主体电路:交通灯自动控制模块。
这部分电路主要由80C52单片机的I/O端口、定时计数器、外部中断扩展等组成。
本设计先是从普通三色灯的指示开始进行设计,用P0口作为输出。
程序的初始化是东西南北方向的红灯全亮。
然后南北方向红灯亮,东西方向绿灯亮,60秒后东西方向黄灯闪亮5秒后南北方向绿灯亮,东西方向红灯亮。
重复执行。
二位一体的LED重复执行60秒的倒计时。
作为突发事件的处理,本设计主要用到外部中断EX0。
用一模拟开关作为中断信号.实际中可以接其它可以产生中断信号的信号源.2.2 芯片AT89C52AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS—51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
单片机的交通灯实训报告
一、引言随着我国经济的快速发展,城市交通问题日益突出,交通拥堵、事故频发等问题严重影响了市民的生活质量。
为了解决这些问题,智能交通系统应运而生。
单片机作为一种高效、低成本的微控制器,在智能交通系统中扮演着重要角色。
本实训报告以单片机为控制核心,设计并实现了一套交通灯控制系统,旨在提高交通效率,保障交通安全。
二、实训目标1. 熟悉单片机的基本原理和编程方法。
2. 掌握交通灯控制系统的设计方法。
3. 学会使用单片机进行交通灯控制。
4. 提高动手实践能力和团队协作能力。
三、实训内容1. 系统组成本系统采用AT89C52单片机作为核心控制单元,通过外围电路实现交通灯的控制。
系统主要由以下模块组成:(1)单片机模块:负责整个系统的控制和数据处理。
(2)信号灯模块:包括红、黄、绿三个信号灯,用于指示交通灯状态。
(3)按键模块:用于手动控制交通灯状态。
(4)数码管模块:用于显示交通灯倒计时时间。
(5)电源模块:为整个系统提供稳定的电源。
2. 系统工作原理系统启动后,单片机首先进行初始化设置,包括设定交通灯状态、倒计时时间等。
然后进入主循环,不断检测按键状态,并根据交通灯状态和倒计时时间进行控制。
(1)正常状态:系统按照预设的交通灯状态和时间进行控制,绿灯亮30秒,黄灯亮5秒,红灯亮25秒。
(2)紧急状态:当检测到紧急车辆时,系统立即切换到紧急状态,所有交通灯亮红灯,直到紧急车辆通过。
(3)手动控制:用户可以通过按键手动控制交通灯状态,实现交通灯的切换。
3. 程序设计程序采用C语言编写,主要包括以下部分:(1)初始化函数:设置单片机的工作模式、IO口状态、定时器等。
(2)主循环函数:检测按键状态,控制交通灯状态和倒计时时间。
(3)中断服务程序:处理按键中断和定时器中断。
四、实训过程1. 硬件设计根据系统组成,设计并焊接电路板,包括单片机模块、信号灯模块、按键模块、数码管模块和电源模块。
2. 软件设计使用Keil uVision软件编写程序,并进行编译、下载和调试。
单片机交通灯实训小结
单片机交通灯实训小结
随着城市化的不断发展,交通流量不断增加,交通安全问题也日益突出。
为了保障交通安全,交通管理部门普遍采用交通信号灯进行交通指挥。
而单片机交通灯控制系统则是一种新型的交通信号灯控制方式,在实际应用中具有更加灵活、安全、可靠的优点。
本次实训项目是利用单片机控制交通灯的流程,实现红、黄、绿三种颜色的循环交替。
在实际操作中,我们首先需要准备好硬件设备,包括单片机、LED灯、电容器、晶振等。
然后,根据实验指导书的要求进行电路连接,将各个元件按照电路图进行连接,确保无误后进行程序编写。
程序编写的过程中,我们需要学习C语言的基本语法和单片机的编程方法。
首先,我们需要定义各个引脚的功能,例如将P1.0口定义为红灯、P1.1口定义为黄灯、P1.2口定义为绿灯。
然后,我们需要利用if语句和循环语句,控制各个灯的亮灭时间,实现交替循环。
在实际操作中,我们还需要注意一些细节问题。
例如,在编写程序时,需要注意程序语句的顺序,避免出现死循环等问题。
另外,我们还需要学会利用调试工具,对程序进行调试和修改,确保程序的正常运行。
通过本次实训项目,我们不仅学习了单片机控制交通灯的基本原理
和方法,还掌握了C语言编程的基本技能。
同时,我们也深刻认识到交通安全问题的重要性,意识到我们作为工程技术人员应该积极参与到交通安全事业中,为社会的发展和进步做出更大的贡献。
总的来说,本次实训项目不仅提高了我们的实践能力和工程素养,还增强了我们的团队合作意识和责任感。
相信在今后的学习和工作中,我们将更加努力地学习和实践,为自己的未来和社会的发展做出更加积极的贡献。
单片机交通灯实验报告
单片机交通灯实验报告一、实验目的二、实验原理三、实验器材四、实验步骤五、实验结果六、实验分析与讨论七、实验总结一、实验目的:本次单片机交通灯实验的主要目的是通过使用单片机控制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. 学习编程语言,如C语言,进行单片机程序设计;3. 培养动手实践能力和团队协作精神;4. 了解交通灯系统的运行原理,提高实际问题解决能力。
二、实习内容1. 单片机基础知识学习:了解单片机的结构、工作原理和编程方法;2. 交通灯系统设计:设计一个单片机控制的交通灯系统,实现红、黄、绿灯的定时切换;3. 程序编写:使用C语言编写程序,实现交通灯系统的控制;4. 硬件连接:将单片机与交通灯硬件电路连接,进行实际运行测试。
三、实习过程1. 单片机基础知识学习:通过阅读教材、上网查阅资料,了解单片机的结构、工作原理和编程方法。
学习C语言,掌握基本的语法和编程技巧。
2. 交通灯系统设计:分析交通灯系统的运行原理,确定设计方案。
根据实际需求,设定红、黄、绿灯的定时时间。
3. 程序编写:根据设计方案,使用C语言编写程序。
首先,编写一个主函数,实现单片机的初始化;然后,编写一个定时函数,实现红、黄、绿灯的定时切换;最后,编写一个中断服务函数,用于处理外部中断。
4. 硬件连接:将单片机与交通灯硬件电路连接。
包括单片机与LED灯的连接、单片机与按键的连接、单片机与定时器的连接等。
5. 实际运行测试:将编写好的程序烧录到单片机中,接通电源,观察交通灯系统是否按照设计要求运行。
如有问题,查找原因并进行修改。
四、实习心得1. 通过本次实习,掌握了单片机的基本原理和应用,了解了交通灯系统的运行原理;2. 学会了使用C语言进行单片机程序设计,提高了编程能力;3. 培养了动手实践能力和团队协作精神,学会了与他人沟通交流、共同解决问题;4. 认识到理论联系实际的重要性,以后将继续努力学习,提高自己的实际问题解决能力。
五、实习总结本次实习旨在培养我们的实际动手能力和理论联系实际的能力。
在实习过程中,我们学习了单片机的基本原理、编程方法以及交通灯系统的运行原理。
通过编写程序、连接硬件电路,我们成功设计出一个单片机控制的交通灯系统。
交通灯实训实验报告
一、实验目的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. 研究复杂交通灯控制系统的设计,如多路口交通灯协同控制。
单片机实训报告交通灯
一、实训背景与目的随着城市化进程的加快,交通流量日益增大,传统的交通灯控制系统已经无法满足日益复杂的交通需求。
为了提高交通效率,减少交通拥堵,本实训项目旨在设计并实现一套基于单片机的智能交通灯控制系统。
通过本实训,学生可以深入了解单片机原理,掌握单片机编程与调试技巧,同时锻炼动手实践能力和团队协作精神。
二、系统设计1. 系统组成本系统主要由以下模块组成:单片机模块:采用AT89C52单片机作为核心控制单元,负责接收传感器信号、处理数据、控制交通灯状态等。
传感器模块:包括红外传感器、地磁传感器等,用于检测车辆和行人,实时获取交通信息。
执行模块:包括LED灯、继电器等,用于驱动交通灯和信号灯。
显示模块:采用LCD显示屏,用于显示交通灯状态、倒计时等信息。
电源模块:为系统提供稳定电源。
2. 工作原理系统工作原理如下:(1)单片机初始化,设置各模块参数。
(2)单片机通过传感器模块检测交通情况,如车辆和行人数量。
(3)单片机根据检测到的交通情况,控制交通灯和信号灯的亮灯状态。
(4)LCD显示屏显示交通灯状态和倒计时信息。
(5)当系统检测到紧急情况时,如行人过马路,系统自动切换到紧急模式,确保行人安全。
三、硬件设计1. 单片机模块选用AT89C52单片机作为核心控制单元,具有以下特点:内置8K字节闪存,可存储程序和数据。
内置8位定时器/计数器,可进行定时或计数操作。
内置串行通信接口,可进行数据通信。
2. 传感器模块红外传感器:用于检测车辆和行人,实现自动控制。
地磁传感器:用于检测车辆行驶方向,实现左转和直行控制。
3. 执行模块LED灯:用于显示交通灯状态。
继电器:用于驱动信号灯。
4. 显示模块采用LCD显示屏,用于显示交通灯状态、倒计时等信息。
5. 电源模块采用DC 12V电源,为系统提供稳定电源。
四、软件设计1. 编程语言采用C语言进行编程,具有以下优点:语法简单,易于理解。
可移植性好,可在不同平台上运行。
单片机交通灯实习报告
一、实习背景随着我国城市化进程的加快,城市交通压力日益增大,交通拥堵问题日益突出。
为了提高交通效率,保障交通安全,交通信号灯控制系统的设计与研究显得尤为重要。
本实习项目旨在通过单片机技术,实现对交通灯的智能控制,提高交通路口的通行效率和安全性。
二、实习目的1. 熟悉单片机的基本原理和编程方法;2. 掌握交通信号灯控制系统的设计方法;3. 提高实际动手能力和问题解决能力;4. 培养团队协作精神和创新意识。
三、实习内容1. 硬件设计(1)单片机选型:选用STC89C51单片机作为核心控制器;(2)传感器选型:选用红外传感器检测车辆和行人流量;(3)显示屏选型:选用LCD显示屏显示交通灯状态和时间;(4)交通灯模块:采用LED灯实现红、黄、绿灯的显示;(5)按键模块:采用按键实现功能切换和参数设置。
2. 软件设计(1)系统初始化:单片机上电后,进行系统初始化,包括设置定时器、初始化I/O端口等;(2)数据采集:通过红外传感器采集交通流量数据,并进行处理;(3)数据处理与决策:根据采集到的交通流量数据,结合预设的算法和规则,计算出当前交通灯的信号配时;(4)信号控制:根据计算出的信号配时,控制交通灯的信号状态;(5)人机交互:通过按键实现功能切换和参数设置,并通过LCD显示屏显示交通灯状态和时间。
3. 系统测试与调试(1)硬件测试:检查电路连接是否正确,电源是否稳定,传感器、显示屏、交通灯模块是否正常工作;(2)软件测试:通过编写测试程序,验证系统功能是否满足设计要求;(3)调试:根据测试结果,对系统进行调试,确保系统稳定可靠地运行。
四、实习成果1. 设计并实现了基于单片机的交通信号灯控制系统;2. 系统能够根据实时交通流量自动调整红绿灯的切换时间,提高交通效率;3. 系统具有故障自诊断、手动/自动切换等功能,提高了系统的可靠性和实用性。
五、实习总结通过本次单片机交通灯实习,我掌握了单片机的基本原理和编程方法,熟悉了交通信号灯控制系统的设计方法,提高了实际动手能力和问题解决能力。
(完整word版)单片机实训--交通灯
五、交通灯C语言程序为:
#include <at89x51。h>
/*--—-------———--——--——-——---—-//【贾小丹(AdvancyYP)@制作】//---—---—-----———-———---—-—--—*/
/*
名称 : 交通灯
单片机型号 :51系列单片机
晶振 : 12MHz
void T0_INTERRUPT(void) interrupt 1 using 1
{
if(stop_run==0)//如果当前状态为:禁止
{
t_10ms++;//10ms变量自增
if(t_10ms==100)//如果定时计数到1s
{
t_10ms=0;//10ms定时计数变量清0
stop_time—-;//禁止时间自减
EA=1;//总中断开启
}
/*****************************************************************************************/
//定时计数器T0中断//
/*****************************************************************************************/
//数码管函数//
/*****************************************************************************************/
void SMG(unchar x_seg, unchar x_bit)
{
SMG_SEG = SMG_SEG_CODE[x_seg];//数码管段选
单片机交通灯实验报告
单片机交通灯实验报告实验目的:1.熟悉单片机的基本工作原理和编程方法。
2.学习如何使用单片机控制交通灯的运行。
3.加深对电子元器件和电路原理的理解和掌握。
实验器材:1.51系列单片机开发板:包括单片机主控板、显示器板、外部扩展板等。
2.LED灯:红色、黄色、绿色各一颗。
3.电阻:用于限流。
4.连接线:用于连接各个电子元器件。
实验原理:在交通中,红灯代表停止、黄灯代表警告、绿灯代表通行。
在本实验中,我们将使用单片机控制三个LED灯实现交通灯的运行。
具体原理如下:1.使用单片机的IO口控制LED灯的亮灭。
2.根据交通灯的运行状态,通过改变LED灯的亮灭顺序来模拟交通的运行。
实验步骤:1.连接电路:将三个LED灯连接到单片机的IO口,并通过电阻限流。
2.编写程序:使用C语言编写程序,在主函数中设置交通灯的运行状态和亮灭顺序。
3.烧写程序:将编写好的程序烧写到单片机中。
4.运行实验:启动单片机,观察LED灯的亮灭情况,验证交通灯是否能正常工作。
实验结果:经过实验,我们成功地实现了单片机交通灯的控制。
在程序运行过程中,红灯先亮,表示停止;然后黄灯亮,表示警告;最后绿灯亮,表示通行。
整个过程循环不断,符合实际交通灯的运行规律。
实验总结:通过这次实验,我深入了解了单片机的基本工作原理和编程方法,掌握了使用单片机控制交通灯的技巧。
同时,我也加深了对电子元器件和电路原理的理解和掌握。
这些知识将对我今后的学习和工作产生积极影响。
然而,在实验过程中也遇到了一些问题。
比如,如果LED灯连接不正确或程序编写有误,交通灯可能无法正常运行。
因此,在进行单片机实验时,我们需要仔细检查电路连接和程序编写,确保一切正常。
总之,单片机交通灯实验是一次充满趣味和挑战的实践活动。
通过这次实验,我不仅学到了许多知识,而且培养了动手能力和实践能力。
希望将来能有更多这样的实验机会,继续提升自己的电子技术水平。
单片机红绿灯实训报告
一、实训目的1. 了解单片机的基本原理和编程方法;2. 掌握单片机在交通灯控制系统中的应用;3. 熟悉交通灯控制系统的设计流程;4. 提高实际操作能力和问题解决能力。
二、实训背景随着城市交通的日益发展,交通灯作为城市交通管理的重要组成部分,其智能化程度对提高道路通行效率、保障交通安全具有重要意义。
单片机具有体积小、功耗低、成本低、易于编程等优点,是交通灯控制系统理想的控制器。
本实训旨在通过设计一个基于单片机的交通灯控制系统,使学生掌握单片机编程和交通灯控制系统的设计方法。
三、实训内容1. 交通灯控制系统概述交通灯控制系统主要由单片机核心控制器、交通灯模块、传感器模块、显示模块(可选)、按键模块(可选)和电源模块组成。
系统通过传感器实时检测交通流量,单片机根据检测到的数据自动调整红绿灯的切换时间,实现交通灯的智能控制。
2. 系统硬件设计(1)单片机核心控制器:选用51系列单片机作为核心控制器,具有丰富的外设资源,便于系统扩展。
(2)交通灯模块:采用LED灯作为交通灯,分别代表红灯、黄灯和绿灯。
(3)传感器模块:选用超声波传感器检测交通流量,通过计算超声波的发射与接收时间差,得到车辆行驶距离。
(4)显示模块:选用LCD显示屏,用于显示系统状态和实时数据。
(5)按键模块:采用按钮作为输入设备,用于手动控制交通灯。
(6)电源模块:选用稳压电源为系统提供稳定的工作电压。
3. 系统软件设计(1)初始化:初始化单片机系统,包括设置端口、中断等。
(2)交通流量检测:读取超声波传感器的数据,计算车辆行驶距离,得到交通流量。
(3)数据处理与决策:根据交通流量数据,计算红绿灯切换时间,实现智能控制。
(4)交通灯控制:根据计算出的红绿灯切换时间,控制LED灯的亮灭。
(5)手动/自动控制:根据按键输入,实现手动控制交通灯或自动控制交通灯。
(6)特殊情况处理:如遇紧急情况,可手动将交通灯切换为全红灯,确保交通安全。
4. 仿真与调试利用Altium Designer19进行原理图设计,使用KEIL5进行程序设计,并利用protues8.7软件进行仿真设计。
单片机交通灯实验报告
单片机交通灯实验报告交通灯是城市交通管理的重要组成部分,它能够规范车辆和行人的通行秩序,保障交通安全。
为了进一步学习交通灯的原理和掌握其设计,我们进行了一次单片机交通灯实验。
本次实验使用单片机和几个LED灯,通过对单片机的编程控制来实现交通灯的自动切换。
下面是我对该实验进行的详细记录和分析。
首先,我们需要连接电路。
我们采用的是STC89C52单片机,使用3个LED灯来模拟红灯、黄灯和绿灯。
利用杜邦线将LED灯连接到单片机的GPIO口,另外还需要连接一个电位器到单片机的模拟口,用来控制红灯亮灭的时间。
接下来,我们进行了单片机的编程。
我们使用C语言编写程序,利用单片机提供的GPIO口控制LED灯的亮灭,从而实现交通灯的控制。
我们通过控制红灯、黄灯和绿灯的亮灭时间,模拟真实交通灯的工作。
在编写程序的过程中,我们首先做了一些准备工作。
我们初始化了单片机的GPIO口,设定了红灯、黄灯和绿灯的引脚。
然后,我们使用一个循环语句不断地进行交通灯的切换。
具体来说,我们将交通灯控制划分为红灯、绿灯和黄灯三个状态,利用if-else语句对不同状态进行判断并进行相应的控制。
通过对红灯亮灭时间的控制,我们能够实现交通灯的自动切换。
在程序设计的过程中,我们还考虑了交通灯的变化时间。
我们在红灯和绿灯之间设置了一个黄灯过渡时间,以模拟真实交通灯的工作。
同时,我们还设置了一个迟滞时间,使得每个状态之间的切换更加顺滑。
通过这次实验,我们进一步了解了交通灯的工作原理和掌握了单片机的编程技巧。
通过对交通灯的模拟,我们成功地实现了交通灯的自动切换。
总结起来,这次实验不仅提高了我们对交通灯的认识,还锻炼了我们的动手能力和创新思维。
在今后的学习和工作中,我们将继续学以致用,将所学的知识应用到实际问题中。
让我们共同努力,为交通安全做出贡献。
51单片机综合实验交通灯设计报告
51单片机综合实验交通灯设计报告班级:学生姓名:学号:指导教师:一实验题目交通灯控制系统设计二实验目的1、学会用8051单片机开发简单的计算机控制系统;2、学会用汇编语言和C语言开发系统软件;3、学会8051单片机开发环境wave或Keil uVision3软件的使用;4、学会Proteus软件的使用方法,会用Proteus单片机系统进行仿真;5、学会Protel软件的使用方法,会用Protel绘制电气原理图和印制板图;6、熟悉七位数码管显示的使用方法;7、了解交通灯控制系统的基本组成。
三实验要求交通灯处在十字路口上。
它有红﹑黄﹑绿三种颜色的灯组成。
红灯亮时道路上的车辆停止运行;黄灯是一种过渡用的信号灯,当它亮时,表示道路上的红绿色信号灯即将进行转换。
下面拿东西南北四个方向来说明。
当东西方向允许行车(或者左转)的时候,南北方向就禁止行车,即此时东西方向的绿灯亮红灯灭,而南北方向的绿灯灭红灯亮。
反之当南北方向允许行车(或者左转)的时候,东西方向就禁止行车,即此时南北方向的绿灯亮红灯灭,而东西方向的绿灯灭红灯亮。
交通灯配置示意图如图1所示。
同时当有特殊的情况发生时,能手动控制各个方向的信号灯。
设计任务就是将这一电路用单片机来实现具体的控制。
1 十字路口交通灯配置示意图四设计内容与原理为了在后面的分析中便于说明,将南北方向允许直行命名为状态1,南北方向允许左转命名为状态2,南北方向行车到东西方向行车的转换阶段命名为状态3,将东西方向允许直行命名为状态4,东西方向允许左转命名为状态5,东西方向行车到南北方向方向行车的转换阶段命名为状态6。
假定直行绿灯点亮的时间为25s,左转绿灯点亮的时间为20s,黄灯点亮的时间为5s,则对方红灯的点亮时间为50秒。
黄灯每隔500ms亮一次,之后灭500ms (亮灭一次叫作闪烁一次),一共闪烁5次,持续5s。
各个状态之间的变换情况如下:具体显示周期如下:图2交通信号灯点亮时间图设计电路中每个路口的控制信号灯应有四个,即绿灯两个、黄灯、红灯各一个,同时需要七段数码管一个。
单片机单点交通灯实习报告
单片机交通灯实习报告一、前言随着我国经济的快速发展,汽车数量的猛增,城市交通压力越来越大。
为了提高交通效率和安全性,智能交通控制系统的需求日益迫切。
单片机交通灯控制系统作为一种智能交通管理手段,能够根据实时交通流量自动调整红绿灯的切换时间,实现交通信号的智能化管理。
本实习报告围绕单片机交通灯控制系统的设计与实现展开,详细介绍了系统的设计思路、硬件选型、软件编程及实验结果。
二、系统设计1. 设计目标本设计旨在通过单片机技术实现对交通灯的智能控制,提高交通路口的通行效率和安全性。
系统能够根据实时交通流量自动调整红绿灯的切换时间,实现交通信号的智能化管理。
2. 系统组成(1)单片机:作为系统的核心控制器,负责接收传感器信号、处理数据、输出控制指令。
(2)交通灯模块:包括红灯、黄灯和绿灯,用于指示车辆和行人的通行状态。
(3)传感器模块:可包括车辆检测传感器、行人检测传感器等,用于实时检测交通路口的车辆和行人流量。
(4)显示模块:可选配,用于显示当前交通状态、剩余时间等信息,方便驾驶员和行人了解交通情况。
(5)按键模块:用于设置和修改交通灯的工作模式和参数。
(6)电源模块:为整个系统提供稳定的电力供应。
3. 工作原理系统上电后,单片机进行初始化操作,包括设置初始参数、检测硬件连接状态等。
然后通过传感器模块实时检测交通路口的车辆和行人流量,将数据传输给单片机。
单片机根据接收到的交通流量数据,结合预设的算法和规则,计算出当前红绿灯的切换时间,并输出控制指令,控制交通灯模块的显示状态。
同时,显示模块可以显示当前交通状态和剩余时间,方便驾驶员和行人了解交通情况。
三、硬件设计1. 单片机选型本设计采用STC89C51单片机,该单片机具有丰富的外设资源、强大的功能和较低的成本,非常适合用于交通灯控制系统。
2. 交通灯模块交通灯模块包括红灯、黄灯和绿灯,通过继电器实现灯色的切换。
继电器驱动电路采用晶体管驱动,具有驱动能力强、响应速度快的特点。
单片机交通灯实验报告
引言:随着城市交通的发展,交通灯作为交通管理的重要组成部分,起着至关重要的作用。
为了研究和实践交通灯的基本原理和实现方法,本文进行了单片机交通灯实验。
本实验通过使用单片机来模拟和控制交通灯的运行,以实现交通流畅和安全。
概述:交通灯是城市交通管理的重要组成部分,通过控制交通灯的信号变化,可以实现不同车辆和行人的交通流畅和安全。
单片机作为实验的控制器,可编程控制交通灯的运行,增强交通流畅性。
正文:一、单片机交通灯实验的背景和意义1.单片机交通灯实验的背景交通灯在城市交通管理中具有重要的地位和作用,通过控制交通灯的信号变化,可以实现车辆和行人的有序通行。
单片机交通灯实验为进一步研究交通灯原理和实现方式提供了实践基础。
2.单片机交通灯实验的意义单片机交通灯实验可以帮助学生理解并掌握交通灯的基本原理和控制方式,培养学生的创新思维和动手能力,并为进一步研究和改进交通灯系统提供参考。
二、单片机交通灯实验的设计和实施1.设计交通灯的硬件结构a.硬件元件选择和连接方式b.单片机选择和编程2.实施交通灯的控制逻辑和操作a.基本的交通灯控制逻辑b.交通灯的运行和状态转换三、单片机交通灯实验的分析和评价1.对交通流畅性的影响分析a.不同信号时间间隔对交通流量的影响b.交通灯控制方式对交通流畅性的影响2.对交通安全性的评价a.不同交通灯参数对交通安全的影响b.交通灯设施对行人安全的影响3.对实验结果的分析和总结a.实验数据的收集和处理b.结果的呈现和解释四、单片机交通灯实验的改进和优化方向1.优化交通灯的控制算法a.基于流量的自适应控制算法b.基于信号的智能预测算法2.改进交通灯的硬件设计a.使用更高效的电子元件和材料b.结合无线通信技术和传感器技术进行实时监测和控制五、单片机交通灯实验的应用和展望1.在城市交通管理中的应用前景a.提高交通流畅性和安全性的需求b.单片机交通灯技术的潜在优势2.可能的进一步研究方向a.基于互联网的智能化交通灯系统b.基于算法的全自动交通控制系统总结:通过本次单片机交通灯实验,我们对交通灯的原理和实现方法有了更深入的了解。
单片机交通灯实验报告
单片机交通灯实验报告单片机交通灯实验报告引言:交通灯作为城市交通管理的重要组成部分,对于保障道路交通的安全和顺畅起着至关重要的作用。
为了更好地了解交通灯的工作原理和控制方法,我们进行了单片机交通灯的实验。
一、实验目的本实验旨在通过使用单片机来控制交通灯的变化,探索交通灯的工作原理,并了解单片机在交通灯控制中的应用。
二、实验材料1. 单片机开发板2. 交通灯模块3. 连接线4. 电源适配器三、实验过程1. 将单片机开发板与电源适配器连接,并接通电源。
2. 将交通灯模块与单片机开发板连接,确保连接线的正确性。
3. 编写单片机程序,实现交通灯的控制逻辑。
4. 将程序烧录到单片机开发板中。
5. 通过操作单片机开发板上的按键,观察交通灯的变化。
四、实验结果通过实验,我们成功地实现了交通灯的控制。
在程序的控制下,交通灯按照规定的时间间隔进行变化,保证了道路交通的安全和顺畅。
五、实验分析1. 单片机控制交通灯的好处通过使用单片机来控制交通灯,可以实现精确的时间控制,避免了传统机械控制方式中可能存在的误差。
同时,单片机还可以根据实际情况进行自适应调整,提高了交通灯的灵活性和响应速度。
2. 单片机程序的设计在本次实验中,我们编写了一段简单的单片机程序来控制交通灯的变化。
该程序通过设定不同的时间间隔来控制红、黄、绿三种灯的亮灭,实现了交通灯的正常工作。
在实际应用中,我们可以根据道路情况和交通流量的变化来调整程序,以达到最佳的交通管理效果。
3. 单片机在交通灯控制中的应用前景随着城市交通的不断发展和智能化水平的提高,单片机在交通灯控制中的应用前景十分广阔。
通过使用单片机,可以实现交通灯的智能控制,根据实时的交通流量和道路情况进行调整,提高交通效率和安全性。
同时,单片机还可以与其他交通管理系统进行联动,实现更加智能化的交通管理。
六、实验总结通过本次实验,我们深入了解了交通灯的工作原理和控制方法,并成功地使用单片机实现了交通灯的控制。
单片机交通灯实验报告
一、实验目的1. 理解单片机在交通灯控制系统中的应用原理。
2. 掌握单片机编程方法,实现交通灯的自动控制。
3. 学会使用Proteus进行电路仿真和调试。
4. 培养动手实践能力和团队协作精神。
二、实验环境1. 硬件:STC89C52单片机、数码管、LED灯、电阻、电容、按键、三极管等元器件。
2. 软件:Keil C51、Proteus 8.0。
三、实验原理本实验基于STC89C52单片机,通过编程实现交通灯的红、黄、绿三色灯光切换,并利用数码管显示倒计时功能。
系统主要包括以下模块:1. 单片机控制模块:负责控制LED灯的亮灭和数码管的显示。
2. 数码管显示模块:显示交通灯状态和倒计时时间。
3. 按键模块:实现交通灯的紧急停用功能。
四、实验步骤1. 电路连接:根据原理图连接单片机、数码管、LED灯、电阻、电容、按键等元器件。
2. 程序编写:使用Keil C51编写单片机控制程序,实现以下功能:- 初始化单片机I/O端口;- 设置定时器中断,实现倒计时功能;- 编写主循环程序,控制LED灯的亮灭和数码管的显示;- 编写按键中断程序,实现紧急停用功能。
3. 仿真调试:使用Proteus软件对电路进行仿真,观察LED灯和数码管的显示效果,确保程序运行正确。
4. 实物测试:将程序烧录到单片机中,连接实物电路,测试交通灯控制系统是否正常工作。
五、实验结果与分析1. LED灯控制:通过编程实现LED灯的红、黄、绿三色灯光切换,模拟交通灯的运行状态。
2. 数码管显示:数码管显示倒计时时间,方便观察交通灯的运行状态。
3. 按键控制:按下按键,实现交通灯的紧急停用功能。
实验结果表明,本实验成功实现了单片机控制的交通灯系统,达到了预期目标。
六、实验总结1. 通过本次实验,掌握了单片机编程方法,实现了交通灯的自动控制。
2. 学会了使用Proteus进行电路仿真和调试,提高了动手实践能力。
3. 培养了团队协作精神,与同学共同完成了实验任务。
单片机交通灯实习报告册
一、实习目的通过本次单片机交通灯实习,使学生掌握单片机的基本原理和应用技术,了解交通灯控制系统的设计方法,提高学生动手实践能力和创新能力。
二、实习时间2023年X月X日至2023年X月X日三、实习地点XX学院实验室四、实习人员姓名:XXX学号:XXX班级:XXX指导教师:XXX五、实习内容1. 系统硬件设计本系统采用AT89C52单片机作为核心控制单元,通过编程实现对交通灯的智能控制。
系统硬件主要包括以下部分:- 单片机:AT89C52- 交通灯模块:红、黄、绿交通灯LED灯各一个- 时间模块:定时器/计数器- 输入模块:按钮(用于紧急情况下的全红灯控制)- 显示模块:数码管(用于显示倒计时时间)2. 系统软件设计本系统软件采用C语言编写,主要实现以下功能:- 交通灯状态切换:根据预设时间控制红、黄、绿灯的亮灭顺序- 倒计时显示:在黄灯亮起时,数码管显示剩余时间- 紧急情况处理:当按下紧急按钮时,系统立即切换至全红灯状态- 自动重置:在交通灯状态切换完成后,系统自动重置计时器3. 系统调试与测试在完成系统硬件和软件设计后,进行以下调试与测试:- 硬件调试:检查电路连接是否正确,电源是否稳定- 软件调试:检查程序运行是否正常,交通灯状态切换是否准确- 系统测试:在实际环境下进行测试,验证系统功能是否满足设计要求六、实习过程1. 前期准备- 熟悉单片机原理和应用技术- 学习交通灯控制系统的设计方法- 了解所需元器件的性能参数2. 硬件设计- 根据设计要求,绘制电路原理图- 选择合适的元器件,并进行焊接- 连接电路,检查电路连接是否正确3. 软件设计- 编写程序,实现交通灯控制功能- 进行程序调试,确保程序运行正常4. 系统调试与测试- 进行硬件和软件调试- 在实际环境下进行系统测试七、实习成果通过本次实习,我们成功设计并实现了一个基于单片机的交通灯控制系统。
该系统能够根据预设时间控制红、黄、绿灯的亮灭顺序,并在紧急情况下切换至全红灯状态。
单片机交通灯实验报告
单片机交通灯实验报告本实验旨在通过单片机控制,实现交通信号灯的模拟,以达到以下目的:通过模拟交通信号灯的控制,理解交通信号灯的工作原理和优化交通流量的方法。
本实验采用单片机作为主控芯片,通过编程设定各个交通信号灯的亮灭时间,以模拟交通信号灯的工作。
实验中采用LED灯模拟交通信号灯,红灯表示停止,绿灯表示通行,黄灯表示警告。
通过单片机的控制,可以实现交通信号灯的顺序切换,从而达到控制交通的目的。
准备材料:单片机、LED灯(红、绿、黄三个)、电阻、杜邦线、面包板、电脑及编程软件。
搭建电路:将LED灯分别连接到单片机的P1端口,并添加电阻以保护LED灯。
使用杜邦线将单片机与电脑连接,以便进行编程。
编程:使用C语言编写程序,控制交通信号灯的亮灭时间和顺序。
程序中应包含初始化函数、主函数和延时函数等基本元素。
其中,初始化函数用于设置LED灯的初始状态;主函数用于循环读取按键输入并控制LED灯的亮灭;延时函数用于实现交通信号灯的顺序切换。
调试:将程序下载到单片机中,观察交通信号灯的实际运行情况。
如有问题,可通过调整程序中的参数或重新编写程序进行优化。
数据记录与分析:记录每次实验的数据,包括LED灯的亮灭时间、交通流量等。
分析实验数据,得出结论并提出改进意见。
在本次实验中,我们成功地实现了交通信号灯的模拟。
通过调整程序中的参数,我们观察到交通信号灯的亮灭时间和顺序对交通流量的影响。
在早高峰时段,我们将红灯时间设置为较长时间,以减缓交通压力;在平峰时段,我们将绿灯时间设置为较长时间,以加快车辆通行速度。
同时,我们也注意到黄灯设置的重要性,它能够提醒司机注意交通安全。
在实验过程中,我们还发现了一些问题,例如在某些情况下,车辆在绿灯亮起时未能及时启动,导致交通拥堵。
针对这一问题,我们建议在程序中增加一个启动提醒功能,以提醒司机及时启动车辆。
通过本次实验,我们深入了解了单片机的原理和应用,并成功地模拟了交通信号灯的工作过程。
单片机交通灯控制实验报告
单片机交通灯控制实验报告单片机交通灯控制实验报告引言:交通灯是城市交通管理的重要组成部分,它能够有效地引导车辆和行人的交通流动,提高交通效率和安全性。
本实验旨在利用单片机技术设计一个简单的交通灯控制系统,以模拟真实的交通流量情况,并通过实验结果评估其性能和可靠性。
实验设备和原理:本实验使用的设备包括单片机、LED灯、电路板、电源等。
单片机是一种集成电路,具有处理器、存储器和输入输出接口等功能。
它能够根据预设的程序指令,控制外围设备的工作状态。
实验过程:首先,通过连接电路板和电源,将单片机与LED灯相连。
然后,编写单片机的程序,实现交通灯的控制逻辑。
在程序中,我们设置了三个状态:红灯亮、绿灯亮和黄灯亮。
根据预设的时间间隔,单片机会自动切换这些状态,模拟真实的交通灯工作过程。
实验结果:经过实验,我们观察到交通灯按照预设的时间间隔进行状态切换。
当红灯亮时,其他方向的灯都会熄灭;当绿灯亮时,其他方向的灯也会熄灭;当黄灯亮时,其他方向的灯同样会熄灭。
这样,交通灯能够有效地引导车辆和行人的通行,确保交通的有序进行。
实验分析:通过对实验结果的观察和分析,我们发现单片机交通灯控制系统具有以下优点:1. 精确控制:单片机能够精确计时,根据预设的时间间隔进行状态切换,保证交通灯的正常工作。
2. 灵活性:通过修改程序中的时间间隔和状态切换逻辑,可以灵活调整交通灯的工作模式,以适应不同的交通流量情况。
3. 可靠性:单片机具有较高的稳定性和可靠性,能够长时间稳定工作,减少交通灯故障的发生。
然而,单片机交通灯控制系统也存在一些不足之处:1. 依赖电力:交通灯需要外部电源供电,一旦供电中断,交通灯将无法正常工作,可能导致交通混乱。
2. 缺乏灵活性:单片机交通灯控制系统的状态切换逻辑是固定的,无法根据实时的交通流量情况进行动态调整。
结论:通过本次实验,我们成功设计并实现了一个简单的单片机交通灯控制系统。
该系统具有精确控制、灵活性和可靠性等优点,能够有效地引导交通流动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
桂林电子科技大学信息科技学院《单片机交通灯》实训报告学号0951100231姓名贾小丹指导教师:韩剑易艺李德明2011 年09 月22 日交通灯控制系统一、 任务利用AT89S52单片机控制各个路口红绿灯及时间显示,设计一个交通灯控制系统。
二、 基本原理利用51单片机控制各个路口红绿灯及时间显示。
模拟交通灯示意图:东南西北次 干 道主干道设计的重点:1、各个路口红绿灯亮灭的规则,暂不考虑左转方向;2、倒计时的实现,利用单片机的定时器进行计数得到秒信号;3、时间显示:东西南北四个方向的时间一致,当东西方向为60秒绿灯通行时间,同时南北方向为60秒红灯禁止时间,因此硬件连接时可考虑东西南北方向可采用同一接法;最后相当于2个数码管动态显示,具体见参考电路框图。
4、按键设置(扩展要求):设置键按一次,设置主干道通信时间(即次干道禁止时间),按第二次,设置主干道禁止时间(即次干道通信时间),按第三次,可作为紧急通信键。
设置时间需要确定,可通过确定键实现,也可通过延时确定,如10秒。
当然也可根据需要增加相应的按键。
参考电路框图三、性能指标要求1、各方向的红、绿色信号灯能按照设定规则运行;2、绿灯亮之前,黄灯闪烁5次;3、红灯和绿灯倒计时间能够正确显示;4、两干道的车辆不会会车冲突。
5、可以扩展其他功能(如按键设置时间,按键模拟警车。
四 方案论证一、 方案比较论证方案一:纯数字电路方式用数电器件设计:时钟分频模块,交通灯亮灭控制模块,交通灯显示模块,倒计时计数模块,倒计时显示模块,实现交通灯的控制和显示功能。
优点是不需要软件编程控制,缺点是硬件规模庞大且不能实现延时可调。
方案二:FPGA/CPLD 方式FPGA/CPLD 除了完成交通灯控制、存储和显示功能外,还可进行人机交单 片 机12只发光 二极 管 (红、黄、绿)按键(设置、+、-、确定)2位一体共阴数码互,实现定时器延时可调。
这种方案系统结构紧凑,但调试过程繁琐。
方案三:单片机方式利用单片机控制相应并口,模拟交通灯显示,利用其并口P2口实现数码管显示。
利用外部中断功能,完成交通灯主干次道通行时间任意可调。
此方案占用硬件资源少、功能齐全、调试过程简单。
本设计采用方案三。
二、原理图,交通灯原理图为下图所示:部分原理图分析:东西、南北方向的数码管对角线放置,发光二极管连一个1K的电阻,防止灯烧。
这里的按键是实现复位清零的功能。
这里的按键P3.4按一下,进入倒计时时间设置,P3.5是实现显示时间减一功能,P3.6实现显示时间加一功能,P3.7实现确认功能。
交通灯五、交通灯C语言程序为:#include <at89x51.h>/*-----------------------------//【贾小丹(AdvancyYP)@制作】//-----------------------------*//*名称:交通灯单片机型号:51系列单片机晶振:12MHz*//*-----------------------------//【贾小丹(AdvancyYP)@制作】//-----------------------------*//*定义名称*/#define unint unsigned int#define unchar unsigned char/*定义管脚*/#define SMG_SEG P1 //定义数码管段选口为:P0#define SMG_BIT P2 //定义数码管位选口为:P2#define LIGHT P0 //定义红绿灯口为:P1#define KEY P3 //定义按键口为:P3sbit BEEP = P2^7; //定义蜂鸣器管脚为P3.7/*定义行为*/#define LIGHT_RED (LIGHT = 0xDE)//红灯亮起//#define LIGHT_YELLOW (LIGHT = 0xED)//黄灯亮起//#define LIGHT_GREEN (LIGHT = 0xF3)//绿灯亮起//#define LIGHT_OFF (LIGHT = 0xFF)//全部熄灭#define KEY1 0xEF//KEY1按下#define KEY2 0xDF//KEY2按下#define KEY3 0xBF//KEY3按下#define KEY4 0x7F//KEY4按下/*定义数码管编码*///数码管段码////(共阳)unchar code SMG_SEG_CODE[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//数码管段码//数码管位码////(共阴)unchar code SMG_BIT_CODE[]={0xFD, 0xFE};//数码管位码/*定义时间变量*/unchar th, tl;//定时计数器初值变量unchar t_10ms, stop_time, run_time, set_stop_time, set_run_time;//时间变量/*定义模式、状态标识符*/unchar now_mode;//定义当前模式标识符//(注:0.系统运行模式1.系统设置主干道通行时间2.系统设置主干道禁止时间3.系统设置主干道紧急通行)unchar stop_run;//定义:禁止通行标识符//(注:0.禁止非0.通行)/*********************************************************************************** ******///函数声明///*********************************************************************************** ******/void _1ms();//1ms延时函数void _Nms(unsigned int N);//N*1ms延时函数void T0_INITIAL(void);//定时计数器T0初始化void SMG(unchar x_seg, unchar x_bit);//数码管函数void DISPLAY_TIME(unchar t);//显示时间函数void MODE(void);//模式函数/*********************************************************************************** ******///时间函数///*********************************************************************************** ******/void _1ms()//1ms延时函数{unsigned char a,b,c;for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}void _Nms(unsigned int N)//N*1ms延时函数{while(N){_1ms();N--;}}/*********************************************************************************** ******///定时计数器T0初始化///*********************************************************************************** ******/void T0_INITIAL(void){EA=0;//总中断关闭ET0=0;//定时器0关闭TR0=0;//关闭TR0TMOD = 0x01;//设置定时器工作方式为16位定时器自动重装(方式1)th=(65536-10000)/256;//定时计数器初值计算(定时10ms)tl=(65536-10000)%256;//定时计数器初值计算(定时10ms)TH0=th;//定时器0附初始值(定时10ms)TL0=tl;//定时器0附初始值(定时10ms)stop_time = set_stop_time;//获取设定好的禁止时间run_time = set_run_time;//获取设定好的通行时间t_10ms=0;//初始化10ms定时计数变量TR0=1;//开启TR0ET0=1;//定时器0开启EA=1;//总中断开启}/*********************************************************************************** ******///定时计数器T0中断///*********************************************************************************** ******/void T0_INTERRUPT(void) interrupt 1 using 1{if(stop_run==0)//如果当前状态为:禁止{t_10ms++;//10ms变量自增if(t_10ms==100)//如果定时计数到1s{t_10ms=0;//10ms定时计数变量清0stop_time--;//禁止时间自减if(stop_time==0)//禁止时间等于0时{run_time = set_run_time;//获取设定好的通行时间stop_run = ~stop_run;//转换到通行状态}}if((stop_time<=5)&&(stop_time>0))//当禁止时间小于等于5秒并且大于0秒的时候{if(t_10ms<50)//0.5秒内{LIGHT_OFF;//所有灯灯灭}elseif(t_10ms>=50)//0.5秒外{LIGHT_YELLOW;//黄灯亮}}else{LIGHT_RED;//红灯亮}TH0=th;//定时器0附初始值(定时10ms)TL0=tl;//定时器0附初始值(定时10ms)}elseif(stop_run!=0)//如果当前状态为:通行{t_10ms++;//10ms变量自增if(t_10ms==100)//如果定时计数到1s{t_10ms=0;//10ms定时计数变量清0run_time--;//通行时间自减if(run_time==0)//通行时间等于0时{stop_time = set_stop_time;//获取设定好的禁止时间stop_run = ~stop_run;//转换到禁止状态}}if((run_time<=5)&&(run_time>0))//当通行时间小于等于5秒并且大于0秒的时候{if(t_10ms<50)//0.5秒内{LIGHT_OFF;//所有灯灯灭}elseif(t_10ms>=50)//0.5秒外{LIGHT_YELLOW;//黄灯亮}}else{LIGHT_GREEN;//绿灯亮}TH0=th;//定时器0附初始值(定时10ms)TL0=tl;//定时器0附初始值(定时10ms)}}/*********************************************************************************** ******///数码管函数///*********************************************************************************** ******/void SMG(unchar x_seg, unchar x_bit){SMG_SEG = SMG_SEG_CODE[x_seg];//数码管段选SMG_BIT = SMG_BIT_CODE[x_bit];//数码管位选}/*********************************************************************************** ******///显示时间函数///*********************************************************************************** ******/void DISPLAY_TIME(unchar t){SMG((t/10), 1);//时间的十位_Nms(1);//1ms延时函数SMG((t%10), 0);//时间的个位_Nms(1);//1ms延时函数}/*********************************************************************************** ******///模式函数///*********************************************************************************** ******/void MODE(void){if(now_mode==0)//0.系统运行模式{while(now_mode==0)//0.系统运行模式{if(stop_run==0)//当前状态:禁止{DISPLAY_TIME(stop_time);//禁止时时间显示函数}elseif(stop_run!=0)//当前状态:通行{DISPLAY_TIME(run_time);//通行时时间显示函数}if(KEY==KEY1)//如果按键1被按下{_Nms(10);//10ms延时去抖if(KEY==KEY1)//如果按键1被按下{now_mode++;//移动到下一模式if(now_mode==4)//如果增到模式4{now_mode = 1;//回到模式1(注:只有模式0、1、2、3 可选)}}while(KEY==KEY1);//等待按键1释放_Nms(10);//10ms延时去抖}}}elseif(now_mode==1)//1.系统设置主干道通行时间{ET0=0;//定时器0关闭LIGHT_GREEN;//绿灯亮起while(now_mode==1)//1.系统设置主干道通行时间{DISPLAY_TIME(set_run_time);//显示设定的通行时间if(KEY!=0xFF)//有按键按下{_Nms(10);//10ms延时函数if(KEY!=0xFF)//有按键按下{switch(KEY)//获取键值{case KEY1 : //如果按键1被按下{now_mode++;//移动到下一模式if(now_mode==4)//如果增到模式4{now_mode = 1;//回到模式1}}break;//退出case KEY2 : //如果按键2被按下{if(set_run_time>6)//如果通行时间大于6秒{set_run_time--;//设置的通行时间减小}}break;//退出case KEY3 : //如果按键3被按下{if(set_run_time<60)//如果通行时间小于60秒{set_run_time++;//设置的通行时间增大}}break;//退出case KEY4 : //如果按键4被按下{now_mode = 0;//确定键按下,回到模式//0.系统运行模式T0_INITIAL();//定时计数器T0初始化}break;//退出default : break;//其它}}while(KEY!=0xFF);//等待按键释放_Nms(10);//10ms延时函数}}}elseif(now_mode==2)//2.系统设置主干道禁止时间{ET0=0;//定时器0关闭LIGHT_RED;//红灯亮起while(now_mode==2)//2.系统设置主干道禁止时间{DISPLAY_TIME(set_stop_time);//显示设定的禁止时间if(KEY!=0xFF)//有按键按下{_Nms(10);//10ms延时函数if(KEY!=0xFF)//有按键按下{switch(KEY)//获取键值{case KEY1 : //如果按键1被按下{now_mode++;//移动到下一模式if(now_mode==4)//如果增到模式4{now_mode = 1;//回到模式1}}break;//退出case KEY2 : //如果按键2被按下{if(set_stop_time>6)//如果禁止时间大于6秒{set_stop_time--;//设置的禁止时间减小}}break;//退出case KEY3 : //如果按键3被按下{if(set_stop_time<60)//如果禁止时间小于60秒{set_stop_time++;//设置的通行时间增大}}break;//退出case KEY4 : //如果按键4被按下{now_mode = 0;//确定键按下,回到模式//0.系统运行模式T0_INITIAL();//定时计数器T0初始化}break;//退出default : break;//其它}}while(KEY!=0xFF);//等待按键释放_Nms(10);//10ms延时函数}}}elseif(now_mode==3)//3.系统设置主干道紧急通行{ET0=0;//定时器0关闭LIGHT_GREEN;//绿灯亮起while(now_mode==3)//3.系统设置主干道紧急通行{DISPLAY_TIME(0);//显示0if(KEY!=0xFF)//有按键按下{_Nms(10);//10ms延时函数if(KEY!=0xFF)//有按键按下{switch(KEY)//获取键值{case KEY1 : //如果按键1被按下{now_mode++;//移动到下一模式if(now_mode==4)//如果增到模式4{now_mode = 1;//回到模式1}}break;//退出case KEY2 : //如果按键2被按下:主干道紧急通行{LIGHT_GREEN;//绿灯亮起}break;//退出case KEY3 : //如果按键3被按下:次干道紧急通行{LIGHT_RED;//红灯亮起}break;//退出case KEY4 : //如果按键4被按下{now_mode = 0;//确定键按下,回到模式//0.系统运行模式ET0=1;//定时器0开启}break;//退出default : break;//其它}}while(KEY!=0xFF);//等待按键释放_Nms(10);//10ms延时函数}}}}/*********************************************************************************** ******///主函数///*********************************************************************************** ******/void main(void){set_stop_time = 60;//禁止时间:60sset_run_time = 60;//通行时间:60sstop_run = 0;//当前状态:禁止T0_INITIAL();//定时计数器T0初始化while(1){MODE();//模式函数}}六、制作与调试过程1.状态灯显示测试由于在刚焊接好电路板的时候,没有下载程序,而且有虚焊的线路,所以,状态指示灯都没有亮。