十字路口交通灯控制设计

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

十字路口交通灯控制设计

开放与创新实验任务书

一、设计任务

设计题目:十字路口交通灯控制设计

设计内容:本设计是十字路口交通灯控制,所以依据实际交通灯的变化情况和规律,给出如下需求:一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环

至状态1。

二、系统需求

基本要求:利用STC-89C51单片机作为系统核心控制部分,用外围12个发光二极管(红、绿、蓝各4组)模拟交通灯的显示部分,自己设计电路和程序完成交通灯控制设计。

发挥部分:

1.扩展外部并口芯片(如8255A)对12个发光二级管进行控制。

2.用硬件定时器完成交通灯转换间的延时,延时误差小于20×10-6s.

3. 利用数码管进行东西、南北方向的倒计时显示。

摘要利用STC-89C51单片机作为核心控制部分,用外围12个发光二极管(红绿黄各4组)模拟交通灯的显示部分,用硬件定时器完成交通灯颜色转换间的延时。在红灯亮时用8段显示数码管完成倒计时功能,每次红灯亮时开始倒计时,从30倒计到0。在设计数码管完成倒计时功能的电路中用到了8255和8155的片子。

关键词单片机,控制,二极管,数码管,延时,定时器。

一·题目分析与功能要求........................................................

二·总体方案设计....................................................................

三·单元模块设计....................................................................

四·系统软件系统设计............................................................

五·系统调试............................................................................

六·系统功能与参数描述........................................................

七·设计总结............................................................................

一题目分析与功能要求

本设计是十字路口交通灯控制,所以依据实际交通灯的变化情况和规律,给出如下需求:一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。其间延时以硬件定时器完成,并且在红灯亮时数码管开始显示倒计时,从30倒计到0。用4个8段显示数码管两两为一组,东西红灯亮时表示东西方向红灯亮的时间的倒计时,南北方向时亦然。

二总体方案设计

交通灯转换间的延时可用两种方法实现。一种是软件延时,另一种是硬件定时器实现。其中硬件实现计时十分准确,这个不同于软件计时要给定一定的数进行循环并由计时软件完成时间的换算,故在本设计中采用硬件定时器完成交通灯转换间的延时控制。

三单元模块设计

1 各单元模块功能简介及电路设计

(1)延时:主要完成交通灯转换间的时间控制,设计电路时用到了8255的片子作为核心控制部分。

(2)数码管显示倒计时:主要完成红灯转换到绿灯间的倒计时功能,在本设计中数码管显示从30到0的倒计时。设计电路时用到了8255和8155的片子作为核心控制部分。

(3)交通灯:用12个二极管的亮灭表示交通灯的变换闪烁(红黄绿各4个)。

2 电路参数的计算及元器件的选择

3 系统硬件电路的设计

四系统软件系统的设计

#include

#include

#define K8255 XBYTE[0xFF2B]

#define C8255 XBYTE[0xFF2A]

#define B8255 XBYTE[0xFF29]

#define A8155 XBYTE[0XFF21]

#define B8155 XBYTE[0XFF22]

#define C8155 XBYTE[0XFF23]

#define K8155 XBYTE[0XFF20]

unsigned int i,j,k,l;

unsigned int m,cnt=0;

unsigned char code

tal[]={0x40,0x10,0x00,0x78,0x02,0x12,0x19,0x30,0x24,0x79};

unsigned char code tal1[]={0x30,0x24,0x79,0x40};

void delay(unsigned int n);

void main()

{

SP=0x50;

K8255=0x80;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;ET0=1;

while(1)

{

C8255=0x61;

B8255=0x08;

cnt=0; j=0;k=0;TR0=1;

while(1)

{

A8155=0X01;

B8155=tal[j]; l=150;while(l--);

A8155=0x02;

B8155=tal1[k]; l=150;while(l--);

A8155=0X10;

B8155=tal[j]; l=150;while(l--);

A8155=0x20;

B8155=tal1[k]; l=50;while(l--);

if(cnt==10)

{

cnt=0;j++;

if(j==1) k++;

相关文档
最新文档