交通灯控制模拟程序
- 格式:doc
- 大小:30.50 KB
- 文档页数:8
实验八模拟交通灯一、实验目的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的输出信号。
交通灯控制模拟程序设计;*************定义数据段***********************************************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原理及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中,我们可以使用第三方库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`语句来模拟车辆的行驶时间和等待信号灯的过程。
《微机原理与接口技术》课程设计报告题目:十字路口交通灯设计学院:信息工程学院专业:通信工程目录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 数码管显示十字路口两个方向的剩余时间。
当东西方向亮绿灯时,南北方向红灯亮起;反之,如果南北方向亮绿灯,同时东西方向亮绿灯;绿灯亮时车辆行驶,红灯亮时车辆停止。
基于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秒。
学院机械工程学院课程设计基于AT89C52单片机的题目交通灯控制系统设计专业机械电子工程班级姓名指导教师20XX 年12 月XX 日课程设计任务书目录目录 (III)第一章绪论 (1)1.1交通灯设计的意义 (1)1.2交通灯设计的思想 (1)1.3交通灯设计满足的基本功能 (2)第二章总体方案 (3)2.1总体方案设计思想 (3)2.2系统方案选择与比较 (3)2.3系统总体方案论证 (5)第三章硬件设计 (6)3.1 总体设计与描述 (6)3.2 交通灯通行模式及行车方向指示 (6)3.3 主干道单独时间设置功能 (8)3.4 倒计时计数功能及其实现 (8)3.5 各功能模块硬件设计及实现 (9)第四章软件设计 (12)4.1 软件总体流程图 (12)4.2 定时器初始化 (12)4.3 动态显示 (13)4.4 设置状态子程序 (14)第五章系统调试 (15)5.1 系统操作说明 (15)5.2 调试 (15)5.3 调试心得 (20)第六章设计总结 (21)参考资料 (22)附录 (23)Ⅰ原理图 (23)Ⅱ原程序 (24)第一章绪论1.1交通灯设计的意义交通的发达,标志着城市的发达,相对交通的管理则显得越来越重要。
交通灯是城市交通中的重要指挥系统,它与人们日常生活密切相关.随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。
对于复杂的城市交通系统,为了确保安全,保证正常的交通秩序,十字路口的信号控制必需按照一定的规律变化,以便于车辆行人能顺利地通过十字路口。
单片机自问世以来,性能不断提高和完善,其资源又能满足很多场合的应用,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉,其易于产品化、抗干扰能力强、可在各种恶劣环境下可靠的工作等特点。
特别是它强大的面向控制能力,使它在工业控制领域,智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。
单片机综合实验报告题目: 模拟真实交通灯班级:姓名:学号:指导老师:时间:一、实验内容:用8255芯片的PA、PB口低四位做输出口,控制十二个发光二极管燃灭,模拟十字路口交通灯管理,并利用数码显示器进行倒计时显示(采用单片机内部定时器定时)。
通过外部中断能使交通灯暂停运行,并点亮4个红灯。
通过16*16点阵中的图形模拟控制行人过马路的人形“走”、“停”指示灯,可参考下图所示。
选做增加项目:在交通灯开始之前可通过开关对红绿灯亮灭时间的初始值进行增、减设定或者交通灯暂停时加上乐曲报警。
二、实验电路及功能说明电路:74LS138译码器电路8255与发光二极管连线图数码LED显示器电路(不需接线)16×16LED点阵显示电要求:交通灯亮灭过程同“8255控制交通灯实验”,倒计时显示只需两位数(0~99),用定时器定时进行倒计时,每秒钟减1。
在16*16点阵中显示的人形“走”、“停”标志可自定义,由专门软件可转换为相应显示代码,不需自己推理。
三、实验程序流程图:主程序:子程序:详细程序请参考程序清单。
四、实验结果分析对程序进行仿真可以观察到:点阵中交替显示如图(a)、(b)所示图像,且交替显示时间为30秒。
当显示图像为(a)时,表示可以容行人通过,限时30秒;当显示图像为(b)时,表示不容行人通过,也限时30秒。
如此,在十字路口各置一对点阵即可模拟实景。
五、心得体会通过此次实验,对单片机的I/O口的使用的条件有了更深的理解,对单片机的各个管脚功能的理解也加深了,以及在常用编程设计思路技巧的掌握方面也向前迈了一大步。
这次的课程设计让我把单片机的理论知识应用在实践中,实现了理论和实践相结合,从中更懂得理论是实践的基础,实践有助于检验理论的正确性的道理,对我以后参加工作或者继续学习深造将产生巨大的帮助和影响。
六、程序清单#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[]={0,0,0,0,0,0};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,0x5 0,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,0x0 0,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=(65536-1000)/256;TL1=(65536-1000)%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=(65536-50000)/256;TL0=(65536-50000)%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];PB=nsTable[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;PA=ewTable[tongBu];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=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%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. Arduino UNO开发板
2. 红绿黄LED灯各1个
3. 杜邦线若干
实验原理:
交通灯系统的控制主要是通过控制LED灯的亮灭来实现。
红
色LED灯表示停止,绿色LED灯表示通行,黄色LED灯表
示警示。
通过控制不同LED灯的亮灭状态,可以模拟交通灯
的不同信号。
实验步骤:
1. 将红色LED灯连接到Arduino开发板的数字输出引脚13,
绿色LED灯连接到数字输出引脚12,黄色LED灯连接到数
字输出引脚11。
2. 在Arduino开发环境中编写控制交通灯的程序。
3. 将Arduino开发板与计算机连接,将程序上传到Arduino开
发板中。
4. 接通Arduino开发板的电源,观察交通灯的亮灭状态。
实验结果:
根据程序编写的逻辑,交通灯会按照规定的时间间隔进行变换,实现红绿灯的循环。
实验总结:
通过本次实验,我们设计并实现了一个简单的交通灯控制系统。
掌握了Arduino编程和控制LED灯的方法,加深了对控制系
统的理解。
通过实验,我们发现了交通灯控制系统的重要性和意义,为今后的交通控制提供了一种可行的解决方案。
实现交通灯控制模拟程序设计介绍:交通灯是城市交通管理中的重要组成部分,对于交通流量的控制和交通安全的保障有着重要的作用。
交通灯控制模拟程序设计旨在模拟交通灯的工作原理和控制逻辑,帮助人们更好地理解交通灯的工作机制,并为交通管理者提供参考。
本文将介绍交通灯控制模拟程序设计的实现思路和主要功能。
实现思路:交通灯控制模拟程序设计可以使用面向对象的程序设计思想,将交通灯抽象为一个对象,交通灯控制器作为另一个对象,通过交通灯控制器来控制交通灯的状态转换。
程序设计可以使用事件驱动的方式,在每个时间周期内更新交通灯的状态,并通过图形化界面展示交通灯的状态变化。
主要功能:1.建立交通灯对象:设计一个交通灯类,包含交通灯的各个状态(红灯、绿灯、黄灯)和相关属性(灯的颜色、灯的亮度等)。
2.交通灯状态转换:设计一个交通灯控制器类,负责控制交通灯的状态转换。
根据交通灯的当前状态和时间周期,计算下一个状态是什么,并更新交通灯对象的状态。
3. 创建图形化界面:使用图形化界面库,如Tkinter,创建一个窗口来展示交通灯的状态。
界面上可以显示交通灯的当前状态和剩余时间,并且有按钮可以手动控制交通灯的状态。
4.模拟交通流量:可以设置不同的交通流量参数,如不同道路上车辆的数量和速度,根据这些参数模拟交通流量的变化,并结合交通灯的状态来实现交通的协调与控制。
5.交通灯控制策略:根据交通流量和交通灯的状态,设计一套交通灯控制策略,包括灯的时间周期、绿灯持续时间、红灯持续时间等。
可以通过模拟程序的方式评估不同策略的效果,优化交通灯的控制策略。
总结:交通灯控制模拟程序设计可以帮助人们更好地理解交通灯的工作原理和控制逻辑,并且通过模拟不同交通流量和交通灯策略的情况,优化交通灯的控制效果。
此外,可以通过交通灯控制模拟程序设计为交通管理者提供参考,帮助他们制定更科学、合理的交通灯控制策略,提高城市交通的管理水平和交通安全性。
实验一交通灯的模拟控制一、实验目的使用图1-1 交通灯示意图二、实验内容1.控制要求起动后,南北红灯亮并维持15s。
在南北红灯亮的同时,东西绿灯也亮。
到10s 时,东西绿灯闪亮,3s后熄灭,在东西绿灯熄灭后东西黄灯亮。
黄灯亮2s后灭东西红灯亮。
与此同时,南北红灯灭,南北绿灯亮。
南北绿灯亮了10s后闪亮,3s 后熄灭,黄灯亮2s后熄灭,南北红灯亮,东西绿灯亮,循环。
停止后东西南北的黄灯闪烁红绿灯熄灭。
图1-2 交通灯工作流程图2.I/O分配输入输出起动:start 北红灯:b_north_red 东红灯:b_east_red停止:stop 北黄灯:b_north_yellow 东黄灯:b_east_yellow北绿灯:b_north_green 东绿灯:b_east_green南红灯:b_south_red 西红灯:b_west_red南黄灯:b_south_yellow 西黄灯:b_west_yellow南绿灯:b_south_green 西绿灯:b_west_yellow图1-3 逻辑时序图3.根据示意图绘制HMI图形并链接变量图1-4 交通灯HMI示意图4.编写并运行程序编写程序来实现控制要求。
相关程序参考文件:《交通灯.pro》。
编写主程序时需要注意:编写主程序时先把红绿等功能完成。
最后编写停止时黄灯闪烁的功能。
建议使用Case语句,将各个时间段的灯的亮灭状态都进行声明,方便之后使用者的修改。
实验二抢答器一、实验目的使用TwinCAT编写一个可供六人参与的抢答器。
二、实验内容1. 控制要求当主持人按下开始按钮以后,1~6号按钮任意一个按钮被触发,按钮对应的灯则亮起。
同时将其他按钮锁定,再继续按其他按钮不会使对应的灯亮起。
当主持人按下复位按钮后,可以将抢答器复位,然后可以重复以上步骤。
图2-1 抢答器流程图2.I/O分配输入输出开始按钮:start 抢答灯:light[1..6]复位按钮:reset抢答按钮:button[1..6]3.根据示意图绘制HMI图形并链接变量图2-2 抢答器HMI图4.编写并运行程序编写程序来实现控制要求。
课程设计成绩评定表模拟交通灯控制系统摘要人口的快速增长和车辆的增加,使得城市交通拥挤成为不可避免的问题,为了缓解这一现象,我们设计了模拟交通灯控制系统,通过此系统可以使车辆按一定秩序行驶,降低交通压力。
此系统是由8088为核心部件组建,利用8253A定时/计数器芯片的定时功能,向8259A中断控制器芯片发出定时中断请求,驱动8255A可编程并行接口芯片改变路口的LED灯的亮灭和显示倒数的秒数。
与此同时,该系统设计了应急中断处理,通过外部中断使各个路口皆为红灯,以便应用于急救车、紧急事件或特别情况的应急处理。
关键字:交通灯定时器中断目录摘要 (II)1 交通灯路况分析 (1)1.1交通灯运作的基本情况 (1)1.2交通灯状态变化分析 (2)1.3交通灯持续时间分析 (2)2 项目概述 (3)2.1设计内容 (3)2.2 设计要求 (3)3 系统设计 (4)3.1总体设计 (4)3.2功能模块 (6)4 硬件设计 (11)4.1硬件介绍 (11)4.2 硬件功能分析 (15)4.3硬件模块连接 (17)5 系统实现 (21)5.1开发环境 (21)5.2运行步骤 (21)5.3运行结果分析 (22)参考文献 (23)心得体会 (24)教师评语 (25)附录 (26)1 交通灯路况分析1.1交通灯运作的基本情况一十字路口,假设1、3为东西方向,2、4为南北方向,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车; 延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3 路口红灯亮, 而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,并不断重复上述过程。
如图1-1所示:北南东西绿黄红红黄绿绿黄红红黄绿图1-1 交通灯路况1.2交通灯状态变化分析1. 东西方向为红,南北方向为绿,并持续一定的时间,时间到,南北方的绿灯立刻转为黄灯,进入下一个状态。
交通灯控制模拟程序设计;*************定义数据段***********************************************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。