完整基于单片机交通灯控制的设计硬件设计部分Word文档下载推荐.docx
《完整基于单片机交通灯控制的设计硬件设计部分Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整基于单片机交通灯控制的设计硬件设计部分Word文档下载推荐.docx(26页珍藏版)》请在冰点文库上搜索。
摘要
本设计是一个以微电子技术,计算机和通信技术为先导的,而计算机技术与实际应用结合并有效的发挥其作用是现今科学界比较热门的话题和研究课题,是当今计算机应用中空前活跃的领域,十字路车辆穿梭,行人熙壤,车行车道,人行人道,有条不紊。
那么靠什么来实现这一井然的秩序?
靠的是交通信号灯的自动指挥系统。
本系统由单片机系统,数码显示管,交通灯演示系统组成。
设计一个用于东西,南北走向的交通管理。
南北方向(主干道)车道和东西方向(支干道)车道两条交叉道路上的车辆交替运行,主干道和支干道的通行时间均为15s。
系统除了基本交通灯功能外,还具有倒计时的功能。
本系统结构简单,操作方便,可以实现自动控制,具有一定的智能性,对优化城市交通具有一定的意义。
本设计将各任务进行细包装,使各任务保持相对的独立,能有效改善程序结构,便于模块化处理,使程序的可读性,可维护性和可移植性都得到进一步提高。
近年来随着科技的飞速发展,单片机的应用正在不断的深入,带动传统控制检测技术日益更新.在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本设计主要从单片机的应用上来实现十字路口交通灯的智能化管理,用以控制过往车辆的正常运行。
关键词:
交通灯,单片机,AT89C51芯片。
绪论
技术概述
随着日新月异的电子技术变革,电子产品发生了突飞猛进的巨变,而在其中AT89C51扮演者一个重要的角色,该单片机具有广泛性,工具性,基础性的几个特点,单片机应成为中等技术人员的重要技术知识层面。
近年来,我国工程技术队伍的梯队建设有了很大的进展,各学校普遍开设单片机学习课程,直观性表现在学习基本原理时能直观的看到相关的实物和实物设计,使基本原理能够形象化的表达,有助于大学生动手能力的培养和提高,课程设计就是一门应用性很强的课程,如何让我们在学好基础知识的同时,迅速掌握设计应用技术,其中,实验和课程设计环节有着非常重要的作用,对我们学习和掌握单片机设计技术起到了积极地作用.
本次学习的目的就是让我们在理论学习的基础上,通过完成一个基于单片机的交通灯课程设计,使我们学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
本课题的背景和意义
如今随着人们生活水平的提高,车辆越来越多,交通事故频繁发生。
交通信号灯的实现,使交通得以有效的管制,对于疏通交通流量,提高道路通行能力,减少交通事故的发生有着明显的效果。
交通灯在城市交通中起着重要的作用,它与人们日常生活密切相关,是人们出行的安全保障。
因此提供一个可靠,安全,便捷的多功能的交通灯控制系统有着现实的必要性.为了解决这些问题,我们更应该提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,提高交通效率,促进和谐交通的建立,本系统设计可以基本实现对交通的控制,使交通更和谐.
1、设计目的
(1)加强对单片机和C语言的认识,充分掌握和理解设计各部分的工作原理,设计过程,
选择芯片器件,模块化编程等多项知识.
(2)用单片机模拟实现具体应用,使个人设计能够真正使用。
(3)把理论知识和实践相结合,充分发挥个人能力,并在实践中锻炼。
(4)提高利用已学知识分析和解决问题的能力。
(5)提高实践动手能力。
2、设计任务和要求
2.1、设计任务
设计一个能够控制十二盏交通信号灯的模拟系统并对其进行倒计时计数。
2。
2、设计要求
利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。
1、东西红灯亮,南北绿灯亮。
2、东西红灯亮,南北黄灯闪.
3、东西绿灯亮,南北红灯亮。
4、东西黄灯闪,南北红灯亮.
3、交通灯系统简介
3.1、交通灯简介
本系统采用AT89C51单片机作为中心器件来设计交通灯控制器。
并实现以下功能:
当南北红灯亮时,东西为绿灯亮,(或者东西为红灯时,南北为绿灯)红灯亮道路不通行,绿灯亮道路可通行,时隔15s,中间黄灯闪烁3s,如此南北和东西相互切换,加以重复的工作,当南北道路车流量比较大时,可以加长南北道路绿灯的时长,同样当东西道路的车流量较大时也可以加长东西道路上的绿灯时长,同时,时长通过数码显示管的倒计时表示出来,更直观的体现交通灯的使控功能。
3。
2、系统设计原理
1、首先了解实际交通灯的变化情况和规律。
假设一个十字路口如下图1所示,为东南西北走向。
初始状态0:
为东西红灯亮,南北绿灯亮;
然后转状态1:
东西红灯亮,南北黄灯闪;
过后转状态2:
东西绿灯亮,南北红灯亮;
再转状态3:
东西黄灯闪,南北红灯亮。
一段时间后,又循环至状态0。
中间可通过中断按钮产生中断,跳入中断程序执行中断。
2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯.
3、通过编写程序,实现对灯的控制,来模拟交通信号灯的管理.每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。
4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展.
5、通过脉冲中断编写中断程序,可实现中断.
图1十字路口样图
状态
北
西
南
东
绿黄红
100
001
1
010
2
3
表1交通信号灯的状态表(其中,1代表灯亮,0代表灯灭)
3、硬件资源及其分配
3.3。
1、主要用到的硬件
AT89C51单片机、74HC245锁存器、LED数码管、LED交通灯、定时器T0
3.3.2、硬件分配
1、AT89C51单片机引脚介绍(如图2)
XTAL1:
接外部晶体的一个引脚.CHMOS单片机采用外部时钟信号时,时钟信号
由此引脚引入.
XTAL2:
接外部晶体的一个引脚。
HMOS单片机采用外部时钟信号时,外部时钟信
号由此引脚接入。
RST/
:
复位信号输入。
掉电后,此引脚可接备用电源,低功耗条件
下保持内部RAM中的数据.
:
程序存储器允许。
当单片机访问外部存储器时,该引脚的输出
信号ALE用于锁存
的低8位地址。
ALE输出频率为时钟震荡频
率的1/6。
对8751单片机内EPROM编程时,编程脉冲由该引脚
引入.
输出读外部程序存储器的选通信号。
取指令操作期间,
的频率为震荡频率的1/6;
若此期间有访问外部数据存储器的操
作,则有一个、机器周期中的
信号将不出现。
,单片机只访问外部程序存储器。
对8031此引脚必须接地。
,单片机访问内部程序存储器。
对内部有程序存储器的8XX51
单片机,此引脚应接高电平,但若地址值超过4KB范围(0FFFH),单
片机将自动访问外部程序存储器。
在8751单片机片内EPROM编程期
间,此引脚引入21V编程电源
。
数据/低8位地址复用总线端口.
静态通用端口。
高8位地址总线动态端口。
双功能静态端口。
图2AT89C51单片机引脚图
2、74HC245锁存器引脚介绍(如图3)
第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0"
低电平时信号由“B”端输入“A”端输出.
第2~9脚“A”信号输入输出端,A0=B0、、、、、、A7=B7,A0与B0是一组,如果DIR=“1"
OE=“0”则A1输入B1输出,其它类同。
如果DIR=“0”OE=“0”则B1输入A1输出,其它类同。
第11~18脚“B”信号输入输出端,功能与“A”端一样,不再描述。
第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。
第10脚GND,电源地。
第20脚VCC,电源正极.
图374HC245锁存器引脚图
1、P1口:
做为输出口,与交通灯相连接,其状态及对应的十六进制值如下:
方
向
无
东西
南北
十六进制值
说明
P1.7P1。
6
P1。
5P1。
4P1.3
P1.2P1。
1P1.0
00
11H
东西红南北绿
14H
东西红南北黄
0AH
东西绿南北红
21H
东西黄南北绿
表2P1口做为输出口,与交通灯相连接,其状态及对应的十六进制值
2、P3口中的P3.0(RXD)和P3.1(TXD)作特殊用途,数据(倒计时时间)从RXD端输入,TXD端输出.
3、模拟交通灯用来显示灯亮情况。
4定时/计数器T0用来产生1秒的定时
5、LED显示器十位与p0相连接,个位与p2连接用来显示时间,下面是LED显示接口及原理。
aLED是发光二极管的英文缩写,LED显示器是由发光二极管构成的,它在单片机中的应用非常普遍。
通常所说的LED显示器由7个发光二极管组成,其排列形状如图1所示。
此外,显示器中还有一个圆点型发光二极管以dp表示,用于小数点表示。
通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号.LED显示中的发光二极管共有两种连接方法:
b共阳极接法:
把发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V。
这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不亮.
c共阴极接法:
把发光二极管的阴极连在一起构成公共阴极.使用时公共阴极接地.这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。
d控制数码管驱动级的控制电路有静态式和动态式两类:
e静态驱动:
它是指每个数码管都要用一个译码器译码驱动.
f动态驱动:
它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同.
h采用动态数码管显示,可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,就是所谓的分时显示,显示所需要的硬件电路可分时复用。
共阴极共阳极符号与引脚
字型
共阳极代码
共阴极代码
C0H
3FH
9
90H
6FH
F9H
06H
A
88H
77H
A4H
5BH
B
83H
7CH
B0H
4FH
C
C6H
39H
4
99H
66H
D
A1H
5EH
5
92H
6DH
E
86H
79H
82H
7DH
F
8EH
71H
7
F8H
07H
灭
FFH
00H
8
80H
7FH
表1十六进制数字形代码表
3.4、时钟电路
在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷谐振器,就构成了内部振荡方式.由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。
晶振通常选用6MHz、12MHz、24MHz。
(本实验选用12MHz)内部振荡方式如图4所示。
图中,电容器C1,C2起稳定振荡频率、快速起振的作用.电容值一般为15~30pF。
(本实验选用30pF)内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。
(本实验采用此方式)
图4时钟电路
5、复位电路
当8XX51单片机的复位引脚RST出现5ms以上的高电平时,单片就完成了复位操作。
如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。
因此要求单片机复位后能脱离复位状态。
根据应用的要求,复位操作通常有两种基本形式:
上电复位、开关复位。
上电复位要求接通电源后,自动实现复位操作.开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位,(本实验采用上电复位)如图5所示。
图5复位电路
6、硬件图
图6硬件图
4、软件设计简介
4。
1、C语言简介
C语言是于1972年由贝尔实验室的DennisRitchie在B语言的基础上开发出来的。
最初的C语言是作为UNIX操作系统的开发语言而被人们所认识。
此后,贝尔实验室对C语言进行了多次改进和版本的公布,C语言的优点才引起人们的普遍注意。
随着UNIX操作系统在各种机器上的广范使用,使C语言得到了迅速推广。
1978年由BrianW。
Kernighan和DennisM.Ritchit合著了《TheCProgrammingLanguage》一书,该书对C语言作了详细的描述,这本书对C语言发展影响深远,并成为了后来C语言版本的基础,称之为标准C。
随后C语言在各种计算机上快速得以推广,并导致了许多C语言版本的出现。
2、程序设计
2.1、中断服务程序框图
4.2。
2、主程序框图
开始
东西红灯亮,南北绿灯亮
将时间送显
东西红灯亮,南北黄灯亮
东西绿灯亮,南北红灯亮
东西黄灯亮,南北红灯亮
5、调试运行
1、接硬件图接线,为了确保东西南北红黄绿灯能够对应显示,实验时,对P1口的接线做了调整。
即,P1。
0接绿灯,P1.1接红灯,P1.2接黄灯,P1。
3接绿灯,P1.4接红灯,P1。
5接黄灯。
2、从0100H单元开始连续运行,观察六个LED灯是否与交通显示情况对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。
3、调试完灯的显示后,从0100H开始连续运行,观察数码管显示的是否正常,如果不正常,则运用单步运行或断点运行进行分析和调试,直至满足要求.
4、整体运行,观察灯显示和时间显示是否都符合要求,如果不符合,则再调试。
直至满足要求。
6、电路仿真
6。
1、proteus软件介绍
Proteus是一款集单片机仿真与SPICE分析于一身的EDA仿真软件,1989年由英国Labcenter公司研发成功,经过20余年的发现,现已成为EDA市场上性价比高、性能强的一款电子电路与单片机仿真软件。
2005年Proteus由广州风标公司代理引入中国市场,现已广泛应用于高校的电子技术与单片机的教学、实验以及电子公司的产品研发与生产中。
该软件将单片机模型、混合电路仿真、高级图形仿真、虚拟仪器、DLL(动态器件库)、外设模型、单片机仿真器、第三方的编译器和调试器等有机结合在一起,真正实现了在计算机上完成从原理图设计、电路分析与仿真到单片机代码调试及仿真、系统测试与功能验证,再到形成PCB版图的整个过程.
6.2、交通灯proteus仿真
图7南北绿东西红仿真图
图8南北黄东西红仿真图
图9南北红东西绿仿真图
7、设计心得体会
两周的单片机课程设计很快就结束了,在课程设计的这段时间里,我不仅学到了许多新的知识,而且加深了我对以前学习的理论知识的掌握。
以前我们学的东西仅限于课本,对实实在在的应用还比较模糊,这次课程设计有利于同学们学习目的的明确性和主动性。
通过这次课程设计,我们知道了哪些东西是应该确实掌握的,在学校里,没有实实在在的实习,我们总以为学的东西没太多用,当我们在课程设计过程中了解到我们学的东西是如此重要时,我们学习的积极性有了,目的性提高了。
通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事.使之不断地战胜别人,超越前人。
同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响.
这个设计过程中,我们遇到过许多次失败的考验,就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我们明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程.于是,我们坚持了下来.当然最终,这个设计很成功,主要体现在,这一整个系统,几乎没有课本以外的参考书,程序由我们自己独立完成,制作的交通灯控制系统程序简单易读,结构清楚,最重要的是成本低。
在设计一个系统,除了达到所要求的性能指标以外,成本也是很重要的一个指标。
成本的高低也决定了产品的适用性。
在这次单片机课程设计中,我主要负责硬件电路图和仿真的调试,在这次课程设计中,让我懂得了团队协作重要,在一个工程中一个团队精神是必不可少,在这里我要感谢老师对我们指导和帮助过我的同学.
附录
#include〈reg52.h>
#defineport1P0
#defineport2P2
sbitgreen1=P1^0;
sbitred1=P1^1;
sbityellow1=P1^2;
sbitgreen2=P1^3;
sbitred2=P1^4;
sbityellow2=P1^5;
unsignedcharflag=0;
unsignedcharmun=15;
unsignedcharcodetab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
voidinit_timer0(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536—50000)%256;
ET0=1;
EA=1;
TR0=1;
}
voiddisplay(unsignedcharx)
{
unsignedcharm,n;
m=x/10;
n=x%10;
port1=tab[m];
port2=tab[n];
voidinit(void)
P1=0x00;
init_timer0();
voidmain()
{init();
while
(1)
{do
{
display(mun);
green1=1;
red1=0;
green2=0;
red2=1;
}
while(mun!
=3);
do
{
if(mun<
=3)
{
yellow1=~yellow1;
red1=0;
green1=0;
red2=1;
green2=0;
}
=0);
if(mun==0)
mun=15;
yellow1=0;
yellow2=0;
}
green1=0;
red1=1;
green2=1;
red2=0;
}
while(mun!
=3);
{
red1=1,green1=0;
yellow2=~yellow2,red2=0,green2=0;
display(mun);
}while(mun!
=0);
yellow2=0;
}
}
voidtimer(void)interrupt1using1
TH0=(65536—50000)/256;
TL0=(65536—50000)%256;
flag++;
if(flag==20)
{
flag=0;
mun—-;