单片机红绿灯毕业设计论文文档格式.docx
- 文档编号:16568272
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:32
- 大小:1.25MB
单片机红绿灯毕业设计论文文档格式.docx
《单片机红绿灯毕业设计论文文档格式.docx》由会员分享,可在线阅读,更多相关《单片机红绿灯毕业设计论文文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
为此我们选择交通灯这一课题作为毕业设计课题
(1),通过仿真来模拟实际交通灯的工作状态,通过软件的仿真来分析实际十字路口的路况,可以通过此仿真得到实际交通灯的不足之处,为解决实际的路况,提供一种有效地手段和实现方法,此设计中我们对于车流量的检测,给出了两种方案(8),一是程序巡回检测,二是中断处理,为了达到实时性的要求,我们采用中断处理来解决这一问题。
硬件上我们采用光耦来控制继电器的闭合产生中断,每有一辆车经过时,继电器闭合一次产生一次中断,计数器加1,出口处,则计数器减1.为了方便模拟,我们在PROTUES中简单的用按键闭合低电平作为中断的触发信号。
1.2方案比较、设计与论证
1.2.1电源方案
(8)为使模块稳定工作,须有可靠电源。
为此我们提供三种方案
(1)变压器供电(220V转24V稳到5V)
(2)Usb接口供电
(3)电池供电
以上三种方案比较:
变压器供电稳定,而且220V市电来源广泛,输出功率可选,对功耗不需要太多的考虑,缺点还要整流稳压。
USB供电很稳定,其外部电源由其他设备提供,但是要依附于其他设备。
电池供电来源也很广泛,供电很稳定,但对功耗有太大的要求,而且随着供电的时间增长,电池阻增大,电压变小,对系统的运行产生很大的影响。
增上所述我们选择变压供电。
并同时附带一个USB供电接口。
1.2.2复位方案
复位方式有三种:
按键复位、系统上电复位和软件复位。
由考虑到程序的简洁,避免冗长,以及避免每次要复位要对系统就行断电上电操作所以本设计采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个一定时间高电平脉冲,达到复位的目的。
1.2.3硬件电路方案
方案一
(2):
采用STC89C51外加8255扩展I/O口用于显示等。
该方案的优点是:
使用灵活可编程,并且RAM资源对于本设计来说比较充足,及计数器。
若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:
直接在单片机IO口线上接显示电路。
因为设计时精简和优化了电路,所以剩余的口资源还比较多。
因为该系统显示方面主要是数码管和LED的显示,所以只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二
1.2.4显示界面方案
该系统要求完成倒计时、状态灯等功能(5)。
基于上述原因,我们考虑了二种方案:
方案一:
采用数码管及LED配合显示,LED显示红绿灯状态,数码管用于倒计时。
完全采用点阵式LED显示。
将红绿灯状态以及倒计时全部集成在点阵上显示。
较之方案一方案二要求点阵至少具有红绿黄三种颜色,而且为了显示的效果可观,点阵点数至少要12*12个,软件开销教方案一微复杂一些,故我们选用方案二作为显示方案。
1.2.5车流量控制方案
车流量控制我们只在主车道上进行控制,支车道上我们不做此方面的控制。
此车流量我们只给出一个方案,此方案是从光电耦合器的实际工作原理得到的。
便于模拟,我们采用一只红外发射头和一个感光元件组成车流量测量系统,工作原理为:
当没有车通过的话,红外发射头发送的光线使感光元件导通,当有车辆通过的时候,光线被车辆隔断,感光元件断开,MCU接收一个低电平中断,计数器加1,这样就可以计算通道进入车辆了,在出道口出我们也放置一个此装置。
1.3设计任务
(1)南北道和东西道上均有车辆要求通过时,南北东西道轮流放行。
南北道道放行25s,B道放行25S。
(2)南北道,北南道,东西道,西东道上,每个通道又分为3个分车道,三个分车道的车可以根据红绿灯指示进行执行,拐弯动作。
(3)在中午12点到1点之间可通过LCD显示路况繁忙状态,且具有时间显示功能。
(4)南北方向车道和东西方向车道一个车道放行一个车道禁行。
(5)车流量控制功能,当车流量超过一定数量时南北车道延迟放行最多70s
(6)绿灯转为红灯时,黄灯亮5秒
2系统总体方案及硬件设计
2.1交通管理的方案
东西、南北两干道交于一个十字路口(8),各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。
(1)当东西方向bcd为红灯时,则此通道禁止通行,a为绿灯,表示可以进行右转弯,此道车辆禁止通行;
时间为25秒。
如下图2-1所示:
图2-1八车道红绿灯模拟图
(2)黄灯5秒,警示车辆红、绿灯的状态即将切换。
(3)当东西方向为绿灯,此道车辆及人允许通行;
南北方向为红灯,南北道车禁止通过。
时间为25秒.如下图2-2所示:
图2-2八车道红绿灯模拟图
(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样车辆就能通行。
2.2总体硬件设计
整个设计以两块STC89C51(3)单片机为核心一块作为主机,一块作为从机,由数码管显示,LED数码管显示,LCD时间显示和提示电路,复位电路,电源电路等组成。
如下图2-3所示:
图2-3系统模块图
(1)供电部分为220v转5v变压器,整流稳压后作为系统的输入电源。
(2)系统上电,系统初始化(定时初始化,中断初始化,LCD初始化,中断优先级初始化,串行中断初始化)
(3)车流量是否大于预设值,不大于预设值,则主机向从机发送0XEE指令,且主机定时器每隔1S时间发送一次,从机每隔1S接收一次。
主机红绿灯状态显示,从机倒计时显示。
如果车流量大于预设值,则主机向从机发送0XAA指令,主机本身进行延时处理,从机也做相应的延时处理。
(4)主机通过TXD口发送,从机RXD口接收。
(5)单个复位按键,双机同时复位。
(6)从机时钟芯片用于时间提醒,当时间到达预设时间时,则可以通过LCD显示预设值容。
(7)主机包括两个外部中断,减中断,加中断,用于记录当前时间的车流量。
2.3系统晶振电路
晶振采用了部时钟信号源的方式。
对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。
但由于图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本系统的实际应用中一定要注意正确选择参数(30±
10PF),并保证对称性(尽可能匹配)。
选取原则:
传统做法,但能够实现所需,即最简单也最是实用。
电容选取30pF,晶振为11.0592mhz.如下图2-4和2-5所示:
图2-4主机U4系统晶振电路
图2-5从机U1系统晶振电路
2.4系统复位电路
复位方式有多种,本设计采用上电自动复位+按键手动复位。
如下图2-6所示:
图2-6系统复位电路
在设定的定时时间,89C51必须在RST引脚产生一个由高到低的电平变化,以复位.
2.5路灯指示电路
在设计路灯时,采用了发光二极管代替路灯。
先介绍一下二极管,见图2-6-1。
二极管工作原理是单向导通,即只有正极电压高于负极电压某特定值时才会导通,而负极电压高于正极电压是不导通的。
图2-7发光二极管示意图
发光二极管是一种特殊的二极管,导通时会发光(发光二极管导通压降一般为1.7V~1.9V)。
此外,工作电流要满足该二极管的工作电流。
发光二极管的正负极可以用万用表进行判断,把万用表拨至二极管档或电阻挡,用两个表笔分别接触二极管的两个引出脚。
若发光二极管被点亮,则与红表笔相接的引出脚为正极。
从外观上看,发光二极管的正极引脚的长度也比较长。
一般发光二极管与I/O端口之间都会再连接一个电阻,其作用在于限制通过二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制。
一般发光二极管的点亮电流为5mA至10mA。
路灯设计时我采用了红、黄、绿三种发光二级管组。
如下图2-8所示:
图2-8路灯设计电路
2.6车流量检测电路
此功能只在南北通道上设有,为了方便模拟,用按键代替车辆的通过,每按下按键INT0就代表一辆车通过,没按下按键INT1就代表一辆车出去,接口电路如下图所示:
图2-9车流量按键模块
2.7时钟电路
时钟电路如下图2-10所示:
图2-10时钟电路
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力.本论文过时间对交通等进行控制,当12点-1点这段时间里为高峰期,此时红绿灯时间从25秒变为45秒。
2.8电压转换电路
通过电压转换电路系统(6)可将220V转成5V。
如下图2-11所示:
图2-11电压转换电路
2.9系统原理图
系统原理图如下图2-12,2-13,2-14,2-15,2-16所示:
2.12系统原理图
图2-13系统部分原理图1
图2-14系统部分原理图2
图2-15系统部分原理图3
图2-16系统部分原理图4
3软件系统设计
3.1设计思路及关键技术
一个完整的交通灯相当于一个完整的单片机系统
(1),该系统有交通灯设置电路、单片机、显示电路等构成。
单片机是集成的IC芯片,只需根据实际设计要求选型。
其他部分都需要根据应用要求和性能指标自行设计。
首先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
3.2软件流程
系统主机流程图如图3-1所示:
图3-1整体软件设计流程图
系统从机流程图如图3-2所示
图3-2
3.3交通灯的设计程序说明
这部分中定义了一些全局变量的数组(9)和变量以及位标志,只是些定义的东西不需要画流程图了。
这部分程序如下:
#include<
reg51.h>
intrins.h>
//包含空指令
#defineucharunsignedchar
#defineuintunsignedint
#definexx5//车流量拥挤下限值
sbitnb1_r=P0^0;
//南北红灯
sbitnb1_y=P0^1;
//南北黄灯
sbitnb1_l=P0^2;
//南北绿灯
sbitnb2_r=P0^3;
//东西红灯
sbitnb2_y=P0^4;
//东西黄灯
sbitnb2_l=P0^5;
//东西绿灯
sbitnb3_r=P0^6;
sbitnb3_y=P0^7;
sbitnb3_l=P2^0;
sbitdx1_r=P2^1;
sbitdx1_y=P2^2;
sbitdx1_l=P2^3;
sbitdx2_r=P2^4;
sbitdx2_y=P2^5;
sbitdx2_l=P2^6;
sbitdx3_r=P2^7;
sbitdx3_y=P3^0;
sbitdx3_l=P3^6;
sbittu=P3^7;
bitliuliang=0;
//流量延时
bitflag1=1;
bitflagfx=1;
uintflow=0;
uchartime=20;
//循环20次为1S(每次约为50MS)
ucharcishu=0;
ucharx=26;
uchary=30;
3.4延时函数
延时程序如下:
///////////////////////////
//1ms
voiddelay05s()//约1ms延时
{
uinti;
uchart;
for(i=10;
i>
0;
i--)
{
for(t=100;
t>
t--)
{_nop_();
}
}
//////////////////////////////////////////////
///1.5ms
/////////////////////////////////////////////
voiddelay1s()//约1.5MS延时
for(t=150;
3.5各通道红绿灯状态函数
显示函数如下:
voidnb1hong()
nb1_r=1;
nb1_y=0;
nb1_l=0;
voidnb1huang()
nb1_r=0;
nb1_y=1;
voidnb1lv()
nb1_l=1;
voidnb1mie()
nb1_r=0;
voidnb2mie()
nb2_r=0;
nb2_y=0;
nb2_l=0;
voidnb3mie()
nb3_r=0;
nb3_y=0;
nb3_l=0;
voiddx1mie()
dx1_r=0;
dx1_y=0;
dx1_l=0;
voiddx2mie()
dx2_r=0;
dx2_y=0;
dx2_l=0;
voiddx3mie()
dx3_r=0;
dx3_y=0;
dx3_l=0;
voidmie()
nb1mie();
nb2mie();
nb3mie();
dx1mie();
dx2mie();
dx3mie();
voidnb2hong()
nb2_r=1;
voidnb2huang()
nb2_r=0;
nb2_y=1;
voidnb2lv()
nb2_l=1;
voidnb3hong()
nb3_r=1;
voidnb3huang()
nb3_r=0;
nb3_y=1;
voidnb3lv()
nb3_l=1;
voiddx1hong()
dx1_r=1;
voiddx1huang()
dx1_r=0;
dx1_y=1;
voiddx1lv()
dx1_l=1;
voiddx2hong()
dx2_r=1;
voiddx2huang()
dx2_r=0;
dx2_y=1;
voiddx2lv()
dx2_l=1;
voiddx3hong()
dx3_r=1;
voiddx3huang()
dx3_r=0;
dx3_y=1;
voiddx3lv()
dx3_l=1;
3.6路况红路灯状态总体显示函数
voidnbtongxing()//南北通行,东西禁行
nb1lv();
nb2lv();
nb3hong();
dx1lv();
dx2hong();
dx3hong();
voiddxtongxing()//东西通行,南北禁行
dx1hong();
dx2lv();
dx3lv();
nb2hong();
voidhuangdeng()//黄灯liang
dx1huang();
dx2huang();
dx3huang();
nb1huang();
nb2huang();
nb3huang();
3.7定时器0中断函数
定时器0中断函数如下:
voidtimer1()interrupt1
{TR0=0;
TL0=0X00;
TH0=0X4C;
time--;
//20次为1S
if(time==0)
{ES=1;
TI=0;
SBUF=0Xee;
time=20;
cishu++;
if(flagfx==1)
{
if(cishu<
x)
nbtongxing();
}
elseif(cishu>
=x&
cishu<
y)
huangdeng();
//delay1s();
//mie();
elseif(cishu==y)
cishu=0;
flagfx=~flagfx;
else
dxtongxing();
delay1s();
//ES=1;
//TI=0;
//SBUF=0Xee;
ES=0;
TR0=1;
流程图如下图3-3所示:
图3-3
3.8外部中断1函数
voidint1()interrupt2//出车口检测
TR0=0;
flow--;
if(flow>
xx)
{
ES=1;
SBUF=0Xaa;
//ES=0;
TR0=0;
else
TR0=1;
}
流程图如下图3-4所示:
图3-4
3.9外部中断0函数
voidint0()interrupt0//进车口检测
flow++;
4Proteus软件仿真和keil软件编程的实现
4.1keil软件编程的实现
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 红绿灯 毕业设计 论文