13级综合实训报告单片机交通灯DOC.docx
- 文档编号:25036188
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:26
- 大小:450.20KB
13级综合实训报告单片机交通灯DOC.docx
《13级综合实训报告单片机交通灯DOC.docx》由会员分享,可在线阅读,更多相关《13级综合实训报告单片机交通灯DOC.docx(26页珍藏版)》请在冰豆网上搜索。
13级综合实训报告单片机交通灯DOC
专业综合实训报告
题目:
基于单片机的交通灯设计
班级:
电气1332
学生姓名:
王安琪学号:
24
指导老师:
李相阳
完成日期:
2015-06-1
机电工程系
摘要
本设计以AT89c52单片机为核心控制单元,结合传感器检测,设计并开发基于单片机的交通灯系统。
本系统不仅具备基本交通灯功能,而且兼有通信时间手动设置、倒计时显示等功能。
理论证明该系统能够简单、经济、有效疏导道路交通,从而提高交通路口的通行能力。
当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。
因此,一个好的交通灯控制系统,将在道路拥挤等交通状况方面给予技术革新。
本文主要介绍了一个基于89C52单片机的交通灯控制系统,详细介绍了利用89C52设计并仿真实现交通灯控制系统的过程,重点对硬件设计、软件编程、调试分析以及各模块系统流程进行了详细分析,对各部分的电路也一一进行了介绍。
本电路由89C51单片机、按键、数码管和LED灯组成,并在Protues软件上实现仿真
关键词:
交通灯、单片机、AT89c52
第一章概述
早在1850年,城市交叉口处不断增长的交通就引发了人们对安全和拥堵的关注。
世界上第一台交通自动信号灯的诞生。
1926年英国人第一次安装和使用自动化的控制器来控制交通信号灯,这是城市交通自动控制的起点。
计算机技术的出现为交通控制技术的发展注入了新的活力,1952年,美国科罗拉多州丹佛市首次利用模拟计算机和交通检测器实现了对交通信号机网的配时方案自动选择式信号灯控制,而加拿大多伦多市于1964年完成了计算机控制信号灯的实用化,建立了一套由IBM650型计算机控制的交通信号协调控制系统,成为世界上第一个具有电子数字计算机城市交通控制系统的城市。
这是道路交通控制技术发展的里程碑。
随着经济的不断发展,工业技术的不断进步,越来越多的小汽车开始走进千家万户,截至2013年中国机动车数量已超2.4亿辆。
与此同时,日趋严重的交通拥堵问题已成为各大城市发展中亟待解决的问题。
为保证交通安全秩序,交通灯控制系统已成为保证交通顺畅必不可缺的一部分。
目前,交通灯控制系统容易造成众多路口在高峰时段出现拥堵现象,其缺陷主要表现在:
程序中事先设定好东西、南北方向灯亮的持续时间;不论车流量大小与否,红绿灯的持续时间固定不变。
虽然部分城市交通灯控制系统可由人工方式改变灯亮的时间,但操作方式不够便捷,使得城市交通车流量调节效果不够显著
段宣翡等人针对城市交叉路口信号灯等待时间较长问题,提出了基于车流量的红绿灯实时配时算法。
覃娴针对传统交通灯控制系统无法实时控制的缺点,提出了一种新型智能交通灯控制系统,但文中未给出相应测试数据。
针对上述问题,本文以AT89c52单片机为核心控制单元,结合传感器检测和车辆通行时间实时调整算法,设计并开发基于单片机的交通灯控制系统。
第二章设计方案
2.1系统结构框架
本系统是针对一个大型十字路口设计的交通信号灯控制系统。
通过单片机89C52控制LED灯和数码管,模拟现实生活中的交通灯工作情景。
南北方向的红绿灯分别用LED1和LED2表示,东西方向的红绿灯分别用LED3和LED4
表示,用数码管显示倒计时时间。
交通灯的控制分为自动控制和人工控制两种方式:
正常情况下,交通灯处于自动控制方式,此时东西方向和南北方向的交通灯轮流导通;特殊情况下,
可以通过人工方式延长南北方向或东西方向交通灯的导通时间。
设计三个按键K1、K2、K3;K1为“自动”方式,K2、K3分别为“南北”方向交通导通和“东西”方向交通导通。
2.2自动控制方式
系统开始上电后处于自动控制方式:
1.系统上电后,首先是南北方向交通导通,LED1亮、LED2灭、LED3
亮、LED4灭,数码管从60秒开始倒计时,每隔1秒减1;
2.倒计时到10秒时,南北方向绿灯(LED1)开始闪烁,闪烁间隔为0.5秒(
亮、灭各5秒);
3.60秒倒计时结束之后,东西方向交通导通,LED1灭、LED2亮、
LED3灭、LED4亮,数码管重新开始从60秒倒计时,每隔1秒减1;
4.倒计时到10秒时,东西方向绿灯(LED4)开始闪烁,闪烁间隔为0.5秒(
亮、灭各0.5秒);
5.60秒倒计时结束后,操作同步骤1。
其控制流程如下:
图2.2自动控制流程图
2.3人工控制方式
在自动控制状态下,若将按键K2或K3按下,则系统进入人工控制状态:
1. 若K2键按下,则强制南北方向交通导通。
此时若系统处于东西方向交通导通状态,则数码管从10秒开始倒计时,操作步骤同自动控制步骤4,倒计时结束后进入南北交通导通状态,数码管显示“9999”,且不递减;
2. 若K3键按下,则强制东西方向交通导通。
此时若系统处于南北方向交通导通状态,则数码管从10秒开始倒计时,操作步骤同自动控制步骤2,倒计时结束后进入东西交通导通状态,数码管显示“9999”,且不递减。
图2.3自控转手控
在人工控制状态下,若将按键K1按下,则系统进入自动控制状态:
1. 若系统处于东西方向交通导通状态,则数码管从10秒开始倒计时,操作同自动控制步骤4,倒计时完成后进入南北交通导通状态,从自动控制步骤1进入自动控制状态。
2. 若系统处于南北方向交通导通状态,则数码管从10秒开始倒计时,操作同自动控制步骤2,倒计时完成后进入东西交通导通状态,从自动控制步骤3进入自动控制状态。
图2.3-2手控转自控
2.4系统电路框图
本系统每个信号指示灯接一个对应的I/O口,通过对I/O口赋值控制交通信号灯的状态来指挥交通。
在此基础上按键可以触发单片机转换控制方式,进而控制交通信号灯的状态。
2.4控制电路框图
第三章系统硬件设计
3.1at89c52单片机简介
单片机是微机的一种,是将单片机的CPU、存储器、I/O接口和总线制作在一块芯片上的大规模集成电路。
由于单片机具有体积小、功能全、价格低、开发应用方便等优点,又可将其嵌入产品的内部,因此得到了及其广泛的应用。
3.1.1单片机的内部结构
单片机经过几十年的不断发展,其功能和组成结构基本已固定,内部结构示意图如图3-1所示。
1.中央处理器(CPU)
CPU是单片机的核心部件,根据CPU字长可分为1位机、4位机、8位机、16位机以及32位机,CPU的运算速度、处理数据能力、实施控制功能等性能都与CPU的字长有关,因此,字长是衡量CPU功能的主要指标。
2.存储器
存储器按功能可分为程序存储器和数据存储器,由于单片机主要面向控制,因此一般需要大容量的程序存储器和较少的数据存储器,同时存储器类型也不一样。
3.程序存储器
单片机内部程序存储器容量一般为1KB~64KB,通常采用只读存储器(ROM)。
采用只读存储器作为程序存储器,不仅提高了可靠性,而且由于只读存储器的集成度较高、价格较低,降低了成本。
图3-1单片机内部结构示意图
4.数据存储器
单片机内部的数据存储量一般为64B~256B,通常采用静态随即存储器(RAM),还有少数单片机内采用EEPROM作为数据存储器。
数据存储器可分为工作寄存器、堆栈,位标志和数据缓冲器使用。
5.I/O接口及特殊功能部件
单片机内部有数量不等的并行接口,可以作为外界无输入/输出设备,通常也包含1~2个串行口,用于实现异步串行通信。
特殊功能部件通常包括定时/计数器,其他例如A/D、PWM、DMA等根据不同类型的单片机,其配置不同。
3.1.2单片机应用系统
根据单片机应用场合及系统控制的要求不同,在规模、结构上存在很大不同,根据使用功能器件的种类和数量,可分为基本系统和扩展系统。
1.基本系统
在此系统中,包含一个单片机,在该单片机中含有程序存储器和数据存储器,仅在外部配置了维持系统运行的基本部件,例如电源、输入/输出,除了这些,还包括不扩充程序存储器、数据存储器、I/O接口以及其他功能部件,因此也被称为最小系统,其结构示意图如图3-2所示。
图3-2单片机最小系统示意图
2.扩展系统
在大多数系统中,由于需要实现一些特殊的功能,采用最小系统无法满足系统的控制要求,所以要扩展特殊功能部件,弥补单片机内部资源的不足。
单片机扩展系统通过并行I/O口或者串行口做总线,在外部扩展了程序存储器、数据存储器、A/D转换等特殊部件,以满足控制系统的特殊要求,其结构示意图如图3-3所示。
图3-3单片机扩展系统钢结构示意图
3.1.3单片机的发展趋势
随着科学技术的不断发展,单片机的工艺和集成度不断提高,其功能正朝着多功能、高性能的方向发展,主要体现在以下几方面。
1.各种等级的单片机性能提高
随着工艺技术和集成度技术的发展,许多低端单片机的性能在CPU功能、内部资源及寻址范围等方面有了较大的提高,甚至可以完成部分高端单片机才能实现的功能,其运算速度、功能和可靠性等方面也得到了快速的发展。
2.小型化、低功耗
在一些智能控制系统中,其整体系统体积较小,功率不大,因此要求单片机的体积和功耗都要在一定范围内,促使单片机向小型化、低功耗的方向发展。
例如,1992年美国推出的i80860超级单片机,运算速度为1.2亿次每秒,可进行32位整数运算、64位浮点运算,同时片内集成了一个三维图形处理器,可构成超级图形工作站。
3.2系统电路
系统共分为5个模块,最小系统模块、LED显示模块、数码管显示模块、按键控制模块和驱动模块。
3.2.1最小系统模块
最小系统模块由89C52单片机、晶振电路及复位电路组成。
89C52单片机作为整个系统的核心部分,将LED模块、数码管显示模块、按键控制模块及驱动模块连结成一个整体的系统,并提供程序的输入端口;晶振电路提供时钟激励,保证单片机内部和外部电路的时序逻辑电路协调动作;复位电路在上电或复位的过程中,控制CPU的复位状态,这段时间内让CPU保持复位状态,防止CPU发出错误的指令或执行错误的操作。
图3-4最小系统模块
3.2.2LED显示模块
LED显示模块由4个LED等组成,分别为LED1、LED2、LED3、LED4,4个LED分别接入89C52单片机的P1.1、P1.5、P1.4、P1.0。
其中,LED1和LED2分别表示南北方向的绿灯和红灯,LED4和LED3分别表示东西方向的绿灯和红灯。
当LED1和LED3点亮时,南北方向可以通行,东西方向禁止通行;当LED2和LED4点亮时,南北方向禁止通行,东西方向可以通行。
图3-5LED显示模块
3.2.3数码管显示模块
数码管显示模块由4个七段数码管组成,接单片机89C52在自动控制模式中,后两个数码管显示时间(从60秒倒计时到1秒)。
在人工控制模式中,在K2键按下时,若当前交通为南北通行,则四个数码管直接显示“9999”,若当前交通为东西通行,则四个数码管先显示10秒倒计时(从10秒到1秒),完成后显示“9999”;在K3键按下时,若当前交通为东西通行,则四个数码管直接显示“9999”,若当前交通为南北通行,则四个数码管先显示10秒倒计时(从10秒到1秒),完成后显示“9999”;在K1键按下时,四段数码管由“9999”变为10秒倒计时,此时系统进入自动控制模式。
图3-6数码管显示模块
3.2.4按键控制模块
按键控制模块由K1、K2、K3三个按键组成,系统初始为自动控制模式。
若按下K2键,则系统由自动控制模式进入手动控制模式,此时交通系统强制南北方向通行,东西方向禁止通行;若按下K3键,则系统有自动控制模式进入手动控制模式,此时交通系统强制东西方向通行,南北方向禁止通行;若按下K1键,则系统由手动控制模式进入自动控制模式。
图3-7按键控制模块
3.2.5驱动模块
驱动模块由4个PNP8550、4个240欧电阻及1个10k欧的排阻组成。
数码管的段码端口通过排阻与单片机的P0口相连,此处电阻起到限流作用。
而数码管的位选端口与PNP型三极管的射极相连,集电极接电源,为数码管提供足够大的驱动电流,三极管的基极与单片机的P2.0到P2.3相连,通过单片机端口的电位变化控制三极管的导通与截止,从而达到驱动数码管稳定显示的功能。
图3-8驱动模块
第四章系统软件设计
4.1主程序流程图
单片机初始化后显示初始数值,首先进入自动控制模式,然后调用键盘扫描函数获取键盘信息,根据按键情况进入不同的的工作模式,从进入各模式的子函数中,最终通过数码管、LED灯将交通信号显示出来。
图4-1主流程图
4.2子程序流程控制
4.2.1自动控制模式程序
在自动控制模式下,通过判断工作模式标志位modelflag来判断是保持自动控制模式还是进入人工控制模式。
自动控制模式下,数码管开始60秒倒计时显示(从60秒到1秒),LED1、LED3点亮且LED1最后10秒闪烁。
如果modelflag为1,则进入人工控制模式。
图4-2自动控制流程图
4.2.2人工控制模式程序
在人工控制模式下,按下K2键或K3键通过判断工作模式标志位modelflag来判断如何保持人工控制状态。
当工作模式标志位modelflag为0时,说明是由自动控制模式转入人工控制模式,再通过判断以前的交通状态来确定当前显示状态:
若之前状态和所要求状态相同时,数码管直接显示“9999”,LED灯也直接显示所要求状态;若之前状态和所要求状态不同时,数码管首先显示10秒递减,完成后显示“9999”,LED灯经过延时后,显示所要求状态。
当工作模式标志位modelflag为1时,说明之前工作状态已为人工控制模式。
若之前状态与所要求状态不同,则LED灯转变为所要求状态,数码显示管保持“9999”;若之前状态与所要求状态相同,则LED灯保持之前状态,数码显示管仍保持“9999”。
图4-3人工控制流程图
4.2.3键盘扫描程序
所用三个简单按键作为输入控制端,单片机通过P3口写入全1,然后再判断P3信息是否改变,即判断出是否有键按下。
如若有键按下或电路电平抖动,都可能使P3口电位发生变化。
因此,为确定是否的确有键按下,要经过一定时间的延时再次判断键值与延时前是否相同。
如果相同且不全为1,则断定有确定键按下,否则无键按下。
图4-4键盘扫描流程图
4.2.4数码管中断显示程序
数码管通过单片机定时器以一定时间间隔刷屏,当时间间隔小于人眼所能分辨的最小时间间隔时,所观察的数码管显示稳定,从而使时间正常显示。
此处用到定时器0的工作方式1,即16位定时器。
每次记满之后需将计数值再次写入TH0、TL0中。
图4-5数码管中断显示流程图
4.2.5定时器T1子程序
通过T1定时器提供的时序来控制交通灯显示。
每隔0.5秒中断一次,中断120次时实现60秒倒计时。
中断100次后控制LED灯闪烁,闪烁时间间隔为0.5秒,这样来实现最后的10秒闪烁提醒。
图4-6定时器T1子程序
结束语
本文在深入讨论单片机的发展为基础上,设计制作了这一套单片机控制的交通灯程序。
通过查阅大量文献和书籍,在老师和同学的帮助下顺利的解决了大量难题和困惑。
在此基础上进行了硬件的选择和软件的编程。
并验证了可行性,在编程方面使用较为熟悉的c语言。
阅读了大量资料,对交通控制系统进行了综合分析,明确了论文的方向,确定了基于80C52单片机的研究与设计的总体设计方案。
分析了具体要求,题注硬件总体设计方案,对硬件进行了选型。
深入分析、总结了系统软件部分的原理。
经过实验验证,本系统准确达到了本次设计的要求,进而验证了系统的可行性。
本次设计经历让我对交通控制系统有了更深入的认识,也了解到现有交通控制系统存在的不足。
同时也深感自己所学知识的欠缺与局限性,希望通过这次报告为起点,在以后的工作中能够总结自己的不足并改正。
同时也能避免一些错误的发生。
参考文献
1.赖捷.红绿灯的发展史[J].看历史.2010.12
2.刘学军.城市交通存在的问题及对策分析[J].今日中国.2009.
3.雷丽文等.微机原理与接口技术[M].电子工业出版社.1997.2.
4.张毅钢.单片机原理及应用[M].高等教育出版社.2008.11.
5.张毅坤.单片微型计算机原理及应用[M].西安电子科技大学出版社.1998.
6.李朝青.单片机原理及接口技术(第三版)[M].北京航空航天大学出版社.2005.
7.何立民.单片机技术的现状与未来[J].中国计算机报.1995.No.30.
8.童诗白.华成英.模拟电子技术基础[M].高等教育出版.2006.
9.谭浩强.c程序设计教程[M].清华大学出版社.2004.
附录
源程序:
#include
#include
#definekeyP3
#defineledoutP1
#definecount1120
#definecount220
sbitsngreen=P1^1;
sbitewgreen=P1^5;
voidmodel0();
voidmodel1(bitk);
u8scan_key();
voiddelayms(u8ms);
voidtim_init();
u8j=0;u8flag;
u8numb=count1;
u8led_buf[2]={0xed,0xde};
u8disp_buf[4]={16,16,6,0};
bitmodflag=0;
bitdirflag=0;
voidmain()
{u8keybuf;
ledout=led_buf[dirflag];
led_t2init(disp_buf);
tim_init();
while
(1)
{keybuf=scan_key();
switch(keybuf)
{case0x0f:
break;
case0x0e:
model0();break;
case0x0d:
model1(0);break;
case0x0b:
model1
(1);break;
default:
break;}}}
u8scan_key()
{u8keybuf;
key=0xff;
keybuf=key&0x0f;
if(keybuf!
=0x0f)
{delayms(20);
if(keybuf!
=(key&0x0f))
keybuf=0x0f;
}
return(keybuf);
}
voidmodel0()
{if(modflag!
=0)
{modflag=0;
numb=count2;
TR1=1;ET1=1;flag=1;}}
voidmodel1(bitk)
{u8i;
if(modflag==0)
{modflag=1;
if(dirflag==k)
{TR1=0;ET1=0;flag=0;
ledout=led_buf[k];
for(i=0;i<4;i++)
disp_buf[i]=9;
}
elsenumb=count2;
}
elseif((flag==0)&&(dirflag!
=k))
{ledout=led_buf[k];
dirflag=~dirflag;}}
voidtim_init()
{TH1=0X3C;
TL1=0XB0;
TMOD=0X11;
ET1=1;
TR1=1;flag=1;
}
voidt1_50ms(void)interrupt3
{TH1=0X3C;
TL1=0XB0;
if(++j==10)
{unsignedcharcount,i;
j=0;
count=numb>>1;
disp_buf[0]=16;
disp_buf[1]=16;
disp_buf[2]=count/10;
disp_buf[3]=count%10;
if(numb<=20)
{if(dirflag==0)sngreen=~sngreen;
elseewgreen=~ewgreen;
}
numb--;
if(numb==0)
{if(modflag==1)
{TR1=0;ET1=0;flag=0;
for(i=0;i<4;i++)
disp_buf[i]=9;
}
numb=count1;
dirflag=~dirflag;
ledout=led_buf[dirflag];}}}
voiddelayms(u8ms)
{u8i;
while(ms--)
{for(i=0;i<123;i++);}
}
数码管驱动子程序:
#defineu8unsignedchar
#defineu16unsignedint
#defineled_segP0
#defineled_digP2
#defineled_num4
voidled_t2init(u8*dispbuf);
codeu8led_table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
u8led_digset=0xfe;
u8led_dignum=0;
u8*led_dispbuf;
voidled_t2init(u8*dispbuf)
{
led_dispbuf=dispbuf;
EA=1;
TH0=0xfe;
TL0=0x0c;
ET0=1;
TR0=1;
TMOD=0x11;}
voidled_t2(void)interrupt1
{u8i;
TH0=0xfe;
TL0=0x0c;
led_seg=0xff;
led_dig=0xff;
led_dig=led_digset;
i=*(led_dispbuf+led_dignum);
i=led_table[i];
led_seg=i;
led_dignum++;
led_digset<<=1;
led_digset|=0x01;
if(led_dignum==led_num)
{led_dignum=0;
led_digset=0xfe;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 综合 报告 单片机 交通灯 DOC