交通灯课程设计报告

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

单片机应用课程设计——交通灯控制系统

姓名:徐昊

学号:12010155023

指导老师:张奔

目录

一、设计内容

二、进度安排

三、基本要求

四、设计过程

1、设计要求

2、设计要点

3、硬件设计

4、软件设计

五、设计报告

六、考核方法

基本要求

课程设计的基本要求:

单片机课程设计的主要内容包括:理论设计撰写设计报告等。其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;硬件设计包括单元电路,选择元器件及计算参数等;软件设计包括模块化层次结构图,程序流程图。程序设计是课程设计的关键环节。课程设计的最后要求是写出设计总结报告,把理论设计内容进行全面的总结,把实践内容上升到理论高度。

一、设计内容

十字路口交通灯控制系统的设计

利用单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭,并且用4只LED数码管显示十字路口两个方向的剩余时间。要求系统的工作符合一般交通灯控制要求。

二设计过程

往南和往北的信号一致,即红灯(绿灯或黄灯)同时亮或同时熄灭。用两个

数码管来显示被点亮的指示灯还将点亮多久。 往东和往西方向的信号一致,其工作方式与南北方向一样,也采用两个数码管来倒计时。当南北方向为绿灯和黄灯时,东西向的红灯点亮禁止通行;而东西方向为绿灯和黄灯时,南北向的红灯点亮禁止通行。

假设南北方向为主干道,通行时间为60秒,东西方向是次干道,通行时间为30秒,黄灯点亮的时间均为4秒,则其工作方式如表1.1所示循环点亮信号灯。

十字交叉路口的 交通灯控制系统的结 构如图1.1所示。

图1.1 十字路口交通灯控制示意图

三、课程设计目的

(1)掌握单片机的接口技术及相关外围芯片的外特性,控制方法。

(2)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。

(3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

(4)与模拟电子技术,数字电子技术等课程相结合,进一步熟悉和掌握单片机的结构及工作原理,为以后所学的后续课程打下良好的基础。

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

四、课程设计正文

交通灯系统

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时也带动着传统控制的日新月异更新。在自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机A T89C51为中心器件来设计交通灯控制器,实现了能根据实际车流量

通过单片机芯片的P1口设置红、绿灯燃亮时间的功能;显示时间直接通过单片机的P0、P2口输出,系统实用性强、操作简单、扩展性强。

软件方面

系统分析

本设计的主要任务为设计一个以AT87C51单片机为核心的最小应用系统,实现有时间显示的定时交通信号灯控制。要求:

(1)A道放行:绿灯放行40秒,同时B道红灯亮45秒。

(2)B道放行:B道绿灯亮40秒,同时A道红灯亮45秒。

十字路口的两组红绿交通灯受MCS-51单片机I/O口的控制,试验时皆由发光二极管替代,紧急车请求通过的信号由人工控制,以中断方式输入单片机。

正常模式:系统工作时,按照任务分析的状态循环进行,同时进行倒计时显示作为时间提示,使人们能够直观地把握时间。

系统设计

系统实施及程序

#include

bit red,green,yellow,turnred; //定义红、黄、绿及转红标志

code unsigned char tab[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//共阴数码管0-9

unsigned char Dis_Shiwei;//定义十位

unsigned char Dis_Gewei; //定义个位

void delay(unsigned int cnt) //用于动态扫描数码管的延时程序{

while(--cnt);

}

{

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; //初值60

TH0=0xd8;//重新赋值,10毫秒定时

TL0=0xf0;

count++;

if (count==100)

{

count=0;

second--;//秒减1

if(second==0)

{ //这里添加定时到0的代码,可以是灯电路,继电器吸合等,或者执行一个程序if(red) //红灭,先转黄

相关文档
最新文档