51单片机控制交通灯
基于-51单片机的交通灯设计
4.1 基本原理
主体电路:交通灯自动控制模块。这部分电路主要由80C51单片机的I/O端口、定时计数器等组成。
本设计先是从普通三色灯的指示开始进行设计,用P1口作为输出。程序的初始化是东西南北方向的红灯全亮。然后南北方向红灯亮,东西方向绿灯亮,60秒后东西方向黄灯闪亮5秒后南北方向绿灯亮,东西方向红灯亮。重复执行。倒计时用到定时器T0,用P2口作为LED的显示。二位一体的LED重复执行60秒的倒计时。作为突发事件的处理,本设计主要用到外部中断EX0。用一模拟开关作为中断信号。实际中可以接其它可以产生中断信号的信号源。
1.单片机最小系统
图3.1 51单片机最小系统版
2. 数码管显示电路:由8位共阴LED数码管即驱动芯片74HC573组成,单片机控制两片锁存器是使能端,通过不停打开关闭使能端达到单片机一个8位I/O口控制8位数码管显示的效果。数码管显示电路如图3.2所示。
图3.2数码管显示电路
3.12位LED灯:由12个LED小灯排列起来,加上限流电阻就组成了12位交通灯。12位流水灯的阴极接在单片机的I/O端口,以灌电流输进单片机从而驱动LED。交通LED灯的原理图如图3.3所示。
师大学
电气工程及自动化
实习报告
姓 名:
班 级:
学 号:
实习科目:单片机实训
指导教师:
实习时间:
智能交通信号灯
摘 要
本设计是在熟练掌握单片机及其仿真系统使用方法基础上,综合应用单片机原理、微机原理等课程方面的知识,设计一个采用STC89C52单片机控制的交通灯控制电路。该设计结合实际情况给出了一种简单低成本城市交通灯控制系统的硬件及软件设计方案、各个路口交通灯的状态循环显示,并对程序流程图进行详细讲解分析。交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。根据给出的要求设计交通灯东西、南北两干道交于一个十字路口各干道有一组红、黄、绿三色的指示灯指挥车辆和行人安全通行。红灯亮禁止通行绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换且黄灯亮的时间为东西、南北两干道的公共停车时间。
51单片机控制交通灯设计
1、引言 (3)2、单片机概述 (3)3、芯片简介 (4)3.1 MSC-51芯片简介 (4)3.2 8255芯片简介 (7)3.3 74LS373简介 (8)4、系统硬件设计 (9)4.1交通管理的方案论证 (9)4.2系统硬件设计 (9)4.2.1 系统总框图如下 (9)4.2.2 交通灯硬件线路图 (10)4.2.3 系统工作原理 (12)5、控制器的软件设计 (12)5.1每秒钟的设定 (12)5.2计数器硬件延时 (12)5.2.1 计数器初值计算 (12)5.2.2 计算公式 (12)5.2.3 1秒的方法 (13)5.2.4相应程序代码 (13)5.3 软件延时 (14)5.4 时间及信号灯的显示 (14)5.4.1 8051并行口的扩展 (14)5.4.2显示原理 (15)5.4.3 8255PA口输出信号接信号灯 (15)5.4.4 8255输出信号与数码管的连接 (15)5.4.5 8255与8051的连接 (16)5.5 程序设计 (16)5.5.1流程图如图所示 (16)5.5.2 程序源代码 (17)结论 (22)参考文献 (23)基于单片机的交通灯设计摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。
基于51单片机的交通灯设计
课程设计报告课程名称:单片机原理及应用课程设计系部:电气与信息工程学院专业班级:学生姓名:指导教师:完成时刻:报告成绩:目录No table of contents entries found.交通灯控制系统设计一、设计题目交通灯控制系统设计二、设计要求(1)设计一个十字路口的交通灯控制电路,要求当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。
时刻为60秒。
(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。
(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。
时刻为80秒。
东西方向车流大通行时刻长。
(4)东西、南北方向车道除有红、绿、黄三色指示灯外,每一种灯亮的显示时刻都用显示器进行显示,采用计时的方式设计。
三、设计作用与目的最近几年来随着科技快速的进展,单片机的应用正在不断地走向深切,同时带动传统检测日新月异更新。
在实验检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来利用,针对具体应用对象的特点,配以其他器件来家以完善,伴随人口的日趋增加,那么十字路口车辆穿梭,如何才能让交通井然有序呢?靠的就是交通信号的自动指挥系统。
信号灯的出现,使交通得以有效的管制,对于交通流量、提高道路通行能力,减少交通事故有明显的效果。
绿灯是通行信号,面对绿灯信号的车辆能够直行,左拐弯和右拐弯,除非另一种禁止转向。
左右转弯车辆都必需让正在路口内直行的车辆和过人行横道行人优先通行。
红灯是禁止信号面对红灯的车辆必需停车。
黄灯是警告信号,面对黄灯信号的车辆不呢么好越过安全停车线,可是车辆十分接近停车线而不能安全停车时能够进入交叉路口。
本系统采用MSC-51系列单片机来设计交通灯控制器,实现各个方向车辆、行人通行功能,另外还设计了倒计时显示。
同时还具有南北、东西方向强制通行的功能。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的运算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部份。
基于51单片机的交通信号灯模拟控制系统
基于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秒。
51单片机的交通灯设计(可用)
基于51单片机的交通灯设计2.AT89C51单片机最小实现电路及配套发光二极管电路。
3.设计要求1.编程要求:主程序利用 C 语言编写。
2.实现功能:使用AT89C51单片机控制 4个方向的交通灯(红﹑黄﹑绿)并用数码管显示其时间。
3. 实验现象:状态一:主干道、支干道均亮红灯5秒;状态二:主干道亮绿灯30秒、支干道亮红灯;状态三:主干道绿灯闪3次转亮黄灯、支干道亮红灯3秒;状态四:主干道亮红灯、支干道亮绿灯25秒;状态五:主干道亮红灯、支干道绿灯闪3次转亮黄灯3秒;返回到第二个状态。
4.设计相关知识4.1 硬件设计1. AT89C51简介:AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。
它是一种带2K字节闪存可编程可擦除只读存储器的单片机。
AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2. 2位8段数码管工作原理:2位8段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。
如图4-3所示:段码和位码,段码即段选信号 SEG,它负责数码管显示的内容,图中 a~g、dp组成的数据(a 为最低位,dp 为最高位)就是段码。
位码即位选信号 DIG,它决定哪个数码管工作,哪个数码管不工作。
当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。
4.2 软件应用1. Proteus7.5简介:Proteus软件不仅具有EDA工具软件的仿真功能,还能仿真单片机及外围器件Proteus从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。
在编译方面,它支持IAR、Keil和MPLAB等多种编译器。
51单片机控制交通灯原理图及C语言程序
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++); }。
基于51单片机的交通灯控制系统的设计
论文题目【摘要】本文根据AT89C51单片机的特点及交通灯在实际控制中的特点,提出了一种用单片机自动控制交通灯以及时间显示的方法,同时给出了软硬件设计的方法。
设计的过程包括硬件电路设计和程序设计两大步骤,对在单片机应用中可能遇到的重要设计问题都有涉足。
本系统采用单片机作为核心控制器,通过红外检测系统来测量东西方向和南北方向的车流量大小,经过简单的算法得出红绿灯时间。
然后分别用红、黄、绿灯的不同组合来指挥两个方向的通车与禁行,用LED数码管作为倒计时指示,实时地控制当前交通灯时间使LED显示器进行倒计时工作并与状态灯保持同步,在保持交通安全的同时最大限度地提高交通能顺畅交替运行,从而实现十字路口的智能交通控制。
关键词:单片机;交通灯;红外检测;智能控制发发到的【关键词】AT89C51单片机,交通控制,传感检测,倒计时显示,异常状况判别及处理论文题目(英文)【Abstract】XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX…………【Keywords】XXXXXXX XXXXXXXXXXXXX XXXXXXXXXX…………(与中文摘要基本对应)目录引言----------------------------------------------------------------------------- 1第一章绪论------------------------------------------------------------------- 3 1.1研究意义-------------------------------------------------------------------- 3 1.2交通灯研究现状-------------------------------------------------------------101.2.1国内城市交---------------------------------------------------------------- 41.2.2国际先进成果-------------------------------------------------------------- 7 1.3研究内容-------------------------------------------------------------------15 第二章总体方案设计----------------------------------------------------------17第三章硬件设计-------------------------------------------------------------- 27 3.1单片机概述------------------------------------------------------------------28 3.2电源电路--------------------------------------------------------------------28 3.3检测电路--------------------------------------------------------------------283.3.1红外传感器----------------------------------------------------------------- 43.3.2常用的红外传感------------------------------------------------------------- 73.3.3主动式红外传感器简--------------------------------------------------------- 43.3.4检测电路------------------------------------------------------------------ 7 3.4紧急按键K1电路-------------------------------------------------------------28 3.5红绿灯显示电路------------------------------------------------------283.6倒计时显示电路-------------------------------------------------------283.7振荡电路-------------------------------------------------------------283.8复位电路-------------------------------------------------------------28第四章系统软件设计------------------------------------------------------ 30 4.1主程序设计-------------------------------------------------------------284.2延时子程序------------------------------------------------------284.2.1计数器硬件----------------------------------------------------------------- 44.2.2软件延时------------------------------------------------------------- 74.3计数器计数-------------------------------------------------------284.4数码管显示子程------------------------------------------------------------28 4.5黄灯闪烁子程序--------------------------------------------------------284.6车流量算法子程序------------------------------------------------------284.7紧急车辆子程序------------------------------------------------------------28 第五章系统实现------------------------------------------------------------- 305.1仿真软件简介-------------------------------------------------------------285.1.1Proteus软件简介--------------------------------------------------------- 45.1.2Keil软件简介-----5.2仿真实现------------------------------------------------------5.3实物设计-----结束语---------------------------------------------------------------------------32 致谢---------------------------------------------------------------------------- 33 参考文献------------------------------------------------------------------------ 34 ABSTRACT------------------------------------------------------------------------------------------------------------- 34附录程序清单------------------------------------------------------------------35基于单片机的交通灯控制系统设计摘要:本文根据AT89C51单片机的特点及交通灯在实际控制中的特点,提出了一种用单片机自动控制交通灯以及时间显示的方法,同时给出了软硬件设计的方法。
51单片机控制的交通灯系统实验报告
系统实验报告——基于51单片机的交通灯设计专业:XX学生姓名:xx XX学号:***********指导教师:wwwwwwwwwww2000年x月x日目录1 设计任务和性能指标 (1)1.1设计任务 (1)1.2性能指标 (1)2 设计方案 (2)2.1任务分析 (2)2.2方案设计 (2)3 系统硬件设计 (3)3.1单片机的最小系统 (3)3.2电源电路 (4)3.3数码管显示时间电路设计 (4)3.4信号灯控制电路设计 (5)4 系统软件设计 (5)4.1主程序设计 (5)5 调试及性能分析 (6)5.1调试分析 (6)5.1.1 软件调试 (6)5.1.2 硬件调试 (6)5.1.3 系统功能调试 (6)6 心得体会 (6)参考文献 (8)附录1 系统原理图 (9)附录3 程序清单 (10)附录3元器件清单 (14)1 设计任务和性能指标1.1设计任务利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
用红、绿、黄发光二极管作信号灯。
如图上图所示。
设东西向为主干道,南北为支干道。
1.2性能指标1. 状态1:仅亮灯,数码管不工作。
按下键4,红/黄/绿三色灯交替亮:红—〉(20秒)黄(闪烁)—〉(5秒)绿—〉(20秒) 黄(闪烁)—〉(5秒)红2. 状态2:灯和数码管相结合,模拟十字路口的交通灯 在以上功能的基础上数码管倒计时显示时间。
南东2 设计方案2.1任务分析模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。
红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等2.2方案设计根据设计的要求可知,系统的硬件原理框图如下图所示。
单片机键盘LED 显示三色指示灯系统硬件框图单片机选用A T89S52,它与8051系列单片机全兼容,但其内部带有4KB 的FLASH R OM ,设计时无需外接程序存储器,为设计和调试带来极大的方便。
基于51单片机控制交通灯
目录1 绪论 (1)1.1 课题研究目的 (1)1.2 研究现状 (2)1.3 本文的主要工作 (3)2 系统方案设计 (3)2.1 总体方案设计与分析 (3)2.2 主控制器方案 (4)2.3 显示方案 (5)3 系统电路设计 (5)3.1 主控制器电路 (5)3.1.1 单片机电路 (5)3.1.2 晶振电路 (7)3.1.3 复位电路 (7)3.2 显示电路 (8)3.3 按键电路 (8)3.4 交通灯电路 (9)4 系统硬件设计 (9)4.1 主程序软件设计 (9)4.2 子程序软件设计 (11)4.2.1 显示软件设计 (11)4.2.2 按键扫描软件设计 (13)5 系统测试 (13)5.1 系统调试 (13)5.2 故障检查 (16)6硬件组装与调试 (16)6.1 系统组装 (17)6.2 上电后调试 (18)总结 (19)参考文献 (20)致谢 ...................................................................................................................错误!未定义书签。
附录 (21)附录1:成品图 (21)附录2:原理图 (22)1 绪论1.1 课题研究目的19世纪的时候,英国就出现了世界上首个交通信号灯,因为他的能源来自于煤气的交通信号灯,这种方案在后期的设备运行中很容易产生爆炸,所以后来此种交通信号灯设备就没有在出现了。
到了20世纪的时候,美国的克利夫兰市又有了交通灯设备,然而此次的能源设计方案是电力信号灯。
1930年德国有人开发了选取自动化的设计方案去操作的交通灯,这种设计标志着交通自动操作的起步。
20世纪开始,发达国家第一次选取车辆感应方案处理信号,车辆传感器的主要特点为,此设计能够按照交通拥堵的具体情况去操作交通灯运行的时间参数,这样来解决交通十字路口的拥堵问题,使得车辆可以很快的通过路口,此方案被很多地区进行使用。
基于51单片机控制交通灯的程序设计
基于51单片机控制交通灯的程序设计#include<reg51.h>unsigned char code dis_7[21]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89,0x8c,0x00,0xff};//共阳数码管段码unsigned char data disbuf[6]={0x00,0x00,0x00,0x00,0x00,0x00};//显示缓冲区:时分秒使用unsigned char data count_timedx[]={2,10,5,10,25}; //东西方向倒计时时间unsigned char data count_timenb[]={2,25,10,5,10}; //南北方向倒计时时间unsigned char data Hour=14,Minite=06,Second=0,Halfsec=0; //定义时钟位unsigned char xdata *ledaddr=0x2000; //锁存器选通地址unsigned char data Ms=0,Lightcode=0,Light_step,Led_step,Light_num;unsigned int dataFault_dx=0,Fault_nb=0,Fault_total=0,Countdx=0,Countnb=0;sbit p10=P1^0; //第0位数码管位控制端sbit p11=P1^1; //第1位数码管位控制端sbit p12=P1^2; //第2位数码管位控制端sbit p13=P1^3; //第3位数码管位控制端sbit p14=P1^4; //第4位数码管位控制端sbit p15=P1^5; //第5位数码管位控制端sbit p16=P1^6; //发光二极管选通sbit p17=P1^7; //按键选通sbit p33=P3^3; //k1键用于切换四种功能/******************************************************************* **********//****************************1毫秒延时函数*******************************/ void delay1ms(int t){unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}/******************************************************************* ********//*************************键盘扫描函数****************************************/ unsigned char getkey(void) {unsigned char Yiwei;unsigned char test=0x00,tim;*ledaddr=test;if(p17==0 && tim==0) //判断是否有按键按下{p17=1;tim=1;test=0xfe;delay1ms(5);for(Yiwei=0;Yiwei<8;Yiwei++) //处理按键{*ledaddr=test;if(p17==0)break;else test=(test<<1)+1;}return Yiwei;}else if(p17==0){}else {tim=0;}}/******************************************************************* **********//************************六位LED数码管显示***********************************/void displed(unsigned int hour_shi,unsigned int hour_ge,unsigned int min_shi,unsigned intmin_ge,unsigned int sec_shi,unsigned int sec_ge){*ledaddr=dis_7[hour_shi]; //时的十位显示p10=0;delay1ms(1);p10=1;*ledaddr=dis_7[hour_ge]; //时的个位显示p11=0;delay1ms(1);p11=1;*ledaddr=dis_7[min_shi]; //分的十位显示p12=0;delay1ms(1);p12=1;*ledaddr=dis_7[min_ge]; //分的个位显示p13=0;delay1ms(1);p13=1;*ledaddr=dis_7[sec_shi]; //秒的十位显示p14=0;delay1ms(1);p14=1;*ledaddr=dis_7[sec_ge]; //秒的个位显示p15=0;delay1ms(1);p15=1;}/******************************************************************* **********//******************************发光二极管显示函数*****************************/void displight(unsigned int state){if(state==0) //状态0:各方向红灯全亮{Lightcode=0xbb;}else if(state==1) //状态1:东西绿灯亮,南北红灯亮{Lightcode=0xbe;}else if(state==2) //状态2:东西黄灯闪烁,南北红灯亮{Lightcode=0xbd;}else if(state==3) //状态3:东西红灯亮,左行亮,南北红灯亮{Lightcode=0xb3;}else if(state==4) //状态4:东西红灯亮,南北直行绿灯亮{Lightcode=0xeb;}else if(state==5) //状态5:东西红灯亮,南北黄灯闪烁{Lightcode=0xdb;}else if(state==6) //状态6:东西红灯亮,南北红灯亮,左行亮{Lightcode=0x3b;}//黄灯闪烁if((Halfsec%2)==0){if(state==2)Lightcode=0xbf; //东西闪烁if(state==5)Lightcode=0xfb; //南北闪烁}*ledaddr=Lightcode; //送交通灯显示状态p16=0;delay1ms(1);p16=1;}/******************************************************************* *********//****************************违章车辆统计函数********************************/void weizhang(void) // 红灯亮的时候是否有车通过,KL1键显示东西,KL2键显示南北 {unsigned char key1;key1=getkey(); //获得键值if((key1==0)&&(Light_step>=4)&&(Light_step<=6)) //KL1键显示南北方向违章车辆,且只在南北方向为红灯时加1{Fault_dx++;if(Fault_dx==99) //最大计数99辆{Fault_dx=0;}}else if((key1==2)&&(Light_step>=1)&&(Light_step<=3)) //KL3键显示东西方向违章车辆,且只在东西方向为红灯时加1{Fault_nb++;if(Fault_nb==99) //最大计数99辆{Fault_nb=0;}}}/******************************************************************* ********//****************************数字钟函数***********************************/void shuzizhong(void) //数字钟:KL3键调节秒,KL4键调节分,KL5键调节时 {unsigned char data key2;key2=getkey(); //获得键值if(key2==2) //调节秒,按一次KL3,则加一秒{Second++;if(Second==60)Second=0;}if(key2==3) //调节分,按一次KL4,则加一分{Minite++;if(Minite==60)Minite=0;}if(key2==4) //调节时,按一次KL5,则加一时{Hour++;if(Hour==24)Hour=0;}disbuf[0]=Second%10; //时钟显示,送缓冲区disbuf[1]=Second/10;disbuf[2]=Minite%10;disbuf[3]=Minite/10;disbuf[4]=Hour%10;disbuf[5]=Hour/10;}/******************************************************************* **********//**************修改倒计时间函数*********************************************/void change_time(void) //注意:只修改绿灯、黄灯或左行灯时间,红灯时间自动求出 {unsigned int data key3=0;key3=getkey();if(key3==4) //KL5键选择要修改东西向倒计时{Light_num++;if(Light_num>4) Light_num=0;}if(key3==5) //KL2键用于修改东西方向倒计时,加1 {count_timedx[Light_num]++;if(count_timedx[Light_num]>=99)count_timedx[Light_num]=99;}if(key3==1)//KL6键用于修改东西方向倒计时,减1 {count_timedx[Light_num]--;if(count_timedx[Light_num]<1)count_timedx[Light_num]=1;}if(key3==6) //KL7键用于修改南北方向倒计时,加1 {count_timenb[Light_num]++;if(count_timenb[Light_num]>=99)count_timenb[Light_num]=99;}if(key3==2)//KL3键用于修改南北方向倒计时,减1 {count_timenb[Light_num]--;if(count_timenb[Light_num]<1)count_timenb[Light_num]=1;}count_timedx[4]=count_timenb[2]+count_timenb[3]+count_timenb[4]; //调整,求各方向红灯时间count_timenb[1]=count_timedx[1]+count_timedx[2]+count_timedx[3]; //红灯时间=绿灯+黄灯+左行灯}/******************************************************************* *********//************************定时器/计数器t0中断函数******************************/void time_intt0(void) interrupt 1 {TH0=0x4c; //赋初值定时50msTL0=0x00;Ms++;if(Ms>9){Ms=0;Halfsec++; //计时半秒if(Halfsec==2){Halfsec=0;Second++; //计时一秒Countdx--; //东西、南北倒计时减一Countnb--;}if(Second==60){Second=0;Minite++;//计时一分}if(Minite==60){Minite=0;Hour++; //计时一小时}if(Hour==24)Hour=0;}if((Countdx==0)||(Countnb==0)) //转换交通灯显示状态{Light_step++;if(Light_step>6){Light_step=1;}if(Countnb==0)Countnb=count_timenb[Light_step];//东西为红灯,南北绿、黄、左切换if(Countdx==0)Countdx=count_timedx[Light_step];//南北为红灯,东西绿、黄、左切换}}/******************************************************************* **********//****************外部中断1服务函数********************************************/void int_1(void) interrupt 2 //数码管显示状态切换 {EX1=0; //关中断if(Led_step<4){Led_step++;}if(Led_step==4){Led_step=0;}EX1=1;//开中断}/************串行口中断服务函数*********************************************/void ser_put(void) interrupt 4 //上位机发出字符'c',则清违章记录,若发出'g',则上传违章记录{if(RI==1) //接收到上位机发出的字符{RI=0;ACC=SBUF; //取字符if(ACC=='c') //清违章记录{Fault_dx=0;Fault_nb=0;}else if(ACC=='g')//上传违章记录{Fault_total=Fault_dx+Fault_nb;SBUF=Fault_total;}}if(TI==1) //发送中断TI=0;}/******************************************************************* **********//***************8051初始化函数************************************************/void Istr(void) {/*定时器初始化*/TMOD=0x21;//定时器1工作于方式2,做波特率发生器;定时器0工作于方式1,做定时器TH1=0xfa; //产生9.6kbit/s波特率TL1=0xfa;TH0=0x4c; //50msTL0=0x00;/*串行通信初始化*/SCON=0x50;PCON=0X80|PCON;/*启动定时器,开中断*/ET1=0; //禁止定时器1中断ET0=1;TR1=1;TR0=1;IT1=1; //设置外部中断为边沿触发EX1=1;ES=1;EA=1;}/************************主函数***********************************************/ void main(void) {Istr(); //调用初始化函数Led_step=0;Light_step=0;Light_num=0;Countdx=count_timedx[0];Countnb=count_timenb[0];SBUF='s';while(1){if(Led_step==0) //显示倒计时{displed(20,(Countdx/10),(Countdx%10),20,(Countnb/10),(Countnb%10));}if(Led_step==1) //显示时钟{shuzizhong(); //调用数字钟函数displed(disbuf[5],disbuf[4],disbuf[3],disbuf[2],disbuf[1],disbuf[0]);}if(Led_step==2) //修改倒计时数{change_time(); //调用修改倒计时时间函数displed(Light_num,count_timedx[Light_num]/10,count_timedx[Light_num]%10,Light_num,count_timenb[Light_num]/10,count_timenb[Light_num]%10);}if(Led_step==3) //显示并统计违章数{weizhang(); //调用违章记录函数displed(15,Fault_dx/10,Fault_dx%10,15,Fault_nb/10,Fault_nb%10);}displight(Light_step);//显示交通灯}}/*********over*******over************over*********over*********over* ******over***/。
基于51单片机的交通灯控制系统设计
一、摘要:随着科技的飞速发展,越来越多的控制功能强大的芯片出现在我们生活中,但8051系列单片机,因为其的廉价几成本,在我们生活中依然处于十分重要的地位。
在实时检测和自动控制的单片机应用系统中,单片机是作为一个核心部件来使用,但是仅单片机方面知识是不够的,还需要根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
作为交通控制的重要组成部份单片机。
因此,本人选择制作交通灯作为课题加以设计并实现。
交通管制应当以人性化、智能化为目的,做出相应的改善。
以此为出发点,本系统采用的单片机控制的交通信号灯。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广阔的应用前景。
关键词:交通灯,51单片机,数码管二、实习目的和意义1.学习51单片机的最小系统及硬件接口设计与应用2.熟练掌握电路原理图绘制软件DPX的使用。
3.熟练单片机的程序设计与调试。
4. 自主设计出具有实际意义的能用于生活的电路系统。
5. 本次课程设计对以后的毕业设计甚至工作打下了动手自己设计的基础。
三、实习要求1. 完成以8051系列单片机为核心处理器的模拟十字路口交通灯控制的硬件设计(在altium designer下画出硬件原理图)。
布线,印制电路板,并焊接原件搭载硬件电路,做出实物。
2. 完成交通灯控制系统的软件编程。
3. 软硬件综合调试,模拟实现对交通灯控制系统的控制。
4. 撰写实验报告:报告中给出硬件方案、软件流程图、软件关键代码四、实习内容1.设计题目:基于51单片机交通十字路口信号灯设计2.实现功能:具有红、绿、黄三种颜色彩灯,并有一个数码管进行倒计时显示倒计时时间为三十秒。
还应具有按键控制特殊情况下十字路口不需要红绿灯的显示(车流量很少的地段深夜可以不设红绿灯)。
五、系统实现1.电路设计:51单片机介绍:本实验使用的51单片机为STC89C52STC89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM)。
基于51单片机交通灯控制器设计
基于51单片机交通灯控制器设计 1第一章单片机及其系统概述1.1单片机的定义及特点何谓单片机:单片机(MCU)是将计算机的基本组成部分(CPU、ROM、RAM、中断系统、定时计数器、I/O)集成在一个芯片或一个完整的封装的器件内,因此称作单片微型计算机。
主要应用于控制领域,比如构成智能化产品,实现自动化,工业测控领域,用以实现各种参数的测量和控制功能,因此又称作微控制器。
常用于被测系统的核心,并融入其中,及嵌入系统内部进行使用,为了强调嵌入的特点,也常称作嵌入式的微控制器。
其特点是:结构简单,体积小。
性价比高。
可靠性高,功耗小。
应用范围广泛。
单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。
单片机按用途大体上可分为两大类:1--通用型单片机2--专用型单片机专用型单片机是指用途比较专一,出厂时程序已经一次性固化好,不能再修改的单片机。
例如电子表里的单片机就是其中的一种。
其生产成本很低。
通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。
小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。
1.2嵌入式系统的定义及其特点何谓嵌入式系统?嵌入式系统(Embedded System),一般是指嵌入到对象体系中执行专用功能的计算机系统。
嵌入式系统诞生于微型机时代,其嵌入性的本质是将一个计算机嵌入到一个对象体系中去:对象系统则是指嵌入式系统所嵌入的宿主系统。
为了2 第一章单片机及其系统概述区别于原有的通用计算机系统,嵌入到对象体系中,实现对象体系智能化控制的计算机,称作嵌入式计算机系统。
嵌入式系通常由嵌入式硬件和软件两部分组成。
一个简单的嵌入式系统可以由微控制器或单片机及嵌入式软件组成。
总的来说,嵌入式系统就是以应用为核心,以计算机技术为基础,软硬件可裁剪,适应对功能、可靠性、安全性、体积、重量、成本、功耗、环境、安装方式等方面严格要求的专用计算机系统。
基于51单片机 简单交通灯控制
项目设计报告项目名称:简易交通灯控制系统的设计课程名称:单片机应用工程技术训练学院:机电学院专业:机械工程及自动化学号:*************/22/37姓名:张梦迪张博文崔剑锋成绩:2013年06月04日1、设计任务与要求1.1.设计任务设计基于51单片机的交通灯控制系统。
1.2. 设计要求基本功能:(1)设计程序能够控制红灯、黄灯和绿灯的切换。
假设十字路口为东西南北走向,南北方向为主干道,东西方向为辅干道,主干道通行时间长于辅干道。
要求按表1实现过程控制。
交通灯控制顺序要求如表1所示(2)应用两位动态显示的LED显示器倒计时显示通行时间,总时间应包含绿灯闪烁和黄灯亮的时间。
(3)当绿灯闪烁和黄灯亮时,蜂鸣器发声提示。
扩展功能:处理紧急状况,由按键引发外部中断进入紧急状况。
在紧急状况下东西、南北均为红灯,15秒钟后恢复进入紧急状况之前的正常运行状态。
1.3 材料清单本设计中所需的材料如表2所示:表2. 材料清单2、整体方案设计单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。
本系统在此基础上,加入了紧急情况处理与时间调整功能。
图1. 系统的总体框图3、硬件设计3.1 交通灯模组本系统中使用的所使用的交通灯系统为凌阳科技股份有限公司生产的交通灯模组V3.0。
本系统为一套交通灯系统:包括一块驱动电路板(交通灯模组V3.0_驱动板)和四块LED板(交通灯模组V3.0_LED板)。
1)LED板中每个方向提供四组交通LED灯(包括左转、直行、右转、人行道四组),每组交通灯包括红、黄、绿三个灯,可以实现交通的通行控制;2)LED板中每个方向提供两个数码管,可以实现100以内的倒计时。
本系统包含一块驱动板和四块LED板,驱动板框图如图 2.1:其中J1、J2、J3、J4为LED板的插接口,使用时可以直接把四块LED板插接在驱动板上;J5、J6、J7是单片机的接口,使用时可以直接用3根10pin排线与单片机连接;驱动电路模块用来驱动LED灯和数码管。
基于某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;//用于存放修改值的变量uchar Flag_Moden=1; //模式变量 1正常模式 2 禁止南北通东西 3 禁止东西通南北 4 禁止东西南北 5 夜间模式uchar Flag_key=0;uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~ 9段选码sbit HC164_Data =P0^0;sbit HC164_Clk =P0^1;sbit EW_green =P0^2;sbit EW_yellow =P0^3;sbit EW_red =P0^4;sbit SN_red =P0^5;sbit SN_green =P0^7;sbit SN_yellow =P0^6;sbit SN_RXD_red =P2^7;sbit SN_RXD_green =P2^6;sbit EW_RXD_red =P2^5;sbit EW_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; // 南北数码管第二位//uchar ew=40;sn=35;//函数delay(uchar z)//功能能延时void Delay(uchar z){uchar a,b;for(a=z;a>0;a--)for(b=200;b>0;b--);}void HC_164_Set_byte(uchar duan){uchar i;for(i=0;i<8;i++){HC164_Data =duan & 0x80;HC164_Clk =0;HC164_Clk =1;duan =duan <<1;}}void display_smg(uchar wei,uchar num){switch(wei){case1: WEI1=0;WEI2=1;WEI3=1;WEI4=1;HC_164_Set_byte(table[num]);break;case2: WEI1=1;WEI2=0;WEI3=1;WEI4=1;HC_164_Set_byte(table[num]);break;case3: WEI1=1;WEI2=1;WEI3=0;WEI4=1;HC_164_Set_byte(table[num]);break;case4: WEI1=1;WEI2=1;WEI3=1;WEI4=0;HC_164_Set_byte(table[num]);break;default: break;}}void Display(void){uchar h,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;//定时器工作于方式1 TH0=(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();}}。
利用51单片机实现交通红绿灯讲解
END
谢谢大家!
MOV A,#0B6H
MOVX @DPTR,A ;从A口输出数据0B6H,来控制相应二极管发光
INC DPTR
MOV A,#0DH
MOVX @DPTR,A ;从B口输出数据0DH,来控制相应二极管发光
北
西
南
东
黄绿红 110
黄绿红 110
黄绿红 黄绿红 110 11 0
B口低4位(ODH)
;允许定时器1中断
SEYB TR1
;打开定时器1
SJMP $
SER: MOV TH1,#3CH
MOV TL1,#0B0H ;定时器重装初值
DJNZ R1,NO ;循环定时(20H)次
MOV R1,20H
DJNZ R2,NO ;循环定时(21H)次
MOV R2,21H
RET
NO: RETI
MOV 20H,#0AH
MOV 21H,#01H
LCALL DELY
;延时0.5s
MOV DPTR,#0FF7CH
MOV A,#0BEH
MOVX @DPTR,A
INC DPTR
MOV A,#0FH
MOVX @DPTR,A
;东西红灯亮
MOV 20H,#0AH
MOV 21H,#01H
LCALL DELY
MOVX @DPTR,A
;南北红灯亮
MOV 20H,#0AH
MOV 21H,01H
LCALL DELY
;延时0.5s
DJNZ R7,JOD1
;闪烁次数未到继续
基于51单片机的交通信号灯系统_毕业设计
毕业设计基于单片机的交通信号的灯控制系统一. 综合实训的主要内容 1.设计任务设计一单片机控制的交通信号灯系统,模拟城市十字路口交通信号灯功能。
2.基本功能要求2.1 交通信号控制直行车道红黄绿灯控制、左行车道绿灯控制、人行横道红绿灯控制。
2.2 通行时间显示数码管倒计时显示通行时间。
2.3 时间参数设置存储按键实现通行时间的设置,并存储到EEPROM (24C02)芯片中。
二. 硬件方案设计与论证 1. 显示模块设计1.1倒计时时间显示设计思想:由于该系统要求完成倒计时显示通行时间的功能,且考虑到实际的交通系统中车辆及行人通行时间不会超过一分钟,基于以上原因,我们考虑完全采用数码管显示,四个路口分别采用一个二位共阴极数码管进行显示。
(其实物图见附录1图5.3)图2.1 数码管原理图原理图分析:为了显示数字或字符,必须对数字或字符进行编码。
七段数码管GND abcde fg dp gf ed c ba(a)(a,b,c,d,e,f,g)加上一个小数点(dp),共计8段,构成一个字节,通过对这八段给予高低平使二极管导通或截止,从而显示不同的数字或字符。
系统中所使用的是2位共阴数码管(实物图见附录),其管脚从左上方起顺时针依次为1,a,b,e,d,2,g,f,dp,c。
1.2 状态灯显示设计思想:由于该系统要求完成状态灯显示的功能,我们把各个路口的红灯和黄灯设成直行和左拐两个通行方式所共有,也就是说,一个路口只需四个状态灯,一个直行通行的绿灯,一个左拐通行的绿灯,一个共有的红灯,一个共有的黄灯,人行横道采用红绿灯控制,综上所述,我们共使用16个LED绿灯,12个LED 红灯,4个LED黄灯来完成状态灯显示功能。
2.控制模块设计2.1 设计思想由于本系统结构简单,实现较容易,不需要大量的外围扩展,所以我们采用STC89C51单片机作为主控制器,STC89C51单片机具有体积小,功耗低,控制能力强,价格低、扩展灵活,使用方便等特点,其最小系统由振荡电路、复位电路构成。