单片机模拟交通灯综合实训

合集下载

(完整word版)单片机交通灯实训报告

(完整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. 系统需求分析根据交通信号灯控制系统的实际需求,设计一套基于单片机的交通信号灯控制系统,实现对十字路口交通灯的智能控制。

系统需具备以下功能:(1)自动控制:根据实时交通流量自动调整红绿灯的切换时间。

(2)手动控制:允许在紧急情况下手动控制交通灯。

(3)倒计时功能:显示每个灯亮的时间。

(4)夜间模式:根据环境光线自动切换到夜间模式。

2. 系统设计(1)硬件设计系统硬件主要由单片机、交通灯模块、传感器模块、显示模块、按键模块和电源模块组成。

(2)软件设计系统软件主要包括主程序、初始化程序、交通流量检测程序、数据处理与决策程序、交通灯控制程序、倒计时程序、紧急控制程序、异常处理程序、手动/自动/特殊情况选择程序、特殊情况下的全红灯控制程序以及夜间模式程序。

3. 仿真设计采用Altium Designer19进行原理图设计,使用Keil5进行程序设计,并利用protues8.7软件进行仿真设计。

三、实训步骤1. 环境准备(1)安装Altium Designer19、Keil5和protues8.7软件。

(2)准备STM32开发板、LED灯、电阻等硬件。

2. 系统设计(1)根据系统需求分析,绘制系统框图。

(2)根据系统框图,进行硬件设计和软件设计。

3. 程序编写(1)使用Keil5编写程序。

(2)将程序下载到STM32开发板。

4. 仿真测试(1)使用protues8.7进行仿真测试。

(2)根据仿真结果,调整程序和硬件设计。

5. 总结与改进根据仿真结果,总结实训过程,对系统进行改进。

四、实训结果与分析1. 系统功能实现通过仿真测试,验证了系统具备以下功能:(1)自动控制:系统能够根据实时交通流量自动调整红绿灯的切换时间。

(2)手动控制:允许在紧急情况下手动控制交通灯。

单片机的交通灯实训报告

单片机的交通灯实训报告

一、引言随着我国经济的快速发展,城市交通问题日益突出,交通拥堵、事故频发等问题严重影响了市民的生活质量。

为了解决这些问题,智能交通系统应运而生。

单片机作为一种高效、低成本的微控制器,在智能交通系统中扮演着重要角色。

本实训报告以单片机为控制核心,设计并实现了一套交通灯控制系统,旨在提高交通效率,保障交通安全。

二、实训目标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软件编写程序,并进行编译、下载和调试。

关于交通灯的实训报告

关于交通灯的实训报告

一、引言随着我国城市化进程的加快,城市交通压力日益增大。

为了提高城市交通效率,确保交通安全,交通灯控制系统在城市交通管理中发挥着至关重要的作用。

本实训报告以单片机为核心,设计了一套智能交通灯控制系统,实现了对城市交通灯的智能控制。

二、实训目的1. 掌握单片机编程及接口技术;2. 熟悉交通灯控制系统的设计原理;3. 培养动手实践能力和创新意识。

三、实训内容1. 交通灯控制系统硬件设计(1)单片机:选用AT89C51单片机作为核心控制单元,具有丰富的片上资源,易于编程。

(2)LED显示模块:用于显示交通灯状态,包括东西方向和南北方向的红、黄、绿灯。

(3)按键模块:用于设置和修改交通灯的时间参数,以及切换交通灯状态。

(4)定时器模块:用于实现交通灯的计时功能。

2. 交通灯控制系统软件设计(1)系统初始化:初始化单片机,设置定时器、LED显示模块、按键模块等。

(2)交通灯状态控制:根据交通灯状态表,实现交通灯的切换。

(3)时间参数设置与修改:通过按键模块,修改交通灯的绿灯时间、黄灯时间和红灯时间。

(4)交通灯状态切换:通过按键模块,切换交通灯的当前状态。

(5)定时器中断:定时器中断实现交通灯的计时功能,当时间到达设定值时,切换交通灯状态。

四、实训过程1. 硬件设计(1)选用AT89C51单片机作为核心控制单元,连接LED显示模块、按键模块和定时器模块。

(2)根据电路原理图,焊接电路板。

(3)连接LED显示模块、按键模块和定时器模块,完成硬件电路搭建。

2. 软件设计(1)编写单片机程序,实现交通灯控制系统的各项功能。

(2)通过编程软件(如Keil)进行编译、调试,确保程序正确无误。

(3)将程序烧录到单片机中,观察交通灯控制系统运行情况。

五、实训结果与分析1. 实训结果(1)交通灯控制系统运行稳定,能够实现交通灯的智能控制。

(2)交通灯状态切换、时间参数设置与修改等功能均能正常实现。

2. 实训分析(1)通过本实训,掌握了单片机编程及接口技术,熟悉了交通灯控制系统的设计原理。

信号灯单片机实训报告

信号灯单片机实训报告

一、实训背景随着城市化进程的加快,交通流量日益增大,交通信号灯系统作为城市交通管理的重要手段,对于提高道路通行效率、保障交通安全具有至关重要的作用。

为了让学生更好地了解和掌握单片机在交通信号灯控制系统中的应用,我们进行了信号灯单片机实训。

二、实训目的1. 熟悉单片机的硬件结构和编程方法。

2. 掌握交通信号灯控制系统的设计原理和实现方法。

3. 培养学生的动手能力和创新意识。

三、实训内容1. 硬件设计本实训选用51单片机作为主控单元,利用P1口输出控制红、黄、绿三色LED 灯的亮灭。

同时,通过P2口连接4个7段数码管,用于显示倒计时时间。

硬件电路主要包括以下部分:- 51单片机- 4个LED灯(红、黄、绿)- 4个7段数码管- 电阻、电容等元件2. 软件设计软件设计主要包括以下功能:- 红绿灯控制:根据预设的时间,控制红、黄、绿三色LED灯的亮灭。

- 倒计时显示:在数码管上显示倒计时时间。

- 中断控制:通过外部中断实现紧急情况下的信号灯控制。

软件设计流程如下:1. 初始化硬件资源,包括单片机端口、LED灯和数码管。

2. 设置定时器,实现定时中断。

3. 在定时中断服务程序中,根据预设的时间控制红、黄、绿三色LED灯的亮灭。

4. 在数码管上显示倒计时时间。

5. 设置外部中断,实现紧急情况下的信号灯控制。

四、实训过程1. 硬件搭建首先,根据设计电路图,将51单片机、LED灯、数码管等元件焊接在电路板上。

注意,在焊接过程中要注意元件的极性,避免损坏元件。

2. 软件编程使用C语言编写程序,实现信号灯控制功能。

在编程过程中,注意以下要点:- 熟悉单片机的指令系统和寄存器。

- 掌握定时器、中断等功能的实现方法。

- 注意程序的逻辑性和可读性。

3. 调试与测试将编写好的程序烧录到单片机中,进行调试和测试。

在测试过程中,观察信号灯的亮灭情况、倒计时时间的显示以及紧急情况下的信号灯控制。

五、实训结果经过调试和测试,信号灯单片机实训取得了以下成果:1. 成功实现了红、黄、绿三色LED灯的控制,并根据预设的时间进行倒计时显示。

单片机交通灯实习报告册

单片机交通灯实习报告册

单片机交通灯实习报告一、实习目的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. 系统具有故障自诊断、手动/自动切换等功能,提高了系统的可靠性和实用性。

五、实习总结通过本次单片机交通灯实习,我掌握了单片机的基本原理和编程方法,熟悉了交通信号灯控制系统的设计方法,提高了实际动手能力和问题解决能力。

单片机交通灯实验报告

单片机交通灯实验报告

单片机交通灯实验报告实验目的: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软件进行仿真设计。

单片机交通灯实验报告(二)2024

单片机交通灯实验报告(二)2024

单片机交通灯实验报告(二)引言概述本报告旨在介绍单片机交通灯实验的进一步研究。

通过对单片机交通灯实验的深入探讨,我们将了解交通信号灯电路的设计原理、控制逻辑以及实际应用的相关知识。

本文将分为五个大点进行阐述,包括:电路设计、控制逻辑编程、硬件连接、功能扩展和实验结果分析。

正文一、电路设计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. 提出改进交通信号灯设计的建议总结通过本文详细的阐述,我们了解了单片机交通灯实验的电路设计、控制逻辑编程、硬件连接、功能扩展以及实验结果分析等方面的知识。

这些内容不仅对于我们更深入地了解交通信号灯的工作原理和应用具有重要意义,而且为我们开展相关实际项目提供了指导和启示。

希望本报告能够帮助读者更好地理解和应用单片机交通灯实验。

单片机交通灯实验报告

单片机交通灯实验报告

单片机交通灯实验报告交通灯是城市交通管理的重要组成部分,它能够规范车辆和行人的通行秩序,保障交通安全。

为了进一步学习交通灯的原理和掌握其设计,我们进行了一次单片机交通灯实验。

本次实验使用单片机和几个LED灯,通过对单片机的编程控制来实现交通灯的自动切换。

下面是我对该实验进行的详细记录和分析。

首先,我们需要连接电路。

我们采用的是STC89C52单片机,使用3个LED灯来模拟红灯、黄灯和绿灯。

利用杜邦线将LED灯连接到单片机的GPIO口,另外还需要连接一个电位器到单片机的模拟口,用来控制红灯亮灭的时间。

接下来,我们进行了单片机的编程。

我们使用C语言编写程序,利用单片机提供的GPIO口控制LED灯的亮灭,从而实现交通灯的控制。

我们通过控制红灯、黄灯和绿灯的亮灭时间,模拟真实交通灯的工作。

在编写程序的过程中,我们首先做了一些准备工作。

我们初始化了单片机的GPIO口,设定了红灯、黄灯和绿灯的引脚。

然后,我们使用一个循环语句不断地进行交通灯的切换。

具体来说,我们将交通灯控制划分为红灯、绿灯和黄灯三个状态,利用if-else语句对不同状态进行判断并进行相应的控制。

通过对红灯亮灭时间的控制,我们能够实现交通灯的自动切换。

在程序设计的过程中,我们还考虑了交通灯的变化时间。

我们在红灯和绿灯之间设置了一个黄灯过渡时间,以模拟真实交通灯的工作。

同时,我们还设置了一个迟滞时间,使得每个状态之间的切换更加顺滑。

通过这次实验,我们进一步了解了交通灯的工作原理和掌握了单片机的编程技巧。

通过对交通灯的模拟,我们成功地实现了交通灯的自动切换。

总结起来,这次实验不仅提高了我们对交通灯的认识,还锻炼了我们的动手能力和创新思维。

在今后的学习和工作中,我们将继续学以致用,将所学的知识应用到实际问题中。

让我们共同努力,为交通安全做出贡献。

(最新版)单片机综合实验报告之模拟交通灯设计

(最新版)单片机综合实验报告之模拟交通灯设计

单片机综合实验报告题目: 模拟真实交通灯班级:姓名:学号:指导老师:2014 年 6 月 13 日一、实验内容:用8255芯片的PA、PB口低四位做输出口,控制十二个发光二极管燃灭,模拟十字路口交通灯管理,并利用数码显示器进行倒计时显示(采用单片机内部定时器定时)。

通过外部中断能使交通灯暂停运行,并点亮4个红灯。

通过16*16点阵中的图形模拟控制行人过马路的人形“走”、“停”指示灯,可参考下图所示:利用实验系统16×16点阵实验单元,以两种方式控制点阵显示。

要求编制程序实现汉字点阵循环显示。

I/O口地址分配I/O口分别提供字形代码(列码)、扫描信号(行码),凡字形代码位为“1”、行扫描信号为“1”点亮该点,否则熄灭;通过逐行扫描循环点亮字形或曲线。

二、实验电路及功能说明8255与发光二极管连线图数码LED显示器电路16×16LED点阵显示电路实验原理图三、实验程序流程图:主程序:四、实验结果分析通过程序仿真,可以检测设计的电路能基本满足设计要求。

交通灯亮灭过程同“8255控制交通灯实验”,倒计时显示只需两位数(0~99),用定时器定时进行倒计时,每秒钟减1。

在16*16点阵中显示的人形“走”、“停”标志可自定义。

五、心得体会我们通过作这个单片机实验,我们总结了一下点:1、加深了对51单片机的理解,不仅仅是以前那样只能点亮发光二极管。

2、感受到了完成一件程序的乐趣,并且知道了实践精神。

3、理解了51单片机的强大和我们知识的肤浅。

4、学到了许多原来C语言中没有的东西,如:控制按键的程序While(P0_5==1){Time++;While(P0_5==1);}这样可以不加防按键抖动的延时程序,更精确时间。

5、进一步充分利用中断时刻都在运行,让时间在中断中显示,就不会出现进入死循环后而无法显示时间的情况,而且还可以快速的反映除时间的变化。

六、程序清单#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[]={};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,0x50,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,0x00,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=()/256;TL1=()%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=()/256;TL0=()%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];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;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=()/256;TL0=()%256;TH1=()/256;TL1=()%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. 系统组成(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.基于算法的全自动交通控制系统总结:通过本次单片机交通灯实验,我们对交通灯的原理和实现方法有了更深入的了解。

单片机交通灯综合实验报告

单片机交通灯综合实验报告

单片机交通灯综合实验报告河北工业大学实验报告学院:专业:班级:姓名:学号:实验课程:单片机应用系统设计开发入门指导教师:实验名称:交通信号灯控制实验实验时间:2021 年5月23 日2021 年5 月23 日一实验要求1实验目的及实验内容要求实验目的:1.熟悉外部中断源的扩展方法。

2.初步掌握单片机综合应用系统设计。

3.掌握用Proteus 调试汇编源程序的方法。

实验内容要求:用发光二极管模拟交通信号灯,用逻辑电平开关模拟控制开关,设计一个交通信号灯控制系统。

设计要求如下:(1) A 车道与B 车道交叉组成十字路口,A 是主道,B 是支道;正常情况下,A、B 两车道轮流放行。

具体放行时间和要求如下:(2) A 车道放行50s,其中绿灯常亮44s,绿灯闪烁3s(用于警告),黄灯常亮3s(用于警告)。

(3) B 车道放行30s,其中绿灯常亮24s,绿灯闪烁3s(用于警告),黄灯常亮3s(用于警告)。

在交通繁忙时,交通信号灯控制系统应有手控开关,可人为地改变信号灯的状态,以缓解交通拥挤状况。

控制要求如下:(1) 在B 车道放行期间,若A 车道有车而B 车道无车,按下开关使A 车道放行15s。

(2) 在A 车道放行期间,若B 车道有车而A 车道无车,按下开关使B 车道放行15s。

(3) 有紧急车辆通过时,按下开关使A、B 车道均为红灯,禁行15s。

2实验设备或运行软件平台完成本实验需要使用到单片机仿真软件Proteus8,该软件是英国Lab Center Electronics 公司出版的EDA 工具软件,是目前比较好的仿真单片机及外围器件的工具。

从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB 设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台。

在编译方面,它也支持IAR、Keil、MATLAB 等多种编译器。

其具有的基本功能特点为:1.原理布图。

单片机交通灯实验报告

单片机交通灯实验报告

一、实验目的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. 系统调试与测试- 进行硬件和软件调试- 在实际环境下进行系统测试七、实习成果通过本次实习,我们成功设计并实现了一个基于单片机的交通灯控制系统。

该系统能够根据预设时间控制红、黄、绿灯的亮灭顺序,并在紧急情况下切换至全红灯状态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C51单片机模拟交通灯综合实训
背景:设计模拟交通灯,东南西北各有红绿黄3只led灯。

工作状态:初始化全部灯亮,并闪烁三次;东西绿灯亮20s(南北红灯亮),黄灯亮并闪烁3次(每次0.5s),然后红灯亮,切换到南北绿灯亮,时间与点亮规律同东西方向,循环重复上述过程。

任务:
1设计流程说明。

2系统框图设计。

3硬件电路设计。

4 软件设计及调试。

P1、简要说明设计流程及各环节的工作内容和目的。

1、确定任务:对任务进行分析,确定功能、性能要求,制定总体方案
2、总体设计:系统功能分配,确定软件硬件功能关系,拟定调试方案
3、硬件设计:绘制硬件原理图,绘制印制板图,配置元器件,硬件功能分配
4、软件设计:确定算法与数据结构,程序模块划分,绘制程序流程图,程序编写与仿真调试
5、系统调试:包括硬件调试和软件调试
P2、根据系统需求,设计并画出系统功能模块框图,说明产品总体工作原理和各模块的功能。

交通灯模块工作原理是通过单片机控制实现灯的亮灭
功能是实现东西南北的红、黄、绿灯的亮灭情况
数码管模块工作原理是从单片机I/O口接出,实现数字显示
功能是实现计时20S倒数和3秒倒数
P3、根据系统框图,设计单片机应用系统和接口驱动电路图,标注电路中元器件型号和参数。

电路图用到得元器件如下表
设计单片机应用系统和接口驱动电路图
P4、编写软件代码,仿真、下载运行验证,实现要求的功能
1.软件代码
#include <reg51.h>
unsigned char second=20, time0 =100 ,time1=50,county=6;
unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char con[]={0xfd,0xfe};
sbit NB_G=P1^0;
sbit NB_Y=P1^1;
sbit NB_R=P1^2;
sbit DX_G=P1^3;
sbit DX_Y=P1^4;
sbit DX_R=P1^5;
bit DXT=1;
unsigned int i,j;
void showtime();
main()
{
for(j=6;j>=1;j--)
{
P0=~P0;
for(i=50000;i>0;i--);
}
P0=0xFF;
for(i=50000;i>0;i--);
NB_R=0;DX_G=0;
showtime();
TMOD=0X11;
TL0=-10000;TH0=-10000>>8; TL1=-10000;TH1=-10000>>8;
EA=1;ET0=1;ET1=1;
TR0=1;
while(1);
}
void isr_time0() interrupt 1
{ showtime();
TL0=-10000;TH0=-10000>>8; time0--; showtime(); if (time0==0)
{
time0=100;
second--;
if (second==0)
{
TR0=0; TR1=1;
second=3;
showtime();
if (DXT)
{ DX_G=1;DX_Y=0; }
else { NB_G=1;NB_Y=0; } }
}
}
void isr_time1()interrupt 3
{
TL1=-10000;
TH1=-10000>>8;
time1--;
showtime();
if(time1==0)
{
time1=50;
if (county%2!= 0)
{second--;
}
county--;
if(county)
{
if(DXT) DX_Y=~DX_Y;
else NB_Y=~NB_Y; }
else
{
county=6;
if (DXT)
{ DX_Y=1;DX_R=0; NB_R=1;NB_G=0;} else
{
DX_R=1 ;DX_G=0; NB_Y=1;NB_R=0;
}
TR1=0;TR0=1;
DXT=~DXT;
second=20;
showtime();
}
}
}
void showtime()
{
unsigned int i,j;
unsigned char time[2];
time[0]=second/10;
time[1]=second%10;
P2=con[0];
P0=seg[time[0]];
for(j=100;j>0;j--);
P2=con[1];
P0=seg[time[1]];
}
2.仿真电路如图所示
M1、分析并列出软件设计中需用到的单片机特殊功能寄存器(SFR)及其功能设置。

TMOD: 定时器/计数器控制寄存器
IE:中断允许寄存器
TCON:定时器/计数器T0/T1控制寄存器
M2、撰写软设计相关文档(包括但不限于流程图及其功能说明)。

1,数码管显示模块
void showtime()
{
unsigned int i,j;
unsigned char time[2];
time[0]=second/10;
time[1]=second%10;
P2=con[0];
P0=seg[time[0]];
for(j=100;j>0;j--);
P2=con[1];
P0=seg[time[1]];
}
2,交通灯模块
void isr_time0() interrupt 1
{ showtime();
TL0=-10000;TH0=-10000>>8;
time0--; showtime();
if (time0==0)
{
time0=100;
second--;
if (second==0)
{
TR0=0; TR1=1;
second=3;
showtime();
if (DXT)
{ DX_G=1;DX_Y=0; }
else { NB_G=1;NB_Y=0; } }
}
}
void isr_time1()interrupt 3
{
TL1=-10000;
TH1=-10000>>8;
time1--;
showtime();
if(time1==0)
{
time1=50;
if (county%2!= 0)
{second--;
}
county--;
if(county)
{
if(DXT) DX_Y=~DX_Y;
else NB_Y=~NB_Y; }
else
{
county=6;
if (DXT)
{ DX_Y=1;DX_R=0; NB_R=1;NB_G=0;} else
{
DX_R=1 ;DX_G=0; NB_Y=1;NB_R=0;
}
TR1=0;TR0=1;
DXT=~DXT;
second=20;
showtime();
}
}
}
3,主程序模块
#include <reg51.h>
unsigned char second=20, time0 =100 ,time1=50,county=6;
unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char con[]={0xfd,0xfe};
sbit NB_G=P1^0;
sbit NB_Y=P1^1;
sbit NB_R=P1^2;
sbit DX_G=P1^3;
sbit DX_Y=P1^4;
sbit DX_R=P1^5;
bit DXT=1;
unsigned int i,j;
void showtime();
main()
{
for(j=6;j>=1;j--)
{
P0=~P0;
for(i=50000;i>0;i--);
}
P0=0xFF;
for(i=50000;i>0;i--);
NB_R=0;DX_G=0;
showtime();
TMOD=0X11;
TL0=-10000;TH0=-10000>>8;
TL1=-10000;TH1=-10000>>8;
EA=1;ET0=1;ET1=1;
TR0=1;
while(1);
}
D1、软件文档中具有优化设计体现。

实现功能:
初始化全部灯亮,并闪烁三次;东西绿灯亮20s(南北红灯亮),黄灯亮并闪烁3次然后红灯亮,切换到南北绿灯亮,时间与点亮规律同东西方向。

相关文档
最新文档