单片机交通灯(含程序)解析
- 格式:docx
- 大小:369.36 KB
- 文档页数:33
用单片机控制交通灯传统的交通灯控制电路一般由数字电路构成,电路复杂、体积大、成本高。
采用单片机控制交通灯不但可以解决上述问题,而且还具有时间显示功能,非常方便。
下面介绍一种用单片机控制交通灯的方法。
一、硬件硬件电路如附图。
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.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。
实验1 跑马灯实验一、实验目的●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用;●初步掌握采用汇编语言与C语言开发单片机系统的程序结构;●掌握80C51单片机通用I/O口的使用;●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。
二、实验设备及器件●硬件:PC机,HNIST-1型单片机实验系统●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管〔D1、D2、D3、D4〕按照一定的方式点亮。
如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。
●基于Proteus ISIS仿真环境完成上述功能的仿真。
●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。
四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。
五、软件流程图与参考程序●主程序流程图如下:●参考程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar aa,num,speed,flag;uchar code table[]={0x0e,0x0d,0x0b,0x07};uchar code table1[]={0x0a,0x05,0x09,0x06};uchar codetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00};void delay(uint z)//延时函数{uint x;uchar y;for(x=z;x>0;x--)for(y=200;y>0;y--);}void init()//条件初始化函数{ flag=0;speed=10;//控制跑马灯流水速度TMOD=0x01;//中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//翻开总中断ET0=1;//翻开外中断0TR0=1;}void main(){init();//调用初始化函数while(1){if(flag){delay(2000);//调用延时函数for(num=0;num<4;num++)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=0;num<4;num++)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁{P1=table2[num];delay(2000);}for(num=0;num<5;num++)//闪烁5次{P1=0xff;//全暗delay(2000);P1=0X00;//全亮delay(2000);}speed=speed-3;//变速if(speed==4){speed=10;}}}}void timer0() interrupt 1//中断函数{TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==speed){aa=0;flag=1;}}六、实验思考题●请用汇编指令完本钱实验内容,深刻理解汇编语言程序设计结构。
单片机控制交通灯要实现单片机控制交通灯,首先需要了解交通灯的工作原理和控制方式。
一般的交通灯控制有三种状态:红灯、黄灯和绿灯。
红灯表示停车,黄灯表示准备停车或准备起步,绿灯表示行驶。
下面是一个基本的单片机控制交通灯的程序示例:```c#include<reg52.h>//定义LED端口sbit redLight = P1^0;sbit yellowLight = P1^1; sbit greenLight = P1^2;//定义延时时间#define delayTime 1000void delay(unsigned int ms){ unsigned int i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}void init(){//清零redLight = 0;yellowLight = 0;greenLight = 0;}void mn(){init(); //初始化while(1){//红灯redLight = 1;yellowLight = 0; greenLight = 0; delay(delayTime);//黄灯redLight = 0;yellowLight = 1; greenLight = 0; delay(delayTime);//绿灯redLight = 0;yellowLight = 0; greenLight = 1; delay(delayTime); }}```上面的代码使用了8051单片机的开发环境,通过定义三个LED端口,分别控制红、黄、绿三种交通灯的状态。
通过设置不同的IO口状态来控制交通灯的亮灭。
在`init()`函数中,先将所有LED端口设置为低电平,即熄灭状态。
在`mn()`函数中,使用循环控制交通灯额亮灭状态。
先点亮红灯,延时一段时间后熄灭。
然后点亮黄灯,延时一段时间后熄灭。
最后点亮绿灯,延时一段时间后停止。
单片机控制交通灯标题:单片机控制交通灯交通信号灯作为城市交通管理的重要组成部分,通过控制红绿灯的变化来引导车辆和行人的通行,起到维护交通秩序、提高交通效率的作用。
在现代城市中,越来越多的交通信号灯采用了单片机技术来进行控制,本文将介绍单片机控制交通灯的原理和实现方法。
一、交通灯控制原理交通信号灯一般采用红、黄、绿三种颜色,分别表示停止、警告和通行。
在单片机控制下,交通信号灯的控制可以通过三个IO口实现。
其中,一个IO口控制红灯,一个IO口控制黄灯,一个IO口控制绿灯。
通过控制这三个IO口的高低电平状态,可以实现交通灯的变化。
二、单片机控制交通灯的实现方法为了实现交通灯的自动切换,可以使用定时器中断和状态机两种方法。
1. 定时器中断方法定时器中断方法是通过设置一个定时器,在规定的时间间隔内触发中断,从而实现交通灯的切换。
具体实现步骤如下:(1)初始化定时器:设置定时器的工作模式和计数值,使其在固定时间内触发一次中断。
(2)设置中断优先级:为了确保定时器中断能够正常执行,需要设置中断优先级。
(3)编写中断服务函数:中断服务函数中通过改变IO口的电平状态,来控制交通灯的切换。
2. 状态机方法状态机方法是通过一个状态机来记录当前交通灯的状态,并根据一定的规则不断切换状态,实现交通灯的自动切换。
具体实现步骤如下:(1)定义状态枚举:定义一个枚举类型,用于表示交通灯的不同状态,例如红灯、黄灯、绿灯。
(2)初始化状态机:将状态机的初始状态设置为红灯。
(3)编写状态切换规则:根据交通灯的切换规则,编写代码来实现状态的切换。
(4)控制交通灯:根据状态机的当前状态,通过改变IO口的电平状态,来控制交通灯的切换。
三、单片机控制交通灯的优势相比传统的交通灯控制方法,单片机控制交通灯具有以下几个优势:1. 精确控制:单片机具有较高的计算精度和处理能力,可以精确控制交通灯的时间和变化方式。
2. 灵活性:通过编程修改程序和参数,可以很容易地调整交通灯的控制策略,适应不同的交通状况。
单片机红绿灯程序完整版交通灯设计交通灯设计方案: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----东路红灯。
【交通灯流程图】延时20 53延时2553程序如下:ORG 0000HLJMP LOOPORG 000BH ;定时器0中断,实现交通应急事件LJMP WZD0 ORG 0013H ;外部中断1,实现交通应急事件LJMP WZD1 ORG 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.1 CLR 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定时初值50ms MOV TL0,#0B0HDJNZ R2,DEL25S ;判断1s到否?未到继续状态1 MOV 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,ST1RETDEL20S: ;20S延时子程序MOV R5,#0BH;#0DCH ST3: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,92H End。
单片机控制的交通灯红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换。
四个方向各有一个红、黄、绿显示和两个数码管。
东西道为人行道(20秒),南北道为车行道(60秒),黄灯延时最后三秒时,闪烁并切换。
三、硬件电路设计此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。
硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。
因此,可加输出锁存器。
在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。
四、软件程序(C语言)以下是整个设计的软件程序,直接可以编译成*。
Hex代码。
通过以上电路,下载到单片机,可直接运行。
//*****************************////程序名:十字路口交通灯控制//编写人:黄庭剑//初写时间:2009年1月2日//程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2秒钟再实现切换.//CPU说明:AT89C51型单片机; 24MHZ晶体振荡器//完成时间:2009年1月6日//*****************************//#include<stdio.h>#include<reg51.h>#include<intrins.h>sfr p0 = 0x80;sfr p1 = 0x90;sfr p2 = 0xA0;sfr p3 = 0xb0; //这部分内容其实在“#include<reg51.h>”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。
摘要随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。
因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。
根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。
设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。
单片机的应用正在不断深入,单片机可以用来仿真各个系统。
在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用单片机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过程。
Proteus仿真原理图:Keil C源程序:#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_DONGXI = P1^0;//南北方向红灯亮sbit YELLOW_DONGXI = P1^1;//南北方向黄灯亮sbit RED_NANBEI = P1^3;//东西方向红灯亮sbit GREEN_DONGXI = P1^2;//南北方向绿灯亮sbit YELLOW_NANBEI = P1^4;//东西方向黄灯亮sbit GREEN_NANBEI = P1^5;//东西方向绿灯亮sbit DXweixuan1 = P1^6;//南北方向数码管位选1sbit DXweixuan2 = P1^7;//南北方向数码管位选2sbit NBweixuan1 = P3^0;//东西方向数码管位选1sbit NBweixuan2 = P3^1;//东西方向数码管位选2sbit L1=P3^5;sbit L2=P3^6;sbit L3=P3^7;uint aa, bai,shi,ge,bb;uint shi1,ge1,shi2,ge2;uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};void delay(uint z);void init(uint a);void display(uint shi1,uint ge1,uint shi2,uint ge2);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();void main(){P0=0xFF;P1=0xFF;P2=0x00;P3=0xFF;EA=1;EX0=1;IT0=0;init1();while(1){init2();//第2个状态init3(); //第3个状态init4(); //第4个状态init5();//第5个状态}}void init1()//第一个状态:东西、南北方向均亮红灯5S {uint temp;temp=5;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=0; //第一个状态东西、南北均亮红灯5SRED_NANBEI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;YELLOW_DONGXI=1;YELLOW_NANBEI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;}shi1=shi2=temp/10;ge1=ge2=temp%10;if(temp==0){temp=5;break;}display(ge1,shi1,ge2,shi2);}}void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S;{uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=1;RED_NANBEI=0;GREEN_DONGXI=0;GREEN_NANBEI=1;YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯YELLOW_NANBEI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;shi1=(temp+5)/10;ge1=(temp+5)%10;shi2=temp/10;ge2=temp%10;if(temp==0){temp=26;break;}}display(ge1,shi1,ge2,shi2);}}void init3() //第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S {uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_NANBEI=0;GREEN_DONGXI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;YELLOW_DONGXI=~YELLOW_DONGXI;shi1=temp/10;shi2=shi1;ge1=temp%10;ge2=ge1;}if(temp==0){temp=6;break;}display(ge1,shi1,ge2,shi2);}}void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S;{uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=0;RED_NANBEI=1;YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5SGREEN_NANBEI=0;if(aa==20){aa=0;temp--;shi1=temp/10;shi2=(temp+5)/10;ge1=temp%10;ge2=(temp+5)%10;if(temp==0){temp=26;break;}}display(ge1,shi1,ge2,shi2);}}void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S {uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_NANBEI=1;RED_DONGXI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;if(aa==20){aa=0;temp--;YELLOW_NANBEI=~YELLOW_NANBEI;shi1=temp/10;shi2=shi2;ge1=temp%10;ge2=ge1;if(temp==0){temp=6;break;}}display(ge1,shi1,ge2,shi2);}}void display(uint shi1,uint ge1,uint shi2,uint ge2) {DXweixuan1=0;DXweixuan2=1;NBweixuan1=1;NBweixuan2=1;P0=table[ge1];delay(5);DXweixuan1=1;DXweixuan2=0;NBweixuan1=1;NBweixuan2=1;P0=table[shi1];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=0;NBweixuan2=1;P0=table[ge2];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=1;NBweixuan2=0;P0=table[shi2];delay(5);}void xint0() interrupt 0 {RED_NANBEI=0;RED_DONGXI=0;GREEN_NANBEI=1;GREEN_DONGXI=1;YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return ;}void xint1() interrupt 2 {RED_NANBEI=1;RED_DONGXI=1;GREEN_NANBEI=0;GREEN_DONGXI=0;YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return ;}void xtimer0() interrupt 1 {TH0=(65535-50000)/256;TL0=(65535-50000)%256;aa++;}void delay(uint z){uint x,y;for(x=0;x<z;x++)for(y=0;y<110;y++); }。
单片机实训报告课程名称:单片机小系统设计与制作系别:电子工程系专业:移动通信技术班级:11移动通信301班学号:学生姓名:指导教师:2012年12月17日目录1 概述1.课题名称……………………………………………………………………………2.设计任务……………………………………………………………………………3.设计意义……………………………………………………………………………2 系统总体方案及硬件设计1.系统方框图………………………………………………………………………2.工作原理…………………………………………………………………………3.电路原理图………………………………………………………………………4.单片机最小系统…………………………………………………………………5.时间显示电路……………………………………………………………………6.交通灯电路………………………………………………………………………3 软件设计1.单片机交通控制系统总体设计………………………………………………… 2.系统流程图……………………………………………………………………… 3.系统仿真电路图………………………………………………………………… 4.仿真结果分析……………………………………………………………………4 系统软件程序的设计1.程序主体设计流程............................................... 2.理论基础知识................................................... 3.子程序模块设计.................................................. 4.系统软件调试.................................................... 5.PROFESSIONAL仿真............................................... 6.集成开发环境KEIL ...............................................5 系统总体原理图6 系统程序7 材料清单概述1.实训名称单片机控制的十字路口交通灯数码管显示控制系统设计。
基于单片机交通控制灯的设计与实现含有程序交通控制是城市道路交通管理的重要组成部分,而交通控制灯作为交通信号系统的重要组成部分,对交通流量、行车速度和安全等方面起着重要的作用。
针对目前交通量不断增加的问题,为保障交通安全,本文设计了一款基于单片机的交通控制灯。
一、系统概述本系统主要由单片机、红绿灯、显示器和按键等部分组成。
系统运行时,通过单片机的控制,控制红绿灯的闪烁,实现对车辆和行人的交通控制。
同时,为了方便系统设置和监测状态,设计了显示器和按键。
二、硬件设计2.1 单片机选择在本系统中,采用了AT89C51单片机,它是一款高性能、低功耗的8位CISC微控制器,具有较高的运算速度和存储能力,能够满足本系统的要求。
2.2 红绿灯设计本设计中,采用了两个红绿灯,用于控制汽车和行人的通行。
红绿灯采用了LED灯,其亮度高,功耗低,寿命长,且易于控制。
2.3 显示器和按键设计本设计中,采用了4位7段LED数码管作为显示器,可以显示系统的状态信息。
并且设计了两个用于检测按键的开关,实现对系统的设置和控制。
三、软件设计3.1 系统流程本系统主要分为四个阶段,分别是:红灯亮、红灯闪、绿灯亮、绿灯闪。
系统运行时,通过单片机的控制,不断重复这四个阶段,实现控制信号的切换。
3.2 程序实现在AT89C51单片机上,我们使用C语言编写了控制程序。
具体过程如下:(1)定义变量:为了方便控制,定义了所有需要使用的变量,如计时器、开关状态等;(2)初始化:将所有需要使用的设备初始化,如LED灯,数码管,按键等;(3)主程序:程序的主要功能是实现四个阶段的运行,通过控制红绿灯的亮灭和闪烁,控制车辆和行人的行车流量。
(4)控制:通过控制变量的状态,控制系统的运行和信号的切换。
四、实验结果与分析通过对系统的实验验证,可以看出,本系统能够有效地控制车辆和行人的交通流量,具有较高的实用性和可靠性。
结果表明,当车辆红灯亮时,车辆应该停止行驶,行人可以穿过马路;当红灯闪时,车辆可以先行,但需要车速缓慢;当绿灯亮时,车辆可以自由行驶,行人需要等待;当绿灯闪时,车辆可以加速行驶,行人不得穿过马路。
51单片机用C语言实现交通灯(红绿灯)源程序2009-10-29 23:00交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。
源程序如下:/*1、程序目的:使用定时器学习倒计时红绿灯原理主要程序和倒计时一样2、硬件要求:数码管、晶振12M*/#include <reg52.h>bit red,green,yellow,turnred; //定义红、黄、绿及转红标志code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管 0-9unsigned char Dis_Shiwei;//定义十位unsigned char Dis_Gewei; //定义个位void delay(unsigned int cnt) //用于动态扫描数码管的延时程序{while(--cnt);}main(){TMOD |=0x01;//定时器设置 10ms in 12M crystal定时器0,工作方式1,16位定时器TH0=0xd8; //65535-10000=55535=D8F0(十六进制)TL0=0xf0;IE= 0x82; //中断控制,EA=1开总中断,ET0=1:定时器0中断允许TR0=1; //开定时器0中断P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。
red =1;while(1){P0=Dis_Shiwei;//显示十位,这里实现用8位数码管,即左1位P2=0;delay(300);//短暂延时P0=Dis_Gewei; //显示个位,左数,2位P2=1;delay(300);}}/********************************//* 定时中断 *//********************************/void tim(void) interrupt 1 using 1{static unsigned char second=60,count; //初值60TH0=0xd8;//重新赋值,10毫秒定时TL0=0xf0;count++;if (count==100){count=0;second--;//秒减1if(second==0){ //这里添加定时到0的代码,可以是灯电路,继电器吸合等,或者执行一个程序 if(red) //红灭,先转黄{red=0;yellow=1;second=4;P1=0xF3;//黄灯亮4秒,黄灯为过渡灯,再根据情况转绿或转红}else if(yellow && !turnred){yellow=0;green=1;second=25;P1=0xCF;//绿灯亮25秒,}else if(green){yellow=1;green=0;second=4;P1=0xF3;//黄灯亮4秒turnred=1;}else if(yellow && turnred) //绿灯灭,转黄灯,后红灯,turnred=1时{red=1;yellow=0;P1=0xFC;//红灯亮60秒second=60;turnred=0; //接下来是转黄,绿。
单片机课程设计报告题目现代交通灯的设计专业电气工程及其自动化班级电气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号大街的一座高塔上。
单片机实验报告(交通灯)实验效果:每个方向均从10s 开始倒计时计数,计满10s 换一次灯亮,红绿灯交换过程中,黄灯闪烁一次。
实验电路:(由于连线的话线路过于繁琐,故采用一一对应标号的方法简化了电路图.)(注:有一个问题是我不知道这个电路是否应该连接晶振,因为在连接了之后我觉得计时的差别不大,故没有连接,但不知道实际操作的过程中又没有必要)三个LED 灯分别显示红黄绿,南北两侧的红灯和P3.6口相连,绿灯和p3.7口相连,东西两侧绿灯和P3.6相连,红灯和P3.7相连。
所有方向的黄灯均和和P3.2(外部中断1)连的开关,当有紧急情况的时候按下,计时停止所有黄灯被点亮。
和P1.0相连的开关是解除紧急情况的。
四个两位的七段码显示器都是用于显示倒计时的程序效果展示:(黄灯闪烁)(红灯再次点亮进入倒计时)点解除紧急的按钮,红绿灯显示恢复正常状态实验总结:这是第一次做比较大一点的程序,做出来之后的心情还是比较激动的,因为之前根本没有想过自己可以做的出来。
先说说实验中遇到的问题和一些解决方法。
1. 第一个要解决的问题就是倒计时的问题,然后想到的就是应该吧七段码转换表倒置,这样显示的时间就可以是逆序的,其次由于表倒置了,所以计数的数值也要倒着来。
比如我想设定闹钟为10s ,则需要设置时间为09和08这样显示的闹钟时间才是10s2. 第二点问题就是,交通灯是一个循环的过程,其实我想用尽量少得语句达到这个循环的目的,于是我只用了两个口控制东西南北的红绿灯,用P3.6控制南北方向的红灯和东西方向的绿灯,P3.7控制南北方向的绿灯和东西方向的红灯,然后设置了一个R1作为变量没循环一次,R1加1,然后R1和2相除,得到的余数这是0或者1,这用余数加上cjnz 语句就可以起到循环的作用控制红绿灯的交替点亮,我觉得这样比较简单,而且用到的控制口比较少,比较方便。
3. 因为紧急按钮按下,应该是比较紧急的事情,所以我把紧急按钮按外部中断0的接口相连,由于外部中断0的中断优先级最高,所以当按钮一按下,程序自动调至中断程序执行。
基于单片机的交通灯设计c语言程序交通信号灯是城市交通中非常常见的设施之一,起到了引导和控制车辆、行人通行的重要作用。
基于单片机的交通信号灯设计是一个非常典型的实际应用案例,通过编写C语言程序,可以实现对交通信号灯状态的控制和调节。
首先,我们需要了解交通信号灯的基本原理和工作流程。
一般而言,交通信号灯包括红灯、黄灯和绿灯三种状态,分别对应停止、准备和通行的指示。
交通信号灯会按照一定的时间间隔,循环地在这三个状态之间切换,以控制车辆和行人的通行。
在基于单片机的交通信号灯设计中,我们可以借助定时器和IO口来实现状态的切换和指示灯的亮灭。
下面是一个简单的C语言程序示例:```c#include <reg52.h>sbit red = P1^0; //红灯控制引脚sbit yellow = P1^1; //黄灯控制引脚sbit green = P1^2; //绿灯控制引脚void delay(unsigned int xms) //延时函数{unsigned int i, j;for(i=xms; i>0; i--){for(j=110; j>0; j--);}}void main(){while(1){red = 1; //红灯亮yellow = 0; //黄灯灭green = 0; //绿灯灭delay(3000); //延时3秒red = 0; //红灯灭yellow = 1; //黄灯亮green = 0; //绿灯灭delay(2000); //延时2秒red = 0; //红灯灭yellow = 0; //黄灯灭green = 1; //绿灯亮delay(5000); //延时5秒}}```上述程序通过P1口的不同引脚控制红灯、黄灯和绿灯的亮灭。
通过循环的方式,定时器每隔一段时间就切换交通信号灯的状态,从而实现交通信号灯的正常工作。
这只是一个简单的交通信号灯设计示例,实际的交通信号灯设计还可能涉及到更多的状态和控制逻辑。
摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多,在学习了单片机的有关知识之后,运用相关知识来设计完成交通信号灯。
我对单片机很感兴趣,所以在听了老师给我们讲解单片机相关知识以后,我自己课后查找资料,不断学习单片机方面的知识。
这次课设给了我学以致用的机会,我利用自己学的单片机知识,做了一个基于单片机的模拟交通灯控制的设计。
目录1 设计目的.................................. 错误!未定义书签。
2 设计内容.................................. 错误!未定义书签。
3 总体设计 (2)4 硬件设计介绍 (2)4.1数码管倒计时显示的理论分析 (3)4.2三极管的工作原理 (3)4.3二联共阳数码管原理 (4)4.4 74LS573驱动芯片原理 (6)5 电路图及仿真设计 (7)6 源程序 (8)7 设计体会及建议 (13)单片机交通灯设计一、设计目的(一)通过设计了解一个十字路口交通灯基本工作原理(二)掌握89C52计数器/定时器的工作方式和74LS573驱动芯片的工作原理;(三)掌握keil软件的使用(四)学会team work团队合作二、设计内容设计一个模拟十字路口交通灯控制器,程序运行后,初始状态时东南西北方向红灯全亮5秒,接着程序开始循环以下的程序:先东西绿灯和南北红灯亮15秒;然后南北红灯亮和东西黄灯闪5秒;接着南北绿灯和东西红灯亮15秒;最后东西红灯亮和南北黄灯闪5秒。
三、总体设计本设计采用单片机89C52作为控制器,通行时间及等待时间使用数码管以倒计时的方式显示,使用单片机P1口控制交通灯(红黄绿三色LCD)的替换。