交通灯控制模拟程序
- 格式:docx
- 大小:20.62 KB
- 文档页数:8
单片机课程报告设计题目:交通信号灯模拟控制系统设计专业:电子信息科学与技术班级:学号:姓名:指导老师:年月日※※※※※※前言※※※※※※本课程设计的目的和意义本课程设计是在学完单片机原理及课程之后综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现。
该课程设计的主要任务是通过解决一、两个实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。
*******目录*******一、设计要求二、设计内容三、交通信号灯模拟控制系统设计程序流程图四、交通信号灯模拟控制系统原理图五、交通信号灯模拟控制系统主程序六、运行步骤七、检测与调试八、课程设计体会九、参考文献十、说明一、设计要求:交通信号灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并且用LED数码管显示时间。
用8051做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
二、设计内容:因为本课程设计是交通灯的控制设计,所以要了解实际交通灯的变化情况和规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1东西红灯,南北绿灯通车,。
过一段时间转状态2南北绿灯灭,黄灯闪烁几次,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯灭,闪几次黄灯,南北仍然红灯。
最后循环至状态1。
注意:.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
三、交通信号灯模拟控制系统设计程序流程图四、交通信号灯模拟控制系统主程序ORG 0000HSJMP A3ORG 0030HA3: MOV SP,#60H ;设栈指针初值MOV A, #24HMOV P1, ASETB P3.2CLR P3.3CLR P3.4SETB P3.5 ;全部红灯亮MOV R4,#00H ;显示0秒MOV R7,#00H ;显示0秒MOV R2,#03HLCALL XI ;调用子程序A2 : MOV A,#0CHMOV P1,ASETB P3.2SETB P3.3CLR P3.4CLR P3.5 ;东西红灯,南北绿灯MOV R4,#14H ; 显示20秒LOOP2 : MOV R2,#03HLCALL XIDJNZ R4,LOOP2 ;判断20秒显示时间到否MOV R2,#03HLCALL XILOOP8: MOV R2,#03H ;南北黄灯闪3次LCALL XIMOV R4,#05H ;设南北黄灯亮长显示5秒SETB P3.2CLR P3.3A1: MOV A,#14HMOV P1 ,ASETB P3.4CLR P3.5 ;东西红灯,南北黄灯MOV R2,#01H ;定时LCALL DELAY ;调用延时子程序MOV A ,#04HMOV P1 ,ACLR P3.4CLR P3.5 ;东西红灯,南北不亮即意思要南北黄灯闪烁MOV R2 ,#01H ;定时LCALL DELAYDJNZ R4,LOOP8 ;判断南北黄灯闪烁,显示5秒到否?MOV A, #61HMOV P1,ACLR P3.2CLR P3.3CLR P3.4SETB P3.5 ;东西绿灯,南北红灯MOV R4,#14H ;显示20秒LOOP3:MOV R2,#03HLCALL XIDJNZ R4,LOOP3 ;判断20秒显示时间到否MOV R7,#05H ;设东西黄灯亮长显示5秒SETB P3.5A0: MOV A,#0A2HMOV P1,ACLR P3.2CLR P3.3CLR P3.4 ;东西黄灯,南北红灯MOV R2,#01H ;定时LCALL DELAYMOV A,#20H ;MOV P1,ACLR P3.2CLR P3.3CLR P3.4 ;南北红灯,东西不亮即意思要东西黄灯闪烁MOV R2,#01H ;定时LCALL DELAYDJNZ R7,A0 ;判断东西黄灯闪烁,显示5秒到否?LJMP A2 ;循环回状态1,即东西红灯,南北黄灯DELAY: PUSH 2PUSH 1PUSH 0 ;进栈DELAY1: MOV 1,#00HDELAY2:MOV 0,#0B2HDJNZ 0,$ ;判断是否运行完0B2HDJNZ 1,DELAY2DJNZ 2,DELAY1POP 0POP 1POP 2 ;出栈DJNZ R2 ,DELAY ;判断R2是否运行完RET ;返回主程序XI: MOV A,R4MOV B,#10DIV ABMOV R6,AMOV DPTR,#TABMOV A,BMOVC A,@A+DPTRMOV SBUF,AMOV R7,#0FHH55S: DJNZ R7,H55SMOV A,R6MOVC A,@A+DPTRMOV SBUF,AMOV R7,#0FHH55S1: DJNZ R7,H55S1LCALL DELAYRETTAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0hDB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8ehEND五、交通信号灯模拟控制系统原理图设计的连线图提示:(1) 完整的DVCC实验箱面板(2)硬件电路连接说明六、运行步骤:①8051 P1.0—P1.7、P3.2—P3.5依次接发光二极管L1—L12。
交通灯的PLC程序设计摘要PLC(可编程逻辑控制器)是一种用于自动化控制的计算机设备。
本文将介绍在交通灯系统中使用PLC进行控制的程序设计。
介绍随着城市化的发展,交通拥堵已经成为了一个普遍的现象。
为了解决交通拥堵问题,并提高道路交通的安全性,交通灯系统变得越来越重要。
在交通灯系统中,使用PLC控制可以实现精确、可靠、高效的控制方式。
PLC是一种专业的控制器,主要用于工业自动化控制。
PLC能够将输入的控制信号进行逻辑处理,并输出相应的控制信号,实现可编程的自动控制。
在交通灯系统中,PLC负责控制信号灯的开关,保证交通信号灯的正常运转。
本文将介绍在交通灯系统中使用PLC的程序设计。
该设计针对的是普通十字路口,控制红、黄、绿三种信号灯的开关顺序,以保证交通流畅和交通安全。
PLC程序设计逻辑控制在交通灯系统中,PLC将接受来自传感器的信号,根据这些信号进行逻辑运算,从而控制信号灯的开关。
通过逻辑运算,PLC可以实现绿灯亮、黄灯亮、红灯亮等不同的控制方式。
PLC的逻辑运算主要包括开关量逻辑和模拟量逻辑两种方式。
对于交通灯系统来说,开关量逻辑是最常用的控制方式,这是因为信号灯的开关只有两种状态:开和关。
控制程序交通灯系统中使用的PLC程序通常是基于状态机的控制方式。
状态机是一种基于状态转移的控制模型,是一种理论模型,用于描述有限个状态及其之间的转移。
交通灯系统中的PLC程序一般会分为两部分:状态转移表和状态转移图。
状态转移表用于记录系统中所有的状态和它们之间的转移关系,状态转移图则是在状态转移表的基础上对状态之间的关系进行图形化表示。
下面是一个简单的状态转移表,用于描述交通灯系统中红、黄、绿三种灯的控制状态:当前状态输入信号下一状态红灯等待绿灯黄灯等待红灯绿灯等待黄灯红灯或黄灯非等待黄灯绿灯非等待红灯PLC程序实现在实现PLC程序时,需要根据状态转移图和状态转移表编写程序。
在交通灯系统中,PLC的输入端接收传感器信号,根据传感器信号和状态转移表的状态转移关系来更新PLC的输出信号。
实验八 交通灯控制实验一、实验目的:1、学习并掌握并行接口8255A的内部结构,功能及编程。
2、通过并行接口8255A实现十字路口交通灯的模拟控制,进一步掌握对并行A、B、C端口能在以下三种方式下工作:方式0—基本输入/出方式方式1—选通输入/出方式方式2—双向选通输入/出方式8255A的工作方式控制字用来决定8255A端口的工作方式,方式控制字的格式如图2-2所示。
表2-1 8255端口地址L12、L11、L10作为东西路口的交通灯与PC0、PC1、PC2相连,编程使六个交通灯按如下变化规律燃灭。
十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮。
(2)南北路口的黄灯闪烁若干次,同时东西路口红灯继续亮。
(3)南北路口的红灯、东西路口的绿灯同时亮。
(4)南北路口的红灯继续亮,同时东西路口的黄灯亮闪烁若干次。
(5)转(1)重复。
四、实验步骤1、按图2-1连接实验线路,注意切断实验箱电源。
2、参考下面的实验流程编写实验程序。
实验流程如下:3、经汇编、链接后将程序装入系统。
4、运行程序,观察交通灯的变化。
交通灯控制实验程序1: data segmentprotc1 db 9bh,0bbh,0fbh,0bbh,0fbh,0bbh,0fbh db 7eh,7dh,7fh,7dh,7fh,7dh,7fhdb 0ffhdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,0e3hmov al,90hout dx,almov dx,0e2hloop1: mov bx,0000hloop2:mov al,protc1[bx]cmp al,0ffhjz loop1out dx,alcall delayinc bxjmp loop2delay:mov cx,01ffhde1: mov di,0ffhde0: dec dijnz de0loop de1retcode endsend start交通灯控制实验程序2:data segmentprotc1 db 0dbh,0bbh,0fbh,0bbh,0fbh,0bbh,0fbhdb 7eh,7dh,7fh,7dh,7fh,7dh,7fhdb 0ffhdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,0e3hmov al,90hout dx,almov dx,0e2hloop1: mov bx,0000hloop2:mov al,protc1[bx]cmp al,0ffhjz loop1out dx,aland al 21hcmp al,21hjz aamov cx,0effhjmp bbaa: mov cx,01dfhbb: call delayinc bxjmp loop2delay:de1: mov di,0ffhde0: dec dijnz de0loop de1retcode endsend startdata segmentportc1 db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能db 81h,82h,80h,82h,80h,82h,80h ;的状态数据 db 0ffh ;结束标志 data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,io8255bmov al,90hout dx,al ;设置8255为C口输出mov dx,io8255are_on: mov bx,0on: mov al,portc1[bx]cmp al,0ffhjz re_onout dx,al ;点亮相应的灯inc bxmov cx,20 ;参数赋初值test al,21h ;是否有绿灯亮jz de1 ;没有,短延时mov cx,5000 ;有,长延时de1: mov di,9000 ;di赋初值5000de0: dec di ;减1计数jnz de0 ;di不为0loop de1push dxmov ah,06hmov dl,0ffhint 21hpop dxjz on ;没有,转到onexit: mov ah,4ch ;返回int 21hcode endsend start。
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线圈失电,模拟南北向行驶车的灯灭。
目录1. 概述 (1)2. 硬件设计 (2)2.1.控制要求 (2)2.2. PLC介绍 (3)2.2.1 PLC的基本概念 (3)2.2.2 PLC的主要特点 (4)2.2.3 PLC的结构及其工作原理 (4)2.4.I/O分配表 (7)2.5.I/O接线图 (8)3. 软件设计 (9)3.1设计梯形图 (9)3.2设计指令表 (12)4. 调试 (15)4.1 . 编程思想 (15)4.2. 控制系统的程序调试步骤 (15)4.3. 调试过程遇到的问题及解决方法 (15)5. 结束语 (16)6.参考文献 (17)1.1. 概述十字路口交通指示灯在日常生活中随处可见,设计安全可靠的交通灯在正常生活中起着重要作用。
应用PLC设计满足要求实际要求的十字路口指示灯是一个非常重要的手段。
PLC是以微处理器为基础,综合了计算机技术.半导体技术.自动控制技术.数字技术和网络通信技术发展起来的一种通用工业自动控制装置。
PLC以其可靠性高.灵活性强.使用方便的优越性,迅速占领了工业控制领域。
本设计介绍了应用PLC实现十字路口交通信号灯的自动控制。
通过对交通信号灯的控制要求分析,对PLC控制系统进行了软、硬件设计,并通过实验证明该系统简单、经济、运行可靠,具有很高的实用价值。
2.硬件设计2.1.控制要求在十字路口南北方向以及东西方向均设有红,黄,绿3只信号灯,6只信号灯依一定的时序循环往复工作。
信号灯受电源总开关控制,接通电源,信号灯系统开始工作;关闭电源所有的信号灯都熄灭,程序自动关闭。
在晚上车辆稀少时,要求交通灯处于下班工作状态,即两个方向的黄灯一直闪烁。
在信号灯工作期间,东西以及南北方向的红灯亮维持30秒,在红灯亮时的最后2s,东西以及南北方向的黄灯同时闪烁,时间为2s,东西以及南北方向的绿灯为长亮25s,然后闪烁3s。
下图为交通灯示意图2.2.总体思路启动I0.0东西绿灯Q4.0东西黄灯Q4.1东西红灯Q4.2南北绿灯Q4.3南北黄灯Q4.4南北红灯30s 25s 3s 2s 此图为交通灯时序图2.2. PLC介绍2.2.1 PLC的基本概念可编程控制器是计算机家族中的一员,是为工业控制应用而设计制造的。
《微机原理与接口技术》课程设计报告题目:十字路口交通灯设计学院:信息工程学院专业:通信工程目录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.交通灯控制策略:根据交通流量和交通灯的状态,设计一套交通灯控制策略,包括灯的时间周期、绿灯持续时间、红灯持续时间等。
可以通过模拟程序的方式评估不同策略的效果,优化交通灯的控制策略。
总结:交通灯控制模拟程序设计可以帮助人们更好地理解交通灯的工作原理和控制逻辑,并且通过模拟不同交通流量和交通灯策略的情况,优化交通灯的控制效果。
此外,可以通过交通灯控制模拟程序设计为交通管理者提供参考,帮助他们制定更科学、合理的交通灯控制策略,提高城市交通的管理水平和交通安全性。
基于PLC控制的交通灯系统设计一、本文概述随着城市化进程的加速和科技的不断进步,交通拥堵和交通安全问题日益突出,对交通管理提出了更高的要求。
在这样的背景下,基于PLC(可编程逻辑控制器)控制的交通灯系统设计成为了解决这一问题的有效手段。
本文旨在探讨基于PLC控制的交通灯系统的设计方案,包括系统的硬件组成、软件编程、控制逻辑以及实际应用效果等方面。
通过深入研究和实践,本文旨在为读者提供一个全面、系统的交通灯系统设计思路,以期在缓解交通压力、提高交通效率、保障交通安全等方面发挥积极作用。
本文将首先介绍交通灯系统的基本概念和作用,然后重点阐述PLC在交通灯系统中的应用优势。
接着,将详细介绍基于PLC的交通灯系统设计方案,包括硬件选型、软件编程、控制逻辑设置等关键步骤。
在此基础上,本文将通过实际案例分析,探讨该设计方案的实施效果及存在的问题,并提出相应的改进措施。
将对基于PLC控制的交通灯系统的发展前景进行展望,以期为未来交通管理领域的技术创新提供参考和借鉴。
二、PLC基础知识PLC,即可编程逻辑控制器(Programmable Logic Controller),是一种专为工业环境设计,用于数字运算操作的电子系统。
它采用了可编程的存储器,用于在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。
PLC的基本结构包括中央处理器(CPU)、存储器、输入输出接口、电源和编程器等部分。
其中,CPU是PLC的核心,负责执行用户程序,完成各种控制功能;存储器用于存储系统程序、用户程序和数据;输入输出接口则负责实现PLC与外部设备的连接,完成数据的输入和输出;电源则为PLC提供稳定的工作电压;编程器则是用户用来编写、修改和调试用户程序的工具。
PLC的主要特点包括可靠性高、抗干扰能力强、编程简单、易于实现、适应性强、灵活性好、体积小、能耗低、维护方便等。
实验一交通灯的模拟控制一、实验目的使用图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.编写并运行程序编写程序来实现控制要求。
交通灯控制模拟程序设计data segment title1 db 'Traffic-System' deng db '# # #' sing1 db'South-North' sing2 db 'East - West' sing3 db 'Redtime(scend):' time db 'Time:' sing4 db 'Yellowtime(scend):' buff db 4 ;键盘缓冲区 buff1 db 3dup(?) ;工作计数区 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'・************************ Jdata ends code segmentassume cs:code,ds:data,es:data start:mov ax,datamov ds,ax mov es,ax call title2 ; 初始化标题 q0: call mode1 ; 模式选择 自动或手动 call scanf call atuo ;默认设置参数启动 lea si,anscmp byte ptr[si],'y'jz q1cmp byte ptr[si],'n'jnz q0call ask1 ;设置红灯时间call scanf0 call ask2 ;设置黄灯时间・*************定义数据段 ***********************************************主程序段 **********************************************call scanf1q1: 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 movsbclda3: call nrcall write0子程序设计 ************************************** 状态一 :南北方向红灯,东西方向绿灯 ***************************** start1:lea si,buff2 ; 复制数据 buff2-buff1 ,保存显示时间 di,buff1・******************** ・******* leaa0: a1: a2: mov REP cx,3movsblea di,buff1cmp byte ptr[di+2],30h ; 数据处理部分ja a1add byte ptr[di+2],10sub byte ptr[di+1],1sub byte ptr[di+2],1cmp byte ptr[di+1],30hjnc a2add byte ptr[di+1],10sub byte ptr[di],1cmp byte ptr[di],30hjnc a3jmp start2 ; 换灯lea si,yellowmov al,[si]cmp byte ptr[di+2],al ;最后五秒绿灯变黄灯jna a4jmp a8a4: cmp byte ptr[di+1],30h jna a5 jmp a8a5: cmp byte ptr[di],30h ja a8 call ey jmp a9a8: call ega9: call delay ; 延时一秒左右jmp a0******** 状态二 :南北方向绿灯,东西方向红灯; 复制数据 buff2-buff1 ,保存显示时间 lea di,buff1 cldmov cx,3 REP movsb lea di,buff1b0: cmp byte ptr[di+2],30h;数据处理部分 ja b1 add byte ptr[di+2],10 sub byte ptr[di+1],1b1: sub byte ptr[di+2],1 cmp byte ptr[di+1],30h jnc b2 add byte ptr[di+1],10 sub byte ptr[di],1b2: cmp byte ptr[di],30h jnc b3 jmp start1 ; 换灯b3:call er call write0**************************** start2:lea si,buff2lea 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,mode mov dh,5mov dl,2 mov al,1 mov bl,07h mov ah,13h int 10hret mode1 endp title2 proc・**********标题***************mov cx,14 ; 设置时间lea bp,title1 mov dh,1mov dl,25mov al,1 mov bl,07h mov ah,13h int 10h ret title2endpask1 proc mov cx,16;设置时间 lea bp,sing3 mov dh,9 mov dl,2mov al,1 mov bl,06h movah,13h int 10h retask1 endpask2 procmov cx,19 ;设置时间 leabp,sing4 mov dh,13 mov dl,25mov al,1 mov bl,06h movah,13h int 10hret ask2 endp・*********** J键盘输入设置 *******scanf:mov ah,01h int 21hlea si,ans mov [si],al ret ・***********J 键盘 0 输入设置****** scanf0:lea dx,buffmov ah,0ahint 21h ret・********* J 键盘 1 输入设置scanf1:mov ah,01h int 21hlea si,yellow mov [si],al ret init1:mov cx,11 ;设置标题南北・******* 交互界面时间设置 1*******・*********交互界面时间设置 ******・************* 南北灯的初始化 *****lea bp,sing1 mov dh,7 movdl,30 mov al,0 mov bl,07h movah,13h int 10h ret;*********** 东西方向的初始化****init2:mov cx,11 ;设置标题东西lea bp,sing2 mov dh,11 movdl,30 mov al,0 mov bl,07h movah,13h int 10hret・********* 南北方向交通灯函数***************************************** ng: mov cx,7 leabp,deng movdh,7mov dl,47mov al,0mov bl,02h ; 设置颜色绿色mov ah,13hint 10hretny: mov cx,7mov dh,7 lea bp,deng movdl,47 mov al,0mov bl,0eh ; 设置颜色黄色mov ah,13h int 10hretnr: mov cx,7 mov dh,7 lea bp,dengmov dl,47 mov al,0mov bl,04h ; 设置颜色 红色mov ah,13hint 10hretmov dh,11mov dl,47 mov al,0mov bl,02h ; 设置颜色 绿色mov ah,13hint 10hretey: mov cx,7mov dh,11 lea bp,deng movdl,47 mov al,0mov bl,0eh ; 设置颜色 黄色mov ah,13h int 10hreter: mov cx,7 mov dh,11 lea bp,dengmov dl,47 mov al,0mov bl,04h ; 设置颜色 红色mov ah,13h int 10h retwrite0:mov cx,3 lea bp,buff1 mov dh,7 mov dl,60 mov al,1 mov bl,04h mov ah,13h int 10h ret・*****************时间显示函数 **********************************东西方向交通灯函数 *****************************************eg: mov cx,7 lea bp,deng・********write1:mov cx,3 lea bp,buff1 mov dh,11 mov dl,60 mov al,1mov bl,04h mov ah,13h int 10hret・************* 默认设置红灯30 秒,黄灯5秒************************** atuo: mov cx,19 ;红灯默认时间30 秒lea bp,ting3 mov dh,9 mov dl,2 mov al,1 mov bl,07h movah,13h int 10hmov cx,20 ;黄灯默认时间 5 秒lea bp,ting4mov dh,13mov dl,2 mov al,1 mov bl,07h mov ah,13h int 10h lea si,buffmov byte ptr[si+2],30h mov byte ptr[si+3],33h mov byteptr[si+4],30h lea si, yellowmov byte ptr[si],35h ret・ *****************J延时函数delay:mov dx,25000 l1: mov cx,30000 l2: loop l2 dec dx jnz l1 ret code endsend start。