车辆闯红灯监控系统-(2)Word文档格式.doc
- 文档编号:13046873
- 上传时间:2022-10-03
- 格式:DOC
- 页数:16
- 大小:190.50KB
车辆闯红灯监控系统-(2)Word文档格式.doc
《车辆闯红灯监控系统-(2)Word文档格式.doc》由会员分享,可在线阅读,更多相关《车辆闯红灯监控系统-(2)Word文档格式.doc(16页珍藏版)》请在冰豆网上搜索。
东西方向通行时间是20s,南北方向通行时间是35s,黄灯亮的时间是5s。
刚开始时东西方向同行,经过20s后黄灯亮,延时5s,接着南北方向通行,通行时间是35s。
如此循环反复,使十字路口的交通秩序井然有序的进行。
本系统采用了一片89C51单片机,一片8路同相三态双向总线收发器74LS245芯片,一片respack8排阻,两个Led数码管,红黄绿发光二极管各四个,七个按钮开关,一个蜂鸣器,以及其他元器件和若干导线。
通过按钮开关可以控制数码管的复位、清零以及数字的增大、减小等功能,还可以在紧急情况时使东西南北四个方向同时亮红灯,以便能够对紧急情况及时的进行处理。
设计方案及原理
设计方案
设计交通灯的方案有很多,有应用CPLD实现交通信号灯控制器的设计,有应用PLC实现对交通灯控制系统的设计,有应用单片机实现对交通信号灯设计的方法。
由于AT89C51单片机自带有2个计数器,5个中断源,能满足系统的设计要求。
用单片机设计不但设计简单,而且成本低。
用其设计的交通灯也满足了要求,所以本课程设计采用单片机设计车辆闯红灯监控系统。
设计一个十字路口交通灯控制电路,根据设定好的周期时间能够指挥车辆在十字路口完成左转和直行交替运行。
设计原理
采用单片机的P2.1、P2.2、P2.3、P2.4、P2.5、P2.6口直接和交通灯连接,P0口以及P1.O、P1.1口通过respack排阻与LED数码管相连。
控制程序放在89C51单片机中,在十字路口的四组红、黄、绿交通灯中,由单片机的P2.1、P2.2、P2.3、P2.4、P2.5、P2.6口控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极连接,因此I/O口输出低电平时,与之相连的相应指示灯会亮,并通过LED数码管显示时间倒计时。
I/O输出高电平时,相应指示灯会灭。
紧急车请求通过的信号由人工控制,以中断方式输入单片机。
无紧急车通过时,P3.1口通过电阻和电源正极连接为高电平,不产生中断,单片机执行主程序,有紧急车通过时,P3.1口采用人工方法接地为低电平,产生中断请求,单片机执行中断服务程序,让紧急车通过,紧急车通过后,P3.1口变为高电平,返回主程序。
系统组成框图如下:
图1.车辆闯红灯控制系统总体组成框图
硬件设计
系统的硬件电路图如下图2所示:
该电路原理图是在设计思路和方案的基础上,根据设计要求,在能够满足所要实现的功能的基础上,在Proteus环境下进行模拟和仿真出来的。
该图用单片机的P2口和十二个发光二极管链接,通过对P2口高低电平的控制来完成对数码管发光与否的控制。
P0口与LED数码管相连,并通过respack排阻驱动使数码管可以按照要求来显示计时时间。
P2口与数码管相连时还使用了上拉电阻,其作用是给数码管提供一个高电平而使其能够发光。
七个按键开关均接地,其目的是给相应的各个接口提供低电平。
图2.系统的硬件电路图
软件设计
系统的程序流程图如下图3所示:
图3.系统的程序流程图
程序清单如下:
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
uchardatabuf[4];
//缓冲区
uchardatasec_dx=20;
//东西数默认
uchardatasec_nb=30;
//南北默认值
uchardataset_timedx=20;
uchardataset_timenb=30;
intn;
uchardatab;
//定时器中断次数
sbitk1=P1^6;
//定义5组开关
sbitk2=P1^7;
sbitk3=P2^7;
sbitk4=P3^0;
sbitk5=P3^1;
sbitYellow_nb=P2^5;
//南北黄灯标志
sbitYellow_dx=P2^2;
//东西黄灯标志
sbitGreen_nb=P2^4;
sbitGreen_dx=P2^1;
sbitBuzz=P3^7;
//蜂鸣器
bitBuzzer_Indicate;
bittime=0;
//灯状态循环标志
bitset=1;
//调时方向切换键标志
ucharcodetable[11]={ //共阴极字型码
0x3f,//--0
0x06,//--1
0x5b,//--2
0x4f,//--3
0x66,//--4
0x6d,//--5
0x7d,//--6
0x07,//--7
0x7f,//--8
0x6f,//--9
0x00//--NULL
};
//函数的声明部分
voiddelay(intms);
//延时子程序
voidkey();
//按键扫描子程序
voidkey_to1();
//键处理子程序
voidkey_to2();
voidkey_to3();
voiddisplay();
//显示子程序
voidlogo();
//开机LOGO
voidBuzzer();
//蜂鸣器子程序
//主程序
voidmain()
{
TMOD=0X01;
//定时器0,工作方式1
TH0=0XD8;
TL0=0XF0;
EA=1;
//开中断
ET0=1;
//内部定时器T0开中断
TR0=1;
EX0=1;
//外部中断0开中断
EX1=1;
//外部中断1开中断
logo();
//开机
P2=0Xc3;
//开始默认状态,东西绿灯,南北黄灯
sec_nb=sec_dx+5;
while
(1)
{
key();
//调用按键扫描程序
display();
//调用显示程序
Buzzer();
}
}
//函数的定义部分
voidkey() //按键扫描子程序
{
if(k1!
=1)
{
delay(10);
if(k1!
{
while(k1!
{
key_to1();
for(n=0;
n<
40;
n++)
{display();
}
}
}
if(k2!
if(k2!
while(k2!
key_to2();
}
if(k3!
{
TR0=1;
//启动定时器
Buzzer_Indicate=0;
sec_nb=set_timenb;
//从中断回复,仍显示设置过的数值
sec_dx=set_timedx;
if(time==0)
{P2=0X99;
sec_nb=sec_dx+5;
}
else{P2=0xC3;
sec_dx=sec_nb+5;
}
if(k4!
{
delay(5);
if(k4!
{
while(k4!
=1);
set=!
set;
}
if(k5!
{
delay(5);
if(k5!
{
while(k5!
=1)
key_to3();
}
voiddisplay()//显示子程序
{
buf[1]=sec_dx/10;
//第1位东西秒十位
buf[2]=sec_dx%10;
//第2位东西秒个位
buf[3]=sec_nb/10;
//第3位南北秒十位
buf[0]=sec_nb%10;
//第4位南北秒个位
P1=0xff;
//初始灯为灭的
P0=0x00;
P1=0xfe;
//片选LCD1
P0=table[buf[1]];
delay
(1);
P1=0xff;
P1=0xfd;
//片选LCD2
P0=table[buf[2]];
delay
(1);
P1=0xff;
P1=0Xfb;
//片选LCD3
P0=table[buf[3]];
P1=0xff;
P1=0Xf7;
P0=table[buf[0]];
//片选LCD4
voidtime0(void)interrupt1using1/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车辆 闯红灯 监控 系统