单片机交通灯课程设计报告
单片机交通灯实验报告(一)

单片机交通灯实验报告(一)引言概述:交通灯是城市交通管理的重要组成部分,通过控制红绿灯的变化,实现车辆和行人的有序通行。
本文将详细介绍单片机交通灯实验的设计与实现,包括硬件设计、程序编写和实验结果分析。
正文:一、硬件设计1. 确定电路所需元件:单片机、LED灯、电阻等。
2. 组装硬件电路:按照电路图进行元件的连接,确保电路的正确连接。
3. 设计适当的电源:为单片机和LED灯提供稳定的电源。
二、程序编写1. 定义程序所需的IO口:确定控制LED灯的IO口。
2. 初始化单片机:设置单片机的工作频率和中断。
3. 设计交通灯的流程控制:根据实际的交通灯变化规律,设计程序的流程控制。
4. 编写交通灯控制的函数:使用if-else语句或switch-case语句编写函数控制交通灯的变化。
5. 调试程序:通过单片机调试工具或仿真软件,检查程序运行的正确与否。
三、实验结果分析1. 观察实验现象:通过实验现场观察交通灯的变化,记录每一种灯亮的时间和顺序。
2. 分析实验结果:根据实验记录,分析交通灯的工作原理和实现的准确性。
3. 比较与设计要求的符合度:将实验结果与设计要求进行比较,评估实验的完成度。
4. 探讨存在问题与改进方向:分析实验中可能存在的问题,并提出改进措施。
四、小结本文介绍了单片机交通灯实验的设计与实现。
通过硬件设计和程序编写,实现了交通灯的变化控制。
通过实验结果分析,我们可以得出实验的有效性和可行性。
当然,实验中也存在一些问题,需要进一步改进。
在后续的实验中,我们将进一步完善交通灯的控制,提高其实际应用的稳定性和可靠性。
总结:本文详细介绍了单片机交通灯实验的设计与实现,包括硬件设计、程序编写和实验结果分析。
通过该实验,我们对交通灯的工作原理和控制方法有了更为深入的了解,并对实验的经验和教训进行了总结。
相信在今后的学习和实践中,我们能够更好地应用单片机技术,为实现交通管理的智能化和高效化作出贡献。
单片机实训报告交通灯

一、实训背景与目的随着城市化进程的加快,交通流量日益增大,传统的交通灯控制系统已经无法满足日益复杂的交通需求。
为了提高交通效率,减少交通拥堵,本实训项目旨在设计并实现一套基于单片机的智能交通灯控制系统。
通过本实训,学生可以深入了解单片机原理,掌握单片机编程与调试技巧,同时锻炼动手实践能力和团队协作精神。
二、系统设计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、编写交通控制程序,实现对信号灯及其信号闪烁序列的控制;
5、编写车辆检测控制程序,实现对道路中车辆的检测和判断;
6、完成软件调试,将控制程序上传至单片机;
7、实现仿真测试,检验交通控制系统的实际效果。
本课程设计最终实现了一个完整的实时交通控制系统,它具有以下特性:
(1)具有交通灯自动变换功能;
(2)拥堵及女性模式,即可以根据车流量多少,判断如何安排红绿灯;
(3)可以根据实际情况,启动信号灯控制系统,控制信号灯的变换。
本课程设计实现了对交通控制系统的简单控制,可以满足城市交通的需求,减少城市交通拥堵的程度。
交通灯单片机课程设计报告

课程设计报告:交通灯单片机控制系统1. 设计目的本课程设计旨在让学生通过使用单片机开发一个简单的交通灯控制系统来加深对单片机编程和控制原理的理解。
该系统可以模拟道路上的交通灯,实现红灯、绿灯和黄灯的循环控制,并可以通过按键进行手动控制。
2. 设计原理2.1 交通灯状态交通灯状态包括红灯、黄灯和绿灯,它们按照固定的时间间隔循环切换。
2.2 按键控制设计中使用一个按键用于手动控制交通灯状态切换。
按下按键时,会切换到下一个灯状态。
3. 硬件方案3.1 单片机本设计采用ATmega328P单片机,它具有足够的GPIO引脚用于控制交通灯的LED。
3.2 LED使用红色、黄色和绿色LED模拟交通灯的三种状态。
3.3 按键一个按键连接到单片机的GPIO引脚,用于手动切换交通灯状态。
4. 软件方案4.1 控制逻辑编写单片机程序,实现交通灯状态的循环切换和按键控制逻辑。
4.2 定时器使用定时器来控制交通灯状态切换的时间间隔。
4.3 中断配置按键的中断,以便在按下按键时进行状态切换。
5. 实施过程连接硬件组件,包括LED、按键和单片机。
编写单片机程序,包括交通灯状态切换逻辑、定时器配置和按键中断处理。
编译并烧录程序到单片机。
运行程序,观察交通灯的状态切换和按键控制是否正常。
6. 测试结果经过测试,交通灯控制系统能够正常运行。
交通灯状态按照预定的时间间隔循环切换,同时按下按键可以手动切换状态,符合设计要求。
7. 问题解决在实施过程中,遇到了一些问题,如硬件连接错误和程序逻辑错误。
通过仔细检查和调试,成功解决了这些问题。
8. 总结本课程设计使我深入了解了单片机编程和控制系统的原理,通过实际动手操作,更好地掌握了这些概念。
设计交通灯控制系统是一个有趣且教育性的项目,我对单片机编程有了更深入的理解,这对我的学习和职业发展都有所帮助。
这个示例课程设计报告可以作为参考,你可以根据具体的课程设计要求和硬件平台的不同来进行调整和扩展。
单片机课程设计报告1 交通灯

单片机课程设计报告1 交通灯1. 引言本文档是单片机课程设计的报告,主题为交通灯。
交通灯是城市交通管理的重要组成部分,合理的交通灯设置可以提高交通效率、保障交通安全。
本文将介绍交通灯的设计方案、实现过程以及遇到的问题及解决方法。
2. 设计方案2.1 总体设计思路本次交通灯设计采用的是基于单片机的控制系统。
通过在单片机上编程设计,控制交通灯的状态和时间,实现交通灯的自动切换,并保证交通流畅。
2.2 硬件设备本次设计所需的硬件设备包括:•单片机:采用STC89C52型单片机•交通灯信号灯模块:包括红灯、黄灯、绿灯三个灯泡及控制电路板•电源模块:用于提供电力供给2.3 软件设计本次设计的软件部分主要包括:•交通灯控制程序:通过编写程序控制单片机,实现交通灯的自动切换3. 实现过程3.1 准备工作在开始设计之前,我们首先进行了一些准备工作。
包括准备好所需的硬件设备,如单片机、交通灯信号灯模块和电源模块;同时也对单片机进行了初始化配置,以及编写好了交通灯控制程序的框架。
3.2 硬件连接我们将单片机与交通灯模块进行连接。
具体的连接方式如下:1.将单片机的IO口与交通灯模块的各个灯泡的控制引脚相连,以实现对灯泡亮灭的控制。
2.将电源模块与单片机进行连接,以提供电力供给。
3.3 软件设计与编程在硬件连接完成后,我们开始着手进行软件设计和编程。
主要的步骤包括:1.定义交通灯的状态:根据交通灯的信号变化规律定义交通灯状态,如红灯亮、黄灯亮、绿灯亮等。
2.编写控制程序的逻辑:根据交通灯的状态定义,编写控制程序的逻辑,实现不同状态之间的切换和持续时间的控制。
3.编程实现:根据以上设计,在单片机上编写程序,并通过烧录将程序烧录到单片机上。
3.4 测试与调试在程序编写完成后,我们进行了测试与调试。
通过在交通灯工作状态下的观察与测试,我们可以判断出程序是否符合设计要求,并进行必要的调试。
4. 遇到的问题与解决方法在设计与实现过程中,我们遇到了一些问题,具体包括:•问题1:单片机与交通灯模块的连接出现问题,导致交通灯无法正常工作。
单片机课程设计交通灯报告

目录一•交通灯课程设计功能描述 (2)1.1芯片简介 (2)1.2技术指标 (4)二•课程设计分析设计 (4)2.1设计分析 (4)三•绘制硬件图并对硬件电路进行说明 (4)3.1 MCS-51单片机内部结构 (5)3.2 MCS-51单片机芯片引脚位置及功能符号如下图所示 (6)3.3 51系列单片机运行的硬件条件 (6)3.4单片机的特点与应用 (7)四•绘制软件流程图并对软件流程图进行说明 (7)4.1软件设计 (7)4.2电路连接分配 (8)4.3 主程序流程图 (8)五•程序的源代码清单 (9)六•上机调试运行结果及分析 (13)七•课程设计的经验教训总结 (14)参考文献 (15)一•交通灯课程设计功能描述红黄绿交通灯控制器采用单片机及程序存储器的扩展控制,实现控制器的功能要求,例如红黄绿灯的交替闪烁,定时等等。
单片机将CPU,存储器,定时器/计数器及各接口电路组成,具有良好的性价比。
本控制器可分时段进行道路的管制,还可在紧急时刻进行手动控制,实施道路路况的控制。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051 芯片的P1 口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC 口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。
本系统实用性强、操作简单、扩展功能强。
1.1 芯片简介MSC-51芯片简介8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)数据存储器(RAM)定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
单片机交通灯实验报告(二)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. 提出改进交通信号灯设计的建议总结通过本文详细的阐述,我们了解了单片机交通灯实验的电路设计、控制逻辑编程、硬件连接、功能扩展以及实验结果分析等方面的知识。
这些内容不仅对于我们更深入地了解交通信号灯的工作原理和应用具有重要意义,而且为我们开展相关实际项目提供了指导和启示。
希望本报告能够帮助读者更好地理解和应用单片机交通灯实验。
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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机系统课程设计报告专业:自动化073班学生姓名:XXXX XXX学号:2007023323 2007023328指导教师:XXXX XXXX完成日期:2010年7月7日目录1 设计任务和性能指标 (1)1.1设计任务 (1)1.2性能指标 (1)2 设计方案 (2)2.1任务分析 (2)2.2方案设计 (2)3 系统硬件设计 (3)3.1单片机的最小系统 (3)3.2电源电路 (4)3.3数码管显示时间电路设计 (4)3.4信号灯控制电路设计 (5)4 系统软件设计 (5)4.1主程序设计 (5)5 调试及性能分析 (6)5.1调试分析 (6)5.1.1 软件调试 (6)5.1.2 硬件调试 (6)5.1.3 系统功能调试 (6)6 心得体会 (6)参考文献 (8)附录1 系统原理图 (9)附录2 系统仿真图 (10)附录3 程序清单 (11)1 设计任务和性能指标1.1设计任务利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
用红、绿、黄发光二极管作信号灯。
如图上图所示。
设东西向为主干道,南北为支干道。
1.2性能指标(1)处于常允许通行的状态,支干道有车来时才允许通行。
主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
(2)干道均有车时,两者交替允许通行,主干道每次放行60秒,支干道每次放行40秒,设立60秒、40秒计时、显示电路。
南 北东西(3)绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。
黄灯亮时,原红灯按1Hz 的频率闪烁。
(4)支干道通行时间及黄灯亮的时间均可在0~99秒内任意设置。
2 设计方案2.1任务分析模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。
红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等2.2方案设计根据设计的要求可知,系统的硬件原理框图如下图所示。
单片机键盘LED 显示三色指示灯系统硬件框图单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB 的FLASH ROM ,设计时无需外接程序存储器,为设计和调试带来极大的方便。
南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。
键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO 口不够用时,可以考虑扩展8255或8155满足系统的要求。
2. 软件方案根据设计要求,程序框图如图1所示。
软件可由汇编语言完成,也可由C 语言完成。
软件设计可以分为以下几个功能模块:主程序:初始化及键盘监控。
计时程序模块:为定时器的中断服务子程序,完成0.1秒(或其他时间)和1秒的时间定时。
显示程序模块:完成60个发光二极管(实际上只需驱动30个)和8个LED 数码管的显示驱动。
程序流程图3 系统硬件设计3.1单片机的最小系统ATMEL 公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz ,复位电路采取按键复位方式。
具体连接图3.1和图3.2。
单片机系统的时钟电路开始 初始化 判断当前状态 调用正常 运行子程序 调用紧急 状态子程序单片机系统的复位电路3.2电源电路设计电源用5V直流变压器直接供电。
3.3数码管显示电路显示电路采用8个共阴数码管,P1口作为数码管的输入,P3.4、P3.5、P3.6 P3.7分别作为东西南北四路数码管的位选端。
数码管显示电路3.4信号灯控制电路应急电路4 系统软件设计4.1 主程序设计系统程序流程图开始 参数初始化 显示子程序 中断处理紧急中断子程序5 调试及性能分析5.1 调试分析5.1.1 软件调试软件调试主要是利用proteus仿真软件完成电路的搭建,运行以发现设计中的错误及时改正。
5.1.2 硬件调试硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。
具体步骤及测试结果如下:(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。
(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。
(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。
5.1.3 系统功能调试通过软件仿真显示,系统基本能完成要求,由于设计思路出现问题,键盘没有正确的做出来,没有键盘电路,紧急情况也可以通过一个按钮来采取相关的动作。
6 心得体会这次单片机课程设计历时一个学期的时间,在这次设计过程里我们体验了从设计、画板、编程、焊板到调试的整个过程。
对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。
接着就是用AD6这个软件来画电路板,这个软件的应用上学期也学过了,但是学的时候感觉很简单,但是到了具体设计的时候,问题不断的出来,比如有的器件库里面没有封装,要自己花封装,这时候就很容易出问题,比如焊盘的大小,有的器件上焊盘大小不一样,有个别大的是用来固定的,这个很容易被忽略。
下来就是程序的设计了,虽然感觉交通灯程序没什么难的,就是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过我们的不断努力,还是写出来正确的代码。
上周学校终于把板子给做回来了,怀着紧张的心情一个器件一个器件的完成板子的焊接,最后通过串口线把程序下载到板子上,但是板子却没有意料中的效果,而且没一点现象,用万用表检查单片机的电压差不多为零,查出了问题所在松了口气,后来在网上查资料知道原来变压器的接口那三个引脚,两个GND必须短接,要不就不能正常供电,本以为短接后就正常了,但是数码管还是没反应,二极管基本可以正常显示,这时候真是一种煎熬,差了很久找不到原因,后来对照着原理图一个个的检查,最后发现原来是数码管封装错了,板子上的数码管公共极是3、8两个引脚,但是原理图上封装的事1、6,当时也没有注意,以为只要是共阴管就没问题了,没想到软件本身就存在错误。
通过这次课设,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力。
经历了从最初的设计到最后做出产品的开发过程,提高了对专业的认识及兴趣,对于我们工科来说,对以后就业有及其重大的影响。
参考文献[1] 徐维祥.单片微型机原理及应用大连理工大学出版社,2006.12[2]胡汉才.单片机原理与接口技术[M].北京: 清华大学大学出版社,2004.1-505.[3] 闫胜利.Altium Designer 6.X中文版使用教程电子工业出版社2007.6附录3 程序清单;------------------------------------;程序实现功能;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。
;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。
;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。
;工作寄存器及存储单元分配;1.工作寄存器;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器;2.片内存储单元;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元;3.标志位;00H:南北通行标志位; 01H:东西通行标志位;02H:紧急事件标志位;-----------------------------------SNF EQU 00H ;;;南北通行标志位EWF EQU 01H ;;;东西通行标志位URF EQU 02H ;;;紧急事件标志位ORG 0000HLJMP MAIN ;;;上电转主程序ORG 000BH ;;;定时中断入口LJMP DSZDORG 0003H ;;;紧急中断入口LJMP URZDORG 0030HMAIN: LCALL INIT ;;;调用初始化子程序LOOP: LCALL DIS ;;;循环执行显示子程序AJMP LOOP;///////////初始化程序INIT: SETB SNFSETB EWFSETB URFMOV R2,#20 ;;;定时器中断20次为1sMOV TMOD,#01H ;;;初始化定时器MOV TL0,#0B0HMOV TH0,#3CHSETB EA ;;;开定时中断与紧急中断SETB ET0SETB TR0SETB EX0SETB IT0 ;;;设置中断程控方式MOV DPTR,#TAB ;;;数值首地址放入DPTR中MOV 40H,#40 ;;;东南西北通行时间设置MOV 41H,#40MOV 30H,#40 ;;;通行时间初始化MOV 31H,#60MOV P0,#4CH ;;;初始化时南北通行并把交通灯状态分别放在32H和33H 中MOV 32H,#4CHMOV P2,#15HMOV 33H,#15HRET;////////////显示子程序DIS: MOV P3,#0DFH ;;;选中南北方向的十位数码管MOV A,30H ;;;把显示数据送人数码管显示MOV B,#10DIV ABMOVC A,@A+DPTRMOV P1,A ;;;LCALL D1MSMOV P3,#0EFH ;;;选中南北方向的个位数码管MOV A,B ;;;送入数码管显示MOVC A,@A+DPTRMOV P1,ALCALL D1MSMOV P3,#7FH ;;;选中第东西方向的十位数码管MOV A,31H ;;;送入数码管显示MOV B,#10DIV ABMOVC A,@A+DPTRMOV P1,ALCALL D1MSMOV P3,#0BFH ;;;选中第东西方向的个位数码管MOV A,BMOVC A,@A+DPTRMOV P1,ALCALL D1MSSETB P3.0SETB P3.1JNB P3.0,DIS_S ;;;查询是否第一个按键按下JNB P3.1,DIS_E ;;;查询是否第二个按键按下AJMP DIS_R ;;;没有键按下则返回DIS_S:LCALL D5MS ;;;按键去抖JNB P3.0,DIS_SNAJMP DIS_RDIS_SN:MOV 40H,#50 ;;;对通行时间从新分配,南北通行时间加长MOV 41H,#30AJMP DIS_RDIS_E:LCALL D5MS ;;;按键去抖JNB P3.1,DIS_EWAJMP DIS_RDIS_EW:MOV 40H,#30 ;;;东西通行时间加长MOV 41H,#50DIS_R:RET;///////定时中断处理程序DS_C: LJMP DS_R ;;;接力跳转DSZD: PUSH ACC ;;;保护现场PUSH PSWCLR TR0 ;;;关定时器及中断标志位并重新赋值CLR TF0MOV TL0,#0B0HMOV TH0,#3CHDJNZ R2,DS_C ;;;判断1m时间是否到达MOV R2,#20 ;;;到达重新赋值DEC 30H ;;;南北方向通行时间减一MOV A,30H ;;;把减一后的时间送入显示存储单元;;;;;;;南北通行到达最后4秒时黄灯闪烁DS_10:CJNE A,#4,DS_11 ;;;如果通行时间剩余4秒JNB SNF,DS_11 ;;;判断是否是南北通行MOV P0,#8AHMOV 32H, #8AH ;;;把交通灯状态存入存储单元(后面类似)DS_11:CJNE A,#3,DS_12 ;;;不是剩余3秒,返回JNB SNF,DS_12 ;;;不是南北通行时间,返回MOV P0,#88HMOV 32H, #88HDS_12:CJNE A,#2,DS_13JNB SNF,DS_13MOV P0,#8AHMOV 32H, #8AHDS_13:CJNE A,#1,DS_14JNB SNF,DS_14MOV P0,#88HMOV 32H, #88H;------------------------DS_14:JNZ DS_NE ;;;通行时间没有结束转向改变东西方向的数码管CPL SNF ;;;如果通行时间结束则对标志位取反JNB SNF,DS_1 ;;;判断是否南北通行MOV 30H,40H ;;;是,点亮相应的交通灯MOV P0,#4CHMOV 32H,#4CH ;;;存储交通灯状态MOV P2,#15HMOV 33H, #15H ;;;存储交通灯状态DS_NE:DEC 31H ;;;东西方向通行时间减一MOV A,31H ;;;把通行剩余时间送入显示存储单元;;;;;;;;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似略)DS_20:CJNE A,#4,DS_21JB EWF,DS_21MOV P0,#51HMOV 32H, #51HDS_21:CJNE A,#3,DS_22JB EWF,DS_22MOV P0,#41HMOV 32H, #41HDS_22:CJNE A,#2,DS_23JB EWF,DS_23MOV P0,#51HMOV 32H, #51HDS_23:CJNE A,#1,DS_24JB EWF,DS_24MOV P0,#41HMOV 32H, #41H;-----------------------------DS_24:JNZ DS_R ;;;东西方向时间没有结束,返回CPL EWF ;;;对通行状态取反JNB EWF,DS_2 ;;;东西方向通行时间到来,跳转MOV 31H,#80 ;;;东西方向通行结束,重新显示时间MOV P0,#89H ;;;点亮相应的交通灯MOV 32H, #89HMOV P2,#29HMOV 33H, #29HAJMP DS_RDS_1: MOV 30H,#80 ;;;南北通行时间结束,重新对显示存储单元赋值MOV P0,#89H ;;;执行转弯状态1MOV 32H, #89HMOV P2,#26HMOV 33H, #26HAJMP DS_NEDS_2: MOV 31H,41H ;;;东西方向开始通行,赋值予显示存储单元MOV P0,#61H ;;;点亮相应的交通灯MOV 32H, #61HMOV P2,#15HMOV 33H, #15HDS_R: SETB TR0POP PSW ;;;恢复现场POP ACCRETI;/////////////紧急中断处理程序URZD: PUSH ACC ;;;保护现场PUSH PSWCLR IE0 ;;;清除中断标志位CLR TR0 ;;;关定时器CPL URF ;;;紧急事件标志位JB URF,UR_CON ;;;紧急结束;跳转MOV P0,#49H ;;;各路口灯全显示红灯亮MOV P2,#15HAJMP UR_RUR_CON:SETB TR0 ;;;恢复正常交通MOV A,32HMOV P0,AMOV A,33HMOV P2,AUR_R: POP PSW ;;;恢复现场POP ACCRETI;////////////查表指令TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH DB 7DH, 07H, 7FH, 6FH;//////////延时5ms与1msD5MS: MOV R7,#5D1MS: MOV R7,#10MOV R6,#50L1: DJNZ R6,$DJNZ R7,L1RETEND。