单片机控制的交通灯控制系统
- 格式:doc
- 大小:125.50 KB
- 文档页数:11
基于单片机的交通灯控制系统设计毕业论文摘要:随着城市交通的日益发展,交通信号灯的控制方式也在不断地更新和优化。
本文基于单片机设计了一种交通灯控制系统,该系统具有高效、稳定和可靠的特点。
首先介绍了交通信号灯的发展背景和现有的控制系统,然后详细介绍了系统的硬件和软件设计,包括信号灯的控制逻辑、硬件电路的设计和单片机程序的编写等。
最后进行了实验测试,验证了系统的性能和可靠性。
实验结果表明,该交通灯控制系统能够有效地提高道路交通的效率和安全性,具有较好的应用前景。
关键词:交通灯控制系统、单片机、硬件设计、软件设计、实验测试第1章绪论1.1研究背景随着社会的不断发展和人口的快速增长,城市道路上的交通流量也在不断增加。
如何保障道路交通的安全和顺畅,成为了一个十分重要的问题。
交通信号灯作为一种重要的交通控制设备,对于减少交通事故和提高道路通行效率具有重要的作用。
传统的交通信号灯控制方式主要基于定时控制,缺乏智能化和动态性。
因此,我们需要开发一种新的交通灯控制系统,以满足现代交通需求。
1.2研究目的与意义本文旨在设计一种基于单片机的交通灯控制系统,提高交通灯的控制精度和灵活性,优化道路通行效率和交通安全性。
该系统具有高效、稳定和可靠的特点,适用于各种道路交通场景,并且可以根据实际情况进行灵活的调整。
第2章系统设计与实现2.1系统框架本系统由三个交通信号灯组成,分别为红灯、黄灯和绿灯。
这三个信号灯通过单片机控制,根据交通情况和车辆流量的变化来调整信号灯的显示状态。
2.2硬件设计本系统的硬件设计包括电源电路、信号灯电路和单片机控制电路等。
其中,电源电路提供系统所需的电源电压和电流;信号灯电路负责控制信号灯的亮灭;单片机控制电路负责接收和处理输入信号,并控制信号灯的显示状态。
2.3软件设计本系统的软件设计主要包括单片机程序的编写。
其中,单片机程序通过交通信号灯的控制逻辑和状态机设计,实现对信号灯的控制和调度。
第3章实验测试与结果分析为了验证系统的性能和可靠性,我们进行了一系列实验测试。
基于单片机的交通灯智能控制系统设计本毕业设计采用单片机为主控芯片来做为交通灯的单片机智能控制系统的控制器,采用AT89C52单片机为核心部分,用发光二极管来模拟交通灯显示状态,按键开关用来进行交通运行时的高低峰切换按键等,用数码管显示做为交通红黄绿灯亮的时间长短。
本次设计的交通灯的单片机智能控制系统模拟显示控制电路,综合运用到了C语言、单片机、电路设计、pcb板制作等专业知识。
当然也可以运用其它的方法来实现交通的智能系统的的控制,综合考虑考量各方面的因素最终决定用单片机设计,用52单片机来控制电路可以使该电路更为简单、制作也较为方便、性能等方面都可以得到提高。
目录1概述 (2)1.1设计背景 (2)1.2设计目的 (2)1.3设计要求 (2)1.4设计方案的比较与论证 (3)1.4.1交通灯供电方案选择 (3)1.4.2交通灯显示界面方案选择 (3)1.4.3交通灯输入方案选择 (3)1.5交通灯规则的方案 (4)1.5.1 交通灯相位的概念 (4)1.5.2交通灯状态 (4)1.5.3交通灯高低峰时期管理机制 (7)2系统硬件设计 (8)2.1系统的总体设计 (8)2.2单片机AT89C52介绍 (9)2.3系统各模块介绍 (10)2.3.1时钟电路 (10)2.3.2复位电路 (11)2.3.3电源电路 (11)2.3.4键控模块电路 (11)2.3.5二极管显示模块 (12)2.3.6 74HC573控制模块电路 (12)2.3.7数码管显示模块电路 (15)3软件部分设计 (15)3.1 keil uvision4 集成开发环境介绍 (15)3.2系统的总程序 (17)3.2.1系统主程序流程图 (17)3.2.2数码管显示程序 (19)3.2.3 定时器中断服务程序 (20)3.2.4外部中断服务程序 (22)4 Proteus仿真 (23)4.1 Proteus软件简介 (23)4.2 Proteus软件仿真 (25)5组装与调试 (27)5.1制作所需的元器件 (28)5.2硬件制作与调试中遇到的问题及解决方法 (28)5.3软件调试时遇到的问题以及解决方法 (28)5.4实物调试图 (28)6总结 (31)附录1 系统原理图 (32)附录2 系统PCB图 (32)附录3 主要代码 (33)1概述1.1设计背景在今天,红绿交通灯安装在各个交通道口上,已经变成疏导交通车辆最普遍和最有效的手段。
基于单片机的智能交通灯的设计智能交通灯是一种基于单片机控制的新型交通信号灯系统。
相比传统的交通信号灯,智能交通灯具有更高的智能化和自动化水平,能够根据实时交通流量和道路条件进行自适应调整,从而提高交通效率和安全性。
下面将介绍基于单片机的智能交通灯的设计。
首先,整个系统由交通灯控制器、传感器、电源和显示设备组成。
交通灯控制器采用单片机作为核心处理器,通过编程实现交通灯的自动控制。
传感器主要用于收集道路的实时交通流量数据,可以使用车辆检测器、红外线传感器等。
电源则提供系统所需的电能,可以通过交流电转直流电供电。
显示设备包括LED灯组成的交通信号灯。
其次,智能交通灯的设计要考虑到交通流量、道路条件和等待时间等因素。
通过传感器采集到的交通流量数据,可以实时判断道路上的车辆数量和行车速度情况,并根据这些数据来进行灯光的控制。
例如,当一些方向的交通流量较大时,该方向的灯光可以延长绿灯时间,以减少等待时间和堵塞情况。
同时,系统还可以根据实际道路条件进行调整,例如在下雨天或冰雪天气中,可以适当延长红灯时间,以提高行车安全性。
此外,智能交通灯系统还可以配备优先级设定功能。
这意味着交通灯可以根据不同交通参与者的特定需求来设置优先级顺序。
例如,救护车和消防车可以通过特定的信号发送给交通灯系统,以优先通行。
当系统接收到这些信号时,可以尽快改变交通灯状态,并确保畅通无阻地通行。
最后,在智能交通灯的设计过程中,还需要注意安全性和可靠性。
系统中的单片机必须能够稳定运行,并能够及时控制交通灯的状态。
同时,对于车辆和行人来说,应该提供明确的信号指示,以确保他们能够正确理解和响应交通灯的指示。
综上所述,基于单片机的智能交通灯的设计可以提高交通效率和安全性。
通过采集道路上的实时交通流量数据,并根据这些数据来自动调整交通灯的控制,可以减少交通拥堵和事故发生的概率。
此外,智能交通灯还可以根据不同交通参与者的特定需求来进行优先级设置,提高交通系统的灵活性和适应性。
基于单片机的交通灯控制系统需要包含以下组成部分:1.硬件设备组成:单片机、LED 灯、显示屏等硬件设备。
2.设计思路描述:交通灯控制系统的设计思路是基于定时器的,利用计数器和定时器来控制红绿灯的转换,同时通过按键检测实现手动控制。
3.程序设计:程序需要完成按键检测、信号灯控制和定时器计数等功能。
具体实现可以分为以下几步:(1) 根据硬件设备的引脚对应关系,定义各个引脚的控制方式和状态。
(2) 在程序中定义计时器和定时器,用于计时和设置红绿灯状态。
例如,计时器每隔一定时间就会触发定时器,设置红绿灯的状态,并且根据状态判断相应的亮灯和熄灯。
(3) 通过按键检测来实现手动控制,当检测到按键按下时,立即切换灯的状态,当再次按下时,又立即切换回之前的状态。
4.实现代码:下面是一个该系统的简单代码示例,供参考:#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit KEY1 = P3^0;//按键定义sbit RED = P2^2;//红灯定义sbit YELLOW = P2^1;//黄灯定义sbit GREEN = P2^0;//绿灯定义/*函数声明*/void initTimer0();void delay1ms(uint count);/*主函数*/int main(){initTimer0();/*初始化计时器*/while(1){if(KEY1 ==0){/*按键按下*/delay1ms(5);/*消抖*/if(KEY1 ==0){/*仍然按下*//*绿灯亮10s*/GREEN =1;delay1ms(10000);GREEN =0;/*黄灯亮3s*/YELLOW =1;delay1ms(3000);YELLOW =0;/*红灯亮7s*/RED =1;delay1ms(7000);RED =0;/*黄灯亮2s*/YELLOW =1;delay1ms(2000);YELLOW =0;}}}return0;}/*函数定义*/void initTimer0(){TMOD &=0xF0;TMOD |=0x01;TH0 =0xFC;TL0 =0x18;EA =1;ET0 =1;TR0 =1;}/*1ms延时函数*/void delay1ms(uint count){uint i,j;for(i=0;i<count;i++){for(j=0;j<125;j++){}}}/*计时器中断函数*/void timer0() interrupt 1{TH0 =0xFC;TL0 =0x18;}以上是一个简单的基于单片机的交通灯控制系统设计与实现示例。
单片机交通灯控制系统摘要:基于89C51单片机作为控制中心的交通灯控制系统,该系统有红、黄、绿三种信号灯显示功能,还有交通方向指示信号和倒计时功能。
关键词:单片机;控制系统;交通灯汽车工业的发展,带动着生产经济的发展,随之而来的是人们的购车热潮,越来越多的汽车增加了城市交通的负担,如何能够更有效的疏导交通已成为当今社会的一大难题,那么就需要有一套性能可靠,功能齐全,安全有效的交通灯控制系统,来合理指挥交通。
本文介绍的是一种基于89C51单片机作为控制中心的交通灯控制系统。
1系统控制的基本要求十字路口交通灯控制系统:东西方向、南北方向各有一组红、黄、绿三色信号灯,一组直行,左转,右转方向信号灯,有左转待停信号灯和一个时钟系统,时钟系统由两个LED组成,用于显示时间的变化。
具体要求为:1)要能够满足初始时东西向和南北向的红绿灯都亮红灯;2)在东西向路口亮绿灯40 s之后,转黄灯亮5 s,然后再转红灯亮40 s;3)南北向的红绿灯要能够与东西向相配合,再东西向绿灯亮的时候亮红灯,反之则亮绿灯;4)紧急事件发生之时,按下单脉冲按钮,则东西南北向都亮10 s红灯;5)东西向以及南北向的红绿灯时间要能够在LED显示器上显示;6)所有的上述时间设置,要能够满足根据车流量进行实时调节的需求。
2硬件电路的设计本次系统的硬件电路设计如图1所示。
如图1所示,本次构建的硬件系统包括了89C51单片机,接口芯片、交通灯以及时间显示几个重要的构成部分。
其中,89C51单片机是一个标注你的40引脚双列直插式的集成电路芯片,具有功能较强,功耗相对较低,而且能够适应恶劣环境下工作的特点,芯片内置了256KB数据存储以及4KB程序存储,非常适合本次构建的交通灯控制系统的实际需求。
接口芯片采用的是英特尔公司设计生产的8255A芯片,该芯片的满足I/O接口的实际需求,具有使用相对方便,通用性较强的特点,能够满足本系统设计的需求。
交通灯采用的是双色LED装置,包括了红色LED管芯以及绿色LED管芯,通过电平的加高或者调低,从而实现红灯、绿灯、黄灯的亮、灭。
毕业论文(设计) 题目基于单片机的交通灯控制系统设计学生姓名王义爱学号20061336043院系信息与控制学院专业自动化指导教师王玉芳二O一O年五月二十日目录1 绪论 (1)1.1研究意义 (1)1.2交通灯研究现状 (2)1.2.1 国内城市交通现状 (2)1.2.2 国际先进成果 (2)1.3研究内容 (2)2 总体方案设计 (3)3 硬件设计 (4)3.1 单片机概述 (4)3.2 电源电路 (7)3.3 检测电路 (8)3.3.1 红外传感器的发展 (8)3.3.2常用的红外传感器 (8)3.3.3 主动式红外传感器简介 (9)3.3.4 检测电路 (10)3.3 紧急按键K1电路 (11)3.4 红绿灯显示电路 (11)3.5 倒计时显示电路 (12)3.6振荡电路 (14)3.7复位电路 (14)4 系统软件设计 (15)4.1 主程序设计 (16)4.2延时子程序 (19)4.2.1 计数器硬件延时 (19)4.2.2 软件延时 (21)4.3 计数器计数 (22)4.4 数码管显示子程序 (22)4.5 黄灯闪烁子程序 (23)4.6 车流量算法子程序 (23)4.7 紧急车辆子程序 (24)5 系统实现 (25)5.1 仿真软件简介 (25)5.1.1 Proteus软件简介 (25)5.1.2 Keil软件简介 (26)5.2 仿真实现 (28)5.3 实物设计 (29)6 结束语 (31)参考文献 (32)致谢 (33)ABSTRACT (34)附录程序清单 (35)基于单片机的交通灯控制系统设计王义爱南京信息工程大学信息与控制学院南京 210044摘要:本文根据AT89C51单片机的特点及交通灯在实际控制中的特点,提出了一种用单片机自动控制交通灯以及时间显示的方法,同时给出了软硬件设计的方法。
设计的过程包括硬件电路设计和程序设计两大步骤,对在单片机应用中可能遇到的重要设计问题都有涉足。
基于51单片机的交通信号灯模拟控制系统一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图绘制和仿真。
3.掌握单片机C语言软件开发以及联合仿真。
二、实验内容和原理实验内容:1.根据题目绘制单片机电路原理图。
2.绘制程序流程图并编写C语言程序3.在仿真程序中进行联合仿真,最后提交实验报告三、主要仪器设备keilC,proteus。
四、操作方法与实验步骤4.1 题目要求用单片机设计一个十字路口交通灯模拟控制系统,要求东西、南北两个方向都通行20秒,警告3秒,禁止20秒,同时要考虑到东西、南北两个方向出现异常情况,出现异常情况器该方向通行60秒。
4.2 系统设计思路南北的绿红黄发光二极管与单片机AT89C51单片机的P1.0,P1.1,P1.2相连。
东西的绿红黄发光二极管与单片机AT89C51单片机的P1.4,P1.5,P1.6相连。
改变单片机P1口编码控制交通灯。
控制过程中会出现两种异常情况用外中断0和外中断1处理。
时间单位采用500ms信号,由定时/计数器0定时50ms,循环10次产生,定时/计数器0采用查询方式,主程序中设定定时/计数器0的工作方式:方式1。
4.2 电路图绘制(包含详细的参数选定文字和图像叙述)C1=1nF,C2=1nF,C3=1nF,R1=300,R2=300,R3=300,R4=300,R5=300,R6=300,R7=300,R8=300,R9=300,R10=300,R11=300,R12=300,R13=3004.3 C程序编制(包含详细的文字和程序流程图)4.3 仿真分析(包含文字和图像叙述)东西绿灯,南北红灯东西黄灯,南北红灯南北绿灯,东西红灯南北黄灯,东西红灯东西发生异常时,东西通行,南北禁止,东西方向绿灯闪,南北方向红灯闪南北发生异常时,南北通行,东西禁止,南北方向绿灯闪,东西方向红灯闪五、讨论和心得(不少于100字)通过这次对交通灯信号的模拟,了解了交通灯4种正常状态,2种异常状态,它们分别是:状态1,东西方向绿灯,南北方向红灯20秒。
单片机课程设计交通灯总结在单片机课程设计中设计交通灯控制系统是一个常见而有趣的项目。
以下是一个关于交通灯控制系统单片机课程设计的总结:设计目标:实现一个模拟交通路口的交通灯控制系统,包括红灯、绿灯、黄灯状态的切换,考虑不同方向车辆的通行情况。
硬件与软件要求:1.使用单片机(如AT89C51)作为主控制器。
2.连接LED灯模拟交通灯的红、黄、绿三个状态。
3.设置按钮或传感器来模拟车辆和行人的触发信号。
4.使用编程语言(如C语言)编写单片机程序,实现交通灯的状态切换逻辑。
设计步骤:1.确定交通灯状态:定义红、黄、绿三个状态,确定每个状态的持续时间。
2.设计状态切换逻辑:编写程序逻辑,根据不同的触发条件切换交通灯的状态。
例如,通过按钮触发或设置定时器来模拟车辆和行人的触发。
3.处理不同方向的通行:考虑路口不同方向的车辆通行情况,确保交通灯切换的合理性。
可以设置不同方向的灯的状态互斥。
4.实现程序代码:使用C语言等编写程序代码,并通过编译器将代码烧录到单片机中。
5.调试与优化:在实际硬件上进行调试,确保交通灯的状态切换和触发条件的逻辑正确。
根据实际情况优化代码,提高系统的稳定性和可靠性。
设计成果:成功设计并实现了一个交通灯控制系统,具有良好的交互性和可扩展性。
系统能够模拟真实路口的交通流量情况,通过合理的状态切换实现车辆和行人的有序通行。
学到的知识与技能:1.掌握单片机编程技能,包括IO口控制、定时器使用等。
2.熟悉硬件与软件协同设计的过程。
3.提高了系统设计和调试的能力。
4.学习了如何考虑不同方向车辆通行情况,提高了系统的实用性。
反思与展望:通过这个项目,我更深入地理解了单片机的工作原理和编程技术。
在未来,可以考虑增加更多的功能,如紧急情况下的交通灯切换、LED显示屏显示等,以提高系统的智能化和实用性。
这个课程设计不仅锻炼了我的技术能力,也培养了我对系统设计的整体思考能力。
《基于单片机的智能交通灯控制系统的研究》篇一一、引言随着城市化进程的加快,交通问题日益突出,交通灯作为城市交通管理的重要设施,其性能和智能化程度直接影响到交通的顺畅和安全。
因此,基于单片机的智能交通灯控制系统的研究具有重要的现实意义。
本文将从系统设计、硬件实现、软件编程、性能优化等方面对基于单片机的智能交通灯控制系统进行研究。
二、系统设计1. 系统架构本系统采用单片机作为核心控制器,通过传感器、执行器等设备实现交通灯的智能控制。
系统架构包括单片机、输入设备、输出设备以及通信模块等部分。
其中,输入设备包括车辆检测器、行人检测器等,用于检测交通状况;输出设备为交通灯,用于指示交通;通信模块用于实现系统与上位机的通信。
2. 工作原理系统通过传感器实时检测交通状况,根据检测结果控制交通灯的亮灭。
当检测到有车辆或行人通过时,系统会相应地调整交通灯的亮灯时间,以保证交通的顺畅和安全。
同时,系统还具有自动调节功能,根据实际交通情况自动调整亮灯时间,以适应不同的交通状况。
三、硬件实现1. 单片机选择本系统选用STC12C5A60S2系列单片机作为核心控制器,该单片机具有高速度、低功耗、低成本等优点,适合应用于本系统中。
2. 传感器选择系统采用红外线车辆检测器和CCD行人检测器等传感器实现交通状况的实时检测。
这些传感器具有高灵敏度、低误报率等优点,能够有效地提高系统的性能。
3. 执行器选择执行器采用LED交通灯,具有高亮度、长寿命等优点,能够有效地指示交通。
四、软件编程1. 编程语言选择本系统采用C语言进行编程,C语言具有代码效率高、可移植性强等优点,适合应用于本系统中。
2. 程序设计思路程序设计包括主程序和中断服务程序两部分。
主程序负责初始化系统参数和控制程序的循环执行;中断服务程序负责处理传感器输入的信号和执行相应的控制命令。
在程序设计过程中,应充分考虑系统的实时性和稳定性要求。
五、性能优化1. 算法优化通过对算法进行优化,可以提高系统的响应速度和准确性。
基于AT89C51的交通灯控制前言:今天, 红绿灯安装在各个道口上, 已经成为疏导交通车辆最常见和最有效的手段, 这一技术早在19世纪就已经出现。
1858年, 在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械扳手式信号灯, 用以指挥马车通行, 这是世界上最早的交通信号灯。
从那以后经过不断地发展, 逐渐演变成现在的交通信号灯控制系统, 红灯亮表示“停止”, 绿灯亮表示“通行”, 黄灯是警告信号。
信号灯的出现, 使交通得以有效管制, 对于疏导交通流量、提高道路通行能力减少交通事故有明显效果。
现在有许多方法可以实现交通信号灯控制,本设计就是基于AT89C51单片机模拟交通灯的控制。
实现了交通灯的主要功能,而且添加了一些功能。
同时由于仿真软件的原因,对一些功能做了简化。
基本上对现实生活中的交通灯做了比较完备的模拟。
下面就设计过程及关键技术作详细介绍。
硬件系统设计:为了减小制作成本,本设计选用了价格低廉的AT89C51,性价比高,同时减少了外围电路(如看门狗芯片、8255A等),仅用了晶体振荡电路和复位电路。
当然这样做增加了软件代码量。
器件清单:(注:模拟用的交通灯、LED等器件不包含在内)单片机:AT89C51一块晶体振荡器:6MHz一个电容:22pF 2个;22μF 2个电阻:1kΩ2个;上拉电阻组1个交通管理方案:南北、东西两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为南北、东西两干道的公共停车时间。
设南北道比东西道的车流量大。
十字路口的东西向、南北向各有一组红绿灯和一个时钟系统, 时钟系统由两个LED 组成, 用于显示红绿灯的时间, 具体要求如下:(1)初始时东西方向亮红灯,南北方向亮绿灯。
(2)然后南北向路口绿灯亮38s后转黄灯亮2s,再转红灯亮20s。
(3)相应地东西向红绿灯工作顺序为红灯亮40s后转绿灯亮18s, 再转黄灯亮2s, 以此进行循环。
(4)如果发生紧急事件, 则按下按钮, 此时东西、南北向都亮红灯。
还可以各个方向单独通行。
(5)时钟采用倒计时方式显示, 即各灯亮时, 时钟为点亮的最大时间, 以后每1s 显示数据减1, 直到减为0 以后指示灯再进行变换。
(6)高峰时,各方向通行时间缩短,南北方向30s,东西方向10s。
(7)所有的时间设置都可以根据车流量实际情况进行调整。
(8)可以自动检测违章闯红灯。
总之,本设计所实现的功能除了典型的交通灯功能之外,只要功能还有:全部禁行、全部通行、南北方向通行、东西方向通行、高峰控制、警报提示、各方向各时段通行时间自定义、手动复位等。
注:“警报提示”是以一个开关模拟传感器发现闯红灯时所传输的信号。
交通灯系统硬件设计图如下:注:具体操作方法:(1)图中按键都为脉冲式按键,开关都为电平式按键。
(2)自定义各方向通行时间时,按“设定时间”键开始设定,通过“高峰控制”键控制当前设定的时间是正常时段的还是高峰时段的,高电平为正常时段,低电平为高峰时段。
通过“选择方向”键选择当前设定的时间是南北方向的还是东西方向的,高电平为南北方向,低电平为东西方向。
通过“时间加一”键使当前时间加1。
当确定当前设定的时间为所想要设置的时间时,按“确定设时”键可以确定。
要结束设置时,按“设定结束”可以结束设置。
软件实现:由于程序比较长,而且程序注释已经做的比较详细,所以这里只给出整体粗略流程图,以帮助理解程序整体思路。
程序的软件设计中添加了“看门狗”,属于自定义软件“看门狗”。
主要是由于交通灯工作环境恶劣,噪声干扰大,容易发生程序“走飞”,即程序执行偏转到了一个没有定义的程序空间,从而导致“死机”现象。
“看门狗”的设置解决了这个问题。
本设计中,“看门狗”复位时间是40ms。
交通灯控制模拟程序如下:DISPLAYNUM EQU 51H ;定义显示倒计时寄存器COUNTER EQU 52H ;定义计时循环次数寄存器NSNORM EQU 53H ;定义正常时南北通行时间寄存器EWNORM EQU 54H ;定义正常时东西通行时间寄存器NSPEAK EQU 55H ;定义高峰时南北通行时间寄存器EWPEAK EQU 56H ;定义高峰时东西通行时间寄存器NSPUT EQU 57H ;南北重置缓存EWPUT EQU 58H ;东西重置缓存DIRECTION EQU 00H ;方向标志DISPLAYYELLOW EQU 01H ;显示黄灯标志ONESECOND EQU 02H ;计时到一秒标志SETNEW EQU 03H ;重新设置标志LOADNEWFLAG EQU 04H ;确定输入标志NR EQU P0.0 ;南北方向红灯NY EQU P0.1 ;南北方向黄灯NG EQU P0.2 ;南北方向绿灯ER EQU P0.3 ;东西方向红灯EY EQU P0.4 ;东西方向黄灯EG EQU P0.5 ;东西方向绿灯BREAKRULE EQU P2.0 ;交通违章模拟信号输入SOUND EQU P2.1 ;警报声输出信号PEAKorNORM EQU P2.2 ;高峰信号输入ALLSTOP EQU P2.3 ;全部禁行输入ALLGO EQU P2.4 ;全部通行输入NSTHROUGH EQU P2.5 ;南北通行输入EWTHROUGH EQU P2.6 ;东西通行输入SELECTDIR EQU P2.7 ;方向选择输入ORG 0000HLJMP MAIN ;跳转到主函数ORG 0003HLJMP RESET ;跳转到设定时间子函数ORG 000BHLJMP TIME ;跳转到定时子函数ORG 001BHLJMP DOG ;看门狗子程序ORG 0100HMAIN: MOV NSNORM,#28H ;主程序开始,各方向寄存器赋初值MOV EWNORM,#14HMOV NSPEAK,#1EHMOV EWPEAK,#0AHREMAIN:MOV COUNTER,#0AH ;设置计数1秒的循环次数为10SETB DIRECTION ;设置通车方向标志,默认从南北方向开始CLR DISPLAYYELLOW ;设定各个标志、寄存器的初值CLR ONESECONDCLR SETNEWCLR SOUNDJNB PEAKorNORM,PEAKINPUTMOV NSPUT,NSNORMMOV EWPUT,EWNORMSJMP DISPLAYNUMPUTPEAKINPUT: MOV NSPUT,NSPEAKMOV EWPUT,EWPEAKDISPLAYNUMPUT: MOV DISPLAYNUM,NSPUT ;设置倒计时初值MOV SP,#5FH ;设置堆栈内第一个数位置为60HMOV TMOD,#11H ;T0设置为方式1定时,T1设置为方式1定时LCALL FEEDDOG ;喂狗MOV TL0,#0B0H ;为T0设置初值,使定时为0.1秒MOV TH0,#3CHSTART: SETB EX0 ;开中断0SETB IT0 ;设置中断0为跳沿触发SETB TR0 ;启动T0SETB ET0 ;允许T0中断SETB ET1 ;开中断1,用于看门狗SETB PX0 ;设置"设定时间"中断为高级中断CLR PT0 ;设置定时器为低级中断SETB PT1 ;设置看门狗中断为高级中断SETB EA ;CPU开放中断LCALL LIGHT ;开始显示交通灯、倒计时LCALL DISPLAYLED;------------------------------重定时检测---------------------------------------- LOOP: LCALL FEEDDOG ;喂狗JB SETNEW,REMAIN ;检测是否已经重新设定时间;------------------------------计时到1秒检测------------------------------------- JNB ONESECOND,ALLREDCLR ONESECONDDEC DISPLAYNUMMOV A,DISPLAYNUMCJNE A,#02H,EQ0SETB DISPLAYYELLOWLCALL LIGHTLJMP NUMDECLINEEQ0: CJNE A,#00H,NUMDECLINECLR DISPLAYYELLOWCPL DIRECTIONLCALL LIGHT ;LED交通灯显示LCALL RELOADNUMDECLINE: LCALL DISPLAYLED ;显示倒计时剩余时间;------------------------------全部禁行------------------------------------------ ALLRED:JB ALLSTOP,NSCLEAR ;判断是否全部禁止CLR TR0 ;停止计时SETB NR ;都亮红灯CLR NYCLR NGSETB ERCLR EYCLR EGALLREDWAIT: LCALL FEEDDOG ;等待恢复JB ALLSTOP,ALLREDBACKSJMP ALLREDWAITALLREDBACK: SETB TR0 ;继续计时,禁止前交通情况LCALL LIGHT;------------------------------南北通行------------------------------------------ NSCLEAR: JB NSTHROUGH,EWCLEAR ;判断是否南北通行CLR TR0 ;停止计数CLR NR ;南北方向通行CLR NYSETB NGSETB ERCLR EYCLR EGNSCLEARWAIT: LCALL FEEDDOG ;等待恢复JB NSTHROUGH,NSCLEARBACKSJMP NSCLEARWAITNSCLEARBACK: SETB TR0 ;继续计时,恢复以前交通情况LCALL LIGHT;------------------------------东西通行------------------------------------------ EWCLEAR: JB EWTHROUGH,ALLYELLOW ;判断是否东西通行CLR TR0 ;停止计数SETB NR ;东西通行CLR NYCLR NGCLR ERCLR EYSETB EGEWCLEARWAIT: LCALL FEEDDOG ;等待恢复JB EWTHROUGH,EWCLEARBACKSJMP EWCLEARWAITEWCLEARBACK: SETB TR0 ;继续计时,恢复以前交通情况LCALL LIGHTSJMP ALLYELLOW;------------------------------全部通行------------------------------------------NEXT: LJMP CHECKRULEALLYELLOW: JB ALLGO,NEXT ;判断是否全部通行CLR TR0 ;停止计时CLR NR ;全部通行SETB NYCLR NGCLR ERSETB EYCLR EGALLYELLOWWAIT: LCALL FEEDDOG ;等待恢复,并检测是否有全部禁行、南北通行。