基于51单片机做简易的交通灯

合集下载

基于51单片机控制交通灯

基于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单片机的交通灯设计
4.实验原理
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单片机设计的交通灯报告书

基于51单片机设计的交通灯报告书

报告书干路—支路口交通信号灯控制器项目目的:通过对模拟交通灯控制系统的操作,让我们掌握定时器和中断系统的综合应用,进一步熟练51单片机的应用.项目要求:本项目主要通过感应开关控制交通灯的切换显示,实现主干路与支路车辆的分流。

(1)在正常情况下,主干道交通灯绿灯一直亮着。

(2)当支路检测到有车辆,60秒后,主干道禁止通行,支路放行。

(3)支路放行30 秒后,恢复正常情况。

项目电路如图:按键S1、S2模拟支路的车辆检测,当S1、S2为高电平(不按下按键)时,表示正常情况。

当S1或S2为低电平(按下按键)时,表示支路上有车辆,将S1、S2接到P3.0、P3.1把信号送入到单片机。

程序设计:源程序代码:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar time,second,n,m;sbit k1=P3^0;sbit k2=P3^1;Uchar code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x 80,0x90};//数码管显示0~9的段码表void delay(uint t){uchar i;while(t--)for(i=0;i<255;i++);}void shumaguan(uchar s){P2=0xfd;P0=Tab[s/10];delay(1);P2=0xfe;P0=Tab[s%10];delay(1);}void main(){IE=0x82;TMOD=0x01;TH0=(65536-50000)/16;TL0=(65536-50000)%16;while(1){ uchar j;P1=0xde;if(k1==0||k2==0){delay(500);if(k1==0||k2==0){time=40;TR0=1;for(second=60;second>0;)shumaguan(second);TR0=0;P2=0x00;P1=0xf3;delay(3000);for(j=0;j<2;j++){P1=0xfb;delay(200);P1=0xf3;delay(200);}P1=0xeb;delay(500);}}}}void ld() interrupt 1{TR0=0;time--;if(time==0){time=40;second--;if(second==5)P1=0xdf;if(second==4)P1=0xde;if(second==3)P1=0xdf;if(second==2)P1=0xdd;if(second==1)P1=0xdd;}TH0=(65536-50000)/16;TL0=(65536-50000)%16;TR0=1;}项目小结:本项目程序主要包括四部分:主函数、延时函数、数码管显示函数、中断函数。

基于51单片机的智能交通灯系统设计说明

基于51单片机的智能交通灯系统设计说明

十字路口交通灯控制系统的设计1.设计思路近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。

本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。

从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。

系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。

本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。

和复位电路控制电路等组成,较好的模拟了交通路面的控制。

1.1 电源提供方案采用单片机控制模块提供电源。

1.2显示界面方案采用数码管显示。

这种方案只显示有限的符号和数码字符,简单,方便。

1.3 输入方案:直接在I/O口线上接上按键开关。

由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择该方案。

2 单片机交通控制系统总体设计2.1单片机交通控制系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。

一共可以有四个状态。

通过具体的路口交通灯状态的分析我们可以把这四个状态归纳如下:(1)东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时80秒。

此状态下,东西向禁止通行,南北向允许通行。

(2)东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时3秒。

此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。

(3)南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时60秒。

此状态下,东西向允许通行,南北向禁止通行。

(4)南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时3秒。

此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。

用图表表示灯状态和行止状态的关系如下:表1交通状态及红绿灯状态灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。

基于51单片机的交通灯设计

基于51单片机的交通灯设计

课程设计报告课程名称:单片机原理及应用课程设计系部:电气与信息工程学院专业班级:学生姓名:指导教师:完成时刻:报告成绩:目录No table of contents entries found.交通灯控制系统设计一、设计题目交通灯控制系统设计二、设计要求(1)设计一个十字路口的交通灯控制电路,要求当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。

时刻为60秒。

(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。

(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。

时刻为80秒。

东西方向车流大通行时刻长。

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

三、设计作用与目的最近几年来随着科技快速的进展,单片机的应用正在不断地走向深切,同时带动传统检测日新月异更新。

在实验检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来利用,针对具体应用对象的特点,配以其他器件来家以完善,伴随人口的日趋增加,那么十字路口车辆穿梭,如何才能让交通井然有序呢?靠的就是交通信号的自动指挥系统。

信号灯的出现,使交通得以有效的管制,对于交通流量、提高道路通行能力,减少交通事故有明显的效果。

绿灯是通行信号,面对绿灯信号的车辆能够直行,左拐弯和右拐弯,除非另一种禁止转向。

左右转弯车辆都必需让正在路口内直行的车辆和过人行横道行人优先通行。

红灯是禁止信号面对红灯的车辆必需停车。

黄灯是警告信号,面对黄灯信号的车辆不呢么好越过安全停车线,可是车辆十分接近停车线而不能安全停车时能够进入交叉路口。

本系统采用MSC-51系列单片机来设计交通灯控制器,实现各个方向车辆、行人通行功能,另外还设计了倒计时显示。

同时还具有南北、东西方向强制通行的功能。

城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的运算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部份。

基于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单片机的交通灯设计

基于51单片机的交通灯设计交通信号灯是指示人和交通工具在道路交通中行进方向或行为的一种交通设施。

在设计交通信号灯时,应考虑交通流量、车辆速度、交叉口结构等因素,以确保交通的顺畅和安全。

本文将基于51单片机设计一种交通信号灯系统,并详细介绍其原理和实现方法。

交通信号灯系统的设计目的是通过控制红、黄、绿三种不同颜色的灯,指示车辆和行人在交通路口安全行驶。

在单片机设计中,我们将使用三个LED灯分别代表红、黄、绿三种状态。

通过控制LED的亮灭,来实现交通信号灯的变换。

首先,我们需要选择适当的硬件设备进行交通信号灯的设计。

在51单片机设计中,可以选择STC89C51或者AT89C51等型号的单片机。

此外,还需要准备三个LED灯、电阻、电容、按键等器件。

接下来,我们将进行电路设计。

在设计电路时,首先将三个LED灯连接到单片机的三个IO口上,每个IO口通过一个电阻与正极连接,负极与GND连接。

此外,在单片机的一个IO口上连接一个按键,通过按下按键触发程序的执行。

在编写程序之前,首先需要确立交通信号灯的运行逻辑。

一般而言,交通信号灯的运行逻辑如下:1.全红状态:所有车辆和行人均停止,任何方向都不可行驶。

2.绿灯状态:一些方向的车辆和行人可以行驶,其他方向均不可行驶。

3.黄灯状态:信号灯将要变成红灯或绿灯,此时车辆和行人应注意刹车或等待。

接下来,我们将编写程序并烧录到单片机中。

在程序中,需要使用到定时器和中断来进行交通信号灯的控制。

具体步骤如下:1.在程序中定义三个LED灯所对应的IO口。

2.初始化定时器,并设置定时时间,用于控制信号灯的变化。

3.设置中断,用于按键的检测和处理。

4.在主循环中,不断检测按键状态,当按键按下时,切换信号灯的状态。

5.根据信号灯的状态,控制LED灯的亮灭。

在程序设计中,应充分考虑各种异常情况和执行顺序,以保证交通信号灯的正常运行。

此外,还可以增加一些辅助功能,如倒计时显示等,以提高交通信号灯的可视性和安全性。

基于51单片机的交通灯控制系统设计

基于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单片机的交通灯(红绿灯)设计论文报告
3.设计原理:
利用“自动控制”控制交通灯的方法。将事先编制好的程序输入单片机,利用单片机的定时、查询、中断功能;能够根据十字路口两个方向上车辆动态状况,采用查询的方式,根据具体情况,自动给予时间通行,其中利用中断方式来处理特殊情况。这样既方便驾驶员、路人,同时还可以紧急处理一些紧急实况。同样具有红、黄、绿灯的显示功能,为驾驶员、路人“照明”。
电阻
470Ω
8
数码管电路
电阻
1K
7
数码管驱动、按键电路
数码管
GC-3461BS
1
显示电路
微动开关
3
按键电路
三级管PNP
8550
4
数码管驱动电路
表1-1
2)2位8段数码管工作原理:
2位8段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。如图4-3所示:
段码和位码,段码即段选信号 SEG,它负责数码管显示的内容,图中 a~g、dp组成的数据(a 为最低位,dp 为最高位)就是段码。位码即位选信号 DIG,它决定哪个数码管工作,哪个数码管不工作。当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。
IE0 = 1;//启动外部中断0
PX0 = 1;
EX1=1;
IE1=1;
EA = 1; //开总中断
}
void int0(void) interrupt 0//外中断0
{
flag = 0;
led_data_temp = P0;
t0 = 20;
if(!int0_key)
{
delayms(10);
if(!int0_key)
4、交通灯输出控制模块
道口交通灯指示采用高亮度红、黄、绿发光二极管进行提示。

基于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(); }}。

基于51单片机 简单交通灯控制

基于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单片机控制的交通灯的课程设计

基于51单片机控制的交通灯的课程设计

电子产品实训报告基于单片机的交通灯控制学院:机电工程学院专业:应用电子技术班级:09应电1班摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

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

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

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

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

本系统采用STC-51系列单片机STC89C51来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。

本系统实用性强、操作简单、扩展功能强。

关键词:单片机交通灯电路连接图 Proteus仿真图一.引言当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。

信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。

左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。

红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。

二.单片机概述1单片机的历史自1971年美国INTEL公司制造出第一块4位微处理器以来,其发展十分迅猛,到目前为止,大致可分为以下五个阶段[1]。

(1)4位单片机(1971-1974)(2)低档8位单片机(1974-1978)(3)高档8位单片机(1978-1982)(4)16位单片机(1982-1990)(5)新一代单片机(90年代以来)2单片机的应用因单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,故在国民经济建设、军事及家用电器等领域均得到广泛的应用。

基于51单片机交通灯程序

基于51单片机交通灯程序

嗫************************************************************ 初始化、开机自检* 第一个状态:主干道、支干道均亮红灯5S* 第二个状态:主干道亮绿灯27S 、支干道亮红灯* 第三个状态:主干道黄灯闪烁、支干道红灯闪烁* 第四个状态:主干道亮红灯、支干道亮绿灯22S* 第五个状态:主干道红灯闪烁、支干道黄灯闪烁* 返回到第二个状态* 其中外部中断INTO 、INT1 分别控制主、支干道亮绿灯**************************************************************//* 11.0592MHz 晶振*/#include<reg51.h>// 头文件#include<intrins.h>// 头文件#define uchar unsigned char// 宏定义#define uint unsigned int// 宏定义sbit RED_ZHU = P1^0; sbit YELLOW_ZHU = P1^1; sbit GREEN_ZHU = P1^2;sbit RED_ZHI = P1^3;sbit YELLOW_ZHI = P1^4;sbit GREEN_ZHI = P1^5;uint aa, bai,shi,ge,bb;/* 数码管显示0-9*/uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /* 子函数声明*/void delay(uint z);void delay0(uint z);void display(uint ge,uint shi);void xtimer0();void check();void init1();void init2();void init3();void init4();void init5();void xint0();void xint1();void GREEN_ZHU_ON();void GREEN_ZHI_ON();/********************************************************* 主函数*********************************************************/ void main(){EA=1;// 开中断EX0=1;// 允许外部中断INT0 中断IT0=0;// 定义INT0 触发方式PX0=1;// 中断优先级高EX1=1;// 允许外部中断INT1 中断IT1=0;// 定义INT1 触发方式PX1=1;// 中断优先级高check();// 开机自检init1();// 第 1 个状态while(1) {init2();// 第2 个状态init3();// 第3 个状态init4();// 第4 个状态init5();// 第 5 个状态}}void init1()// 第一个状态:主干道、支干道均亮红灯{5S int temp; temp=6;// 变量赋初值TMOD=0x01;// 定时器T0 工作于方式 1 TH0=0x4c;TL0=0x00;// 定时器赋初值EA=1;// 开中断ET0=1;// 开定时中断TR0=1;// 开定时器T0 while(1) {RED_ZHU=0; RED_ZHI=0; GREEN_ZHU=1; GREEN_ZHI=1;YELLOW_ZHU=1; YELLOW_ZHI=1;}if(aa==20)// 定时 20*50MS=1S{aa=O;//定时完成一次后清 0temp--;//变量自减if(temp<0){break;}shi=temp%100/10;// 显示十位ge=temp%10;// 显示个位}display(ge,shi);}in it2()//第二个状态:主干道亮绿灯 27S 、支干道亮红灯int temp;temp=31;//变量赋初值TMOD=0x01;// 定时器 T0 工作于方式 1 TH0=0x4c;TL0=0x00;// 定时器赋初值EA= 1 ;//开中断ETO=I;//开定时中断TRO=I;//开定时器TOwhile(1){RED_ZHU=1; RED_ZHI=0;GREEN_ZHU=0;GREEN_ZHI=1;YELLOW_ZHU=1; YELLOW_ZHI=1;if(aa==20)// 定时 20*50MS=1S{aa=0;//定时完成一次后清 0temp--;// 变量自减if(temp==3){ break;}shi=temp%100/10;// 显示十位ge=temp%10;// 显示个位}void{display(ge,shi);init3()// 第三个状态:主干道黄灯闪烁、支干道红灯闪烁 int temp; temp=4;// 变量赋初值TMOD=0x01;// 定时器 T0 工作于方式 1TH0=0x4c;TL0=0x00;// 定时器赋初值EA=1;// 开中断ET0=1;// 开定时中断TR0=1;// 开定时器 T0while(1){GREEN_ZHU=1;if(aa==20)// 定时 20*50MS=1S{aa=O;//定时完成一次后清 0temp--;// 变量自减 YELLOW_ZHU=~YELLOW_ZHU;RED_ZHI=~RED_ZHI;if(temp<0){break;}shi=temp%100/10;// 显示十位 ge=temp%10;// 显示个位}display(ge,shi);;} ini t4()//第四个状态:主干道亮红灯、支干道亮绿灯 inttemp;temp=26;//变量赋初值TMOD=0x01;// 定时器 T0 工作于方式 1TH0=0x4c;TL0=0x00;// 定时器赋初值EA= 1 ;//开中断ETO=I;//开定时中断TRO=I;//开定时器TO }void{ } void {22Swhile(1){RED_ZHU=0;RED_ZHI=1;YELLOW_ZHU=1;GREEN_ZHI=0; if(aa==20)// 定时 20*50MS=1S {aa=0;//定时完成一次后清 0temp--;//变量自减 if(temp==3) {break;}shi=temp%100/10;// 显示十位ge=temp%10;// 显示个位}display(ge,shi);}ini t5()//第五个状态:主干道红灯闪烁、支干道黄灯闪烁 int temp; temp=4;//变量赋初值TMOD=0x01;// 定时器 T0 工作于方式 1TH0=0x4c;TL0=0x00;// 定时器赋初值EA= 1 ;//开中断ETO=I;//开定时中断TRO=I;//开定时器TOwhile(1){RED_ZHI=1;GREEN_ZHU=1;GREEN_ZHI=1;if(aa==20)// 定时 20*50MS=1S{aa=0;//定时完成一次后清 0temp--;// 变量自减YELLOW_ZHI=~YELLOW_ZHI;RED_ZHU=~RED_ZHU;if(temp<0){}void{break;} shi=temp%100/10;// 显示十位ge=temp%10;// 显示个位}display(ge,shi);}}/* 显示子函数*/void display(uint ge,uint shi){P0=0xfd;P2=table[shi];// 显示十位delay0(5);P0=0xfe;P2=table[ge];// 显示个位delay0(5);}void xint0() interrupt 0 // 外部中断INT0{GREEN_ZHU_ON();}void xint1() interrupt 2 // 外部中断INT1{GREEN_ZHI_ON();}void GREEN_ZHU_ON()// 外部中断INT0 显示子程序{RED_ZHI=0;RED_ZHU=1;GREEN_ZHI=1;GREEN_ZHU=0;YELLOW_ZHI=1;YELLOW_ZHU=1;P0=0x00;P2=0Xff; delay0(1000);return;}void GREEN_ZHI_ON()// 外部中断INT1 显示子程序{ RED_ZHI=1;RED_ZHU=0;GREEN_ZHI=0;GREEN_ZHU=1;YELLOW_ZHI=1;YELLOW_ZHU=1;P0=0x00;P2=0xff; delay0(1000); return;}void check()// 开机自检子程序{RED_ZHI=0;RED_ZHU=0;GREEN_ZHI=0;GREEN_ZHU=0;YELLOW_ZHI=0;YELLOW_ZHU=0;P0=0x00;P2=0Xff;delay(2);RED_ZHI=1;RED_ZHU=1;GREEN_ZHI=1;GREEN_ZHU=1;YELLOW_ZHI=1;YELLOW_ZHU=1;P0=0xff;P2=0xff;}/* 定时中断子函数*/void xtimer0() interrupt 1{TH0=0x4c;TL0=0x00;aa++;}/* 延时子函数*/void delay0(uint z){uint i,j;for(i=0;i<z;i++)for(j=0;j<110;j++);}/*********************************************************500ms 延时函数晶振:11.0592MHz*********************************************************/ void delay(uchar j) {uchar k;uint i;for(;j>0;j--){for(i=1250;i>0;i--){for(k=180;k>0;k--);}。

基于MCS-51单片机的交通灯设计

基于MCS-51单片机的交通灯设计

基于MCS-51单片机的交通灯设计设计一个基于单片机的交通灯信号控制器。

已知东、西、南、北四个方向各有红黄绿色三个灯,在东西方向有两个数码管,在南北方向也有两个数码管。

要求交通灯按照表1进行显示和定时切换,并要求在数码管上分别倒计时显示东西、南北方向各状态的剩余时间。

表1 交通灯的状态切换表1:系统设计(1)任务分析与整体设计思路试题要求实现的功能主要包括计时功能、动态扫描以及状态的切换等几部分。

计时功能:要实现计时功能则需要使用定时器来计时,通过设置定时器的初始值来控制溢出中断的时间间隔,再利用一个变量记录定时器溢出的次数,达到定时1 秒中的功能。

当计时每到 1 秒钟后,东西、南北信号灯各状态的暂存剩余时间的变量减1。

当暂存剩余时间的变量减到0 时,切换到下一个状态,同时将下一个状态的初始的倒计时值装载到计时变量中。

开始下一个状态,如此循环重复执行。

动态扫描:需要使用4 个数码管分别显示东西、南北的倒计时数字,将暂存各状态剩余时间的数字从变量中提取出“十位”和“个位”,用动态扫描的方式在数码管中显示。

整个程序依据定时器的溢出数来计时,每计时1S 则相应状态的剩余时间减1,一直减到0时触发下一个状态的开始。

(2)单片机型号及所需外围器件型号,单片机硬件电路原理图图1 交通灯硬件电路原理图选用MCS51 系列AT89S51 单片机作为微控制器,选择两个四联的共阴极数码管组成8位显示模块,由于AT89S51 单片机驱动能力有限,采用两片74HC244 实现总线的驱动,一个74HC244完成共阴极数码管位控线的控制和驱动,另一个74HC244完成数码管的7 段码输出,在7段码输出口上各串联一个100 欧姆的电阻对7 段数码管限流。

用P3口的P3.0-P3.5完成发光二极管的控制,实现交通灯信号的显示,每个发光二极管串联500欧姆电阻起限流作用。

硬件电路原理图如图1 所示。

(3)程序设计思路,单片机资源分配以及程序流程①单片机资源分配单片机P3口的P3.0-P3.1引脚用作输出,控制发光二极管的显示。

基于51单片机的交通信号灯系统_毕业设计

基于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单片机具有体积小,功耗低,控制能力强,价格低、扩展灵活,使用方便等特点,其最小系统由振荡电路、复位电路构成。

基于51单片机的交通灯设计论文报告

基于51单片机的交通灯设计论文报告

基于51单片机的交通灯设计论文报告交通灯(红绿灯)是城市交通系统中非常重要的一部分,它在控制交通流量以及确保道路安全方面发挥着关键作用。

随着科技的不断发展,交通灯的设计也越来越智能化和高效。

本篇论文将以51单片机为基础,设计一种基于51单片机的交通灯系统,包括电路设计、程序编写以及系统的实现。

首先,我们需要设计电路来实现交通灯系统。

基于51单片机的交通灯系统通常由红灯、黄灯和绿灯组成。

电路的设计要求能够控制灯的亮灭以及灯的颜色变换。

我们可以使用三个LED灯作为交通灯的灯泡,通过控制灯泡的亮灭来实现交通灯的变化。

使用适当的电阻和电容来限制电流和滤波。

接下来,我们需要编写程序来控制交通灯的变换。

通过使用51单片机的GPIO引脚,可以直接控制LED灯的亮灭。

在程序中,我们需要设置灯的亮灭时间以及灯的切换时机。

通过使用定时器和中断来实现定时控制,可以让灯在规定的时间内变换。

在系统的实现中,我们需要将电路和程序进行整合。

将电路连接到单片机上相应的引脚上,并通过编写程序来控制引脚的电平变化。

同时,我们还可以加入人体红外传感器等外设来实现智能控制,例如通过检测车流量来调节交通灯变换的时间。

在设计交通灯系统时,还需要考虑到系统的可靠性和稳定性。

我们可以通过电路设计上的合理选择和优化来降低系统的故障率,并确保系统能够长时间稳定运行。

通过基于51单片机的交通灯系统设计与实现,可以有效控制交通流量、提高交通效率,并确保道路的安全性。

同时,该系统还具有灵活性和可扩展性,可以根据实际需要进行调整和升级。

综上所述,本论文基于51单片机设计了一种交通灯系统。

通过电路设计、程序编写以及系统的实现,可以实现交通灯的控制和变换。

该系统具有智能化、高效性和稳定性等特点,有助于提高交通管理水平和道路安全。

基于51单片机汇编语言设计的交通灯

基于51单片机汇编语言设计的交通灯

交通灯的控制摘要:本设计以AT89C51单片机为主控模块,主要由按钮开关,数码管,发光二极管组成,利用汇编语言编写程序来模拟对十字路口的交通管理,系统包括左右拐,直行,人行道四个基本的交通等功能。

南北方向亮绿灯60s,然后黄灯闪烁3次,每次一秒(亮灭各40ms),红灯40s,同时东西方向红灯65s,绿灯35s,黄灯闪烁3s。

各路灯用LED模拟显示,同时用七段数码管显示两路的倒计时时间。

利用键盘可修改灯亮时间PC机设置灯亮时间,利用PC与单片机串口通信实现。

为防止出现紧急情况(如119,110通过时),该系统还设置了中断,可通过按键使各个路口为红灯其它车辆禁行,特殊车辆通行的状态,当东西方向为通行状态时,南北方向有突发情况,也可通过手动按键使东西方向为红灯,南北方向为绿灯。

在对系统的分析基础上,提出了几种设计方案,经比较选择各方较好的LED 动态循环显示方案进行设计,设计包括硬件和软件两大部分单片机最小系统,时间显示,交通等显示三部分。

以AT89C51为控制核心,东西南北各设置3个交通灯,东西,南北方向各设置一个2位的数码管时间显示器,交通灯显示则采用红绿黄三色高亮发光二极管模拟,软件采用模块化的设计方法,主要分为主程序,定时中断服务子程序,倒计时显示子程序,交通灯模拟显示子程序。

软件设计完成,经过对该设计程序模拟测试,可实现对十字路口交通的良好管理,预期目标全部达到,该系统操作简单,实用性强,扩展功能好。

关键词:AT89C51 数码管光二极管中断模拟目录1前言 (5)1.1该课程选题背景 (5)1.2该课程选题现实意义 (5)1.3单片机交通灯研究任务 (5)2设计方案 (6)2.1方案设计目的 (6)2.2方案设计思路 (6)2.3方案设计原理 (7)3系统硬件设计 (8)3.1 AT89C51芯片简介 (8)3.2 74LS47芯片简介 (11)3.3系统总框图 (12)3.4、交通灯硬件线路 (12)3.5、系统工作原理 (12)4.软件设计 (13)4.1每秒钟的设定 (13)4.2秒的方法 (13)4.3相应程序代码 (13)4.4、键盘显示流程图 (14)4.5、软件延时 (14)5 Proteus软件仿真 (15)5.1正常运行时状态 (15)5.2黄灯亮时状态 (16)5.3应急情况下状态 (16)6 设计心得体会 (17)附录1:源程序代码 (18)附录2:硬件连接图 (23)参考文献 (23)1前言1.1单片机交通控制系统的选题背景世界上第一盏正式投入使用的交通信号灯出现在1868年12月10日,这盏身高7米,由德哈特设计的红绿两色煤气灯出现在议会大厦前的十字路口。

基于51单片机交通信号灯控制毕业设计

基于51单片机交通信号灯控制毕业设计

第一章绪论近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

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

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

随着中国加入WTO,我们不但要在经济、文化等各方面与国际接轨,在交通控制方面也应与国际接轨。

如果交通控不好道路还是无法保障畅通安全。

作为交通控制的重要组成部份单片机。

因此,本人选择制作交通灯作为课题加以研究。

我国大中城市交通系统压力沉重。

交通管制当以人性化、智能化为目的,做出相应的改善。

以此为出发点,本系统采用的单片机控制的交通信号灯。

该系统分为单片机主控电路、键盘控制电路和显示电路三部分组成。

并在软硬件方面采取一些改进措施,实现了根据十字路口车流量、进行对交通信号灯的智能控制,使交通信号灯现场控制灵活、有效从一定程度上解决了交通路口堵塞车辆停车等待时间不合理等问题。

系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广阔的应用前景。

1.1 课题背景随着我国国民经济的迅速发展,城市街道车辆大幅度增长,给城市交通带来巨大压力,交通拥堵已成为影响城市可持续发展的一个全局性问题。

而街道各十字路口,又是车辆通行的瓶颈所在。

已有的许多建立在精确模型基础上的交通系统控制方案都存在着一定的局限性。

研究车辆通行规律,找出提高十字路口车辆通行效率的有效方法,对缓解交通堵塞,提高畅通率具有十分现实的意义。

地面道路是一个庞大的网络,交通状况十分复杂,使目前交通控制器的单一时段控制已不能满足现代交通流量的多边性,特别是在交通流量高峰期时,往往会造成交通路口的通过率下降,甚至出现交通混乱现象,城市的交通拥挤问题正逐渐引起人们的注意。

道路平面交叉口(简称交叉口)是交通网中通行能力的“隘口”和交通事故的“多发源”,国内外城市的交通事故约有一半发生在交叉口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录摘要 (1)一、设计目的 (2)二、设计任务和要求 (2)三、设计原理分析 (2)四、硬件模块及功能 (3)1、个模块功能 (3)2、材料清单 (4)3、硬件图 (5)五、软件模块及功能 (6)1、个模块功能原理 (6)2、程序清单 (6)3、程序流程图 (9)六、调试运行 (10)1、程序编译链接 (10)2、观察模拟仿真 (11)七、心得体会 (12)参考文献 (12)致谢 (13)摘要:单片微型计算机(单片机)自问世以来,因其小巧灵活、成本低、控制能力强、易于产品化等优势,在社会各领域中得到广泛的应用。

根据89C52单片机的特点及交通灯在实际控制中的特点,本文提出一种利用单片机自动控制交通灯及时间倒计时显示的方法,将整个系统缩小在一块小小的单片机上,大大提高了产品的经济性和轻便性。

设计过程包括硬件电路设计和程序设计两大步骤。

硬件电路其结构比较简单,主要包括核心器件单片机、12只二极管组成的模拟交通灯、复位电路、振荡电路、显示数码管模块。

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。

机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。

本文就用Keil编程,相比硬件设计程序设计较为复杂,必需同时考虑灯控制、时间显示、紧急开关等问题,并且具有一定的C语言基础和一定的思维能力及逻辑能力。

本文对十字路口状态预设为两种,一种是正常状态,即倒计时60秒,交通灯循环亮,另一种是故障或紧急状态,即无论交通灯处于何种状态只要按下紧急开关,就立即打开相应的绿灯,另一方向则亮红灯,当再按起开关则反向,并从60秒倒计时,恢复正常状态,分别用黄、红、绿色灯的不同组合来表示。

本系统采用单片机AT89C52为核心器件来设计交通灯控制器,模拟现实中的交通灯控制方法,具有较强的实用性。

关键词:89C51单片机;交通灯;自动控制;时间显示器;一、设计目的提高我们的动脑和动手的能力。

2、通过交通信号灯控制系统的设计,掌握定时/计数器、中断的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。

二、设计任务和要求任务:设计一个能够控制十二盏交通信号灯及显示时间60秒倒计时的模拟系统要求:利用单片机的定时器定时和中断功能,令十字路口的红绿灯交替点亮和熄灭,并用共阳极数码管显示倒计时间。

三、设计原理分析1、根据实际交通灯的变化情况和规律。

假设一个十字路口如上图所以,为东南西北走向。

初始状态1东西绿灯通车,南北红灯亮。

过一段时间后,转状态2,东西绿灯灭,黄灯闪几下,南北还是红灯。

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

过一段时间后转状态4,南北绿灯灭,闪几个黄灯,东西还是为红灯亮,一段时间后,又循环至状态1。

2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。

每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。

4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。

四、硬件模块及功能主要用到的硬件:P1口、P3口、P2口、LED数码管、发光二级管、定时器T0、外部中断0和外部中断1、复位开关1、个模块功能:发光二极管电路:根据发光二极管的特性,将二极管的正极与电源相接(+5V),其中与一个500欧姆的电阻串联。

而发光二极管的负极与单片机的P1的八个端口相接,这样只要P1口的某个端口出现低电平,即二极管导通发光。

复位电路:本电路采用的是按键电平复位,按复位键后复位端通过电阻与VCC电源接通,此时复位端由低电平变为了高电平,从而达到复位的效果。

复位电路关系到一个系统能否可靠地工作,一般由电阻、电容和门电路组成。

晶振电路:80C51系列单片机内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟,外部需附加电路,引脚XTAL1是为反相放大器和时钟发生电路的输入端,XATL2为反相放大器的输入端。

本电路是由一个12M晶振和两个22pF的无极性电容组成。

数码管驱动显示电路:由于数码管是四位一体的,所以必须采用动态扫描方式,其基本原理是利用人眼的“视觉暂留”效应。

接口电路把所有显示器的8个笔端a—b分别并联在一起,本电路时接单片机的P2口。

每一个显示器的公共端COM各自独立地受I/O线控制,本电路采用的是单片机P0.0、P0.1、P0.2、P0.3。

CPU向字段输出口送出字型码时,所有的显示器都能接收到,再利用循环扫描的方式分时选通个显示器的公共极,是各个显示器轮流导通。

当扫描的速度达到一定程度时,人眼就分辨不出来了,认为各个显示器同时发光了。

紧急开关电路:紧急开关电路很简单,只需要两个开关。

为了便于中断想象的产生,开关一端接于P3.2P3.3口,因为其具有中断的功能,另一端接地就行。

当按键按下时相应的端口就会接受到低电平从而程序产生中断。

2、材料清单:3、硬件图五、软件模块及功能1、各模块功能及原理数码管显示:程序进入主程序后在显示程序中一直循环,通过定时器中断改变aa、bb的值,使得数码管显示不同的数字。

显示程序利用动态扫描原理:首先将共阳极编码送入P2口,同时打开P0口的第一个数码管关闭其他数码管,然后将下一个编码送入P2口,同时打开P0口的第二个数码管关闭其他数码管,以此类推。

让人的视觉产生误差,这样就看到了四位数码管同时显示并且不断变化。

定时器中断:本程序采用定时/计数器0,定时时间为50ms,让它50ms产生一次中断,进入中断后把(6000-5000)/256赋给高八位,把(6000-5000)%256赋给底八位,然后shu加1,判断shu的情况:如果shu等于1140即从开始到57s就将0XF5赋给P1口(南北点亮黄灯,东西依然红灯)。

如果shu等于1200即过了60s,将0xDE赋给P1口(南北亮红灯东西绿灯)。

如果shu等于2340即过了60+57s,就将0xEE赋给P1口(东西亮黄灯,南北红灯)。

如果shu等于2400即过了两分钟,就将0xF3赋给P1口(点亮南北绿灯,东西红灯),同时将shu、xianshi重新赋值并且进入下一阶段定时中断。

外部中断:本程序采用外部中断0和外部中断1,即P3.2和P3.3口,由于定时器中断0比外部中断2优先级高,所以初始化程序中将PX1=1设定外部中断1为高优先级,这样就可以达到紧急开关的作用,当按下紧急开关1时,即P3.2口由高电平变为低电平,程序立即进入中断程序,将东西方向变为绿灯,南北方向红灯,同时在中断程序中判断P3.2口是否有低电平信号,如果有(将开关按起)即将东西方向点亮绿灯南北方向红灯并且重新给shu、xianshi、aa、bb赋值,使得数码管从60秒重新倒计时。

紧急开关2与其相似。

2、程序清单:#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit P32=P3^2;sbit P33=P3^3;uint shu;uchar xianshi,xianshi2;uchar aa,bb;//带小数点的共阳极数码管的段编码0--9uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void init()//初始化函数{shu=0;xianshi=60;bb=0;P0=0xff;P1=0;TMOD=0x01; //用定时器0方式1EA=1; //打开中断ET0=1; //打开定时器0中断TL0=15536/256;TH0=15536%256;EX0=1;//外部中断0EX1=1;//外部中断1IT0=0;//外部中断0电平触发IT1=0;//外部中断1电平触发PX1=1;//设定外部中断1为高优先级}void Delay(unsigned int i)//延时程序{unsigned int j;for(;i>0;i--)for(j=0;j<125;j++){;}}void display(uchar a,uchar b,uchar c,uchar d) {P2=table[a]; //北十位P0=0xfe;Delay(2);P2=table[b]; //北个位P0=0xfd;Delay(2);P2=table[c]; //西十位P0=0xfb;Delay(2);P2=table[d]; //西个位P0=0xf7;Delay(2);}void main(){init();TR0=1;//启动定时器0P1=0xf3;//点亮南北绿灯,东西红灯while(1){display(aa,bb,aa,bb);}}void timer0() interrupt 1 using 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;shu++;if(shu%20==0){xianshi--;xianshi2--;aa=xianshi/10;bb=xianshi%10;}if(shu==1140){P1=0xf5;//南北黄亮,东西依然红灯}if(shu==1200){P1=0xDE;//南北亮红灯,东西绿灯xianshi=60;}if(shu==2340){P1=0xee;//东西亮黄灯,南北红灯}if(shu==2400)//再过3s返回{shu=0;xianshi=60;P1=0xf3;//点亮南北绿灯,东西红灯}}void inter0() interrupt 0 using 2 //南北方向绿灯{P0=0xff;P1=0xf3;//南北绿东西红while(P32==0){};xianshi=60;shu=1200;aa=6;bb=0;}void inter1() interrupt 2 using 3 //东西方向绿灯{P0=0xff;P1=0xDE;// 东西绿南北红while(P33==0){};P1=0xf3;xianshi=60;shu=0;aa=6;bb=0;}3、程序流程图六、调试运行1、程序编译链接程序完成后,确保无误,然后进行编译链接。

相关文档
最新文档