单片机控制红绿灯系统

1、方案论证

1.1 设计任务

设计基于单片机的智能交通红绿灯控制系统,要求能通过按键或遥控器设置系统参数,系统运行时,“倒计时等信息”能通过数码管或点阵发光管显示,设计时应考虑交通红绿灯控制的易操作性及智能性。以单片机的最小系统为基础设计硬件,用汇编语言、或C语言设计软件。通过本设计可以培养学生分析问题和解决问题的能力,掌握Mcs51单片机的硬件与软件设计方法,从而将学到的理论知识应用于实践中,为将来走向社会奠定良好的基础。

东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行,黄灯亮时车辆及行人小心通过。红灯的设计时间为45秒,绿灯为40秒,黄灯为5秒,黄灯亮时蜂鸣器响。 1.2 方案介绍

采用分模块设计的思想,程序设计实现的基本思想是一个计数器 , 选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状态的转换, 由于每一个模块的计数多不是相同, 这里的各模块是以预置数和计数器计数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输入要产生相应状态的下一个状态的预置数, 如图中A道和B道,分别为次干道的置数选择和主干道的置数选择。

2、交通灯系统硬件设计

2.1 单片机概述

单片机是由运算器、控制器、存储器、输入设备以及输出设备共五个基本部分组成的。单片机是把包括运算器、控制器、少量的存储器、最基本的输入输出口电路、串行口电路、中断和定时电路等都集成在一个尺寸有限的芯片上。

通常,单片机由单个集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 2.2 系统构成

电路板一块,AT89S51单片机一片,7448芯片2片,七段数码管八个。发光二极管6个(2个绿的,2个红的,2个黄的),100欧姆电阻20个,2个按键,2个开关,51K欧姆电阻2个,5V稳定电源1个,3个电容。

系统结构框图

:

图1 系统结构框图

系统工作流程:

(1)程序初始,通过两个传感器来判断南北与东西方向车辆通行情况。

(2) 情况判定后由AT89S51单片机p2口输出二进制信号控制红绿黄灯亮的情况。 (3) 确定那些灯亮后,由对应的七段数码管来进行到计时显示。由p1口输出来控制七段数码管的显示。

(5)LED采用5V的直流电来驱动,低电平。

3芯片介绍及部分电路说明

3.1 AT89S51芯片

选用的AT89S51与同系列的AT89C51在功能上有明显的提高,最突出是的可以实现在线的编程。用于实现系统的总的控制。其主要功能列举如下: 1) 为一般控制应用的 8 位单片机

2) 晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz) 3) 内部程式存储器(ROM)为 4KB 4) 内部数据存储器(RAM)为 128B 5) 外部程序存储器可扩充至 64KB 6) 外部数据存储器可扩充至 64KB

7) 32条双向输入输出线,且每条均可以单独做 I/O 的控制 8) 6 个中断向量源 9) 2 组独立的 16 位定时器 10) 1 个全双工串行通信端口

11) 8751 及 8752 单芯片具有数据保密的功能 12) 单芯片提供位逻辑运算指令

图2 AT89C52芯片

3.2 数码管显示部分电路

七段显示译码器输出低电平有效,用以驱动共阳极显示器。该集成显示译码器设有多个辅助控制端,以增强器件的功能,可将单片机输出的四位二进制数转换成10进制数与七段数码管显示对应,用于显示0—9的数字。

图3 数码管显示电路

其中LT 为测试输入。 3.3 红绿LED信号显示灯

LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮。如下图:

图4 红绿LED信号显示

3.4 蜂鸣器电路

这个电路主要用于黄灯亮时蜂鸣器响五秒。

图5 蜂鸣器电路

4 交通灯软件设计

4.1 程序设计流程图 程序设计框图

图6 程序设计框图

4.2 源程序代码

程序代码分为几个模块:中断模块,循环模块,延时模块。 #include

#define uint unsigned int #define uchar unsigned char

sbit W0=P0^3; sbit W1=P0^0; sbit W2=P0^1;

sbit W3=P0^2; sbit Buzzer=P0^4;

/***************************路口

1*****************************************/

sbit RED1=P2^0; sbit YELLOW1=P2^1; sbit BULLE1=P2^2;

/**************************路口

2******************************************/

sbit RED2=P2^7; sbit YELLOW2=P2^6; sbit BULLE2=P2^5;

/****************设置红绿灯标志位****************************************/

uchar Flage0,Flage1,Flage2,Flage3; uint n1,n2,n3,n4;

uchar code Table[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};

void Delay_us(uint us);

void Display(uchar Num1,uchar Num2,uchar Num3,uchar Num4); void Init_Chip(void);

int main() {

Init_Chip(); while(1) {

if(Flage2==0) {

Display(n3/100,n3%100/10,n4/100,n4%100/10);

RED1=0;YELLOW1=1;BULLE1=1;

RED2=1;YELLOW2=1;BULLE2=0;

if(Flage1==1) {

RED1=0;YELLOW1=1;BULLE1=1;

RED2=1;YELLOW2=0;BULLE2=1;

Buzzer=0;

Display(0,n2/10,n4/100,n4%100/10); }

Buzzer=1;

}

if(Flage2!=0) {

Display(n4/100,n4%100/10,n3/100,n3%100/10);

RED1=1;YELLOW1=1;BULLE1=0;

RED2=0;YELLOW2=1;BULLE2=1;

if(Flage1==1) {

RED1=1;YELLOW1=0;BULLE1=1;

RED2=0;YELLOW2=1;BULLE2=1;

Buzzer=0;

Display(n4/100,n4%100/10,0,n2/10); }

Buzzer=1; } }

return 0; }

/**********************初始化

********************************************/

void Init_Chip(void) {

TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;

RED1=0;YELLOW1=1;BULLE1=1;

RED2=1;YELLOW2=1;BULLE2=0;

n2=50;n3=450;n4=500; }

/***********************显示

*********************************************/

void Display(uchar Num1,uchar Num2,uchar Num3,uchar Num4) { W0=0; Delay_us(5); P1=Table[Num1]; W0=1; W1=0;

Delay_us(5);

P1=Table[Num2];

W1=1;

W2=0;

Delay_us(5);

P1=Table[Num3];

W2=1;

W3=0;

Delay_us(5);

P1=Table[Num4];

W3=1;

}

/***************************延时

*****************************************/

void Delay_us(uint us)

{

uint x,y;

for(x=us;x>0;x--)

for(y=110;y>0;y--);

}

/************************中断服务程序

************************************/

void timer0() interrupt 1

{

11

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;//================50ms初

n1++;

if(n1%50==0)

{

Buzzer=~Buzzer;

}

if(n1==15)

{

n1=0;

n2--;

n3--;

n4--;

if(n2==0)

{

n2=0;

Flage0=1;

Flage1=0;

}

if(n3==0)

{

n2=50;

n3=450;

Flage0=0;

12

Flage1=1;

}

if(n4==0)

{

n2=50;

n3=450;

n4=500;

Flage0=0;

Flage1=0;

Flage2=~Flage2;

}

}

}

5、改进意见

6、心得体会

7、参考文献

13

参 考 文 献

[1]胡汉才.单片机原理及其接口技术.清华大学出版.1996

[2]蔡美琴.MCS-51系列单片机系统及其应用.高等教育出版社.2004.2

[3]蒋万君.在论循环时序电路的简便设计.机电一体化.2005.5

[4]何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社.1995.

[5]李华.MCS -51系列单片机实用接口技术.北京航空航天大学出版社.1993

[6]周航慈.单片机应用程序设计技术.北京航空航天大学出版社.1991.

14

1、方案论证

1.1 设计任务

设计基于单片机的智能交通红绿灯控制系统,要求能通过按键或遥控器设置系统参数,系统运行时,“倒计时等信息”能通过数码管或点阵发光管显示,设计时应考虑交通红绿灯控制的易操作性及智能性。以单片机的最小系统为基础设计硬件,用汇编语言、或C语言设计软件。通过本设计可以培养学生分析问题和解决问题的能力,掌握Mcs51单片机的硬件与软件设计方法,从而将学到的理论知识应用于实践中,为将来走向社会奠定良好的基础。

东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行,黄灯亮时车辆及行人小心通过。红灯的设计时间为45秒,绿灯为40秒,黄灯为5秒,黄灯亮时蜂鸣器响。 1.2 方案介绍

采用分模块设计的思想,程序设计实现的基本思想是一个计数器 , 选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状态的转换, 由于每一个模块的计数多不是相同, 这里的各模块是以预置数和计数器计数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输入要产生相应状态的下一个状态的预置数, 如图中A道和B道,分别为次干道的置数选择和主干道的置数选择。

2、交通灯系统硬件设计

2.1 单片机概述

单片机是由运算器、控制器、存储器、输入设备以及输出设备共五个基本部分组成的。单片机是把包括运算器、控制器、少量的存储器、最基本的输入输出口电路、串行口电路、中断和定时电路等都集成在一个尺寸有限的芯片上。

通常,单片机由单个集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 2.2 系统构成

电路板一块,AT89S51单片机一片,7448芯片2片,七段数码管八个。发光二极管6个(2个绿的,2个红的,2个黄的),100欧姆电阻20个,2个按键,2个开关,51K欧姆电阻2个,5V稳定电源1个,3个电容。

系统结构框图

:

图1 系统结构框图

系统工作流程:

(1)程序初始,通过两个传感器来判断南北与东西方向车辆通行情况。

(2) 情况判定后由AT89S51单片机p2口输出二进制信号控制红绿黄灯亮的情况。 (3) 确定那些灯亮后,由对应的七段数码管来进行到计时显示。由p1口输出来控制七段数码管的显示。

(5)LED采用5V的直流电来驱动,低电平。

3芯片介绍及部分电路说明

3.1 AT89S51芯片

选用的AT89S51与同系列的AT89C51在功能上有明显的提高,最突出是的可以实现在线的编程。用于实现系统的总的控制。其主要功能列举如下: 1) 为一般控制应用的 8 位单片机

2) 晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz) 3) 内部程式存储器(ROM)为 4KB 4) 内部数据存储器(RAM)为 128B 5) 外部程序存储器可扩充至 64KB 6) 外部数据存储器可扩充至 64KB

7) 32条双向输入输出线,且每条均可以单独做 I/O 的控制 8) 6 个中断向量源 9) 2 组独立的 16 位定时器 10) 1 个全双工串行通信端口

11) 8751 及 8752 单芯片具有数据保密的功能 12) 单芯片提供位逻辑运算指令

图2 AT89C52芯片

3.2 数码管显示部分电路

七段显示译码器输出低电平有效,用以驱动共阳极显示器。该集成显示译码器设有多个辅助控制端,以增强器件的功能,可将单片机输出的四位二进制数转换成10进制数与七段数码管显示对应,用于显示0—9的数字。

图3 数码管显示电路

其中LT 为测试输入。 3.3 红绿LED信号显示灯

LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮。如下图:

图4 红绿LED信号显示

3.4 蜂鸣器电路

这个电路主要用于黄灯亮时蜂鸣器响五秒。

图5 蜂鸣器电路

4 交通灯软件设计

4.1 程序设计流程图 程序设计框图

图6 程序设计框图

4.2 源程序代码

程序代码分为几个模块:中断模块,循环模块,延时模块。 #include

#define uint unsigned int #define uchar unsigned char

sbit W0=P0^3; sbit W1=P0^0; sbit W2=P0^1;

sbit W3=P0^2; sbit Buzzer=P0^4;

/***************************路口

1*****************************************/

sbit RED1=P2^0; sbit YELLOW1=P2^1; sbit BULLE1=P2^2;

/**************************路口

2******************************************/

sbit RED2=P2^7; sbit YELLOW2=P2^6; sbit BULLE2=P2^5;

/****************设置红绿灯标志位****************************************/

uchar Flage0,Flage1,Flage2,Flage3; uint n1,n2,n3,n4;

uchar code Table[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};

void Delay_us(uint us);

void Display(uchar Num1,uchar Num2,uchar Num3,uchar Num4); void Init_Chip(void);

int main() {

Init_Chip(); while(1) {

if(Flage2==0) {

Display(n3/100,n3%100/10,n4/100,n4%100/10);

RED1=0;YELLOW1=1;BULLE1=1;

RED2=1;YELLOW2=1;BULLE2=0;

if(Flage1==1) {

RED1=0;YELLOW1=1;BULLE1=1;

RED2=1;YELLOW2=0;BULLE2=1;

Buzzer=0;

Display(0,n2/10,n4/100,n4%100/10); }

Buzzer=1;

}

if(Flage2!=0) {

Display(n4/100,n4%100/10,n3/100,n3%100/10);

RED1=1;YELLOW1=1;BULLE1=0;

RED2=0;YELLOW2=1;BULLE2=1;

if(Flage1==1) {

RED1=1;YELLOW1=0;BULLE1=1;

RED2=0;YELLOW2=1;BULLE2=1;

Buzzer=0;

Display(n4/100,n4%100/10,0,n2/10); }

Buzzer=1; } }

return 0; }

/**********************初始化

********************************************/

void Init_Chip(void) {

TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;

RED1=0;YELLOW1=1;BULLE1=1;

RED2=1;YELLOW2=1;BULLE2=0;

n2=50;n3=450;n4=500; }

/***********************显示

*********************************************/

void Display(uchar Num1,uchar Num2,uchar Num3,uchar Num4) { W0=0; Delay_us(5); P1=Table[Num1]; W0=1; W1=0;

Delay_us(5);

P1=Table[Num2];

W1=1;

W2=0;

Delay_us(5);

P1=Table[Num3];

W2=1;

W3=0;

Delay_us(5);

P1=Table[Num4];

W3=1;

}

/***************************延时

*****************************************/

void Delay_us(uint us)

{

uint x,y;

for(x=us;x>0;x--)

for(y=110;y>0;y--);

}

/************************中断服务程序

************************************/

void timer0() interrupt 1

{

11

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;//================50ms初

n1++;

if(n1%50==0)

{

Buzzer=~Buzzer;

}

if(n1==15)

{

n1=0;

n2--;

n3--;

n4--;

if(n2==0)

{

n2=0;

Flage0=1;

Flage1=0;

}

if(n3==0)

{

n2=50;

n3=450;

Flage0=0;

12

Flage1=1;

}

if(n4==0)

{

n2=50;

n3=450;

n4=500;

Flage0=0;

Flage1=0;

Flage2=~Flage2;

}

}

}

5、改进意见

6、心得体会

7、参考文献

13

参 考 文 献

[1]胡汉才.单片机原理及其接口技术.清华大学出版.1996

[2]蔡美琴.MCS-51系列单片机系统及其应用.高等教育出版社.2004.2

[3]蒋万君.在论循环时序电路的简便设计.机电一体化.2005.5

[4]何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社.1995.

[5]李华.MCS -51系列单片机实用接口技术.北京航空航天大学出版社.1993

[6]周航慈.单片机应用程序设计技术.北京航空航天大学出版社.1991.

14


相关内容

  • 能识别红绿灯的无人驾驶系统
  • 第八届重庆市大学生"合泰杯" 单片机应用设计竞赛作品创意书 能识别红绿灯的无人驾驶系统 重庆师范大学涉外商贸学院 电子科学与技术 (新能源与汽车电子) 指导老师:吴笔迅 参赛学生:贺 银 王 宇 付 舒 李 玉 团队编号:20150092 作品创意书 一. 摘要 随着科技的飞速发 ...

  • 毕业设计-基于单片机的智能交通灯控制系统的设计
  • 智能交通灯控制系统的设计 上海交通大学 学 生 姓 名 学 号 专 业 (班 级) 测试计量技术及仪器 B0903592 1090359019 1090359020 皮文苑 胡文涛 课 程 名 称 智 能 仪 器 设 计 任 课 教 师 丁 国 清 学院名称 电子信息与电气工程学院 1 基于单片机的 ...

  • 基于单片机的交通灯设计毕业论文
  • 毕 业 论 文 题 目: 系 别: 姓 名: 指导教师: 单片机交通灯设计 摘 要: 近年来随着科技的飞速发展,一个以微电子技术.计算机技术和通信技术为先 导的信息革命正在蓬勃发展.计算机技术作为三者之一,怎样与实际应用更有效的结 合并发挥其作用.单片机作为计算机技术的一个分支,正在不断的应用到实际 ...

  • 基于单片机的交通信号灯控制电路设计
  • 毕业设计说明书(论文) 课题名称: 交通信号灯控制电路设计(单片机) 航空电子设备维修 专业 081331班 学生姓名 黄波 学号 27 指导老师 贺国灿 技术职称______________ 2011年 03 月 16 日 毕业设计(论文)任务书 学生姓名:黄波 班级:081331 1. 毕业设计 ...

  • 智能交通信号灯
  • 智能交通控制系统的设计 一.设计目的与任务 1.设计目的:"控制系统课程设计"是自动化专业集中实践性教学环节中的专题实验,属必修课."控制系统课程设计" 要求学生掌握单片机的基本知识和自动控制系统设计的基本原理.通过实验使学生能够较熟练地设计基于单片机的控制系 ...

  • 基于单片机控制交通灯的设计
  • 四川信息职业技术学院毕业设计说明书(论文) 信息职业技术学院 毕业设计说明书(论文) 设计(论文)题目:基于单片机控制的交通灯 设计 专 业:______电子信息工程技术________ 班 级:_________电信07-1班 _________ 学 号:_______ ___雷长坤_______ ...

  • 单片机交通灯实训报告完整版
  • 课 程 设 计 课题名称 智能交通信号灯 姓 名 学 号 班 级 专 业 所 在 系 指导教师 完成日期 智能交通信号灯 摘要 本设计是在熟练掌握单片机及其仿真系统使用方法基础上,综合应用单片机原理.微机原理等课程方面的知识,设计一个采用AT89C52单片机控制的交通灯控制电路.该设计结合实际情况给 ...

  • 关于交通十字路口的毕业论文
  • 摘要:设计了一种以单片机为核心,根据车流量的动态变化,运用模糊控制算法对交通信号灯进行动态控制的路口交通管理系统.实现了路口优化管理. 关键字:交通管理,单片机,动态变化,模糊控制. A traffic control system based on μ'nSP single-chip microc ...

  • 智能交通灯控制系统的设计
  • 文华学院毕业设计( 论文) 毕业设计[论文] 题目:智能交通灯控制系统的设计 学 生 姓 名: 学号: 学 部 (系): 专 业 年 级: 指 导 教 师: 职称或学位: 2005 年 5 月 17 日 摘 要 随着现代社会对交通运输的日趋依赖,交通灯成为了人们生活中不可或缺的一部分.传统的交通灯控 ...