单片机课程设计 交通灯.docx

上传人:b****3 文档编号:27366662 上传时间:2023-06-29 格式:DOCX 页数:14 大小:231.97KB
下载 相关 举报
单片机课程设计 交通灯.docx_第1页
第1页 / 共14页
单片机课程设计 交通灯.docx_第2页
第2页 / 共14页
单片机课程设计 交通灯.docx_第3页
第3页 / 共14页
单片机课程设计 交通灯.docx_第4页
第4页 / 共14页
单片机课程设计 交通灯.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机课程设计 交通灯.docx

《单片机课程设计 交通灯.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 交通灯.docx(14页珍藏版)》请在冰豆网上搜索。

单片机课程设计 交通灯.docx

单片机课程设计交通灯

单片机课程设计

 

学生:

学号:

指导老师:

成绩:

引言

交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。

人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。

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

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为核心器件来使用,以实现各项功能。

本设计就是采用AT89S52单片机为中心器件来设计交通灯控制器,实现了智能控制功能。

 

1引言

2设计任务及总体方案

2.1设计任务及要求

2.2总体方案介绍

3硬件系统的设计

3.1AT89S52简介

3.2时钟电路

3.3复位电路

3.4LED数码管显示模块

3.5红绿灯显示模块

4软件系统的设计

4.1软件设计分析

4.2程序流程图

4.3系统程序

5设计总结

6参考文献

7附录

7.1附录一:

系统程序

7.2附录二:

系统原理图

7.3附录三:

元器件清单

 

2设计任务及总体方案

2.1设计任务及要求

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

具体设计要求如下。

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

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

用两个数码管来显示被点亮的指示灯还将点亮多久。

往东和往西方向的信号一致,其工作方式与南北方向一样,也采用两个数码管来倒计时。

当南北方向为绿灯和黄灯时,东西向的红灯点亮禁止通行;而东西方向为绿灯和黄灯时,南北向的红灯点亮禁止通行。

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

交通信号灯工作模式

南北向

绿灯亮40秒

黄灯亮5秒

红灯亮45秒

东西向

红灯亮45秒

绿灯亮40秒

黄灯亮5秒

2.2总体方案介绍:

本系统电路由单片机AT89S52、复位电路、时钟电路、数码管显示电路以及发光二级管显示电路构成,逻辑框图如下图所示。

各相应组成部分提供定时信号,使得相应的发光二极管和数码管显示。

3硬件系统的设计

3.1AT89S52简介

AT89S52单片机是一种低功耗、高性能CMOS8位微控制器。

它具有以下主要标准功能:

8KB可重复编成的Flash存储器,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,8个中断向量源,全双工串行口。

它采用单一+5V电源。

其I/O口分别为P0、P1、P2和P3,其中P0口作通用I/O接口时必须接上上拉电阻;P1口是准双向口,只能作通用I/O接口使用;P2口可作通用I/O接口和高8位地址线;P3口不仅可作准双向I/O接口使用,而且每一根线都具有第二功能。

本设计中,只用了P0、P1和P2口,它们都作通用I/O口使用。

3.2时钟电路

如图所示,本设计采用内部时钟产生方式,在XTAL1和XTAL2两端跨接12Mhz的石英晶振和两个30pF的振荡电容,构成始终电路。

3.3复位电路

本设计用RC元件构成外部复位电路,因为RC时间常数应大于两个机器周期,所以电容选取10uf,电阻选取10K复位方式有两种:

上电复位和按钮复位。

本设计采用按钮复位方式。

3.4LED数码管显示模块

本设计中LED数码管显示模块电路如下图所示,其中D0、D1数码管显示南北向时间,D2、D3数码管显示东西向时间。

本设计所用LED数码管显示器是共阴极8段式数码管,其内部8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,因此,点亮发光二极管,只需给对应的阳极端送高电平。

给数码管的各个引脚输入不同的8位二进制编码,可显示不同的数字或字符,这种二进制编码称为字段码。

本设计所用共阴极数码管的字段码如下图所示。

显示字符的共阴极字段码

显示字符

共阴极字段码

0

3FH

1

06H

2

5BH

3

4FH

4

66H

5

6DH

6

7DH

7

07H

8

7FH

9

6FH

LED数码管在显示时,通常有静态显示方式和动态显示方式两种。

静态显示结构简单,操作方便,要显示某个数字,直接在I/O线上发送相对应的字段码,但是一个数码管就需要8根I/O线,而本系统中数码管数量较多,需要占用的I/O线很多;动态显示所用的I/O接口信号线少,线路简单,因此本系统选用动态显示方式。

四个数码管的段选线并接在一起通过P0口控制,它们的公共端不直接接地,每个数码管的公共端分别与一根I/O口项链,通过P2口控制。

动态显示的工作原理是4个数码管轮流显示相应的数字,一次循环完毕后,下一次循环又这样轮流显示,由于人的视觉暂留效应,循环的周期太快,只有几十微秒,所以看起来所有的数码管是一起显示的。

并在P0口接7407芯片,起到缓冲的作用,使得系统更加稳定。

3.5红绿灯显示模块

本系统红绿灯显示电路如图所示。

其中R1、Y1、G1分别表示南北红、黄、绿灯,R2、Y2、G2分别表示东西红、黄、绿灯。

本系统采用共阴极结构发光二极管,6段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管点亮,则对应得阳极端接高电平。

由P1口控制,输入对应字段码,显示对应的发光二极管。

4软件系统的设计

4.1软件设计分析

为了增加程序的可读性,理清程序的编写思路,程序采用模块化结构,本系统按以下几个模块编写程序:

①主程序模块:

初始化程序,RAM清零,子程序的调用。

②延时子程序模块:

产生1ms延时信号,循环调用1000次完成1秒钟延时,循环调用500次完成0.5秒定时。

③显示子程序模块:

为12位LED动态显示提供驱动信号。

P0口和P2口为数码管提供驱动信号,P0口送出段选码,P2口为位选码。

P1口输出字段码控制红绿灯亮灭:

南北绿灯亮,东西红灯亮时P1=001100B=0CH,同时数码管从40倒计时到00;南北黄灯闪烁,东西红灯亮,亮0.5S,P1=001010B=0AH,灭0.5S,P1=001000B=08H,同时数码管从05倒计时到00;南北红灯亮,东西绿灯亮时P1=100001B=21H,同时数码管从40倒计时到00;南北红灯亮,东西黄灯闪烁,亮0.5S,P1=010001B=11H,灭0.5S,P1=000001B=01H。

4.2程序流程图

4.3系统程序

系统程序见附录

 

5设计总结

 

6参考文献

1.谢维成,杨加国.单片机原理与应用及C51程序设计.北京:

清华大学出版社,2003

2.李建忠.单片机原理及应用.西安:

西安电子科技大学出版社,2002

3.谭浩强.C语言设计(第2版).北京:

清华大学出版社。

1999

4.严天峰.单片机应用系统设计与仿真调试.北京:

北京航空航天大学出版社,2005

5.张齐等.单片机应用系统设计——基于C语言编程.北京:

电子工业出版社,2004

6.赵亮,侯国锐.单片机C语言编程与实例.北京:

人民邮电出版社,2003

 

7附录

7.1附录一:

系统程序

#include

#include

#defineucharunsignedchar

voiddelay_1ms(uchart)

voidscan(void)

voidscan_led(uchark)

voidscan_led40(void)

voidscan_led5(ucharx)

charcodeLED_7[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴极LED数码管的字段码

charcodescan_con[4]={0x01,0x02,0x04,0x08};//4个LED数码管的位选码

voiddelay_1ms(uchart)//1ms延时程序

{

uchari,j;

for(i=0;i

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

;

}

voidscan_led(uchark)//数码管显示倒计时

{

P2=scan_con[0];

P0=LED_7[k/10];

delay_1ms

(1);

P2=scan_con[1];

P0=LED_7[k%10];

delay_1ms

(1);

P2=scan_con[2];

P0=LED_7[k/10];

delay_1ms

(1);

P2=scan_con[3];

P0=LED_7[k%10];

delay_1ms

(1);

}

voidscan_led40()

{

ucharm,n;

for(m=40;m>0;m--)

{

for(n=0;n<1000;n++)

{

scan_led(m);

}

}

}

voidscan_led5(ucharx)

{

uchary;

for(y=0;y<500;y++)

{

scan_led(x);

}

}

voidscan()//显示程序

{

uchari,j;

P1=0x0c;//南北绿灯亮,东西红灯亮

scan_led40();

for(i=5;i>0;i--)//南北黄灯闪烁,东西红灯亮

{

P1=0x0a;

scan_led5(i);

P1=0x08;

scan_led5(i);

}

P1=0x21;//南北红灯亮,东西绿灯亮

scan_led40();

for(j=5;j>0;j--)//南北红灯亮,东西黄灯闪烁

{

P1=0x11;

scan_led5(j);

P1=0x01;

scan_led5(j);

}

}

voidmain()

{

P0=0x00;//初始化

P1=0x00;

P2=0x00;

while

(1)

{

scan();//显示程序

}

}

 

7.2附录二:

系统原理图

 

7.3附录三:

元器件清单

序号

元件名

数量

1

AT89S52单片机

1

2

12Mhz晶振

1

3

30pf电容

2

4

10uf电解电容

1

5

按键

1

6

10k电阻

2

7

1k电阻

6

8

470电阻

8

9

发光二极管

6

10

7407芯片

1

11

8段共阴极LED数码管

4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1