GPS智能导航程序.docx

上传人:b****4 文档编号:4418278 上传时间:2022-12-01 格式:DOCX 页数:13 大小:34.92KB
下载 相关 举报
GPS智能导航程序.docx_第1页
第1页 / 共13页
GPS智能导航程序.docx_第2页
第2页 / 共13页
GPS智能导航程序.docx_第3页
第3页 / 共13页
GPS智能导航程序.docx_第4页
第4页 / 共13页
GPS智能导航程序.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

GPS智能导航程序.docx

《GPS智能导航程序.docx》由会员分享,可在线阅读,更多相关《GPS智能导航程序.docx(13页珍藏版)》请在冰豆网上搜索。

GPS智能导航程序.docx

GPS智能导航程序

附录

程序源代码

(车辆行驶方位图)

以目标点为原点,纬度为X轴,经度为Y轴。

无论车辆在那个区域都能通过判断行驶方向与正确方向的夹角来实行转向控制。

(起始点)

(行驶方向)

(目标点)(纬度)

(经度)

用的是MC9S12XS128单片机作为中央处理器。

 

//主函数部分

//********************************************************************voidmain(void)

{

PLL_Init();//调用锁相环函数初始化系统时钟

PWM_Init();//初始化PWM

PortInit();//初始化IO口的输入输出

SCI_Init();

Init_GPS_module();/*putyourowncodehere*/

EnableInterrupts;

for(;;){

if(gps_data_ok_flag==1)//查询GPS数据是否OK

{

DisableInterrupts;

Cal_gas_data_to_disp();

if(gps_mode[0]==65)

{

PWMDTY0=200;

e++;

k++;

b=(gps_longitude[7]-48)*100+(gps_longitude[8]-48)*10+(gps_longitude[9]-48);//*******//经度数据

d=(gps_latitude[6]-48)*100+(gps_latitude[7]-48)*10+(gps_latitude[8]-48);//*******//纬度数据

if(e==1)

{

b0=b;

d0=d;

}

if(e==2)//num1

{//

b1=b;//

d1=d;

}

//****************************************************

//***************************************************

//***********(b0,d0)做起始点************************//

if(e==2)

{

if(b0>b1)////num1

{//

f1=b0-b1;

}

else//

{//

f1=b1-b0;//

}//

if(b0>380)//num2

{//

f2=b0-380;//

}//

else//

{//

f2=380-b0;//

}

if(d0>d1)//num3

{

f3=d0-d1;//

}

else

{

f3=d1-d0;

}

if(d0>20)//num4

{

f4=d0-20;

}

else

{

f4=20-d0;

}

f5=f1*f4;

f6=f2*f3;

//***********************************************

//*************************************************

//**************第一大区域***********************

if(d0>20&&b0>380)

{

if(d1>d0&&b1>b0&&f5

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

if(d1>d0&&b1>b0&&f5>f6)//第1区域向右

{

PWMDTY45=tun_r[5];

disply(16000);

zi();

}

if(d1<=d0&&b1f6)//第3区域向左

{

PWMDTY45=tun_r[14];

disply(4000);

zi();

}

if(d1

{

PWMDTY45=tun_r[6];

disply(3000);

zi();

}

if(d1<=d0&&b1>b0)//第2区域向右

{

PWMDTY45=tun_r[5];

disply(9000);

zi();

}

if(d1>d0&&b1<=b0)//第4区域向左

{

PWMDTY45=tun_r[16];

disply(4000);

zi();

}

}

//**********************************************

//*********************************************

//***************第二大区域*****************8

if(d0<20&&b0>380)

{

if(d1b0&&f5

{

PWMDTY45=tun_r[4];

disply(16000);

zi();

}

if(d1b0&&f5>f6)//第2区域向左

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

if(d1>=d0&&b1f6)//第4区域向右

{

PWMDTY45=tun_r[6];

disply(3000);

zi();

}

if(d1>d0&&b1<=b0&&f5

{

PWMDTY45=tun_r[14];

disply(4000);

zi();

}

if(d1

{

PWMDTY45=tun_r[4];

disply(9000);

zi();

}

if(d1>=d0&&b1>b0)//第1区域向左

{

PWMDTY45=tun_r[16];

disply(4000);

zi();

}

}

//**************************************************

//*************************************************

//************************第三大区域*************

if(d0<20&&b0<380)

{

if(d1

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

if(d1f6)//第三区域右转

{

PWMDTY45=tun_r[4];

disply(16000);

zi();

}

if(d1>=d0&&b1>b0&&f5>f6)//第一区域左转

{

PWMDTY45=tun_r[14];

disply(4000);

zi();

}

if(d1>d0&&b1>=b0&&f5

{

PWMDTY45=tun_r[6];

disply(3000);

zi();

}

if(d1=b0)//第二区向左

{

PWMDTY45=tun_r[16];

disply(4000);

zi();

}

if(d1>=d0&&b1

{

PWMDTY45=tun_r[4];

disply(9000);

zi();

}

}

//*********************************************************

//*********************************************************

//**************************第四大区域*********************if(d0>20&&b0<380)

{

if(d1>d0&&b1

{

PWMDTY45=tun_r[4];

disply(16000);

zi();

}

if(d1>d0&&b1<=b0&&f5>f6)//第四区域向左

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

if(d1b0&&f5

{

PWMDTY45=tun_r[14];

disply(4000);

zi();

}

if(d1=b0&&f5>f6)//第二区域向右

{

PWMDTY45=tun_r[6];

disply(3000);

zi();

}

if(d1>d0&&b1>=b0)//第1区域向右

{

PWMDTY45=tun_r[4];

disply(9000);

zi();

}

if(d1<=d0&&b1

{

PWMDTY45=tun_r[16];

disply(4000);

zi();

}

}

//**********************在反方向行驶**********************//

if(f5==f6)

{

if(b1>b0&&d1>d0)

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

if(b1>b0&&d1

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

if(b1

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

if(b1d0)

{

PWMDTY45=tun_r[16];

disply(16000);

zi();

}

}

e=0;

}

//********************************************

反之当以(d1﹑b1)为起始点则把(d0﹑b0)与(d1﹑b1)互换;

当到达目的地(d==20&&b==380)时,

if(18

{

while

(1)

{

PWMDTY0=249;

}

}

则车辆停止。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1