单片机交通灯实验报告

交通灯控制系统设计

院 系: 电子电气工程学院

专 业: 电气自动化

班 级: P10电气四班

成 员: 

*********** **

交通灯控制系统设计实验

一.设计目的

1. 通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加深“单片机原理与应用”课程的基本知识,掌握电子设计知识在实际中的简单应用。

2. 综合运用“单片机原理与应用”课程和先修课程的理论及生产实际知识去分析和解决电子设计问题,进行电子设计的训练。

3. 学习电子设计的一般方法,掌握AT89C52芯片以及简单电子设计过程和运行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是总体设计能力。

4. 通过计算和绘制原理图、布线图和流程图,学会运用标准、规范、手册、图册和查阅有关技术资料等,培养电子设计的基本技能。

5. 通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统全过程,为今后从事的工作打基础。

二.设计要求

1.利用单片机的定时器定时,实现道路的红绿灯交替点亮和熄灭。

2.以AT89C52单片机为核心,设计一个十字路口交通灯控制系统。用单片机控制LED灯模拟交通信号灯显示。假定东西、南北方向方向通行(绿灯)时间为25秒,缓冲(黄灯)时间5秒,停止(红灯)时间35秒。

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

三.实验原理

1.基本原理

主体电路:交通灯自动控制模块。这部分电路主要由80C51单片机的I/O端口、定时计数器、外部中断扩展等组成。

本设计先是从普通三色灯的指示开始进行设计,用P1口作为输出。程序的初始化是东西南北方向的红灯全亮。然后南北方向红灯亮,东西方向绿灯亮,60秒后东西方向黄灯闪亮5秒后南北方向绿灯亮,东西方向红灯亮。重复执行。倒计时用到定时器T0,用P2口作为LED的显示。二位一体的LED重复执行60秒的倒计时。作为突发事件的处理,本设计主要用到外部中断EX0。用一模拟开关作为中断信号。实际中可以接其它可以产生中断信号的信号源。

2.芯片AT89C52

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

 主要功能特性:

• 兼容MCS51指令系统

• 8k可反复擦写(>1000次)Flash ROM

• 32个双向I/O口

• 256x8bit内部RAM

• 3个16位可编程定时/计数器中断

• 时钟频率0-24MHz

• 2个串行中断

• 可编程UART串行通道

• 2个外部中断源

• 共6个中断源

• 2个读写中断口线

• 3级加密位

• 低功耗空闲和掉电模式

• 软件设置睡眠和唤醒功能

四.实验流程图

(一)实现方法

  (1)在设计中利用软件程序延时的方法来控制红(绿)的亮的时间。考虑延时时间较长所以先用T0产生终端然后通过计数的方法来实现延时。利用P1口的P1.1、P1.2、P1.3作为红绿灯控制端口。

(2)南北向的绿灯连在一块,东西向的红灯连在一块,他们一块与P1.1相连。同样南北向的红灯连在一块,东西向的绿灯连在一块,他们一块与P1. 2相连,四个黄灯连在一块与P1.3相连。

(二)流程图

五.硬件设计

1.单片机的结构

单片微机(Single-Chip Microcomputer)简称为单片机。它在一块芯片上集中成了中央处理单元CPU、随机存储器RAM、只读存储器ROM、定时/计数和多功能输入/输出I/O口,如并行口I/O、串行口I/O和转换A/D等。就其组成而言,一块单片机就是一台计算机。由于它具有体积小、功能强和价格便宜等优点,因而被广泛地应用于产品智能化和工业控制自动化上。

2.主要元器件选择

(1). 开关管的选择:BUTTON按钮

(2). LED发光二极管 LED-RED, LED-YELLOW ,LDE-GREEN

(3). 二位一体数码管 7SEG-MPX2-CAT-RED:共阳数码管(红色)

(4). PN4249:驱动三极管

(5). AT89S51系列单片机

3.设计显示部分

LED数码显示部分。LED数码显示部分由七段数码显示管组成。

发光二极管显示原理:

发光二极管是采用砷化镓、镓铝砷和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。发光二极管在制作时,使用的材料不同,那么就可以发出不同颜色的光。

当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。

六.软件设计

1.单片机中断系统基本结构

中断是一项重要的计算机技术,是处理正常工作与紧急状态的好办法,是实现人机实时交互的重要途径,在单片机应用系统中,中断技术得到了广泛应用。下面详细介绍单片机中断系统基本结构、与中断相关的特殊寄存器的设置及中断应用系统编程方法。

当CPU查询到系统有中断请求时,如果系统处于中断允许状态,CPU将停止当前的工作,响应中断请求,转向中断服务,中断服务完成后,返回原程序继续执行当前任务,这叫单片机中断。

8051系列单片机中断系统结构如图3.7所示。能让CPU产生中断的信号源叫中断源。8051单片机有NT0、INT1、T0、T1、TI、RI六个中断源,但只有EX0、ET0、EX1、ET1、ES五个向量,下面简要介绍六个中断源。

图:单片机中断系统基本结构

INT0、INT1:外部中断源,由P3.2和P3.2引脚输入。具有低电平和脉冲两种触发方式,在每个机器周期的S5P2采样引脚信号,如有效则由硬件将它的中断请求标志IE置1,请求中断。当CPU响应中断时,由硬件复位。

T0、T1:定时/计数器中断,当定时/计数器产生溢出时,置位中断请求标志TF请求中断处理。

RI、TI:串行中断,RI是接收,TI为发送。单片机串行口接收到一个字符后RI置1,发送完一个字符TI置1。值得注意的是,RI、TI在响应中断后,必须由用指令将其复位。

中断响应:

CPU在执行程序的过程中,在每个机器周期的S5P2对中断标志位按中断优先级进行查询,一旦查询到有中断请求,CPU只要不在执行同级或高级的中断服务程序和当前指令(RETI指令或访问IE、IP的指令除外)执行完毕两种情况,则响应中断。如果当前正在执行的指令是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU才可响应中断。中断响应时间可以从中断信号被查询开始算起,中断响应时间在以下三种情况下,响应时间还会更长:

1CPU正在执行一个比要响应的中断源优先级相等或更高的中断源的中断服务程序,此时须等到中断服务程序执行完毕才可中断响应。

2正在执行的当前指令不是在最后一个机器周期,只有指令执行完后才响应中断。

3如果当前执行的是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU需再执行一条指令才可以中断响应,因此附加等待响应时间不会超过5个机器周期。

中断入口:

单片机响应中断后,将转向特定的入口进行中断服务,单片机的中断入口地址如表3.2所示。

表3.2 MCS-51单片机中断服务程序入口地址表

从表中可以看出,两相邻中断源的入口地址间隔为8个单元。这意味着如果要把中断源对应的中断服务程序从入口地址开始存放,则程序的长度不能超过8个字节,否则会影响到下一个中断源的入口地址的使用。而通常的情况下,中断服务程序的长度不止8个字节,因此,常见的处理方法是:在入口地址处存放一条无条件转移指令,通过这条转移指令转向对应的中断服务程序入口,中断服务程序以RETI为结束。

中断请求的撤销:

CPU响应中断请求,在中断返回(RETI)之前,该中断请求应被撤除,否则会引发另一次中断。

定时/计数器中断请求撤销:CPU在响应中断后,由硬件自动清除中断请求标志TF。

外部中断请求撤销:如果采用脉冲触发方式,CPU在响应中断后,由硬件自动清除中断请求标志IE;对于电平触发方式的外部中断请求,中断标志的撤销是自动的,由于造成中断请求的低电平继续存在,所以在响应中断后再次会产生中断请求,为此响应中断后要撤销外部信号。

2.每秒钟的设定

延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。

3.计数器初值计算

定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式: TC=M-C

七.实验程序

#include

#define uchar unsigned char

#define uint unsigned int

sbit R1=P2^0; //东西红灯

sbit Y1=P2^1; //东西黄灯

sbit G1=P2^2; //东西绿灯

sbit R2=P2^3; //南北红灯

sbit Y2=P2^4; //南北黄灯

sbit G2=P2^5; //南北绿灯

sbit Z1=P2^6; //南北人行道绿灯

sbit Z2=P2^7; //东西人行道绿灯

sbit K0=P3^0; //全部禁行开关

sbit K1=P3^2; //主干道通行开关

sbit K2=P3^3; //支道通行开关

sbit JG=P3^6; //全部禁行警报

uchar a=0,m,k,h;

uchar code

dis[]={ 0Xc0, 0Xf9, 0Xa4, 0Xb0, 0X99,

0X92, 0X82, 0Xf8, 0X80, 0X90, 0Xff}; //断码

void delay(uchar x) //延时

{

uchar j;

while(x--)

for(j=0;j<120;j++);

}

xianshi() //显示部分

{

while(1)

{

while(1)

{

G1=1;R1=0;Y1=1;JG=0;

G2=0;R2=1;Y2=1;Z2=0;Z1=1;

k=35;h=30;

while(1) //主干道通行35s

{

if(K0==0) break; //判断K0是否被按下,如果按下跳出本循环

P0=0x01;

P1=dis[k/10];

delay(2);

P0=0x02;

P1=dis[k%10];

delay(2);

P0=0x04;

P1=dis[h/10];

delay(2);

P0=0x08;

P1=dis[h%10];

delay(2);

if(k==0) break;

if(h==0)

{

h=5;

G2=1;

R2=1;

Y2=0;

}

}

if(K0==0) break; //再判断一次K0,跳出本循环

G1=0;R1=1;Y1=1;JG=0;

G2=1;R2=0;Y2=1;Z2=1;Z1=0;

k=20;h=25;

while(1) //支道通行25s

{

if(K0==0) break;

P0=0x01;

P1=dis[k/10];

delay(2);

P0=0x02;

P1=dis[k%10];

delay(2);

P0=0x04;

P1=dis[h/10];

delay(2);

P0=0x08;

P1=dis[h%10];

delay(2);

if(h==0) break;

if(k==0)

{

k=5;

G1=1;

R1=1;

Y1=0;

}

}

if(K0==0) break;

}

if(K0==0)

{

while(1) //全部禁止通行

{

G1=1;R1=0;Y1=1;JG=1;P0=0x00;

G2=1;R2=0;Y2=1;Z2=1;Z1=1;

if(K0!=0) break;

}

}

}

}

void zhutong() interrupt 0 //主干道通行,支道禁止通行

{

EX0=0;

m=P2;

if(K1==0)

{

while(1)

{

G1=1;R1=0;Y1=1;JG=0;P0=0x00;

G2=0;R2=1;Y2=1;Z2=0;Z1=1;

if(K1!=0) break;

}

}

P2=m;

EX0=1;

}

void zhitong() interrupt 2 //支道通行,主干道禁止通行

{

EX1=0;

m=P2;

if(K2==0)

{

while(1)

{

G1=0;R1=1;Y1=1;JG=0;P0=0x00;

G2=1;R2=0;Y2=1;Z2=1;Z1=0;

if(K2!=0) break;

}

}

P2=m;

EX1=1;

}

void dss() interrupt 1 //1s的定时

{

a=a+1;

if(a==10)

{

k--;

h--;

a=0;

}

TH0=0x3C; TL0=0xB0;

}

void main()

{

TMOD=0x01;

TH0=0x3C; TL0=0xB0; //6M晶振,100ms初值

ET0=1;

TR0=1;

EA=1;

EX1=1;

EX0=1;

IT0=0;

IT1=0;

PX0=1;PX1=1;

xianshi();

while(1);

}

八.系统仿真

图 Protues仿真

九.参考文献

[1] 张迎新等.单片机初级教程[M].北京:北京航空航天大学出版社,2000。

[2] 王幸之等.AT89系列单片机原理与接口技术[M].北京:北京航空航天大学出版社,2004。

[3] 何立民.单片机高级教程[M].北京:北京航空航天大学出版社,2000。

[4] 李维偍,郭强. 液晶显示应用技术[M].北京:电子工业出版社,2000。

[5] 戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M].北京:电子工业出版社,2006.4

 

第二篇:基于单片机的(数显)交通灯控制系统设计

课程设计报告

题目基于单片机的(数显)交通灯控制系统设计

 

课 题 类 别: 设计 □         论文 □

学 生 姓 名:  

学       号:  

班       级: 

专业(全称):

指 导 教 师:   

小 组 成 员: 

 


20##年  6月 16

目录

摘要  …………………………………………………………………3

一、 设计背景  ………………………………………………………4

二、 方案分析与对比 ………………………………………………4

2.1方案分析…………………………………………………4

2.2方案对比 ……………………………………………………4

三、 智能交通灯控制系统的硬件设计……………………………4

3.1 STC89S5单片介………………………………………………4

3.2 控制器的原理框图…………………………………………8

3.3 紧急转换电  ………………………………………………8

四、 智能交通灯控制系统的软件设计 ……………………………10

4.1交通灯的软件设计流程图  ………………………………10

4.2 控制器的软件设计 ………………………………………10

五、 系统分析及改进措施…………………………………………12

六、 心得体会………………………………………………………13

参考文献……………………………………………14

附录…………………………………………………14

摘要

 自从1858年英国人,发明了原始的机械扳手交通灯之后,随后的一百多年里,交通灯改变了改变了交通路况,也在人们日常生活中占据了重要地位,随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果。

近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。本模拟交通灯系统利用单片机STC89C52作为核心元件,实现了通过信号灯根据区域车流现实对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。

本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。和复位电路控制电路等组成,较好模拟了,交通路面的控制。

关键词:交通灯 单片机 数码管

Abstract:

In 1858, since the invention of primitive mechanical a wrench to the traffic lights, the more than a hundred years, the traffic lights changed to change the traffic and transport in their everyday lives as an important position, increasing social and economic development and the car has drastically increased, the roads are crowded, and the traffic lights more of its functions, the effective control, for otherwise, the road leading to improve the capability to reduce traffic accident is a notable

In recent years, as technology evolved, eelctronic pieces also widely used, which are monolithic integrated circuits into the life of the people of the traffic lights. the simulation system as a core element of monolithic integrated circuits stc89c52 made by the light on the basis of regional traffic stream reality of the road conditions of the intelligent control. from the extent to solve the traffic congestion or vehicle parking at the waiting time is not reasonable, is a car with the problems. System has a simple structure, high reliability, costs and timely, and install safeguard it conveniently advantages of a wide application prospect.

The analog systems it is monolithic integrated circuits software system, two of 8 the tube and the system led display. and unset control of electrical circuits, simulations, and the road. traffic control

1.设计背景

随着微控技术的日益完善和发展,单片机的应用在不断走向深入。它的应用比定导致传统的控制技术从根本上发生变革。也就是说单片机应用的出现是对传统控制技术的革命。它在工业控制、数据采集、智能化仪表、机电一体化、家用电器等领路得到了广泛应用,极大的提高了这些领域的技术水平和自动化控制。因此单片机的开发应用已成为高技术工程领域的一项重大课题。因此了解单片机知识,掌握单片机的应用技术具有重大的意义。

当前,在世界范围内,一个以微电子技术,计算机的通讯技术为先导的,一信息技术及信息产业的信息革命时期。而计算机技术怎样与实际应用更有效的结合并有效地发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。本文主要从计算机的应用上来实现十字路口交通灯智能化的管理,用以控制过往车辆的正常运作。

2方案分析与对比

2.1    方案分析

通过分析可以知道,所要设计的交通灯信号控制电路要能够适应于有一条干道和一条支干道的汇合点形成的十字交叉路口。能够做到主、支的红绿闪亮的时间不完全相同。在路灯变红灯的过程中能够用黄灯进行过渡,似的行驶过程中的车辆有足够的时间听下来。还要求主﹑支干道各设立一组计时显示器,能够显示相应的红﹑绿﹑黄的倒计时。

2.2    方案对比。

实现路口交通灯系统的控制方法很多,可以用标准逻辑电路器件,可编程序控制器和单片机等方案来实现。

用单片机方案来实现的话,模型可以由电源电路、单片机主控电路、无线收发控制电路和显示电路四部分组成。在电源电路中,需要用到+5V的直流稳压电源,主控电路的主要元件为STC89C52。硬件设计完成后还要利用计算机软件经行软件部分的设计才能够实现相应的功能。

利用单片机系统设计的交通灯控制器相对来说较稳定,能够完成较多功能的实现。故在这次课题中,我们小组选着了基于STC89C52单片机交通灯设计方案来实现所需功能。

3智能交通灯控制系统的硬件设计

3.1 STC89S51单片机简介

   STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强.,低价位STC89C52单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

3.1.1 STC89S52单片机的主要性能参数

   与单片机产品兼容8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。

3.1.2 STC89S52芯片内部结构简介

  ·中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

·数据存储器(内部RAM):

数据存储器用于存放变化的数据。AT89S51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用。

·程序存储器(内部ROM):

程序存储器用于存放程序和固定不变的常数等。通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。STC89S52内部配置了8KB闪存。

·定时/计数器(ROM):

   定时/计数器用于实现定时和计数功能。STC89C52共有2个16位定时/计数器。

   ·并行输入输出(I/O)口:

   8052共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。每个口都由1个锁存器和一个驱动器组成。它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。

  ·全双工串行口:

89C52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

  ·时钟电路:

时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。

  ·中断系统:

中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89S51共有5个中断源,其中又2个外部中断源和3个内部中断源。


 

图1  AT89S51系列单片机的内部结构示意图

3.1.3 主要引脚功能


             图2  AT89S51引脚图

·VCC:电源电压

·GND:接地

·P0口:P0口是一组8位双向I/0口。P0口即可作地址/数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。在访问期间激活要使用上拉电阻。

·P1口:Pl 是一个带内部上拉电阻的8准位双向I/O口,P1作为通用的I/O口使用。

·P2 口:P2 是一个带有内部上拉电阻的8 位准双向I/O 口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。

·P3 口:P3 口是一组带有内部上拉电阻的8 位准双向I/0 口。P3 口除了作为通用的I/O口使用之外,每个引脚还具有第二功能,具体分配如表2

表2 具有第二功能的P3口引脚

·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。

·ALE/PROG(————):当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

·PSEN(————)程序储存允许(PSEN(————))输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN(————)有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN(————)信号。

·EA(——)/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。

·XTAL1:振荡器反相放大器及内部时钟发生器的输入端。

 

3.2 控制器的原理框图

按任务和要求,可画出该控制器的原理框图如图3, 为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。

图3 控制器的原理框图

3.3 紧急转换电路

一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化,但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。

3.3.1  Mcs—51的中断源

     8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序入口地址如表4所示:

表4中断源程序入口

3.3.1交通灯中的中断处理流程

(1)现场保护和现场恢复:

有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。

(2)中断打开和中断关闭:

为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。

(3)中断服务程序:

有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。

(4) 中断返回:

执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。3.2 智能交通灯系统的组成

4 智能交通灯控制系统的软件设计

4.1交通灯的软件设计流程图(如图 4)

图8 交通灯的软件设计流程图

4.2 控制器的软件设计

 4.2.1  每秒钟的设定

    延时方法可以有两种一中是利用STC-51内部定时器产生溢出中断来确定1秒的时间,另一种是采用软件延时的方法。

计数器硬件延时

.a计数器初值计算

    定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式:

          TC=M-C

式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213 ;在方式1时M的值为216;在方式2和3为28

.b 计算公式

 T=(M-TC)T计数

  或TC=M-C/T计数

T计数是单片机时钟周期TCLK的12倍;TC为定时初值

如单片机的主脉冲频率为TCLK12MHZ ,经过12分频

方式0    TMAX=213 *1微秒=8.912毫秒

方式1    TMAX=216 *1微秒=65.536毫秒

 显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.

 

4.2.2  1秒的方法

 我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。

相应程序代码

(1)主程序 

   定时器需定时50毫秒,故T0工作于方式1。 初值:

    TC=M-T/ T计数 =216 -50ms/1us=15536=3CBOH

             ORG 1000H

        INIT: MOV  R2,  #20  ;软件计数器赋初值

MOV  TMOD,  #01H    ; 令T0为定时器方式1

              MOV  TH0,    #3CH    ;装入定时器初值

              MOV  TL0,    #BOH  ;

              MOV  IE,   #82H    ;开T0中断

              SEBT  TRO      ;启动T0计数器

(2)中断服务子程序

        ORG   000BH      

LJMP DSZD

DSZD:PUSH  ACC            ;保护现场

      PUSH  PSW

      AJMP   TIME          ; 跳转到时间及信号灯显示子程序

DJNZ:MOV R0,#14H ;恢复R0值

          MOV  TH0,    #0B0H    ;重装入定时器初值

            MOV  TL0,    #3CH  ;

            DJNZ  R2,   DS_C     ;判定1S时间是否到达

            MOV  R2,    #20      ;恢复R2值

4.2.3  软件延时

 

    MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。

  具体的延时程序分析:

 D5MS:MOV R7,#5    延时5ms秒子程序

   D1MS:MOV R7,#10

        MOV R6,#50

L1:   MOV R6,$     ;延时1ms 子程序

        MOV R7,L1

       RET

MOV RN,#DATA   ;字节数数为2 ,机器周期数为1

所以此指令的执行时间为2ms,而l1 为一个双重循坏 循环次数为10*50=500 所以延时时间=500*2=1000us 约为1ms 。由于单片机的运行速度很快其他的指令执行时间可以忽略不计。

5 系统分析及改进措施

智能控制交通系统实现是目前研究的方向,也已经取得不少成果,但传统的定时交通灯控制仍然在一些地方广泛应用,那是车流量不大,而且交通道路相对好的地方,传统的定时交通灯控制还是起到了一定的作用。但随着社会的高速发展,城市化日益完善,车的数量必然增多,给交通的压力也增大,这时候,智能交通灯控制将会起到疏导交通,改善城市交通环境,推动城市化日益完善!基于Proteus智能交通灯控制系统软件设计上有两个主要特点,一方面是本设计采用模糊控制方法实现交通的控制,由于模糊控制不需要建立被控对象精确的数学模型,特别适用于随机的.复杂的城市交通控制,因此以多变少为例子,在通行时间方面控制设置为40s→25s→40s→25s→40s 为一个循环,根据车流量,合理分配了通行时间。另一方面,设计应急转换开关,考虑紧急车通过时,譬如,急救车或消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。实验测试结果证明用本系统STC 单片机能完成交通灯控制过程,有效地疏导交通,提高了交通路口的通行能力.

   该系统应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力.

但功能还不够完善,比如交通灯红、黄、绿时间还不能按交通紧松完成手控调整,软件编写实现功能还不能很好控制硬件,本系统将增加更多功能,比如手控时间的调节,摄像机交通监控的控制,盲人通过时交通灯的控制等,使系统更加完善.

                            结束语

  经过两周的努力工作,终于完成了自己的毕业设计。在本次的毕业设计中我主要完成了以下的工作:

(1)完成了系统硬件和软件电路设计。包括单片机主控制电路与外围电路设计。

(2)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。

(3)理解了最单片机的各部分组成及特性。

(4)熟练使用了各种计算机辅助设计工具完成设计,充分掌握了这些工具的使用。

(5)学会了利用Keil uVision3对汇编语言进行编译过程.更进一步加深了对PROTEUS软件的学习。

通过本次的课程设计,受益匪浅,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。在撰写本文的过程中,深切地体会到当今科技技术飞速的发展,特别是单片机的发展使得许多技术难题迎刃而解。随着科学技术的不断发展,单片机技术的应用将是前途无量。

 由于本设计涉及到的知识面比较广,再加上本人在相关领域知识的缺乏,所以本设计的性能指标还是有待改善的,然而,模拟仿真证明了本设计的基本设计思想和设计方法以及基本功能是现实可行的。

参考文献:

《51单片机快速上手》 陈志旺﹑李亮等编著  机械工业出版社

《单片机MSC-51原理及用开发教程》  晁 阳编著  清华大学出版社

《单片机原理与应用技术》 江 力主编  清华大学出版社

《单片机原理、应用与PROTEUS仿真》张靖武 电子工业出版社

《单片机的C语言应用程序设计》马忠梅 马凯编著 北京航空航天大学出版社

附录

程序:

;工作寄存器及存储单元分配

;1.工作寄存器

;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器

;2.片内存储单元

;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元

;3.标志位

;00H:南北通行标志位 ; 01H:东西通行标志位;02H:紧急事件标志位  

;-----------------------------------

SNF   EQU  00H             ;;;南北通行标志位

EWF   EQU  01H             ;;;东西通行标志位

URF   EQU  02H             ;;;紧急事件标志位

ORG   0000H

LJMP  MAIN                 ;;;上电转主程序

ORG   000BH                ;;;定时中断入口

LJMP  DSZD                   

ORG   0003H                ;;;紧急中断入口

LJMP  URZD

ORG   0030H  

MAIN: LCALL INIT           ;;;调用初始化子程序

LOOP: LCALL DIS            ;;;循环执行显示子程序

      AJMP  LOOP

;///////////初始化程序

INIT: SETB   SNF             

      SETB   EWF          

      SETB   URF          

      MOV   R2,#20         ;;;定时器中断20次为1s

      MOV   TMOD,#01H      ;;;初始化定时器

      MOV   TL0,#0B0H

      MOV   TH0,#3CH

      SETB  EA             ;;;开定时中断与紧急中断

      SETB  ET0

      SETB  TR0

      SETB  EX0

      SETB  IT0            ;;;设置中断程控方式

      MOV   DPTR,#TAB      ;;;数值首地址放入DPTR中

      MOV   40H,#40        ;;;东南西北通行时间设置

      MOV   41H,#40

      MOV   30H,#20       ;;;通行时间初始化

      MOV   31H,#40

      MOV   P0,#4CH        ;;;初始化时南北通行并把交通灯状态分别放在32H和33H中

      MOV   32H,#4CH

      MOV   P2,#15H

      MOV   33H,#15H

      RET

;////////////显示子程序

DIS:  MOV   P3,#0DFH       ;;;选中南北方向的十位数码管

      MOV   A,30H          ;;;把显示数据送人数码管显示

      MOV   B,#10

      DIV   AB

      MOVC  A,@A+DPTR

      MOV   P1,A           ;;;

      LCALL D1MS

      MOV   P3,#0EFH       ;;;选中南北方向的个位数码管

      MOV   A,B            ;;;送入数码管显示

      MOVC  A,@A+DPTR     

      MOV   P1,A

      LCALL D1MS

      MOV   P3,#7FH        ;;;选中第东西方向的十位数码管

      MOV   A,31H          ;;;送入数码管显示

      MOV   B,#10

      DIV   AB

      MOVC  A,@A+DPTR

      MOV   P1,A

      LCALL D1MS

      MOV   P3,#0BFH       ;;;选中第东西方向的个位数码管

      MOV   A,B

      MOVC  A,@A+DPTR

      MOV   P1,A

      LCALL D1MS

      SETB  P3.0

      SETB  P3.1

      JNB   P3.0,DIS_S     ;;;查询是否第一个按键按下

      JNB   P3.1,DIS_E     ;;;查询是否第二个按键按下

      AJMP  DIS_R          ;;;没有键按下则返回

DIS_S:LCALL D5MS           ;;;按键去抖

      JNB   P3.0,DIS_SN

      AJMP  DIS_R  

DIS_SN:MOV   40H,#50       ;;;对通行时间从新分配,南北通行时间加长

       MOV   41H,#30

       AJMP  DIS_R

DIS_E:LCALL D5MS           ;;;按键去抖

      JNB   P3.1,DIS_EW

      AJMP  DIS_R

DIS_EW:MOV   40H,#30       ;;;东西通行时间加长

       MOV   41H,#50

DIS_R:RET                 

;///////定时中断处理程序

DS_C: LJMP  DS_R           ;;;接力跳转

DSZD: PUSH  ACC            ;;;保护现场

      PUSH  PSW

      CLR   TR0            ;;;关定时器及中断标志位并重新赋值

      CLR   TF0

      MOV   TL0,#0B0H

      MOV   TH0,#3CH

      DJNZ  R2,DS_C        ;;;判断1m时间是否到达

      MOV   R2,#20         ;;;到达重新赋值

      DEC   30H            ;;;南北方向通行时间减一

      MOV   A,30H          ;;;把减一后的时间送入显示存储单元

;;;;;;;南北通行到达最后4秒时黄灯闪烁

DS_10:CJNE  A,#4,DS_11     ;;;如果通行时间剩余4秒

      JNB   SNF,DS_11      ;;;判断是否是南北通行

      MOV   P0,#8AH       

      MOV   32H, #8AH      ;;;把交通灯状态存入存储单元(后面类似)

DS_11:CJNE  A,#3,DS_12     ;;;不是剩余3秒,返回

      JNB   SNF,DS_12      ;;;不是南北通行时间,返回

      MOV   P0,#88H

      MOV   32H, #88H

DS_12:CJNE  A,#2,DS_13

      JNB   SNF,DS_13

      MOV   P0,#8AH

      MOV   32H, #8AH

DS_13:CJNE  A,#1,DS_14

      JNB   SNF,DS_14

      MOV   P0,#88H

      MOV   32H, #88H

;------------------------

DS_14:JNZ   DS_NE          ;;;通行时间没有结束转向改变东西方向的数码管

      CPL   SNF            ;;;如果通行时间结束则对标志位取反

      JNB   SNF,DS_1       ;;;判断是否南北通行

      MOV   30H,20       ;;;是,点亮相应的交通灯

      MOV   P0,#4CH

      MOV   32H,#4CH       ;;;存储交通灯状态

      MOV   P2,#15H

      MOV   33H, #15H      ;;;存储交通灯状态

DS_NE:DEC   31H            ;;;东西方向通行时间减一

      MOV   A,31H          ;;;把通行剩余时间送入显示存储单元

;;;;;;;;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似 略)

DS_20:CJNE  A,#4,DS_21   

      JB    EWF,DS_21

      MOV   P0,#51H

      MOV   32H, #51H

DS_21:CJNE  A,#3,DS_22

      JB    EWF,DS_22

      MOV   P0,#41H

      MOV   32H, #41H

DS_22:CJNE  A,#2,DS_23

      JB    EWF,DS_23

      MOV   P0,#51H

      MOV   32H, #51H

DS_23:CJNE  A,#1,DS_24

      JB    EWF,DS_24

      MOV   P0,#41H

      MOV   32H, #41H

;-----------------------------

DS_24:JNZ   DS_R             ;;;东西方向时间没有结束,返回

      CPL   EWF              ;;;对通行状态取反

      JNB   EWF,DS_2         ;;;东西方向通行时间到来,跳转

      MOV   31H,#60         ;;;东西方向通行结束,重新显示时间

      MOV   P0,#89H          ;;;点亮相应的交通灯

      MOV   32H, #89H

      MOV   P2,#29H

      MOV   33H, #29H

      AJMP  DS_R    

DS_1: MOV   30H,#60         ;;;南北通行时间结束,重新对显示存储单元赋值    

      MOV   P0,#89H          ;;;执行转弯状态1

      MOV   32H, #89H

      MOV   P2,#26H

      MOV   33H, #26H

      AJMP  DS_NE           

DS_2: MOV   31H,21H         ;;;东西方向开始通行,赋值予显示存储单元

      MOV   P0,#61H         ;;;点亮相应的交通灯

      MOV   32H, #61H

      MOV   P2,#15H

      MOV   33H, #15H

DS_R: SETB  TR0

      POP   PSW             ;;;恢复现场

      POP   ACC

      RETI

;/////////////紧急中断处理程序

URZD: PUSH  ACC             ;;;保护现场

      PUSH  PSW

      CLR   IE0             ;;;清除中断标志位

      CLR   TR0             ;;;关定时器

      CPL   URF             ;;;紧急事件标志位

      JB    URF,UR_CON      ;;;紧急结束;跳转

      MOV   P0,#49H         ;;;各路口灯全显示红灯亮

      MOV   P2,#15H

      MOV   40H,#00

      MOV   41H,#00

      AJMP  UR_R

UR_CON:SETB  TR0            ;;;恢复正常交通

      MOV   A,32H

      MOV   P0,A

      MOV   A,33H

      MOV   P2,A

UR_R: POP   PSW             ;;;恢复现场

      POP   ACC

      RETI     

;////////////查表指令0,1,2,3,4,5,6,7,8,9

TAB:  DB  3FH,  06H,  5BH,  4FH,  66H,  6DH

      DB  7DH,  07H,  7FH,  6FH

;//////////延时5ms与1ms

D5MS:  MOV    R7,#5

D1MS:  MOV    R7,#10

       MOV    R6,#50

L1:    DJNZ   R6,$

       DJNZ   R7,L1

       RET

       END

电路仿真图

电路板真面图

电路板背面图

相关推荐