智能交通灯课程设计报告Word格式文档下载.docx
- 文档编号:3058133
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:37
- 大小:131.26KB
智能交通灯课程设计报告Word格式文档下载.docx
《智能交通灯课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《智能交通灯课程设计报告Word格式文档下载.docx(37页珍藏版)》请在冰点文库上搜索。
c)交通中面临着许多的不可知以及难以测量的扰动因素(如:
交通事故,非法停车,行人穿行等);
d)交通状态的测量信息往往是局部信息,并且测量的准确度受许多因素的影响。
针对以上问题,国内外研究学者提出了交通信号控制系统的解决方案,按几何拓扑可分为交叉路口控制、城市主干道控制和网络控制三类。
2、智能交通系统与分布式协同优化控制
智能交通系统的提出为全面解决城市交通运输问题提供了一个有效的路径。
智能交通系统涵盖了交通领域中的许多方面,包括信息服务系统、交通管理系统、电子收费系统等,是高度综合化、智能化的交通控制系统。
在交通管理方面,智能交通系统采用先进的车辆检测技术和计算机信息处理技术,获取实时交通路况信息,并根据收集到的信息对交通进行控制,信息的收集一方面提高了交通控制的准确性,但同时大量的数据也增加了消息处理的复杂性。
三、开发环境及系统结构
3.1开发环境
Linux操作系统从1991年问世到现在,短短十几年的时间已经发展成为功能强大、设计完善的操作系统之一。
作为最能体现互联网自由和开放精神的代表,Linux自诞生以来就以软件源代码开放、可自主开发和高效灵活等特点迅速得到众多软件开发者的推崇。
并且,随着互联网的迅猛发展,Linux正取代Windows成为全球增长最快的操作系统。
随着Linux应用的普及,Linux下的软件开发无疑会成为IT业发展的又一次高潮。
Linux操作系统主要有以下特点:
自由软件;
完全兼容POSIX1.0标准;
支持多用户和多任务;
良好的用户界面;
支持多种文件系统;
丰富的网络功能;
可靠的系统安全;
良好的可移植性;
正是由于以上特点,Linux在短时间内获得了飞速的发展,已在各个行业得到了广泛的应用。
同时,Linux嵌入式系统具有优秀的可移植性,利用Linux系统来进行软件开发已经成为一种趋势[12]。
可以想象,Linux的发展前景非常可观。
3.2系统结构
本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。
其具体的硬件电路总图如图3.1所示。
其中P0用于送显两片LED数码管,P1用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P2.6P2.7对数码管进行片选,P3.2即INT0紧急情况处理按键,P3.3即INT1接时间调整中断按键。
四、详细设计
4.1程序框架设计
本文介绍的智能交通灯有普通交通灯的功能(此处设置时间为3秒)和监测到震动后调整时间(本文设置为8秒)的功能。
程序流程图如图4.1所示:
图1程序流程图
4.23秒程序的控制
3秒中的程序是在车流量较少时即未检测到震动时执行的程序,其流程图如图4.2所示:
图23秒程序流程图
4.28秒程序的控制
8秒中的程序是在车流量较多时即检测到震动时执行的程序,其流程图如图4.3所示
图38秒程序流程图
五、结论
5.1实验截图
(1)程序刚启动时,执行3秒中的红灯。
终端上显示的结果如图5-1所示:
图43秒红灯实验截图
(2)红灯过后执行3秒的绿灯,终端显示结果如图5-2所示:
图53秒绿灯实验截图
(3)监测到震动,交通灯切换到8秒的时间,终端执行结果如图5-3所示:
图68秒绿灯实验截图
附件1
#include<
sys/types.h>
sys/stat.h>
sys/time.h>
signal.h>
fcntl.h>
termios.h>
errno.h>
ctype.h>
stdio.h>
stdlib.h>
string.h>
time.h>
unistd.h>
#include"
pthread.h"
stddef.h>
#include"
wsnserial.h"
#defineLED1
#definePWM1
#defineSEG1
#defineSTEPPER_START0
#defineSTEPPER_STOP1
#defineDCMOTOR_START0
#defineDCMOTOR_STOP0
intnread=0;
charRecbuff[1024];
intsRecDataLen=0;
charsave_byte4;
charsave_byte5;
pthread_mutex_tmutex;
intbuffer_has_item=0;
intbuffer_has_send=0;
intSendNum=0;
structserial_configserialread;
staticintserial_fd;
intspeed_arr[]={B230400,B115200,B57600,B38400,B19200,B9600,B4800,B2400,B1200,B300,
B38400,B19200,B9600,B4800,B2400,B1200,B300};
intname_arr[]={230400,115200,57600,38400,19200,9600,4800,2400,1200,300,
38400,19200,9600,4800,2400,1200,300};
//-----------------------------------------------
voidset_speed(intfd,intspeed)
{
inti;
intstatus;
structtermiosOpt;
//structtermiosoldOpt;
tcgetattr(fd,&
Opt);
//printf("
serialread.speedis%d\n"
serialread.serial_speed);
for(i=0;
i<
sizeof(speed_arr)/sizeof(int);
i++)
{
if(speed==name_arr[i])
{
tcflush(fd,TCIOFLUSH);
cfsetispeed(&
Opt,speed_arr[i]);
cfsetospeed(&
status=tcsetattr(fd,TCSANOW,&
if(status!
=0)
perror("
tcsetattrfd1"
);
return;
}
tcflush(fd,TCIOFLUSH);
}
}
intset_Parity(intfd,intdatabits,intstopbits,intparity)
structtermiosoptions;
//structtermiosoldoptions;
if(tcgetattr(fd,&
options)!
perror("
SetupSerial1"
return(FALSE);
//options.c_cflag|=(CLOCAL|CREAD);
options.c_cflag&
=~CSIZE;
serialread.databitsis%d\n"
serialread.databits);
switch(databits)
case7:
options.c_cflag|=CS7;
break;
case8:
options.c_cflag|=CS8;
default:
fprintf(stderr,"
Unsupporteddatasize\n"
return(FALSE);
serialread.parityis%c\n"
serialread.parity);
switch(parity)
case'
n'
:
N'
options.c_cflag&
=~PARENB;
options.c_iflag&
=~INPCK;
o'
O'
options.c_cflag|=(PARODD|PARENB);
options.c_iflag|=INPCK;
e'
E'
options.c_cflag|=PARENB;
=~PARODD;
S'
s'
/*asnoparity*/
=~CSTOPB;
fprintf(stderr,"
Unsupportedparity\n"
serialread.stopbitsis%d\n"
serialread.stopbits);
switch(stopbits)
case1:
case2:
options.c_cflag|=CSTOPB;
Unsupportedstopbits\n"
if(parity!
='
&
parity!
)
options.c_iflag|=INPCK;
=~CRTSCTS;
options.c_iflag&
=~IXOFF;
=~IXON;
options.c_iflag|=INPCK;
tcflush(fd,TCIOFLUSH);
//options.c_iflag|=IGNPAR|ICRNL;
options.c_lflag&
=~(ICANON|ECHO|ECHOE|ISIG);
//options.c_oflag|=OPOST;
options.c_oflag&
=~OPOST;
=~(ICRNL|IGNCR);
//options.c_iflag&
=~(IXON|IXOFF|IXANY);
options.c_cc[VTIME]=0;
//150;
//15seconds
options.c_cc[VMIN]=0;
tcflush(fd,TCIFLUSH);
if(tcsetattr(fd,TCSANOW,&
SetupSerial3"
return(TRUE);
intOpenDev(char*Dev)
intfd=open(Dev,O_RDWR);
if(-1==fd)
Can'
tOpenSerialPort"
return-1;
else
returnfd;
intserial_init(void)
char*Dev="
/dev/s3c2410_serial1"
;
serial_fd=OpenDev(Dev);
if(serial_fd>
0)
set_speed(serial_fd,115200);
printf("
tOpenSerialPort!
\n"
exit(0);
if(set_Parity(serial_fd,8,1,'
)==FALSE)
SetparityError\n"
exit
(1);
return0;
floatScanADdata(charbyte9)
floatADdata;
if(byte9>
0xf0)
ADdata=0;
elseif(byte9>
0x80)
ADdata=3.3;
else
ADdata=(3.3/127)*byte9;
returnADdata;
intPressData(charbyte)
inttemp=0;
if(byte>
36)
temp=(byte-34)*200/18;
temp=0;
returntemp;
intRainData(charbyte)
11)
return1;
return0;
floatWaterData(charbyte13)
{
floatWaterData;
if(byte13>
0)
WaterData=(byte13+3)/7.5;
WaterData=0;
returnWaterData;
floatultrasonicData(charbyte11)
floatultrasonicData;
ultrasonicData=0.0544*byte11;
returnultrasonicData;
void*fbl_malloc(intlen,char*str)
void*ptr=malloc(len);
if(ptr==0)
%sFailed(len=%d)!
!
str,len);
returnptr;
charXorVerify(charBytesCMD[])
charchecksum=BytesCMD[1];
for(i=1;
BytesCMD[1]+1;
checksum^=BytesCMD[i+1];
returnchecksum;
voidjs();
voidting();
voidzou();
voidfmq();
voidscan()
intsource_addr,father_addr;
charbyte4,byte5,byte6,byte7,byte8,byte9,byte10,byte11,byte12,byte13,byte14,byte15,byte16,byte17,byte18,byte19;
chartest,byteCheck;
charPacketBuff[50];
intPacketLen;
intj;
structwsn_comm_pkg*pkt=0;
if(sRecDataLen>
//printf("
sRecDataLen:
%d\n"
sRecDataLen);
intsFirstPosition=0;
while(sFirstPosition<
sRecDataLen)
//printf("
sFirstPosition:
sFirstPosition);
if(Recbuff[sFirstPosition]==0x2)
{
PacketLen=Recbuff[sFirstPosition+1]+3;
//printf("
PacketLen:
PacketLen);
if(PacketLen<
=sRecDataLen-sFirstPosition)
{
//printf("
PacketBuff="
inti;
for(i=0;
PacketLen;
i++){
PacketBuff[i]=Recbuff[sFirstPosition+i];
//printf("
%02x"
PacketBuff[i]);
}
printf("
if(PacketBuff[7]==0x1){
byte10=PacketBuff[10];
byte11=PacketBuff[11];
byte12=PacketBuff[12];
byte13=PacketBuff[13];
byte14=PacketBuff[14];
byte15=PacketBuff[15];
byte16=PacketBuff[16];
byte17=PacketBuff[17];
byte18=PacketBuff[18];
if((byte10&
0x7)==0x0)
{
/*printf("
A/Dµ
ç
Ñ
¹
%.2fV\n2530Î
Â
¶
È
%d¡
æ
\n°
å
Î
\nÎ
Ê
ª
%d%\n¹
â
Õ
ScanADdata(byte11),byte12,byte13,byte14,byte15,byte16);
*/
if(byte17==0x00)
{
printf("
Vibrationsensors:
NOvibration\n"
for(j=3;
j>
=0;
j--)
{
if(byte17==0x01)break;
sleep(3);
js(j);
sleep
(1);
ting();
//sleep
(1);
}
fmq();
for(j=3;
{if(byte17==0x01)break;
zou();
//if(byte17==0x01)break;
}
if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 交通灯 课程设计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)