交通灯控制模拟程序
实验八 模拟交通灯(Keil与Protenus联合)

实验八模拟交通灯一、实验目的1.了解单片机P0口的功能及使用方法;2.掌握在µVision环境中设计调试P0口应用程序的方法;3.学习运用程序控制P0口实现模拟交通灯控制。
二、实验仪器和设备Keil软件;Proteus软件;THKSCM-2综合实验装置;三、实验原理及实验内容使用单片机P0口模拟交通灯控制。
模拟控制就是以红、绿、黄色4组12个发光二极管表示交通信号灯。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1,东西方向的绿灯亮,东西方向可以通车,而南北方向的红灯亮,南北方向的车禁止通行。
过一段时间转状态2,东西绿灯灭后,黄灯亮,延时几秒,南北仍然红灯。
再转状态3,南北方向的绿灯亮,南北方向可以通车,而东西方向的红灯亮,东西方向禁止车辆通行。
过一段时间转状态4,南北绿灯灭后亮黄灯,延时几秒,东西方向仍然红灯亮。
最后循环至状态1。
1.硬件设计在桌面上双击图标,打开ISIS 7 Professional窗口。
单击菜单命令“File”→“New Design”,新建一个DEFAULT模版,保存文件名为“模拟交通灯.DSN”。
在器件选择按钮中单击“P”按钮,或执行菜单命令“Library”→“Pick Device/Symbol”,添加如表8-1所示的元件。
注意:在ISIS中,单片机的型号必须与在Keil中选择的型号完全一致。
表8-1 模拟交通灯所用的元件单片机A T89C51 瓷片电容CAP30pF 按钮BUTTON 排阻RESPACK-8电解电容CAP-ELEC 晶振CRYSTAL 12MHz 电阻RES 发光二极管TRAFFIC LIGHTS 在ISIS原理图编辑窗口中放置元件,在单击工具箱中的“元件终端”图标,在对象选择器中单击“POWER”和“GROUND”放置电源和地。
放置好元件后,布好线。
左键双击各元件,设置相应元件参数,完成电路图的设计,如图8-1所示。
交通灯的PLC程序设计

交通灯的PLC程序设计摘要PLC(可编程逻辑控制器)是一种用于自动化控制的计算机设备。
本文将介绍在交通灯系统中使用PLC进行控制的程序设计。
介绍随着城市化的发展,交通拥堵已经成为了一个普遍的现象。
为了解决交通拥堵问题,并提高道路交通的安全性,交通灯系统变得越来越重要。
在交通灯系统中,使用PLC控制可以实现精确、可靠、高效的控制方式。
PLC是一种专业的控制器,主要用于工业自动化控制。
PLC能够将输入的控制信号进行逻辑处理,并输出相应的控制信号,实现可编程的自动控制。
在交通灯系统中,PLC负责控制信号灯的开关,保证交通信号灯的正常运转。
本文将介绍在交通灯系统中使用PLC的程序设计。
该设计针对的是普通十字路口,控制红、黄、绿三种信号灯的开关顺序,以保证交通流畅和交通安全。
PLC程序设计逻辑控制在交通灯系统中,PLC将接受来自传感器的信号,根据这些信号进行逻辑运算,从而控制信号灯的开关。
通过逻辑运算,PLC可以实现绿灯亮、黄灯亮、红灯亮等不同的控制方式。
PLC的逻辑运算主要包括开关量逻辑和模拟量逻辑两种方式。
对于交通灯系统来说,开关量逻辑是最常用的控制方式,这是因为信号灯的开关只有两种状态:开和关。
控制程序交通灯系统中使用的PLC程序通常是基于状态机的控制方式。
状态机是一种基于状态转移的控制模型,是一种理论模型,用于描述有限个状态及其之间的转移。
交通灯系统中的PLC程序一般会分为两部分:状态转移表和状态转移图。
状态转移表用于记录系统中所有的状态和它们之间的转移关系,状态转移图则是在状态转移表的基础上对状态之间的关系进行图形化表示。
下面是一个简单的状态转移表,用于描述交通灯系统中红、黄、绿三种灯的控制状态:当前状态输入信号下一状态红灯等待绿灯黄灯等待红灯绿灯等待黄灯红灯或黄灯非等待黄灯绿灯非等待红灯PLC程序实现在实现PLC程序时,需要根据状态转移图和状态转移表编写程序。
在交通灯系统中,PLC的输入端接收传感器信号,根据传感器信号和状态转移表的状态转移关系来更新PLC的输出信号。
交通灯控制模拟程序

交通灯控制模拟程序设计;*************定义数据段***********************************************data segmenttitle1 db 'Traffic-System'deng db '# # #'sing1 db 'South-North'sing2 db 'East - West'sing3 db 'Red time(scend):'time db 'Time:'sing4 db 'Yellow time(scend):'buff db 4 ;键盘缓冲区buff1 db 3 dup(?) ;工作计数区buff2 db 3 dup(?) ;数据保存区yellow db ? ;黄灯时间mode db 'Mode:auto(Y/N)?:'ans db ?ting3 db 'Red time(scend):030'ting4 db 'Yellow time(scend):5';************************主程序段********************************************** data endscode segmentassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov es,axcall title2 ;初始化标题q0: call mode1 ;模式选择自动或手动call scanfcall atuo ; 默认设置参数启动lea si,anscmp byte ptr[si],'y'jz q1cmp byte ptr[si],'n'jnz q0call ask1 ;设置红灯时间call scanf0call ask2 ;设置黄灯时间q1: call init1 ; 初始化灯光call init2lea si,buff;复制数据buff-buff1,保存显示时间inc siinc silea di,buff1cldmov cx,3REP movsblea si,buff1;复制数据buff1-buff2,保存显示时间lea di,buff2cldmov cx,3REP movsb;********************子程序设计************************************** ;*******状态一:南北方向红灯,东西方向绿灯***************************** start1:lea si,buff2 ;复制数据buff2-buff1,保存显示时间lea di,buff1cldmov cx,3REP movsblea di,buff1a0: cmp byte ptr[di+2],30h ;数据处理部分ja a1add byte ptr[di+2],10sub byte ptr[di+1],1a1: sub byte ptr[di+2],1cmp byte ptr[di+1],30hjnc a2add byte ptr[di+1],10sub byte ptr[di],1a2: cmp byte ptr[di],30hjnc a3jmp start2 ; 换灯a3: call nrcall write0lea si,yellowmov al,[si]cmp byte ptr[di+2],al ;最后五秒绿灯变黄灯jna a4jmp a8a4: cmp byte ptr[di+1],30hjna a5jmp a8a5: cmp byte ptr[di],30hja a8call eyjmp a9a8: call ega9: call delay ;延时一秒左右jmp a0;********状态二:南北方向绿灯,东西方向红灯**************************** start2:lea si,buff2 ;复制数据buff2-buff1,保存显示时间lea di,buff1cldmov cx,3REP movsblea di,buff1b0: cmp byte ptr[di+2],30h ;数据处理部分ja b1add byte ptr[di+2],10sub byte ptr[di+1],1b1: sub byte ptr[di+2],1cmp byte ptr[di+1],30hjnc b2add byte ptr[di+1],10sub byte ptr[di],1b2: cmp byte ptr[di],30hjnc b3jmp start1 ; 换灯b3: call ercall write0lea si,yellowmov al,[si]cmp byte ptr[di+2],al ;最后五秒绿灯变黄灯jna b4jmp b8b4: cmp byte ptr[di+1],30hjna b5jmp b8b5: cmp byte ptr[di],30hja b8call nyjmp b9b8: call ngb9: call delay ;延时一秒左右jmp b0;******模式设置***************mode1 procmov cx,16 ;设置时间lea bp,modemov dh,5mov dl,2mov al,1mov bl,07hmov ah,13hint 10hretmode1 endp;**********标题***************title2 procmov cx,14 ;设置时间lea bp,title1mov dh,1mov dl,25mov al,1mov bl,07hmov ah,13hint 10hrettitle2 endp;*******交互界面时间设置1******* ask1 procmov cx,16 ;设置时间lea bp,sing3mov dh,9mov dl,2mov al,1mov bl,06hmov ah,13hint 10hretask1 endp;*********交互界面时间设置2****** ask2 procmov cx,19 ;设置时间lea bp,sing4mov dh,13mov dl,25mov al,1mov bl,06hmov ah,13hint 10hretask2 endp;***********键盘输入设置******* scanf:mov ah,01hint 21hlea si,ansmov [si],alret;***********键盘0输入设置****** scanf0:lea dx,buffmov ah,0ahint 21hret;*********键盘1输入设置******* scanf1:mov ah,01hint 21hlea si,yellowmov [si],alret;*************南北灯的初始化***** init1:mov cx,11 ;设置标题南北lea bp,sing1mov dh,7mov dl,30mov al,0mov bl,07hmov ah,13hint 10hret;***********东西方向的初始化****init2:mov cx,11 ;设置标题东西lea bp,sing2mov dh,11mov dl,30mov al,0mov bl,07hmov ah,13hint 10hret;*********南北方向交通灯函数***************************************** ng: mov cx,7lea bp,dengmov dh,7mov dl,47mov al,0mov bl,02h ;设置颜色绿色mov ah,13hint 10hretny: mov cx,7mov dh,7lea bp,dengmov dl,47mov al,0mov bl,0eh ;设置颜色黄色mov ah,13hint 10hretnr: mov cx,7mov dh,7lea bp,dengmov dl,47mov al,0mov bl,04h ;设置颜色红色mov ah,13hint 10hret;********东西方向交通灯函数***************************************** eg: mov cx,7lea bp,dengmov dh,11mov dl,47mov al,0mov bl,02h ;设置颜色绿色mov ah,13hint 10hretey: mov cx,7mov dh,11lea bp,dengmov dl,47mov al,0mov bl,0eh ;设置颜色黄色mov ah,13hint 10hreter: mov cx,7mov dh,11lea bp,dengmov dl,47mov al,0mov bl,04h ;设置颜色红色mov ah,13hint 10hret;*****************时间显示函数********************************** write0:mov cx,3lea bp,buff1mov dh,7mov dl,60mov al,1mov bl,04hmov ah,13hint 10hretwrite1:mov cx,3lea bp,buff1mov dh,11mov dl,60mov al,1mov bl,04hmov ah,13hint 10hret;*************默认设置红灯30秒,黄灯5秒************************** atuo: mov cx,19 ;红灯默认时间30秒lea bp,ting3mov dh,9mov dl,2mov al,1mov bl,07hmov ah,13hint 10hmov cx,20 ;黄灯默认时间5秒lea bp,ting4mov dh,13mov dl,2mov al,1mov bl,07hmov ah,13hint 10hlea si,buffmov byte ptr[si+2],30hmov byte ptr[si+3],33hmov byte ptr[si+4],30hlea si, yellowmov byte ptr[si],35hret;*****************延时函数*************************************** delay:mov dx,25000l1: mov cx,30000l2: loop l2dec dxjnz l1retcode endsend start。
交通灯程序

交通灯程序简介本文档将介绍一个基于Arduino的交通灯程序。
这个程序可以模拟一个交叉路口的交通灯控制系统,通过控制红绿灯的亮灭来实现交通的有序进行。
硬件准备在运行本程序之前,你需要准备以下硬件设备:1.Arduino控制板2.交通灯模块3.杜邦线(用于连接Arduino和交通灯模块)程序结构本程序的结构如下所示:// 引入交通灯控制库#include <TrafficLight.h>// 定义交通灯引脚const int redPin = 13;const int yellowPin = 12;const int greenPin = 11;// 创建交通灯对象TrafficLight trafficLight(redPin, yellowPin, gree nPin);void setup() {// 初始化交通灯trafficLight.init();}void loop() {// 交通灯切换到红灯trafficLight.turnRed();delay(5000); // 停留5秒钟// 交通灯切换到绿灯trafficLight.turnGreen();delay(10000); // 停留10秒钟// 交通灯切换到黄灯trafficLight.turnYellow();delay(2000); // 停留2秒钟}使用说明硬件连接1.将Arduino控制板连接到电脑并打开Arduino开发环境。
2.将交通灯模块的红灯引脚连接到Arduino的13号引脚。
3.将交通灯模块的黄灯引脚连接到Arduino的12号引脚。
4.将交通灯模块的绿灯引脚连接到Arduino的11号引脚。
程序上传1.在Arduino开发环境中打开本程序。
2.选择正确的Arduino控制板和端口。
3.点击“上传”按钮将程序上传到Arduino控制板。
查看结果上传完成后,你可以观察交通灯模块的亮灭来判断交通灯的状态。
DSP交通灯综合控制程序代码

DSP原理及C程序开发交通灯综合控制实验及程序代码一、实验目的◇熟悉使用ICETECK-F2812-A评估板控制ICETECK-CTR上交通灯的方法◇掌握TMS320F2812DSP定时器的使用和编程◇掌握TMS320F2812DSP外中断的使用和编程二、实验要求1、交通灯控制要求◇交通灯分红黄绿三色,东、南、西、北各一组◇计时显示:8*8点阵显示两位计数◇正常交通控制信号顺序①南北绿灯:东西红灯(20s)②南北绿灯闪烁③南北黄灯④南北红灯,东西黄灯⑤东西绿灯(20s)⑥东西绿灯闪烁⑦东西黄灯⑧返回1循环控制◇紧急情况处理①当任意方向通行剩余时间多于10s,将时间给为10s②正常变换到四面红灯(20s)③直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)2、交通灯模拟利用ICETECK-CTR上的一组发光二极管(共12只,分为东西南北四组、红黄绿三色)的亮灭实现交通信号的模拟;3、计时显示利用ICETEK-CTR上的发光二极管显示阵列模拟显示4、计时利用TMS320F2812DSP片上定时器,定时产生时钟计数,再利用此计数对应具体时间5、紧急情况利用ICETECK-CTR上键盘产生外中断,中断正常信号顺序,模拟突发情况6、程序设计由于控制是由不同的各种状态按顺序发生的,可采用状态机控制方法来实现、◇首先列举所有可能发生的状态◇然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制◇对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成三、实验步骤1.实验准备(1)连接实验设备:(2)连接实验箱附带的键盘的PS2插头到ICETEK-CTR的“键盘接口”P8。
(3)将ICETEK-CTR板的供电电源开关拨动到“开”的位置。
2.设置Code Composer Studio3.3在硬件仿真(Emulator)方式下运行。
3.启动Code Composer Studio 3.3,选择菜单Debug→Connect ; Debug→Reset CPU。
实验 十字路口交通灯控制的模拟

30 25 3 2实验二十字路口交通灯控制的模拟在S22 S7-200模拟实验挂件(二)完成本实验。
一、实验目的熟练使用各基本指令,根据控制要求,掌握PLC的编程方法和程序调试方法,使学生了解用PLC解决一个实际问题的全过程。
二、控制要求信号灯受一个启动开关控制,当启动开关接通时,信号灯系统开始工作,且先南北红灯亮,东西绿灯亮。
当启动开关断开时,所有信号灯都熄灭。
南北红灯亮维持30秒,在南北红灯亮的同时东西绿灯也亮,并维持25秒。
到25秒时,东西绿灯闪亮,闪亮3秒后熄灭。
在东西绿灯熄灭时,东西黄灯亮,并维持2秒。
到2秒时,东西黄灯熄灭,东西红灯亮,同时,南北红灯熄灭,绿灯亮。
东西红灯亮维持30秒。
南北绿灯亮维持25秒,然后闪亮3秒后熄灭。
同时南北黄灯亮,维持2秒后熄灭,这时南北红灯亮,东西绿灯亮。
周而复始三、十字路口交通灯控制的实验面板图:五、工作过程当启动开关SD合上时,I0.0触点接通,Q0.2得电,南北红灯亮;同时Q0.2的动合触点闭合,Q0.3线圈得电,东西绿灯亮。
1秒后,T49的动合触点闭合,Q0.7线圈得电,模拟东西向行驶车的灯亮。
维持到20秒,T43的动合触点接通,与该触点串联的T59动合触点每隔0.5秒导通0.5秒,从而使东西绿灯闪烁。
又过3秒,T44的动断触点断开,Q0.3线圈失电,东西绿灯灭;此时T44的动合触点闭合、T47的动断触点断开,Q0.4线圈得电,东西黄灯亮,Q0.7线圈失电,模拟东西向行驶车的灯灭。
再过2秒后,T42的动断触点断开,Q0.4线圈失电,东西黄灯灭;此时起动累计时间达25秒,T37的动断触点断开,Q0.2线圈失电,南北红灯灭,T37的动合触点闭合,Q0.5线圈得电,东西红灯亮,Q0.5的动合触点闭合,Q0.0线圈得电,南北绿灯亮。
1秒后,T50的动合触点闭合,Q0.6线圈得电,模拟南北向行驶车的灯亮。
又经过25秒,即起动累计时间为50秒时,T38动合触点闭合,与该触点串联的T59的触点每隔0.5秒导通0.5秒,从而使南北绿灯闪烁;闪烁3秒,T39动断触点断开,Q0.0线圈失电,南北绿灯灭;此时T39的动合触点闭合、T48的动断触点断开,Q0.1线圈得电,南北黄灯亮,Q0.6线圈失电,模拟南北向行驶车的灯灭。
python仿真控制交通信号灯的编程程序

python仿真控制交通信号灯的编程程序在现代城市交通中,交通信号灯起着至关重要的作用,它们通过控制车辆流量和行人通行,维持道路交通的有序进行。
而为了合理优化交通信号灯的控制,提升交通效率,减少拥堵现象的发生,人们开始采用编程仿真的方式来控制交通信号灯。
本文将介绍使用Python编程语言实现的仿真控制交通信号灯的程序。
一、仿真环境搭建在开始编写交通信号灯控制程序之前,我们首先需要搭建一个合适的仿真环境。
在Python中,我们可以使用第三方库SimPy来创建一个简单而强大的仿真环境。
1. 确保已安装SimPy库SimPy是一个基于事件驱动的仿真框架,可以用来构建离散事件仿真模型。
我们可以通过在命令行中输入以下命令来安装SimPy库:```pip install simpy```2. 创建仿真环境接下来,我们可以使用以下代码来创建一个基本的仿真环境,并设置仿真时间:```pythonimport simpy# 创建仿真环境env = simpy.Environment()# 设置仿真时间SIMULATION_TIME = 100env.run(until=SIMULATION_TIME)```二、车辆和交通信号灯的建模在搭建好仿真环境之后,我们需要对车辆和交通信号灯进行建模。
在这个简化的模型中,我们假设只有一条单向道路,并且车辆和信号灯的到达时间和行为都是随机的。
1. 车辆的建模我们可以使用SimPy的`Process`类来表示车辆。
每个车辆都是一个独立的进程,并在仿真环境中按照特定的规则运行。
以下是一个简化的车辆建模示例:```pythonclass Car(simpy.Process):def __init__(self, env):super().__init__(env)self.env = envdef run(self):while True:# 车辆行驶的时间travel_time = random.randint(5, 20)yield self.env.timeout(travel_time)# 车辆到达信号灯print(f"Car arrives at traffic light at time {self.env.now}")# 等待信号灯绿灯yield self.env.process(self.wait_for_green_light())# 车辆通过信号灯print(f"Car passes through traffic light at time {self.env.now}") def wait_for_green_light(self):# 信号灯状态检查while True:if GREEN_LIGHT:breakyield self.env.timeout(1)```在上面的代码中,我们通过`yield`语句来模拟车辆的行驶时间和等待信号灯的过程。
十字路口交通灯Proteus仿真

《微机原理与接口技术》课程设计报告题目:十字路口交通灯设计学院:信息工程学院专业:通信工程目录1、摘要 (1)2、硬件电路图 (2)3、AT89C51功能介绍 (3)4、交通灯程序设计思路 (5)5、交通灯运行流程图 (6)6、源代码函数说明 (6)7、交通灯设置红绿灯时间结果图 (8)8、心得与体会 (9)9、源程序代码 (10)摘要十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
通常,生活中常见的红绿灯控制为,红灯六十秒,绿灯四十五秒,黄灯三秒等,因道路,车辆,城市交通规划而异,此次,基于proteus仿真十字路口的交通灯控制系统,设定南北方向绿灯15秒,黄灯5s,东西方向绿灯10s,黄灯5s。
系统基于MSC-51系列单片机89C51为中心器件来设计交通灯,显示器件为LED 红绿灯,LCD数码管。
采用c51编程,简单易懂,将功能模块化,除了可以实现红绿灯按要求变化,还通过proteus里的按钮,设置了键盘函数,可以按要求调整红绿灯亮的时间,并且还有重置(初始化)按钮。
一.功能概述1.设计任务:交通灯的硬件设计和软件设计2.设计目的:(1).初步了解和认识51单片机的工作原理,引脚图。
(2).掌握单片机相关接口技术和相关外围芯片的特性。
( 3 ).通过实际的设计程序,查找资料,调试程序,熟悉keil和proteus软件仿真,理解并熟悉模块化程序设计方法和调试。
3.基本要求:利用单片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替点亮和熄灭,并且用 4 只LED 数码管显示十字路口两个方向的剩余时间。
当东西方向亮绿灯时,南北方向红灯亮起;反之,如果南北方向亮绿灯,同时东西方向亮绿灯;绿灯亮时车辆行驶,红灯亮时车辆停止。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯控制模拟程序设计;*************定义数据段***********************************************data segmenttitle1 db 'Traffic-System'deng db '# # #'sing1 db 'South-North'sing2 db 'East - West'sing3 db 'Red time(scend):'time db 'Time:'sing4 db 'Yellow time(scend):'buff db 4 ;键盘缓冲区buff1 db 3 dup(?) ;工作计数区buff2 db 3 dup(?) ;数据保存区yellow db ? ;黄灯时间mode db 'Mode:auto(Y/N)?:'ans db ?ting3 db 'Red time(scend):030'ting4 db 'Yellow time(scend):5';************************主程序段********************************************** data endscode segmentassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov es,axcall title2 ;初始化标题q0: call mode1 ;模式选择自动或手动call scanfcall atuo ; 默认设置参数启动lea si,anscmp byte ptr[si],'y'jz q1cmp byte ptr[si],'n'jnz q0call ask1 ;设置红灯时间call scanf0call ask2 ;设置黄灯时间q1: call init1 ; 初始化灯光call init2lea si,buff;复制数据buff-buff1,保存显示时间inc siinc silea di,buff1cldmov cx,3REP movsblea si,buff1;复制数据buff1-buff2,保存显示时间lea di,buff2cldmov cx,3REP movsb;********************子程序设计************************************** ;*******状态一:南北方向红灯,东西方向绿灯***************************** start1:lea si,buff2 ;复制数据buff2-buff1,保存显示时间lea di,buff1cldmov cx,3REP movsblea di,buff1a0: cmp byte ptr[di+2],30h ;数据处理部分ja a1add byte ptr[di+2],10sub byte ptr[di+1],1a1: sub byte ptr[di+2],1cmp byte ptr[di+1],30hjnc a2add byte ptr[di+1],10sub byte ptr[di],1a2: cmp byte ptr[di],30hjnc a3jmp start2 ; 换灯a3: call nrcall write0lea si,yellowmov al,[si]cmp byte ptr[di+2],al ;最后五秒绿灯变黄灯jna a4jmp a8a4: cmp byte ptr[di+1],30hjna a5jmp a8a5: cmp byte ptr[di],30hja a8call eyjmp a9a8: call ega9: call delay ;延时一秒左右jmp a0;********状态二:南北方向绿灯,东西方向红灯**************************** start2:lea si,buff2 ;复制数据buff2-buff1,保存显示时间lea di,buff1cldmov cx,3REP movsblea di,buff1b0: cmp byte ptr[di+2],30h ;数据处理部分ja b1add byte ptr[di+2],10sub byte ptr[di+1],1b1: sub byte ptr[di+2],1cmp byte ptr[di+1],30hjnc b2add byte ptr[di+1],10sub byte ptr[di],1b2: cmp byte ptr[di],30hjnc b3jmp start1 ; 换灯b3: call ercall write0lea si,yellowmov al,[si]cmp byte ptr[di+2],al ;最后五秒绿灯变黄灯jna b4jmp b8b4: cmp byte ptr[di+1],30hjna b5jmp b8b5: cmp byte ptr[di],30hja b8call nyjmp b9b8: call ngb9: call delay ;延时一秒左右jmp b0;******模式设置***************mode1 procmov cx,16 ;设置时间lea bp,modemov dh,5mov dl,2mov al,1mov bl,07hmov ah,13hint 10hretmode1 endp;**********标题***************title2 procmov cx,14 ;设置时间lea bp,title1mov dh,1mov dl,25mov al,1mov bl,07hmov ah,13hint 10hrettitle2 endp;*******交互界面时间设置1******* ask1 procmov cx,16 ;设置时间lea bp,sing3mov dh,9mov dl,2mov al,1mov bl,06hmov ah,13hint 10hretask1 endp;*********交互界面时间设置2****** ask2 procmov cx,19 ;设置时间lea bp,sing4mov dh,13mov dl,25mov al,1mov bl,06hmov ah,13hint 10hretask2 endp;***********键盘输入设置******* scanf:mov ah,01hint 21hlea si,ansmov [si],alret;***********键盘0输入设置****** scanf0:lea dx,buffmov ah,0ahint 21hret;*********键盘1输入设置******* scanf1:mov ah,01hint 21hlea si,yellowmov [si],alret;*************南北灯的初始化***** init1:mov cx,11 ;设置标题南北lea bp,sing1mov dh,7mov dl,30mov al,0mov bl,07hmov ah,13hint 10hret;***********东西方向的初始化****init2:mov cx,11 ;设置标题东西lea bp,sing2mov dh,11mov dl,30mov al,0mov bl,07hmov ah,13hint 10hret;*********南北方向交通灯函数***************************************** ng: mov cx,7lea bp,dengmov dh,7mov dl,47mov al,0mov bl,02h ;设置颜色绿色mov ah,13hint 10hretny: mov cx,7mov dh,7lea bp,dengmov dl,47mov al,0mov bl,0eh ;设置颜色黄色mov ah,13hint 10hretnr: mov cx,7mov dh,7lea bp,dengmov dl,47mov al,0mov bl,04h ;设置颜色红色mov ah,13hint 10hret;********东西方向交通灯函数***************************************** eg: mov cx,7lea bp,dengmov dh,11mov dl,47mov al,0mov bl,02h ;设置颜色绿色mov ah,13hint 10hretey: mov cx,7mov dh,11lea bp,dengmov dl,47mov al,0mov bl,0eh ;设置颜色黄色mov ah,13hint 10hreter: mov cx,7mov dh,11lea bp,dengmov dl,47mov al,0mov bl,04h ;设置颜色红色mov ah,13hint 10hret;*****************时间显示函数********************************** write0:mov cx,3lea bp,buff1mov dh,7mov dl,60mov al,1mov bl,04hmov ah,13hint 10hretwrite1:mov cx,3lea bp,buff1mov dh,11mov dl,60mov al,1mov bl,04hmov ah,13hint 10hret;*************默认设置红灯30秒,黄灯5秒************************** atuo: mov cx,19 ;红灯默认时间30秒lea bp,ting3mov dh,9mov dl,2mov al,1mov bl,07hmov ah,13hint 10hmov cx,20 ;黄灯默认时间5秒lea bp,ting4mov dh,13mov dl,2mov al,1mov bl,07hmov ah,13hint 10hlea si,buffmov byte ptr[si+2],30hmov byte ptr[si+3],33hmov byte ptr[si+4],30hlea si, yellowmov byte ptr[si],35hret;*****************延时函数*************************************** delay:mov dx,25000l1: mov cx,30000l2: loop l2dec dxjnz l1retcode endsend start。