交通灯控制程序
- 格式:doc
- 大小:191.00 KB
- 文档页数:26
;▲设计思路:硬件设计原理见原理图,设计思路略;系统软件设计思路如下。
;分三个独立模块,主程序依次循环调用三个模块(显示模块、时间计算模块、键盘扫描与时间设置模块),;使用两个中断(内部定时器T0中断、外部中断INT1),在主程序循环调用三个模块的进程中嵌套调用各中断服务程序。
;各模块之间通过相应的控制变量来建立联系,并确定分支运行的路径,控制变量全部由地址传值;;模块之间传递的数据(特别是显示的数据:如计算结果、键盘修改或设置时间显示数据等,变化后的数据存入51H~54H、;76H~79H和7CH~7FH字节单元,显示只从这些单元中取数据)由同一个地址传值。
;定时0.05s,(216-X)*10-6=0.05,X=15536(3CB0H),加上执行中断服务程序花去的平均时间约222个时钟周期(相当于定;时脉冲19个)。
因此,定时计数器的计数初值为15536+19=15555(3CC3H)。
;#程序开始段,主程序和中断服务程序地址初始化RESET: ORG 0000H ;系统复位后,程序开始执行地址(主程序起始地址)LJMP MAINORG 000BH ;T0中断服务程序地址LJMP T00ORG 0013H ;INT1中断服务程序地址LJMP INT11;#主程序段ORG 100HMAIN: MOV PSW,#00H ;程序状态字清0,默认工作寄存器区0,此步可以不作(系统复位后自动清0)MOV R1,#7EH ;内部RAM单元个数,不含0区的R0和R1以及SFRMOV R0,#02H ;从0区的R3开始清0CLRAM: INC R0 ;清零内部RAMMOV @R0,#00HDJNZ R1,CLRAMMOV SP,#10H ;工作寄存器区0和1区会使用,堆栈从2区开始MOV TMOD,#01H ;定时器T0初始化,定时模式,不受外部INT0(1)控制,计数器设置为方式1,16位计数器MOV TL0,#0C3H ;定时器/计数器低8位值,时钟频率12MHzMOV TH0,#3CH ;计数器高8位值MOV SCON,#00H ;串行口控制寄存器设置。
模拟交通灯控制系统摘要:随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题.因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。
根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。
设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。
单片机的应用正在不断深入,单片机可以用来仿真各个系统。
在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用单片机STC89C52为中心器件来设计交通灯控制器,实现了通过P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。
本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。
关键词:单片机交通灯数码管1。
背景简介及原理分析1.1交通灯发展概述早在1850年,城市交叉口处不断增长的交通就引发了人们对安全和拥堵的关注。
世界上第一台交通自动信号灯的诞生,拉开了城市交通控制的序幕,1868年,英国工程师纳伊特在伦敦威斯特敏斯特街口安装了一台红绿两色的煤气照明灯,用来控制交叉路口马车的通行,但一次煤气爆炸事故致使这种交通信号灯几乎销声匿迹了近半个世纪。
1914年及稍晚一些时候,美国的克利夫兰、纽约和芝加哥才重新出现了交通信号灯,它们采用电力驱动,与现在意义上的信号灯已经相差无几。
1926年英国人第一次安装和使用自动化的控制器来控制交通信号灯,这是城市交通自动控制的起点。
伴随着城市交通信号控制系统的迅速发展。
人们认识到,要更好地提高城市管理水平,不仅仅依靠硬件设备的更新和改进,还必须同时在控制逻辑和方法上有所突破,即城市交通的区域协调控制。
1引言 (2)1.1编写目的 (2)1.2背景 (2)1.3定义 (2)1.4参考资料 (2)2总体设计 (2)2.1需求规定 (2)2.2运行环境 (2)2.3基本设计概念和处理流程 (3)2.4结构 (3)2.5功能器求与程序的关系 (3)2.6人工处理过程 (3)2.7尚未问决的问题 (3)3接口设计 (3)3.1用户接口 (3)3.2外部接口 (3)3.3内部接口 (4)4运行设计 (4)4.1运行模块组合 (4)4.2运行控制 (4)4.3运行时间 (4)5系统数据结构设计 (4)5.1逻辑结构设计要点 (4)5.2物理结构设计要点 (4)5.3数据结构与程序的关系 (4)6系统出错处理设计 (5)6.1出错信息 (5)6.2补救措施 (5)6.3系统维护设计 (5)概要设计说明书1引言1.1编写目的创建一个可供日常交通灯使用的程序,目标读者为交通灯控制人员。
1.2背景说明:a.交通路口复杂交通信号灯的设计b.任务提出者,开发者:陈磊用户:交通指挥系统设计环境:使用Verilog HDL语言进行设计使用Quartus 2编程环境进行开发。
1.3定义ORDER 选择信号ROAD 亮灯控制信号EN5 5秒延时使能信号LIN5 5秒延时终止信号EN25 25秒延时使能信号LIN25 25秒延时终止信号RST 系统复位信号CLK 系统时钟信号1.4参考资料Verilog HDL数字系统设计与应用2总体设计2.1需求规定输入项目:CLK 系统时钟信号RST 系统复位信号输出项目:ROAD 亮灯控制信号,ROAD=00,红灯亮;ROAD=01,黄灯亮;ROAD=10,绿灯亮;ROAD=11,黄灯亮。
处理要求:根据ORDER的不同值,使相应的灯发亮。
2.2运行环境运行环境:。
Quartus II 9.02.3基本设计概念和处理流程2.4结构ORDER 选择某一灯的选择变量ROAD 控制某一灯亮的控制变量2.5功能器求与程序的关系2.6人工处理过程人工输入ORDER的值,根据ORDER的不同值,相应的灯变亮2.7尚未问决的问题创建一个稳定的时钟源3接口设计3.1用户接口light(red,amber,green,0,order)ORDER为控制变量,由它决定让哪一盏灯发亮。
交通灯控制- 台达DVP-PLC编程定时器设计技巧实例详解【控制要求】按下启动按钮X0 交通灯开始工作,按下停止按钮X1,交通灯系统停止运行。
设东西方西车流量较小,红灯亮时间为60 秒,而南北方向车流量较大,红灯亮时间为30 秒。
东西方向的红灯时间就是南北方向的“绿灯时间+绿灯闪烁时间+黄灯时间”,反之,南北方向红灯时间就是东西方向的“绿灯时间+绿灯闪烁时间+黄灯时间”。
黄灯亮时车和人不能再通过马路,黄灯亮 5 秒的目的是让正在十字路口通行的人和车有时间到达对面马路。
东西方向交通灯状态变化规律:【元件说明】【控制程序】【程序说明】按下启动按钮,X0 由Off→On 动作,PLS 指令执行,M0 产生一个上升沿脉冲,[SET S0]指令执行,进入步进流程。
按下停止按钮,X1由Off→On动作,PLS指令执行,M1 产生一个上升沿脉冲,[ZRST S0 S127]指令执行,所有的步进点被复位,所有交通灯熄灭。
本例是应用并行分支的步进流程来设计,分为东西和南北方向两个流程,两个流程同时进行。
东西方向流程处于红灯状态时,南北方向流程应相应的处在绿灯,绿灯闪烁,黄灯流程。
东西方向流程结束后(红灯熄灭),南北方向流程也应结束(黄灯熄灭),返回初始步进点S0。
步进点从一个流程转移到另一个流程时,前一个流程的状态(包括步进点和Y 输出点)相应被复位。
东西方向的黄灯亮时间(Y2)并没有用定时器来控制,这是因为当南北方向红灯亮时间结束后(同时也是东西方向黄灯结束时间),T13=On,在S13 和S23 都为On 的状态下,返回到步进点S0,S13 和S23 步进点对应的Y 状态被复位,Y2 自然也被复位。
任务一延时实现交通灯控制一、制作展示1、要想控制好LED不简单2、单片机控制作用很强大二、交通灯展示三、训练目的1、进一步熟悉应用仿真软件调试2、进一步熟悉汇编语言程序设计方法3、进一步掌握对P1口各位的控制4、学习模拟交通灯控制的实现方法四、训练内容用单片机P1做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
五、交通灯规律六、简易交通灯设计单片机P1.0、P1.1口控制2组灯,一组亮的时候另一组不亮ORG 0000H SJMP L1 ORG 0100H L1: SETB P1.0 CLR P1.1LCALL DELAY CLR P1.0 SETB P1.1LCALL DELAY SJMP L1 DELAY: … … … … 七、交通灯设计11、实验步骤设定P1.0控制东西方向“绿灯”,P1.1控制东西方向“黄灯”,P1.2控制东西方向“红灯”,P1.3控制南北方向“绿灯”,P1.4控制南北方向“黄灯”,P1.5控制南北方向“红灯”。
主程序执行对P1口各使用位的控制,并调用相应的延时子程序实现。
2、程序框图:3、实验步骤设定P1.0控制东西方向“绿灯”,P1.1控制东西方向“黄灯”,P1.2控制东西方向“红灯”,P1.3控制南北方向“绿灯”,P1.4控制南北方向“黄灯”,P1.5控制南北方向“红灯”。
主程序执行对P1口各使用位的控制,并调用相应的延时子程序实现。
4、程序清单:ORG 0000HLJMP MAINORG 0030H MAIN: MOV SP,#70H LOOP: SETB P1.1SETB P1.2CLR P1.0SETB P1.3SETB P1.4CLR P1.5ACALL DEL90SACALL YELL1ACALL DEL2SSETB P1.0SETB P1.1CLR P1.2SETB P1.4SETB P1.5CLR P1.3ACALL DEL90SACALL YELL2ACALL DEL2SSJMP LOOP YELL1: SETB P1.0SETB P1.2CLR P1.1SETB P1.3SETB P1.4CLR P1.5RETYELL2: SETB P1.0SETB P1.1CLR P1.2SETB P1.3SETB P1.5CLR P1.4RETDEL2S: MOV R5,#10HF3: MOV R6,#0FFHF2: MOV R7,#0E1HF1: DJNZ R7,F1DJNZ R6,F2DJNZ R5,F3RETDEL90S: MOV R5,#03HF6: MOV R6,#0F0HF5: MOV R7,#0F0HF4: MOV R0,#0F0HDJNZ R0,$DJNZ R7,F4DJNZ R6,F5DJNZ R5,F6RETEND5、扩展同时满足以下条件:1、全亮,检测有无坏灯;2、先东西红灯亮,南北绿灯亮;3、灯亮暗程序都改成子程序。
单片机控制交通灯程序代码第一篇:单片机控制交通灯程序代码毕业设计程序源代码ORG 0000H;主程序的入口地址LJMP MAIN;跳转到主程序的开始处ORG 0003H;外部中断0的中断程序入口地址ORG 000BH;定时器0的中断程序入口地址LJMP T0_INT;跳转到中断服务程序处ORG 0013H;外部中断1的中断程序入口地址MAIN : MOV SP,#50HMOV IE,#8EH;CPU开中断,允许T0中断,T1中断和外部中断1中断MOV TMOD,#51H;设置T1为计数方式,T0为定时方式,且都工作于模式1 MOV TH1,#00H;T1计数器清零MOV TL1,#00HSETB TR1;启动T1计时器SETB EX1;允许INT1中断SETB IT1;选择边沿触发方式MOV DPTR ,#0003HMOV A, #80H;给8255赋初值,8255工作于方式0MOVX @DPTR, A AGAIN: JB P3.1,N0;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转MOV A,P1JB P1.7,RED;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间MOV R0,#00H;R0清零MOV R0,A;存入东西方向绿灯初始时间MOV R3,ALCALL DISP1LCALL DELAYAJMP AGAIN RED:MOV A,P1ANL A,#7FH;P1.7置0MOV R7,#00H;R7清零MOV R7,A;存入东西方向红灯初始时间MOV R3,ALCALL DISP1LCALL DELAYAJMP AGAIN毕业设计;------------N0:SETB TR0;启动T0计时器MOV 76H,R7;红灯时间存入76H N00:MOV A,76H;东西方向禁止,南北方向通行MOV R3,AMOV DPTR,#0000H;置8255A口,东西方向红灯亮,南北方向绿灯亮MOV A,#0DDHMOVX @DPTR, A N01:JB P2.0,B0 N02:SETB P3.0CJNE R3,#00H,N01;比较R3中的值是否为0,不为0转到当前指令处执行;------黄灯闪烁5秒程序------N1:SETB P3.0MOV R3,#05HMOV DPTR,#0000H;置8255A口,东西,南北方向黄灯亮MOV A,#0D4HMOVX @DPTR,A N11:MOV R4,#00H N12:CJNE R4,#7DH,$;黄灯持续亮0.5秒N13:MOV DPTR,#0000H;置8255A口,南北方向黄灯灭MOV A,#0DDHMOVX @DPTR,A N14:MOV R4,#00HCJNE R4,#7DH,$;黄灯持续灭0.5秒CJNE R3,#00H,N1;闪烁时间达5秒则退出;-----------------------------N2:MOV R7,#00HMOV A,R0;东西通行,南北禁止MOV R3,AMOV DPTR,#0000H;置8255A口,东西方向绿灯亮,南北方向红灯亮MOV A,#0EBHMOVX @DPTR,A N21:JB P2.0,T03N22:CJNE R3,#00H,N21;------黄灯闪烁5秒程序------N3:MOV R3,#05HMOV DPTR,#0000H;置8255A口,东西,南北方向黄灯亮毕业设计MOV A,#0E2HMOVX @DPTR,A N31:MOV R4,#00HCJNE R4,#7DH,$;黄灯持续亮0.5秒N32:MOV DPTR,#0000H;置8255A口,南北方向黄灯灭MOV A,#0EBHMOVX @DPTR,A N33:MOV R4,#00HCJNE R4,#7DH,$;黄灯持续灭0.5秒CJNE R3,#00H,N3;闪烁时间达5秒则退出SJMP N00;------闯红灯报警程序------B0:MOV R2,#03H;报警持续时间3秒 B01:MOV A,R3JZ N1;若倒计时完毕,不再报警CLR P3.0;报警CJNE R2,#00H,B01;判断3秒是否结束SJMP N02;------1秒延时子程序-------N7:RETI T0_INT:MOV TL0,#9AH;给定时器T0送定时10ms的初值MOV TH0,#0F1HINC R4INC R5CJNE R5,#0FAH,T01;判断延时是否够一秒,不够则调用显示子程序MOV R5,#00H;R5清零DEC R3;倒计时初值减一DEC R2;报警初值减一 T01:ACALL DISP;调用显示子程序RETI;中断返回;------显示子程序------DISP: JNB P2.4,T02 DISP1:MOV B,#0AHMOV A,R3;R3中值二转十显示转换DIV ABMOV 79H,AMOV 7AH,B DIS:MOV A,79H;显示十位毕业设计MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0F7HMOVX @DPTR,ALCALL DELAY DS2:MOV A,7AH;显示个位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0FBHMOVX @DPTR,ARET;------东西方向车流量检测程序------T03: MOV A,R3SUBB A,#00H;若绿灯倒计时完毕,不再检测车流量JZN3JB P2.0,T03INC R7CJNE R7,#64H,E1MOV R7,#00H;中断到100次则清零 E1:SJMP N22;------东西方向车流量显示程序------T02: MOV B,#0AH MOVA,R7;R7中值二转十显示转换DIV ABMOV 79H,AMOV 7AH,B DIS3: MOV A,79H;显示十位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001H毕业设计MOV A,#0F7HMOVX @DPTR,ALCALL DELAY DS4:MOV A,7AH;显示个位MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#0002HMOVX @DPTR,AMOV DPTR,#0001HMOV A,#0FBHMOVX @DPTR,ALJMP N7;------延时4MS子程序----------DELAY: MOV R1,#0AH LOOP: MOV R6,#64HNOP LOOP1: DJNZ R6,LOOP1DJNZ R1,LOOPRET;------字符表------TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND第二篇:单片机实现交通灯控制智能交通灯设计与实现基于单片机的智能交通灯控制系统的设计与实现,系统能够根据十字路口双车道车流量的情况控制交通讯号灯按特定的规律变化。
课程设计任务书学生姓名:专业班级:指导教师:工作单位:电气工程系自动控制教研室题目:十字路口交通灯的控制一.初始条件1.给定交通灯控制的时序逻辑和工作模式;2.给出用于系统调试用的S7-300PLC、计算机及交通灯模型;3.给出PLC系统的编程软件。
二.要求完成的主要任务1. 设计要求⑴根据课程设计指导书的交通灯控制所要求的时序逻辑,要求用线性化编程和结构化编程两种编程方法来实现该控制逻辑。
⑵在结构化编程方法中,以某一方向的红灯和另一方向的绿灯和黄灯为控制对象编制FC1,OB1中调用FC1。
并且东西向和南北向灯只能调用同一个FC1。
2. 设计报告撰写要求内容要求一般要求包括如下内容:⑴目录编制课程设计的目录,目录的各级标题按照章节顺序排列,最多列到三级标题即可,如1.1.1。
⑵引言课程设计正文前的简短介绍。
包括本课题的设计目的、设计的主要过程及主要的设计内容。
⑶电路设计要求画出PLC的输入/输出接线图。
⑷PLC硬件组态要求列出硬件组态表。
⑸PLC编程元件的地址分配首先对输入/输出点进行地址分配,然后对其他编程元件也进行地址分配,如位存储器M,定时器T,计数器C等。
编程中要使用符号地址,所以在OB1中要编辑符号表(包括输入继电器、输出继电器、定时器及位存储器(或叫辅助继电器),在FC1中要编辑变量声明表。
⑹编写控制程序要求:①编写线性化程序;②在结构化编程中分别编制OB1和FC1;③在程序段中添加注释。
⑺程序调试说明对设计中遇到的主要问题及解决方法、调试过程及方法、在调试过程中对对原设计程序做了哪些有意义的改进及调试的结果几方面进行阐述。
⑻结束语对本课程设计进行总结,写出设计中的体会。
⑼主要参考文献写出完成设计任务过程中参考的主要参考文献,注意参考文献的格式。
◆格式要求1. 纸张格式:要求统一用A4纸打印,页面设置上空2.5cm,下空2.0cm,左空2.5cm,右空2.0cm):2. 正文层次:正文内容层次序号为:1、1.1、1.1.1……,其中⑴.正文标题;一级标题1.(黑体小2号加粗),二级标题1.1(黑体小三号),三极标题1.1.1(黑体小四号)。
实验五:人行道交通灯控制实验
一、实验目的
1. 掌握步进顺控指令中选择性分支与汇合的编程方法;
2. 掌握步进顺控指令中并行分支与汇合的编程方法;
3. 掌握跳转处理程序的编程。
二.实验器材:
1.NC-PLC-2000可编程控制器实验箱一台
2.编程电缆一根
3.连接导线若干
三.实验原理和电路:
设计一个用于过高速公路人行横道的按钮式PLC控制SFC程序,示意图如图1所示;
图1
(1)控制要求
通常车道常开绿灯,人行道常开红灯。
行人过马路时,按下人行横道按钮SB0或SB1后,红绿灯的变化时序如图2所示。
开始30秒内红绿灯状态保持不变,此后车道灯由绿变黄,黄灯亮10秒后,再由黄变红。
车道红灯亮后5秒,人行道绿灯才亮,15秒后人行道绿灯开始闪烁,亮暗间隔为0.5秒,共闪烁5次后才变为人道红灯亮。
此后5秒,车道绿灯才亮。
至此又恢复为通常状态。
图2
四.实验内容及步骤:
1.按图3用FXGP软件的顺序功能图绘制程序,将程序写入PLC运行;
2.写出相应的步进梯形图;
3.写出实验现象
图3
五.实验报告要求
(一).实验目的:
(二).实验器材:
(三).实验原理和电路:
(四).实验内容及步骤:
(五).实验操作结果现象及结论。
交通灯顺序控制系统的程序设计与实现一、本文概述随着城市化进程的加速和交通流量的日益增大,交通灯控制系统在维护交通秩序、保障行车安全方面发挥着至关重要的作用。
本文旨在探讨交通灯顺序控制系统的程序设计与实现,通过分析现有的交通灯控制策略,结合现代编程技术和智能交通系统的发展趋势,提出一种高效、智能的交通灯顺序控制方案。
本文首先概述了交通灯控制系统的重要性和设计要求,然后详细介绍了交通灯顺序控制系统的设计原则、关键技术和实现方法,最后通过案例分析,验证了所提出控制策略的有效性和实用性。
本文旨在为交通灯控制系统的研究和应用提供理论支持和实践指导,为城市交通管理水平的提升和智能交通系统的发展贡献力量。
二、交通灯顺序控制系统的基本原理交通灯顺序控制系统,也被称为交通信号灯控制系统,是城市交通管理的重要组成部分。
其基本原理在于通过预设的时间序列来控制交通信号灯的红、黄、绿三种颜色灯的亮灭,从而有序地引导和控制交通流。
时间序列设定:根据交通流量和道路设计,为每一个交通路口设定一个特定的时间序列,这个序列规定了红灯、绿灯和黄灯的亮灭时间。
一般情况下,绿灯亮时,表示车辆可以通行;红灯亮时,表示车辆必须停止;黄灯亮时,表示警告,车辆应该减速并准备停止。
传感器检测:通过安装在路口的传感器,如车辆检测器、行人按钮等,实时检测交通流量和行人过街需求,将这些信息反馈给控制系统。
控制系统处理:控制系统接收到传感器的反馈信息后,会根据预设的算法和规则,对时间序列进行动态调整。
例如,如果检测到某个方向的车辆流量较大,控制系统可能会增加该方向绿灯的亮灯时间。
信号灯控制:控制系统通过输出信号,控制交通信号灯的亮灭。
这些信号通常是电信号,可以直接驱动交通信号灯。
安全保障:交通灯顺序控制系统还会考虑到一些特殊情况,如紧急车辆通行、故障处理等。
在这些情况下,控制系统会优先保障交通安全。
通过以上五个方面的协同工作,交通灯顺序控制系统能够有效地引导和控制交通流,提高道路通行效率,保障交通安全。
C51期末课程设计大作业课程名称:交通灯程序设计学院:信息技术学院系别:计算机应用系专业:计算机应用技术班级: Z090X组序号:第二组组员X X学号 XXXXXXXX一、功能要求 (1)二、方案论证 (1)三、硬件解读 (2)四、流程图 (5)五、软件设计 (8)六、设计总结 (15)一、功能要求(一)设计所要完成的功能如下:1、信号灯受一个起动开关控制,当起动开关接通时,信号系统开始工作,且先南北红灯亮,东西绿灯亮。
当起动开关断开时,所有信号灯都熄灭。
2、南北红灯亮维持25S。
在南北红灯亮的同时东西绿灯也亮,并维持20S。
到20S时,东西绿灯闪烁,闪烁3S后熄灭。
在东西绿灯熄灭时,东西黄灯亮,并维持2S。
到2S时,东西黄灯熄,东西红灯亮。
同时,南北红灯熄灭,南北绿灯亮。
东西红灯亮维持30S。
南北绿灯亮维持25S。
然后闪烁3S,熄灭。
同时南北黄灯亮,维持2S后熄灭,这时南北红灯亮,东西绿灯亮3、要有倒计时数码显示。
(二)设计要求:1、功能要求2、方案论证3、系统硬件电路设计(给出键盘电路、LED显示电路)4、系统程序设计(要求给出流程图和程序清单)二、方案论证(一)方案的选择和论证根据题目要求,系统可以划分为几个基本模块:1、时钟模块2、时钟设置模块3、显示译码模块4、复位电路对各模块的实现,分别有以下一些不同的设计方案:(1) 标准时基模块方案一:采用直接从晶振分频得到12MHz信号。
该方案比较容易实现,但精确度不高,很难达到题目精确度的要求。
方案二:采用单片机C51经过延时程序产生12MHz时基信号。
在单片机程序设计中通过延时程序的循环产生所需要的12MHz的时基信号,该方案精确度比较高,而且也易于程序调整,电路结构简单,系统资源占用较小。
基于上述理论分析,拟订方案二。
(2)时钟控制模块方案一:采用单片机对键盘扫描和读取来控制不同时间值。
通过单片机对键盘的引脚不停的扫描,读入某时刻按下的键,通过单片机内部查表程序译出按键所对应的值从而使时间的值发生改变。
这是我初学单片机,并用Proreus软件自己绘制自己编写程序实现的一个交通红绿灯的系统。
这是硬件连接图和程序,以便今后复习。
左上右下中控制部分,上面一个开关按下时,南北方向绿灯,东西方向红灯黄灯闪烁3秒绿灯设置15秒,红灯设置18秒。
绿灯走完15秒后黄灯闪烁3秒变为红灯,红灯走完18秒后变成绿灯,以此循环。
源程序:COUNT EQU 30H ;T0中断计数SNLEDDA TA EQU 31H ;存储南北数码管显示的数据SNCOLORFLAG EQU 32H ;=1时南北绿灯亮,=2时南北黄灯亮,=3时南北红灯亮SNLEDDA TAINIT EQU 33H ;存储南北各颜色灯的初始时间EWLEDDA TA EQU 34H ;存储东西数码管显示的数据EWCOLORFLAG EQU 35H ;=1时东西红灯亮,=2时东西绿灯亮,=3时东西黄灯亮EWLEDDA TAINIT EQU 36H ;存储东西各颜色灯的初始时间org 0000hlJMP MAINorg 0003hljmp exint0ORG 000BHlJMP INTT0org 0013hljmp exint1org 0100h;主函数**************************************MAIN:CALL INITSTART:MOV A,COUNTCJNE A,#200,NOT1S ;没到1秒跳转MOV COUNT,#00 ;1秒时间到DEC SNLEDDATAMOV A,SNLEDDATAJNZ checkewleddataMOV SNLEDDATA,SNLEDDA TAINITINC SNCOLORFLAGMOV A,SNCOLORFLAGCJNE A,#04,checkewleddataMOV SNCOLORFLAG,#01checkewleddata:DEC EWLEDDATAMOV A,EWLEDDA TAJNZ timenotoverMOV EWLEDDATA,EWLEDDATAINITINC EWCOLORFLAGMOV A,EWCOLORFLAGCJNE A,#04,timenotoverMOV EWCOLORFLAG,#01TIMENOTOVER:NOT1S:call ewcolorcheckCALL snCOLORCHECKCALL DISPLAYJMP START;*********************************************;初始化函数***********************************INIT: MOV SP,#60HMOV TMOD,#01HMOV TH0,#0eCHMOV TL0,#078HMOV COUNT,#00HMOV SNLEDDATAINIT,#15MOV EWLEDDATAINIT,#18MOV SNLEDDATA,SNLEDDA TAINITMOV EWLEDDATA,EWLEDDATAINITSETB TR0 ;开定时器0SETB ET0 ;允许定时器0中断setb ex0 ;允许外部0中断setb ex1 ;允许外部1中断setb it0 ;外部中断0下降沿触发setb it1 ;外部中断1下降沿触发SETB EA ;开总中断MOV P2,#0feHMOV SNCOLORFLAG,#01RET;*****************************************;外部中断0*********************************** exint0:push accpush pswmov a,p0push accmov a,p1push accmov a,p2push accclr ex1clr p2.0clr p2.1clr p2.2clr p2.3setb p1.4clr p1.1clr p1.2setb p1.5clr p1.3clr p1.4jnb p3.2,$setb ex1pop accmov p2,apop accmov p1,apop accmov p0,apop pswpop acc;外部中断1*********************************** exint1:push accpush pswmov a,p0push accmov a,p1push accmov a,p2push accclr ex0clr p2.0clr p2.1clr p2.2clr p2.3setb p1.4setb p1.2clr p1.1clr p1.0setb p1.3clr p1.5clr p1.4jnb p3.3,$setb ex0pop accmov p2,apop accmov p1,apop accmov p0,apop pswpop acc;T0中断函数*******************************INTT0:PUSH ACCPUSH PSWMOV TH0,#0ecH ;#0echMOV TL0,#078H ;#078hMOV A,P2RL ACJNE A,#11101111B,NOT5MOV A,#0feH ;p2.0=0,南北数码管十位亮,p2.1=0,南北数码管个位亮NOT5: MOV P2,A ;p2.2=0,东西数码管十位亮,p2.3=0,东西数码管个位亮INC COUNTPOP PSWPOP ACCRETI;****************************************;南北红绿黄灯控制**************************snCOLORCHECK:PUSH ACCPUSH BPUSH PSWsngreen:MOV A,SNCOLORFLAGCJNE A,#01,snYELLOWMOV SNLEDDATAINIT,#03 ;设置南北黄灯闪烁时间CLR P1.2CLR P1.1SETB P1.0 ;南北绿灯亮JMP snCOLORCHECKOUTsnYELLOW:;MOV A,SNCOLORFLAGCJNE A,#02,snredMOV SNLEDDATAINIT,#18 ;设置南北红灯亮时间MOV A,COUNTDIV ABMOV A,BCJNE A,#00H,snNOTFLASHCPL P1.1 ;南北黄灯闪烁CLR P1.0CLR P1.2snNOTFLASH:JMP snCOLORCHECKOUTsnred:MOV SNLEDDATAINIT,#15 ;设置南北绿灯亮时间CLR P1.0CLR P1.1SETB P1.2 ;南北红灯亮snCOLORCHECKOUT:POP PSWPOP BPOP ACCRET;******************************************************;东西红绿黄灯控制**************************************ewCOLORCHECK:PUSH ACCPUSH BPUSH PSWewred:MOV A,ewCOLORFLAGCJNE A,#01,ewyellowMOV ewLEDDATAINIT,#15 ;设置东西绿灯亮时间CLR P1.3CLR P1.4SETB P1.5 ;东西红灯亮JMP ewCOLORCHECKOUT;MOV A,ewCOLORFLAGCJNE A,#03,ewgreenMOV ewLEDDATAINIT,#18 ;设置东西红灯亮时间MOV A,COUNTMOV B,#100DIV ABMOV A,BCJNE A,#00H,ewNOTFLASHCPL P1.4 ;东西黄灯闪烁CLR P1.3CLR P1.5ewNOTFLASH:JMP ewCOLORCHECKOUTewgreen:MOV ewLEDDATAINIT,#03 ;设置东西黄灯闪烁时间CLR P1.4CLR P1.5SETB P1.3 ;东西绿灯亮ewCOLORCHECKOUT:POP PSWPOP BPOP ACCRET;************************************************************;数码管显示**************************************************DISPLAY:PUSH ACCPUSH PSWPUSH BMOV A,SNLEDDATAMOV B,#10DIV ABMOV A,EWLEDDA TAMOV B,#10DIV ABMOV R2,BMOV R3,AMOV DPTR,#TABLEMOV A,P2 DISPSNH:CJNE A,#0feH,DISPSNLMOV A,R1MOVC A,@A+DPTRMOV P0,AJMP DISPOUT DISPSNL:CJNE A,#0fdH,DISPEWHMOV A,R0MOVC A,@A+DPTRMOV P0,AJMP DISPOUT DISPEWH:CJNE A,#0fbH,DISPEWLMOV A,R3MOVC A,@A+DPTRMOV P0,AJMP DISPOUT DISPEWL:CJNE A,#0f7H,DISPOUTMOV A,R2MOVC A,@A+DPTRMOV P0,A DISPOUT:POP BRET;************************************************** TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH; 0 1 2 3 4 5 6 7 8 9END。
交通灯控制编程方法一控制要求
1分析控制要求
2先定下I/O点
3绘制出时序图
二控制时序图
1根据时序图定下定时器(定下定时器的方法:是时序图当中状态发生变化的时候,就定下一个定时器,然后定下定时器要延时的时间)
三编写梯形图
程序编写的步骤:
1启动/停止信号
2定时器循环控制(采用前一个定时的触点驱动后一个定时器的线圈,需要循环的话,采用最后一个定时器的常闭点去断开最前的定时器的线圈)
3驱动负载部分(根据时序图写负载,上升沿表示该负载接通,用它对应的常开点,下降沿表示该负载断开用它对应的常闭点,多次要接通或者多次要断开,用几路并联的方法)。
用C语言编写的交通灯程序
用四盏双色灯模拟,P1口控制;南北红灯亮30秒,同时东西绿灯亮25秒,绿灯闪烁3次(间隔为1秒),然后黄灯亮2秒;然后东西与南北互换一下;
重复;#include “reg51.h” //#define uint unsigned int#define uchar unsigned char#define ON 0 //0的时候灯亮#define OFF 1 //1的时候灯亮//管脚定义//南北道黄灯亮3秒红灯亮30秒黄灯3秒绿灯38秒//东西道黄灯亮3秒绿灯亮28秒黄灯3秒红灯40秒sbit PortDX_Yellow = P1; //东西方向黄灯sbit PortDX_Red = P1 ; //东西方向红灯sbit PortDX_Green = P1 ; //东西方向绿灯sbit PortNB_Yellow = P1 ; //南北方向黄灯sbit PortNB_Red = P1 ; //南北方向红灯sbit PortNB_Green = P1 ; //南北方向绿灯void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz){uint ti;while(ms--){for(ti=0;titips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
1引言 (2)1.1编写目的 (2)1.2背景 (2)1.3定义 (2)1.4参考资料 (2)2总体设计 (3)2.1需求规定 (3)2.2运行环境 (3)2.3基本设计概念和处理流程 (3)2.4结构 (5)2.5功能器求与程序的关系 (5)2.6人工处理过程 (5)2.7尚未问决的问题 (5)3接口设计 (5)3.1用户接口 (5)3.2外部接口 (6)3.3内部接口 (6)4运行设计 (7)4.1运行模块组合 (7)4.2运行控制 (7)4.3运行时间 (7)5系统数据结构设计 (7)5.1逻辑结构设计要点 (7)5.2物理结构设计要点 (8)5.3数据结构与程序的关系 (8)6系统出错处理设计 (8)6.1出错信息 (8)6.2补救措施 (8)6.3系统维护设计 (8)概要设计说明书1引言1.1编写目的创建一个可供日常交通灯使用的程序,目标读者为交通灯控制人员。
1.2背景说明:a.交通路口复杂交通信号灯的设计b.任务提出者,开发者:陈磊用户:交通指挥系统设计环境:使用Verilog HDL语言进行设计使用Quartus 2编程环境进行开发。
1.3定义ORDER 选择信号ROAD 亮灯控制信号EN5 5秒延时使能信号LIN5 5秒延时终止信号EN25 25秒延时使能信号LIN25 25秒延时终止信号RST 系统复位信号CLK 系统时钟信号1.4参考资料Verilog HDL数字系统设计与应用2总体设计2.1需求规定输入项目:CLK 系统时钟信号RST 系统复位信号输出项目:ROAD 亮灯控制信号,ROAD=00,红灯亮;ROAD=01,黄灯亮;ROAD=10,绿灯亮;ROAD=11,黄灯亮。
处理要求:根据ORDER的不同值,使相应的灯发亮。
2.2运行环境运行环境:。
Quartus II 9.02.3基本设计概念和处理流程2.4结构ORDER 选择某一灯的选择变量ROAD 控制某一灯亮的控制变量2.5功能器求与程序的关系2.6人工处理过程人工输入ORDER的值,根据ORDER的不同值,相应的灯变亮2.7尚未问决的问题创建一个稳定的时钟源3接口设计3.1用户接口light(red,amber,green,0,order)ORDER为控制变量,由它决定让哪一盏灯发亮。
ROAD=100,则红灯亮;ROAD=010,则绿灯亮;ROAD=001,则黄灯亮;3.2外部接口CLK 外部时钟源信号RST 计时程序使能信号ROAD 控制哪一盏灯发亮的信号3.3内部接口根据ORDER的不同取值,在下面这段程序中,case(order)0: beginroad='b100;en25<=1; en5<=0;if(lin25==1) order<=1;end1: beginroad='b010;en25<=0; en5<=1;if(lin5==1) order<=2;end2: beginroad='b001;en25<=1; en5<=0;if(lin25==1) order<=3;end3: beginroad='b010;en25<=0; en5<=1;if(lin5==1) order<=0;endendcase4运行设计4.1运行模块组合ORDER=0时,ROAD=100,调用模块TIMER25,红灯亮ORDER=1时,ROAD=010,调用模块TIMER5,黄灯亮ORDER=2时,ROAD=001,调用模块TIMER25,绿灯亮ORDER=3时,ROAD=010,调用模块TIMER5,黄灯亮4.2运行控制ORDER=0时,ROAD=100,调用模块TIMER25,红灯亮ORDER=1时,ROAD=010,调用模块TIMER5,黄灯亮ORDER=2时,ROAD=001,调用模块TIMER25,绿灯亮ORDER=3时,ROAD=010,调用模块TIMER5,黄灯亮4.3运行时间运行模块将始终占用CPU5系统数据结构设计5.1逻辑结构设计要点ORDER 选择变量用于选择让哪一盏灯亮ROAD=100,则红灯亮;ROAD=010,则绿灯亮;ROAD=001,则黄灯亮;5.2物理结构设计要点ORDER 2位寄存器变量每次存取要存取全部2位ROAD 3位寄存器变量,每次存取要存取全部3位5.3数据结构与程序的关系ORDER 2位寄存器变量每次存取要存取全部2位ROAD 3位寄存器变量,每次存取要存取全部3位6系统出错处理设计6.1出错信息1.系统开始运行时RST!=0,即系统没有复位,即开始运行,此时会导致出错。
2.系统时钟工作不正常,各个时钟上升沿的间隔不相等,在此情况下延时程序会工作不正常,使延时时间延长或缩短。
6.2补救措施故障1:使RST初始时为0,过一段时间后再将RST置1。
故障2:寻找一个工作稳定的时钟源作为系统的时钟源。
6.3系统维护设计1.系统开始运行时RST!=0,即系统没有复位,即开始运行,此时会导致出错。
2.系统时钟工作不正常,各个时钟上升沿的间隔不相等,在此情况下延时程序会工作不正常,使延时时间延长或缩短。
设计需求说明书2任务概述112.1目标 (11)2.2用户的特点 (11)2.3假定和约束 (11)3需求规定错误!未定义书签。
3.1对功能的规定................................................................................... 错误!未定义书签。
3.2对性能的规定 (12)3.2.1精度 (12)3.2.2时间特性要求 (12)3.2.3灵活性 (12)3.3输人输出要求 (13)3.4数据管理能力要求 (13)3.5故障处理要求 (13)3.6其他专门要求 (13)4运行环境规定134.1设备 (13)4.2支持软件 (14)4.3接口 (14)4.4控制 (14)需求分析说明书的编写提示2任务概述2.1目标该项目开发的意图是为了设计一个可供日常指挥交通使用的交通灯程序,应用目标是用来控制各种交通灯的运行,可以作用在各种类型的交通灯上。
该项目的代码主要是我根据书上已有的一部分资料,再加上自己在网上搜索得到的一些代码,将两者综合以后写出来的|2.2用户的特点该项目的应用对象—交通灯的主要特点如下:1.任意时刻只能有一只灯(红、黄或绿灯)亮。
2.任意时刻必须有一只灯亮,不能三盏灯全是灭的。
3.任一只灯亮了一定时限后必须熄灭,不能一直亮着。
操作人员特点:交通灯一般都是根据程序自动运行的,因此,无操作人员。
维护人员特点:在机房维护交通灯控制程序的人员一般都是学习过编程控制原理的,因此,他们可以看懂程序如何控制交通灯运行的。
本课题预期使用频度:此交通灯控制程序属于24小时全天候运行类型的。
2.3假定和约束预期开发期限:10周。
经费限制:不需要经费。
order=00红灯亮order=01黄灯亮order=10绿灯亮order=11黄灯亮3.2对性能的规定3.2.1精度根据变量ORDER的值,即可使相应的灯变亮,不会出现差错。
3.2.2时间特性要求说明对于该项目的时间特性要求,如对:a.响应时间:根据设定的ORDER的值,立即跳转到相应状态。
b.更新处理时间:必须等待TIMER5或TIMER25延时结束以后,才能进行更新c.数据的转换和传送时间:ORDER设定好以后,立即进行转换,无延迟。
d.解题时间:立即转换,没有延迟。
3.2.3灵活性a.操作方式上的变化:没有影响b.运行环境的变化:没有影响c.同其他系统的接口的变化:没有影响d.精度和有效时限的变化:没有影响e.计划的变化或改进:没有影响3.3输人输出要求输入项:ORDER:2位寄存器型变量,取值范围从00到11。
CLK:时钟源信号RST:延时程序使能信号输出项:ROAD:3位寄存器型变量,取值为100、010或0013.4数据管理能力要求需要管理的文卷个数为三个,一个是交通灯控制程序,一个是25秒程序,另一个是5秒延时程序,两个文卷的大小均在300k以内。
3.5故障处理要求1.系统开始运行时RST!=0,即系统没有复位,即开始运行,此时会导致出错。
2.系统时钟工作不正常,各个时钟上升沿的间隔不相等,在此情况下延时程序会工作不正常,使延时时间延长或缩短。
3.6其他专门要求要有一个稳定的时钟源,这样才能保证某一灯亮后,等待5秒或25秒以后,按照程序的设定,使下一盏灯变亮。
4运行环境规定4.1设备a.处理器型号为8086,内存容量100MBb.外存容量100MB、联机方式、存储格式为二进制文件、设备的型号为ACEX1K;c.输入及输出设备的型号为ACEX1K,联机方式;d.数据通信设备的型号为ACEX1K,数量1只;e.无功能键;4.2支持软件支持软件:Quartus II 9.04.3接口串口通信协议。
4.4控制根据ORDER的值不同,使不同的灯发亮,所以控制信号即为ORDER。
ORDER的值由计算机自动进行变换。
2所设计系统的结构 (16)3模块1(标识符)设计说明 (17)3.1模块描述 (17)3.2功能 (17)3.3性能 (18)3.4输人项 (19)3.5输出项 (19)3.6算法 (19)3.7流程逻辑 (19)3.8接口 (20)3.9存储分配 (21)3.10注释设计 (21)3.11限制条件 (21)3.12测试计划 (21)3.13尚未解决的问题 (22)4模块2(标识符)设计说明 (22)2所设计系统的结构3模块1(标识符)设计说明3.1模块描述根据ORDER的不同值选择让不同的灯发亮,如果ORDER=00,则红灯亮;如果ORDER=01,则黄灯亮;如果ORDER=10,则绿灯亮;如果ORDER=11,则黄灯亮。
程序常驻内存,不可重入,是顺序处理。
3.2功能该系统功能如下:1.系统启动,各项复位2.红灯亮,延时25秒3.黄灯亮,延时5秒4.绿灯亮,延时25秒5.黄灯亮,延时5秒6.返回2继续运行3.3性能程序设计好以后,在运行期间,未发生出错的情况。
3.4输人项CLK 系统时钟信号RST 系统复位信号3.5输出项ROAD 亮灯控制信号,ROAD=00,红灯亮;ROAD=01,黄灯亮;ROAD=10,绿灯亮;ROAD=11,黄灯亮。
3.6算法本程序使用一个CASE(ORDER)多重选择结构,根据ORDER的不同值,ROAD被赋给不同的值,具体设置如下所示:ORDER=00 红灯亮ORDER=01 黄灯亮ORDER=10 绿灯亮ORDER=11 黄灯亮3.7流程逻辑3.8接口3.9TIMER25模块:20%的存储空间3.10注释设计ORDER 选择信号ROAD 亮灯控制信号EN5 5秒延时使能信号LIN5 5秒延时终止信号EN25 25秒延时使能信号LIN25 25秒延时终止信号RST 系统复位信号CLK 系统时钟信号3.11限制条件必须要有一个稳定的时钟源,否则可能导致程序运行不正常。