(完整word版)单片机红绿灯程序完整版

合集下载

单片机课程设计交通灯(完整版)

单片机课程设计交通灯(完整版)
3.5.3.特性
门控串行数据输入
异步中央复位
符合 JEDEC 标准 no.7A
静电放电 (ESD) 保护:
·HBM EIA/JESD22-A114-B 超过 2000 V
·MM EIA/JESD22-A115-A 超过 200 V 。
多种封装形式
额定从-40 °C至 +85 °C和-40 °C至 +125 °C。
设计思想基于完成以上任务分析结合所学有关知识尤其是本学期所学关于单片机的中断系统和定时计数器的相关知识及应用我们知道对于15红绿黄四组各三盏灯的控制可以通过把这十二盏灯分别接到单片机的六个输出引脚若用p1口进行输出则分配如下at89c51l1l2l3l4l5l6东西红东西黄东西绿南北红南北黄南北绿led显示分布1642
亮灯规律:东西绿灯亮25s,南北红灯亮25s
东西绿灯闪5s,南北红灯亮5s
东西黄灯亮2s,南北红灯亮2s
东西红灯亮25s,南北绿灯亮25s
东西红灯亮5s,南北绿灯闪5s
东西红灯亮2s,南北黄灯亮2s
2.2.
(1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
3.2.LED
3.2.1.七段数码显示器:
七段发光线段分别用a、b、c、d、e、f、g七个小写字母表示。
3.2.2.LED数码管:
半导体数码管又称LED数码管,是一种广泛使用的显示器件。LED有两种:共阳极型和共阴极型。
LED优点:亮度高、字形清晰,工作电压低(1.5~3V)、体积小、可靠性高、寿命长,响应速度极快。
1.引言
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

用单片机控制交通灯源程序代码及流程图

用单片机控制交通灯源程序代码及流程图

用单片机控制交通灯传统的交通灯控制电路一般由数字电路构成,电路复杂、体积大、成本高。

采用单片机控制交通灯不但可以解决上述问题,而且还具有时间显示功能,非常方便。

下面介绍一种用单片机控制交通灯的方法。

一、硬件硬件电路如附图。

AT89C2051的P1.7~P1.5和P1.3~P1.1直接驱动红、黄、绿灯,利用单片机的串口和二片74LS164串/并转换移位寄存器实现时间显示,七段数码管为共阴管,硬件电路极为简单。

二、软件交通灯有红、黄、绿三种。

红灯亮,停止通行;绿灯亮,允许通行;黄灯亮,作过渡。

红灯亮60秒,绿灯亮55秒,黄灯亮5秒。

每组灯的亮暗状态以2分钟为周期循环,故程序采用主、子程序方式,循环结构。

另外,为了简化电路,红、黄、绿灯采用低电平点亮。

源程序清单如下:ORG0000HSTART:MOVDRTR,#TABMOVSCON,#00HMOVP1,#6CH;点亮红、绿灯MOVR0,#0;R0清零LEFT:INCR0CJNER0,#55,LP0;R0<55,转LP0MOVP1,#6AH;R0=55,点亮红、黄灯LJMPLP1LP0:CJNER0,#60,LP1;R0<60,转LP1MOVP1,#0C6H;R0=60,点亮绿、红灯LJMPRIGHTLP1:LCALLDBDBLCALLDISPLJMPLEFT;20H为1,转LEFTRIGHT:DECR0CJNER0,#5,LP2;R0>0,转LP2MOVP1,#0A6H;R0=5,点亮黄、红灯LJMPLP3LP2:CJNER0,#0,LP3MOVP1,#6CH;R0=0,点亮红、绿灯LJMPLEFTLP3:LCALLDBDBLCALLDISPLJMPRIGHTDBDB:MOVA,R0MOVB,#10DIVABMOVR1,AMOVR2,BRETDISP:MOVA,R2MOVCA,@A+DPTRMOVSBUF,AJNBTI,$;查TI位CLRTIMOVA,R1MOVCA,@A+DPTRMOVSBUF,AJNBT1,$CLRTILCALLDEALYRETDELAY:MOVR3,#09HK1:MOVR4,#100K2:MOVR5,#250K3:DJNZR5,K3DJNZR4,K2KJNZR3,K1RETTAB:DB3FH,06H,5BHDB4FH,66HDB6DH,7DH,07HDB7FH,6FH三.实验电路及连线四.实验说明1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。

单片机红绿灯

单片机红绿灯

P1^2 南北绿灯P1^5 东西红灯P1^3 南北黄灯P1^6 东西绿灯P1^4 南北红灯P1^7 东西黄灯P3^2 外部中断#include <AT89X52.H>#include "LCD.h"#define N_GREEN P1_2 //定义南北交通灯接口#define N_YELLOW P1_3#define N_RED P1_4#define E_GREEN P1_6 //定义东西交通灯接口#define E_YELLOW P1_7#define E_RED P1_5#define count_M1 50000 //T0的计数值,晶振为12MHZ时0.05s,晶振为24MHZ时0.025s#define TH_M0 (65536-count_M1)/256 //T0计数值高八位,方式1#define TL_M0 (65536-count_M1)%256 //T0计数值低八位,方式1char count_T0=0; //定时器中断的次数char flag=0; //交通灯转化标志位,满2秒T0中断标志位char inter_flag=0; //外部中断标志,0表示中断次数为偶次,1表示中断次数为奇次unsigned int up=1500; //左轮运动参数变量unsigned int down=1500; //右轮运动参数变量unsigned int pulse=1; //增量/*************定时器0初始化**************/void init_time0(void){TMOD|=0X01; //定时器0,模式1;IE|=0X82; //定时器0允许;TH0=TH_M0; //定时器0高八位初始值TL0=TL_M0; //定时器0低八位初始值}/*************外部中断0初始化***********/void init_INT0(void){TCON|=0X01; //设置外部中断0为下降沿引起IE|=0X81; //外部中断0允许}/*************定时器0中断程序***********/void inter_time0_2s(void) interrupt 1{TH0=TH_M0;TL0=TL_M0;if(++count_T0==120) {count_T0=0;flag=1; //交通灯转换标志位,满2秒标志位}}/**********加速运动*************/void speed_up(void){up=up+pulse;if(up>=1700){up=1700;}down=down-pulse;if(down<=1300){down=1300;}P1_1=1;delay_nus(up);P1_1=0;P1_0=1;delay_nus(down);P1_0=0;delay_nms(20);}/**********减速运动*************/void speed_down(void){up=up-4*pulse;if(up<=1500) //限定左轮运动参数大于1500{up=1500;}down=down+4*pulse;if(down>=1500) //限定右轮运动参数小于1500{down=1500;}P1_1=1;delay_nus(up);P1_1=0;P1_0=1;delay_nus(down);P1_0=0;delay_nms(20);}/************南北绿灯,东西红灯********/void GREEN(void){char num;num=0;Write_Command_LCM(0x01); //清屏while(num<2) //定时0~4秒时{if(inter_flag) //外部中断0动作,跳出子函数{return ;}speed_up(); //机器人加速运动子函数Display_List_Char(0, 0,"green "); //LCD显示Display_List_Char(1, 0,"up ");if(flag==1){num++;flag=0;}N_GREEN=0; //南北绿灯亮E_RED=0; //东西红灯亮}N_GREEN=1; //南北绿灯熄灭// E_RED=1; //东西红灯熄灭,}/************南北黄灯*******************/void YELLOW(void){Write_Command_LCM(0x01); //清屏while(!flag) //定时满2秒,跳出循环{if(inter_flag) //外部中断0动作,跳出子函数{return ;}speed_down(); //机器人减速子函数Display_List_Char(0, 0,"yellow"); //LCD显示Display_List_Char(1, 0,"down ");N_YELLOW=0; //南北黄灯闪烁亮delay_nms(20);N_YELLOW=1;delay_nms(20);E_RED=0; //东西红灯亮}flag=0;N_YELLOW=1; //南北黄灯熄灭E_RED=1; //东西红灯熄灭}/***********南北红灯*******************/void RED(void){char num;num=0;up=1500;down=1500;Write_Command_LCM(0x01); //清屏while(num<3){if(inter_flag) //外部中断0动作,跳出子函数{E_GREEN=1;N_RED=1;return ;}Display_List_Char(0, 0,"red"); //LCD显示Display_List_Char(1, 0,"stop");if(num<2) //定时0~4秒时。

单片机实现红绿灯控制

单片机实现红绿灯控制

单片机实现红绿灯控制概述:红绿灯是城市交通管理中非常重要的设备之一,它通过不同颜色的信号指示交通参与者何时停车和何时通行。

在传统的红绿灯控制中,通常使用机械定时器来控制交通信号的转换。

而现代交通系统中,单片机已经成为了控制红绿灯的主要方法之一,它可以通过程序灵活地控制交通信号的转换,实现更加精确、方便和智能的交通管理。

基本原理:单片机实现红绿灯控制的基本原理是通过控制红绿灯的电源开关来实现信号的转换。

该电源开关可以由单片机的输出引脚触发,从而通过控制电路来控制红绿灯的亮灭状态。

在控制红绿灯的周期中,单片机首先将红灯点亮一段时间,然后再将黄灯点亮一段时间,最后再将绿灯点亮一段时间。

这个周期会不断地循环,以实现红绿灯信号的不断转换。

具体实现:1.硬件连接:首先要将单片机与红绿灯的控制电路连接起来。

可以使用继电器或者晶体管等组件来控制红绿灯的电源开关。

通过控制这些电器元件的通断状态,可以实现红绿灯信号的转换。

2.程序设计:编写程序来实现红绿灯的控制逻辑。

需要设置好红绿灯的亮灭时间和切换周期。

程序中通过控制单片机的输出引脚的高低电位来控制电器元件的通断状态,从而实现红绿灯信号的转换。

案例分析:以8051单片机为例,实现一个红绿灯交替闪烁的控制系统。

以下是一个基本的程序框架:```#include <reg52.h>#define RED_LED P1#define GREEN_LED P2void delay(int ms)int i, j;for (i = 0; i < ms; i ++)for (j = 0; j < 123; j ++); void mainwhile (1)RED_LED=0;//红灯亮GREEN_LED=1;//绿灯灭delay(1000); // 延时1秒RED_LED=1;//红灯灭GREEN_LED=0;//绿灯亮delay(1000); // 延时1秒}```以上是一个简单的红绿灯控制程序,通过循环不断地点亮和熄灭红、绿灯,以实现红绿灯的闪烁效果。

51单片机用C语言实现交通灯_红绿灯_源程序

51单片机用C语言实现交通灯_红绿灯_源程序

c o d eu n s i g n e dc h a rt a b [ ] = { 0 x 3 f , 0 x 0 6 , 0 x 5 b , 0 x 4 f , 0 x 6 6 , 0 x 6 d , 0 x 7 d , 0 x 0 7 , 0 x 7 f , 0 x 6 f } ; / / 共阴数码管 0 9 u n s i g n e dc h a rD i s _ S h i w e i ; / / 定义十位 u n s i g n e dc h a rD i s _ G e w e i ;/ / 定 g n e di n tc n t ) { w h i l e ( c n t ) ; } m a i n ( ) { T M O D| = 0 x 0 1 ; / / 定时器设置 1 0 m si n1 2 Mc r y s t a l 定时器 0 ,工作方式 1 ,1 6 位定时器 T H 0 = 0 x d 8 ; / / 6 5 5 3 5 1 0 0 0 0 = 5 5 5 3 5 = D 8 F 0 (十六进制) T L 0 = 0 x f 0 ; I E =0 x 8 2 ;/ / 中断控制,E A = 1 开总中断,E T 0 = 1 :定时器 0 中断允许 T R 0 = 1 ; / / 开定时器 0 中断 P 1 = 0 x f c ; / / 红灯亮,根据红黄绿接灯的顺序。 r e d= 1 ; w h i l e ( 1 ) { P 0 = D i s _ S h i w e i ; / / 显示十位,这里实现用 8 位数码管,即左 1 位 P 2 = 0 ; d e l a y ( 3 0 0 ) ; / / 短暂延时 P 0 = D i s _ G e w e i ;/ / 显示个位,左数,2 位 P 2 = 1 ;

单片机红绿灯程序完整版2篇

单片机红绿灯程序完整版2篇

单片机红绿灯程序完整版2篇第一篇:单片机红绿灯程序完整版(上)单片机红绿灯是一个经典的实验案例,它展示了单片机在控制和管理车辆行驶过程中的应用。

通过编写程序,我们可以模拟交通信号灯的运行,实现流畅和安全的交通流。

在这篇文章中,我将详细介绍单片机红绿灯程序的完整版,并向读者提供逐步实现该程序的指南。

我将从前期准备开始,包括所需材料和工具的概述,然后进入程序编写和单片机烧录的具体步骤。

最后,我将展示运行红绿灯程序的效果。

首先,让我们看一下所需的材料和工具。

为了完成这个项目,你将需要一块单片机开发板(如Arduino Uno),几个LED灯(红色、黄色和绿色),杜邦线,以及一台电脑。

需要特别注意的是,开发板和电脑之间需要通过USB线连接,以便将程序烧录到开发板中。

在准备好所有材料后,我们可以开始编写红绿灯程序。

我们将使用C语言来编写程序,并使用Arduino IDE作为代码编辑器。

首先,打开IDE并创建一个新的工程。

然后在代码编辑窗口中输入相关代码。

程序的主要逻辑是模拟交通信号灯的运行。

我们将交替点亮红、黄、绿三个LED灯,并设置不同的时间间隔来模拟红绿灯的变化。

例如,可以将红灯亮5秒钟,黄灯亮2秒钟,绿灯亮5秒钟。

然后,程序将循环执行这个过程,以实现连续的红绿灯变化。

在编写完程序后,我们需要将其烧录到单片机开发板中。

首先,通过USB线将开发板与电脑连接。

然后,在IDE中选择正确的开发板和端口,并点击“上传”按钮。

IDE将自动编译和烧录程序到开发板中。

一旦程序烧录完成,我们可以断开USB线,将开发板连接到电源,然后观察红绿灯的变化。

通过实验,我们可以看到红绿灯不断地在变化。

这个程序模拟了真实的交通信号灯,给我们提供了一个清晰的视觉指示,用于控制和管理车辆的行驶过程。

这个实验不仅展示了单片机的应用能力,还培养了我们对交通规则和安全的意识。

在红色、黄色和绿色的灯光交替运行中,我们可以思考如何实现更多的功能和效果。

单片机控制交通灯(内含程序和实物图)

单片机控制交通灯(内含程序和实物图)

摘要随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。

因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。

根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。

设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。

单片机的应用正在不断深入,单片机可以用来仿真各个系统。

在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。

交通信号灯控制方式很多。

本系统采用单片机STC89C52为中心器件来设计交通灯控制器,实现了通过P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。

本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。

关键词:单片机交通灯数码管Microcontroller to control traffic lights Abstract: With economic development, a sharp increase in the number of cars, increasingly crowded city roads, traffic congestion has become an international problem. Therefore, the design of reliable, safe, convenient and versatile traffic light control system of great practical necessity.According to the characteristics of the traffic lights in the actual control, combined with the microcontroller control functions, and easy with Auto Control traffic lights. The design includes two steps of the hardware circuit design and programming have to get involved in several important single-chip learning.The application of microcontroller is the deepening of the Microcontroller can be used to simulate systems. In the automatic control of microcomputer application system, the Microcontroller is often used as a core component to use only Microcontroller knowledge is not enough, but also according to the specific hardware architecture hardware and software, to be improved.Crossroads shuttle vehicles, pedestrians bustling Dealers lane, walkways, and orderly. Rely on to achieve this orderly order? Rely on automatic command system of traffic lights. Traffic signal control. The system uses the Microcontroller STC89C52-centric devices to design the traffic signal controller to achieve a set of red, green light to kindle through the P1 port function of time; traffic light cycle lights, countdown 5 seconds left flashing yellow warning (traffic light signals through the P1 the output port, and displays the time through the P0 port output to double-digit LED). The system design cycle, high reliability, practical, simple operation, easy maintenance, strong extensions.Key words:microcontroller traffic light digital tub目录第1章前言 (1)1.1交通灯发展概述 (1)1.2 课题背景及意义 (2)1.3课题任务及主要实现内容 (3)1.4 原理分析 (4)1.4.1交通灯显示时序的理论分析 (4)1.4.2 交通灯显示的理论分析 (5)第2章设计方案分析 (6)2.1 单片机与外围接口部件 (6)2.2 倒计时显示界面 (7)2.3 交通灯 (7)第3章硬件系统设计 (8)3.1 单片机的选择 (8)3.2 硬件电路实现 (11)3.2.1 最小系统设计 (11)3.2.2 显示设计 (13)3.2.3 发光二极管模拟红绿灯 (15)3.2.4 按键模块 (16)第4章软件电路设计 (17)4.1 软件编译环境测试 (17)4.1.1 C语言介绍 (17)4.1.2 Keil uVision4介绍 (17)4.2软件总体设计 (17)第5章电路检测 (21)结论 (24)致谢 (25)参考文献 (26)附录: (27)源程序: (29)第1章前言单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机课程设计(交通灯程序)

单片机课程设计(交通灯程序)

单片机课程设计基于单片机的交通灯设计2007.07.05 一.设计目的:1、通过交通信号灯控制系统的设计,掌握8255A并行口传输数据的方法,以控制发光二极管的亮与灭;2、用8255作为输出口,控制十二个发光二极管熄灭,模拟交通灯管理.3、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力;4、完成控制系统的硬件设计、软件设计、仿真调试。

二.设计要求:交通信号灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并且用LED数码管显示时间。

用8051做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。

在一个交通十字路口有一条主干道(东西方向),一条从干道(南北方向),主干道的通行时间比从干道通行时间长,四个路口安装红,黄,蓝,灯各一盏;1、设计一个十字路口的交通灯控制电路,要求南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,时间可设置修改。

2、在绿灯转为红灯时,要求黄灯先亮,才能变换运行车道3、黄灯亮时,要求每秒闪亮一次。

4、东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法)。

5、同步设置人行横道红、绿灯指示。

三.设计任务和内容:任务:设计一个能够控制十二盏交通信号灯的模拟系统。

并且要求交通信号灯按照交通规则的模试来运行。

内容:因为本课程设计是交通灯的控制设计,所以要了解实际交通灯的变化情况和规律。

假设一个十字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1东西红灯,南北绿灯通车,。

过一段时间转状态2南北绿灯灭,黄灯闪烁几次,东西仍然红灯。

再转状态3,东西绿灯通车,南北红灯。

过一段时间转状态4,东西绿灯灭,闪几次黄灯,南北仍然红灯。

最后循环至状态1。

四.控制系统的总体要求:1.执行程序时,初始态为四个路口的红灯全亮之后;2.东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车;3.延时一段时间后,东西路口的绿灯熄灭,黄灯开始延时并且开始闪烁,闪烁5次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车;4.延时一段时间之后,南北路口的绿灯熄灭,黄灯开始延时并且开始闪烁,闪烁3次之后,再切换到东西路口方向;之后重复2到4过程。

单片机红绿灯程序完整版

单片机红绿灯程序完整版

交通灯设计交通灯设计方案:1:实现东西路----南北路红绿灯的交通指示。

2:东西路灯变化----南北路灯变化----3:红灯延时时间---25S绿灯延时时间---20S黄灯延时时间—3S4: 数码管显示:红灯---前20S不显示,只在最后5S开始倒计时显示。

绿灯---前15S不显示,只在最后5S开始倒计时显示。

黄灯---3S倒计时显示(若东西路为黄灯,南北路为红灯,那么南北绿的数码管也显示3S)。

5:交通应急事件处理:利用中断分别实现东西路---南北路的交通应急事件处理。

6:延时程序的使用:用循环延时和定时器计时的方法。

注:P1.0---北路绿灯,P1.1--北路黄灯,P1.2---北路红灯。

P1.3--东路绿灯,P1.4---东路黄灯,P1.5----东路红灯。

【交通灯流程图】延时2053延时2553程序如下:ORG 0000HLJMP LOOPORG 000BH ;定时器0中断,实现交通应急事件LJMP WZD0ORG 0013H ;外部中断1,实现交通应急事件LJMP WZD1ORG 0030HLOOP:MOV R3,#5MOV R4,#5MOV R2,#20MOV SP,#70HMOV IE,#85HMOV TMOD,#01H ;置T0为工作方式1MOV TH0,#3CH ;置T0定时初值50msMOV TL0,#0B0HCLR TF0SETB TR0 ;启动定时器T0SETB P1.1 ;东---红灯亮,北---绿灯亮SETB P1.2CLR P1.0SETB P1.3SETB P1.4CLR P1.5ACALL DEL30SACALL YELLOW1 ;北---绿灯转黄灯,东---红灯亮ACALL DEL3S ;延时后北---黄灯灭SETB P1.0 ;东:红灯灭,绿灯亮,北:黄灯灭,红灯亮。

SETB P1.1CLR P1.3CLR P1.2SETB P1.4SETB P1.5ACALL DEL55S ;北---红灯不变,东---绿灯转黄灯ACALL YELLOW2ACALL DEL3SSJMP LOOPYELLOW1: ;北---绿灯转黄灯,东---红灯不变SETB P1.0SETB P1.2CLR P1.1SETB P1.3CLR P1.5SETB P1.4RETYELLOW2: ;东---绿灯转黄灯,北---红灯不变SETB P1.0SETB P1.1CLR P1.2SETB P1.3SETB P1.5CLR P1.4RETWZD0: ;实现南北路交通应急事件CLR P1.0 ; (南北路保持畅通,东西路停止通行)SETB P1.1SETB P1.2SETB P1.3SETB P1.4CLR P1.5JNB P3.2,WZD0RETIWZD1: ;实现东西路交通应急事件CLR P1.3 ; (东西路保持畅通,南北路停止通行)CLR P1.2SETB P1.1SETB P1.0SETB P1.4SETB P1.5JNB P3.3,WZD1RETIDEL30S: ;红绿灯延时DEL25S:JNB TF0,DEL25S ;查询50ms到否CLR TF0MOV TH0,#3CH ;恢复T0定时初值50msMOV TL0,#0B0HDJNZ R2,DEL25S ;判断1s到否?未到继续状态1MOV R2,#20 ;置50ms计数初值DJNZ R4,DEL25S ;状态1维持25sDEL5S: ;取数延时MOV R2,#6DEL5:MOV A,R2ACALL ST ;取数MOV P0,A ;实现数码管显示ACALL DEL1S ;每隔1S减1DJNZ R2,DEL5RETDEL3S:MOV R2,#4HDEL3:MOV A,R2ACALL ST ;取数MOV P2,AMOV P0,A ;数码管显示.ACALL DEL1SDJNZ R2,DEL3RETDEL55S:ACALL DEL20SMOV R2,#6 ;倒计时5S DEL55:ACALL DEL1SMOV A,R2ACALL STMOV P2,A ;数码管显示DJNZ R2,DEL55RETDEL1S: ;1S延时子程序MOV R5,#0BHST1:MOV R6,#0DAHST2:MOV R7,#0CFHDJNZ R7,$DJNZ R6,ST2DJNZ R5,ST1.RETDEL20S: ;20S延时子程序MOV R5,#0BH;#0DCHST3:MOV R6,#0DAHST4:MOV R7,#0CFHDJNZ R7,$DJNZ R6,ST4DJNZ R5,ST3RETST: ;取数MOV DPTR,#TABMOVC A,@A+DPTRRETTAB:DB 0FFH,0FFH,0F9H,0A4H,0B0H,99H,92HEnd。

基于51单片机数码管显示十字路口红绿灯

基于51单片机数码管显示十字路口红绿灯

基于51单片机数码管显示十字路口红绿灯#include<reg51.h>unsigned char count,d1,d2,c1,c2;unsigned char s[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; signed int time=10,time1=13,g=3,y=13;void delay(unsigned char i);/***********子函数声明***************/void sm();/***********I/O端口声明*****************/sbit P2_0=P2^0; //东西绿sbit P2_1=P2^1; //东西红sbit P2_2=P2^2; //东西黄sbit P2_3=P2^3; //南北绿sbit P2_4=P2^4; //南北红sbit P2_5=P2^5; //南北黄sbit button=P2^6;sbit button1=P2^7;sbit button2=P3^0;sbit button3=P3^1;sbit button4=P3^2;sbit button5=P3^3;sbit button6=P3^4;sbit button7=P3^5;sbit button8=P3^6;/*************************************数码显示******************************************/void sm(){d1=time/10;d2=time%10; //东西数码管P1=0x00;P0=s[d1];delay(20);P1=0x01;P0=s[d2];delay(20);c1=time1/10; //南北数码管c2=time1%10;P1=0x02;P0=s[c1];delay(20);P1=0x03;P0=s[c2];delay(20);}void main() //主函数{TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;while(1){sm();}}void int1()interrupt 1 {count++;if(count==20){count=0;ts++;th++;time--;time1--;}/*****************************判断程序******************************/if(ts==0&&th==0) //初始状态时间与亮灯颜色{time1=13;time=10;P2=0xee;}if(ts==11) //东西10秒转3秒{P2=0Xeb;time=3;}if(ts==15) //东西3秒转13秒{P2=0xf5;time=13;}if(ts==29) //东西13秒转10秒{ts=0;}if(th==14) //南北13秒转10秒{P2=0xf3;time1=10;}if(th==25) //南北10秒转3秒{P2=0xdd;time1=3;}if(th==29) //南北3秒转10秒{th=0;}}void delay(unsigned char i ) //延时函数{unsigned char j,k;for (k=0;k<i;k++)for (j=0;j<10;j++);}。

单片机控制交通灯程序代码

单片机控制交通灯程序代码

单片机控制交通灯程序代码第一篇:单片机控制交通灯程序代码毕业设计程序源代码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第二篇:单片机实现交通灯控制智能交通灯设计与实现基于单片机的智能交通灯控制系统的设计与实现,系统能够根据十字路口双车道车流量的情况控制交通讯号灯按特定的规律变化。

基于51单片机交通灯程序完整版

基于51单片机交通灯程序完整版

#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intbit Flag_SN_Yellow; //SN黄灯标志位bit Flag_EW_Yellow;//EW黄灯标志位uchar Time_EW;//东西方向倒计时单元uchar Time_SN;//南北方向倒计时单元uchar EW=15,SN=10,EWL=19,SNL=19; //程序初始化赋值,正常模式uchar EW1=60,SN1=40,EWL1=19,SNL1=19;//用于存放修改值的变量ucharFlag_Moden=1; //模式变量1正常模式 2 禁止南北通东西 3 禁止东西通南北 4 禁止东西南北5 夜间模式ucharFlag_key=0;uchar codetable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~9段选码sbit HC164_Data =P0^0;sbit HC164_Clk =P0^1;sbitEW_green =P0^2;sbitEW_yellow =P0^3;sbitEW_red =P0^4;sbitSN_red =P0^5;sbitSN_green =P0^7;sbitSN_yellow =P0^6;sbitSN_RXD_red =P2^7;sbitSN_RXD_green =P2^6;sbitEW_RXD_red =P2^5;sbitEW_RXD_green =P2^4;sbit FMQ = P1^0;sbit key1 = P3^3;sbit key2 = P3^4;sbit key3 = P3^5;sbit WEI1 =P2^3; // 东西数码管第一位sbit WEI2 =P2^2; // 东西数码管第二位sbit WEI3 =P2^1; // 南北数码管第一位sbit WEI4 =P2^0; // 南北数码管第二位//ucharew=40;sn=35;//函数 delay(uchar z)//功能能延时void Delay(uchar z){uchara,b;for(a=z;a>0;a--)for(b=200;b>0;b--);}void HC_164_Set_byte(ucharduan) {uchar i;for(i=0;i<8;i++){HC164_Data =duan& 0x80;HC164_Clk =0;HC164_Clk =1;duan =duan<<1;}}void display_smg(ucharwei,ucharnum){switch(wei){case 1:WEI1=0;WEI2=1;WEI3=1;WEI4=1;HC_164_Set_byte(table[num]);break; case 2: WEI1=1;WEI2=0;WEI3=1;WEI4=1;HC_164_Set_byte(table[num]);break; case 3: WEI1=1;WEI2=1;WEI3=0;WEI4=1;HC_164_Set_byte(table[num]);break; case 4: WEI1=1;WEI2=1;WEI3=1;WEI4=0;HC_164_Set_byte(table[num]);break; default: break;}}void Display(void){ucharh,l;h=Time_EW/10;l=Time_EW;display_smg(1,h);Delay(8);display_smg(2,l); Delay(8);h=Time_SN/10;l=Time_SN; display_smg(3,h); Delay(8);display_smg(4,l); Delay(8);}void Key(){if(key1==0){ Delay(10);if(key1==0){ while(!key1); Flag_key++;if(Flag_key==1) {Flag_Moden=2;}if(Flag_key==2) {Flag_Moden=3;}if(Flag_key==3) {Flag_Moden=4;}if(Flag_key==4) {Flag_Moden=5;FMQ=1;TR0=1;}if(Flag_key==5) {Flag_EW_Yellow=0; //SN关黄灯信号位 Flag_SN_Yellow=0; //SN关黄灯信号位 FMQ=1;Flag_Moden=1;TR0=1;//启动定时Flag_key=0;}}}if(key2==0){while(!key2);Flag_Moden=2;}if(key3==0){while(!key3);Flag_Moden=3;}}void timer0(void)interrupt 1 using 1 {static uchar count;TH0=(65536-50000)/256;TL0=(65536-50000)%6;count++;if(count==10){if(Flag_SN_Yellow==1) //测试南北黄灯标志位{SN_yellow=~SN_yellow;}if(Flag_EW_Yellow==1) //测试东西黄灯标志位{EW_yellow=~EW_yellow;}}if(count==20){if(Flag_Moden==1){Time_EW--;Time_SN--;}if(Flag_SN_Yellow==1)//测试南北黄灯标志位{SN_yellow=~SN_yellow;}if(Flag_EW_Yellow==1)//测试东西黄灯标志位{EW_yellow=~EW_yellow;}count=0;}}//模式1void Zc_moshi(){//*******S0状态**********EW_RXD_red=0; //EW人行道禁止EW_RXD_green=1;//EW人行道禁止SN_RXD_red=1; //EW人行道通行SN_RXD_green=0;//SN人行道通行Flag_EW_Yellow=0; //EW关黄灯显示信号 Flag_SN_Yellow=0; //SN关黄灯显示信号Time_EW=EW; //EW=45;SN=40;Time_SN=SN;SN_green =0; //SN通行,EW红灯SN_red =1;EW_red =0;EW_green =1;while(Time_EW>5){if(key1==0 || key2==0||key3==0){//Flag_Moden=1;TR0=0;//启动定时break;}Display();}SN_yellow=0; //SN黄灯亮开始闪烁5秒 SN_green =1; //灭//*******S1状态**********Time_SN=5;while(Time_EW<=5){if(key1==0 || key2==0||key3==0){//Flag_Moden=1;TR0=0;//启动定时break;}Flag_SN_Yellow=1; //SN开黄灯信号位 Display();}//*******S2状态**********Flag_SN_Yellow=0; //SN关黄灯显示信号 SN_yellow=1; EW_RXD_red=1; //EW人行道通行SN_RXD_green=1;//SN人行道禁止EW_RXD_green=0; //EW人行道通行SN_RXD_red=0;//SN人行道禁止Time_EW=SN; //EW=45;SN=40;Time_SN=EW;SN_green=1;//南北绿灯禁止东西通行 SN_red=0; //亮EW_red=1;EW_green=0; //亮while(Time_SN>5){if(key1==0 || key2==0||key3==0){//Flag_Moden=1;TR0=0;//启动定时break;}Display();}//*******S3状态**********EW_green=1;EW_yellow=0;Time_EW=5;while(Time_SN<=5){if(key1==0 || key2==0||key3==0){TR0=0;//启动定时break;}Flag_EW_Yellow=1; //SN开黄灯信号位 Display(); }Flag_EW_Yellow=0;EW_yellow=1;}////模式2 禁止南北通东西蜂鸣器响void Jsn() {EW_green =0;EW_yellow =1;EW_red =1;SN_red =0;SN_green =1;SN_yellow =1;SN_RXD_red =0;SN_RXD_green =1;EW_RXD_red =1;EW_RXD_green =0;FMQ =~ FMQ;Delay(10);WEI1=1;WEI2=1;WEI3=1;WEI4=1;}////模式3 禁止东西通南北蜂鸣器响void Jew() {EW_green =1;EW_yellow =1;EW_red =0;SN_red =1;SN_green =0;SN_yellow =1;SN_RXD_red =1;SN_RXD_green =0;EW_RXD_red =0;EW_RXD_green =1;FMQ =~ FMQ;Delay(10);WEI1=1;WEI2=1;WEI3=1;WEI4=1; }//模式4 禁止东西南北蜂鸣器响void JEwSn(){EW_green =1;EW_yellow =1;EW_red =0;SN_red =0;SN_green =1;SN_yellow =1;SN_RXD_red =0;SN_RXD_green =1;EW_RXD_red =0;EW_RXD_green =1;FMQ =~ FMQ;Delay(10);WEI1=1;WEI2=1;WEI3=1;WEI4=1;}//模式5 夜间模式,东西南北黄灯闪烁void Yejian() {EW_green =1;//EW_yellow =1;EW_red =1;SN_red =1;SN_green =1;//SN_yellow =1;SN_RXD_red =1;SN_RXD_green =1;EW_RXD_red =1;EW_RXD_green =1;Flag_EW_Yellow=1; //SN开黄灯信号位 Flag_SN_Yellow=1; //SN开黄灯信号位}void main (){P1=0xff;P2=0xff ;P3=0xff;P0=0xff;EW_green =1;EW_yellow =1;EW_red =1;SN_red =1;SN_green =1;SN_yellow =1;SN_RXD_red =1;SN_RXD_green =1;EW_RXD_red =1;EW_RXD_green =1;WEI1=1;WEI2=1;WEI3=1;WEI4=1;IT0=1; //INT0负跳变触发TMOD=0x01;//定时器工作于方式1TH0=(65536-50000)/256;//定时器赋初值 TL0=(65536-50000)%6; EA=1; //CPU开中断总允许ET0=1;//开定时中断// EX0=1;//开外部INTO中断TR0=1;//启动定时while(1){switch(Flag_Moden) {case 1:Zc_moshi(); break; case 2:Jsn(); break;case 3: Jew();break;case 4: JEwSn();break; case 5: Yejian();break; default :break;}Key(); }}。

单片机交通灯编程代码

单片机交通灯编程代码

单片机交通灯编程代码一、引言交通灯是城市中必不可少的设施,它能够指挥车辆和行人的行动,保证交通有序进行。

单片机作为一种微型计算机,可以通过编程实现交通灯的控制。

本文将介绍单片机交通灯编程代码的实现方法。

二、硬件设计在进行单片机交通灯编程之前,需要先进行硬件设计。

本文以STC89C52RC单片机为例,其引脚连接如下:P0.0-P0.2:红、黄、绿LED控制信号输出;P1.0-P1.3:车道检测器输入;P1.4-P1.7:人行横道检测器输入。

三、软件设计1. 程序框架程序框架如下:void main(){Init();while(1){Traffic_Control();Pedestrian_Control();}}2. 初始化函数初始化函数主要用于设置端口方向和初始状态。

具体代码如下:void Init(){P0 = 0xFF; // P0口输出高电平P1 = 0x00; // P1口输入低电平}3. 交通灯控制函数交通灯控制函数根据车流量和红绿灯状态来控制红绿灯的切换。

具体代码如下:void Traffic_Control(){if(P1_0 == 0) // 车道检测器检测到车辆{P0_0 = 1; // 红灯亮P0_1 = 0; // 黄灯灭P0_2 = 0; // 绿灯灭delay(500); // 延时500msP0_0 = 0; // 红灯灭P0_1 = 1; // 黄灯亮delay(100); // 延时100msP0_1 = 0; // 黄灯灭P0_2 = 1; // 绿灯亮}else if(P1_1 == 0) // 车道检测器未检测到车辆,但红绿灯为绿色状态{delay(30000); // 延时30s,保持绿色状态}else if(P1_2 == 0) // 车道检测器未检测到车辆,但红绿灯为黄色状态{P0_1 = 0; // 黄灯灭P0_2 = 1; // 绿灯亮delay(20000); // 延时20s,保持绿色状态}else if(P1_3 == 0) // 车道检测器未检测到车辆,但红绿灯为红色状态{P0_0 = 0; // 红灯灭P0_1 = 1; // 黄灯亮delay(500); // 延时500msP0_1 = 0; // 黄灯灭P0_2 = 1; // 绿灯亮}}4. 行人过街控制函数行人过街控制函数根据行人检测器和红绿灯状态来控制行人过街。

单片机控制交通灯标准版文档

单片机控制交通灯标准版文档

8255 2021PB2PB3 DP 7 g 31922PB1PB4 f 2 e 41823PB0PB5 d 5 c 81724PC3PB6 A2b 69 A1a 1101625PC2PB7 1526PC1Vcc 5V GND 101427PC0D7 2Y42A4 1163171328PC4D6 2Y32A3 215515 2Y22A2 3147131229PC5D5 2Y12A1 413SN74LS373N911 1A41Y4 5128121130PC6D4 VCCOE1A31Y3 611201614 LE1A21Y2 710115V4161031PC7D3 1 1A11Y1 2345879 0 89218 D0O0 0.3K32932A0D2 O1D12OE fgedcDba 5419 P D2O21OEVCC 76120833A1D1 O3D3 985V O4D4 AT89S52-24JI1213734GNDD0 O5D5 1514 D6O6 5V1716635CSRESET P0_0(AD0)VCCO7D7 43441918 P0_1(AD1) 420.3K5V536RDWR P0_2(AD2)GND 4110 P0_3(AD3) 40437PA0PA7 AA P0_4(AD4) 12 39 P0_5(AD5) 38338PA1PA6 P0_6(AD6) 16 37 GNDP0_7(AD7) 2236239PA2PA5 22uF P2_0(A8) 24140PA3PA4 S1 P2_1(A9) 25 P2_2(A10) 26 RESETP2_3(A11) 1027 P2_4(A12) 28 P2_5(A13)NC 2912 P2_6(A14)NC 3023 P2_7(A15)NC 31344.3K NC 1 P3_0(RXD)VPP/EA 1135 black P3_1(TXD) 13 S2 P3_2(INT0)PSEN 1432 P3_3(INT1) 15 P3_4(TIM0)ALE/PROG RED 16330.1KRED1GREEN2YELLOW2RED2YELLOW1GREEN1 P3_5(TIM1) 17 P3_6(WR) 18 P3_7(RD) 190.43K89895V 710710 white P1_0(TIM2)X2(OUT) 220611611 P1_1(TIM2EX) 311.0592MHz5125120.3K P1_2 1 40.1K413413 P1_3 530pF314314 P1_4 6215215VCC P1_5(MOSI) 2 7116116 P1_6(MISO) 80.3K5V P1_7(SCK)X1(IN) 9215V 30pF

(完整word版)基于单片机交通灯控制系统设计

(完整word版)基于单片机交通灯控制系统设计

基于单片机的交通灯控制系统设计前言交通是经济和社会发展的基础性产业,是社会经济活动中人流、物流、资金流和信息流的主要载体。

在现代社会中,没有高效运转的交通运输体系,就不可能有经济的持续发展。

然而,随着社会经济的发展,机动车辆迅速增如,人们在赚取由机动车辆所带来的巨额利润以及充分享受汽车巨大便利的同时,也越来越受到交通拥堵、交通事故频发、环境污染加剧和燃油损耗上升所带来的诸多问题的困扰.在国外,特别是一些发达国家,由于经济发展较快,早在上个世纪60年代,交通问题就同渐突出;而我国,由于经济发展相对较晚,机动车辆拥有量相对较少,在改革开放前及初期,这一问题并不严重,但是近20多年来,随着我国经济的飞速发展,城市化、汽车化进程加快,机动车辆保有量迅猛增加,我国的交通状况日渐恶化,交通拥挤以及能源、环境问题日益严重,特别是一些大城市,交通拥挤已成为制约城市经济发展的瓶颈。

目前国内已有一些自主开发的城市交通控制与管理系统,但整体性能与国外同类系统相比较仍有较大差距,只在一些中小城市得到部分应用。

国内城市尤其是大城市引进的交通控制系统大部分为进口的SCOOT和SCATS系统。

由于我国交通流是混合交通流,和国外的交通流大不相同,国外的交通控制系统在国内的使用效果不尽人意.所以迫切需要开发适合我国国情的、具有我国自主知识产权的能达到国际先进水平的智能交通系统。

交通系统是一个非线性随机性都很强的开放的复杂大系统,系统维数太高,加上人的参与,对其进行有效的控制是一个非常复杂的问题.这也是现有不管是基于方案选择式的SCATS还是基于方案生成式的SCOOT系统都难于取得很好效果的原因。

所以,必须采用先进的智能控制理论来解决复杂的交通系统的控制问题。

本论文的研究目的就是针对城市交通问题的现状,从方法上对交通信号的优化与控制问题进行研究和探讨,以期为解决实际的城市交通问题提供有益的方法和途径.本文给出了硬件电路的设计以及系统软件架构的搭建,并阐述了一种简单合理的设计方法。

单片机 交通灯(含程序)

单片机 交通灯(含程序)

单片机课程设计报告题目现代交通灯的设计专业电气工程及其自动化班级电气081学号3080421029学生姓名郭琪指导老师王水鱼老师2010年秋季学期起止日期:2011年1月10日至2011年1月14日平时(10%)任务完成(30%)答辩(30%)课设报告(30%)总评成绩目录一、引言 3二、概要设计 42.1 设计思路42.2 设计的主要内容和要求 42.3 总体设计框图 5三、硬件设计 53.1 LED循环电路设计 63.1.1 89c51单片机概述 6 3.1.2 LED循环说明9 3.2 倒计时显示电路11 3.2.1 74LS164芯片11 3.2.2 共阴极数码显示管12 3.2.3 倒计时电路133.2.4 急通车电路13四、软件设计 144.1 程序流程图14 4.2 LED红绿灯显示14 4.3 到计时显示164.4 急通车控制164.5程序代码16五、总结 16 参考文献 17附录一: 18 附录二: 19 基于51单片机的交通灯控制系统设计摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

交通灯控制系统由80C51单片机、键盘、LED显示、交通灯延时组成。

系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。

关键词:交通灯,单片机,自动控制一、引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。

但这个技术在19世纪就已经出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。

这是世界上最早的交通信号灯。

1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。

它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。

1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。

红绿灯单片机程序

红绿灯单片机程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;
uint i,j=20,m,m1,m2,p,p1,p2,q,h,n,p,s1,s2,k0;
s1=m/10;
s2=m%10;
s1=m1/10;
s2=m1%10;
s1=m2/10;
s2=m2%10;
}
void main()
{
time();
while(1)
{
init();
a();
b(s1,s2);
display();
}
}
while(!k2);
if(p1!=1)
m1++;
if(m1==100)
m1=1;
}
if(k3==0)
{
p2++;
if(p2==1)
m1=q-1;
while(!k3);
if(p2!=1)
m1--;
if(m1==10)
m1=99;
}
h=m1;
}
if(n==4)
{
TR0=1;
n=0;
}
s1=j/10;
s2=j%10;
{
if(j>3&&j<21)
P2=0x1b;
if(j>0&&j<4)
P2=0x1d;
if(n>0&&n<2)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通灯设计
交通灯
设计方案:
1:实现东西路----南北路红绿灯的交通指示。

2:东西路灯变化----
南北路灯变化----
3:红灯延时时间---25S
绿灯延时时间---20S
黄灯延时时间—3S
4: 数码管显示:
红灯---前20S不显示,只在最后5S开始倒计时显示。

绿灯---前15S不显示,只在最后5S开始倒计时显示。

黄灯---3S倒计时显示(若东西路为黄灯,南北路为红灯,那么南北绿的数码管也显示3S)。

5:交通应急事件处理:
利用中断分别实现东西路---南北路的交通应急事件处理。

6:延时程序的使用:
用循环延时和定时器计时的方法。

注:P1.0---北路绿灯,P1.1--北路黄灯,P1.2---北路红灯。

P1.3--东路绿灯,P1.4---东路黄灯,P1.5----东路红灯。

【交通灯流程图】
延时20
5
3
延时25
5
3
程序如下:
ORG 0000H
LJMP LOOP
ORG 000BH ;定时器0中断,实现交通应急事件LJMP WZD0
ORG 0013H ;外部中断1,实现交通应急事件LJMP WZD1
ORG 0030H
LOOP:
MOV R3,#5
MOV R4,#5
MOV R2,#20
MOV SP,#70H
MOV IE,#85H
MOV TMOD,#01H ;置T0为工作方式1
MOV TH0,#3CH ;置T0定时初值50ms
MOV TL0,#0B0H
CLR TF0
SETB TR0 ;启动定时器T0
SETB P1.1 ;东---红灯亮,北---绿灯亮
SETB P1.2
CLR P1.0
SETB P1.3
SETB P1.4
CLR P1.5
ACALL DEL30S
ACALL YELLOW1 ;北---绿灯转黄灯,东---红灯亮ACALL DEL3S ;延时后北---黄灯灭
SETB P1.0 ;东:红灯灭,绿灯亮,北:黄灯灭,红灯亮。

SETB P1.1
CLR P1.3
CLR P1.2
SETB P1.4
SETB P1.5
ACALL DEL55S ;北---红灯不变,东---绿灯转黄灯
ACALL YELLOW2
ACALL DEL3S
SJMP LOOP
YELLOW1: ;北---绿灯转黄灯,东---红灯不变
SETB P1.0
SETB P1.2
CLR P1.1
SETB P1.3
CLR P1.5
SETB P1.4
RET
YELLOW2: ;东---绿灯转黄灯,北---红灯不变
SETB P1.0
SETB P1.1
CLR P1.2
SETB P1.3
SETB P1.5
CLR P1.4
RET
WZD0: ;实现南北路交通应急事件
CLR P1.0 ; (南北路保持畅通,东西路停止通行)
SETB P1.1
SETB P1.2
SETB P1.3
SETB P1.4
CLR P1.5
JNB P3.2,WZD0
RETI
WZD1: ;实现东西路交通应急事件CLR P1.3 ; (东西路保持畅通,南北路停止通行)
CLR P1.2
SETB P1.1
SETB P1.0
SETB P1.4
SETB P1.5
JNB P3.3,WZD1
RETI
DEL30S: ;红绿灯延时
DEL25S:JNB TF0,DEL25S ;查询50ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值50ms
MOV TL0,#0B0H
DJNZ R2,DEL25S ;判断1s到否?未到继续状态1
MOV R2,#20 ;置50ms计数初值
DJNZ R4,DEL25S ;状态1维持25s
DEL5S: ;取数延时
MOV R2,#6
DEL5:
MOV A,R2
ACALL ST ;取数
MOV P0,A ;实现数码管显示
ACALL DEL1S ;每隔1S减1
DJNZ R2,DEL5
RET
DEL3S:
MOV R2,#4H
DEL3:
MOV A,R2
ACALL ST ;取数
MOV P2,A
MOV P0,A ;数码管显示
ACALL DEL1S
DJNZ R2,DEL3
RET
DEL55S:
ACALL DEL20S
MOV R2,#6 ;倒计时5S DEL55:
ACALL DEL1S
MOV A,R2
ACALL ST
MOV P2,A ;数码管显示
DJNZ R2,DEL55
RET
DEL1S: ;1S延时子程序MOV R5,#0BH
ST1:
MOV R6,#0DAH
ST2:
MOV R7,#0CFH
DJNZ R7,$
DJNZ R6,ST2
DJNZ R5,ST1
RET
DEL20S: ;20S延时子程序MOV R5,#0BH;#0DCH
ST3:
MOV R6,#0DAH
ST4:
MOV R7,#0CFH
DJNZ R7,$
DJNZ R6,ST4
DJNZ R5,ST3
RET
ST: ;取数
MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
TAB:DB 0FFH,0FFH,0F9H,0A4H,0B0H,99H,92H
End。

相关文档
最新文档