基于STM32的经纬度坐标运算器

使用STM32F103单片机,配合液晶显示屏和4×4键盘,构建了一个经纬度运算器。用户可以输入经度、纬度、偏向角度和距离,系统会计算出新的坐标。代码基于C语言,STM32配置采用CUBEMX工具。
摘要由CSDN通过智能技术生成

 通过STM32F103作为控制芯片,将液晶显示屏作为运算器的显示界面,4×4键盘为运算输入模块,制作了经纬度运算器,可以从键盘输入经度纬度以及偏向角度与距离,计算对方的经纬度坐标,经纬度运算部分代码如下所示。

#include "stm32f1xx_hal.h"
#include "usart/bsp_debug_usart.h"
#include "led/bsp_led.h"
#include "beep/bsp_beep.h"
#include "keypad.h"
#include "math.h"
#define pi 3.14159265
float Ea = 6378136.49;
float Eb = 6356755.2882; 

int ChangetoSexagesimal(float Num, int *a, int *b, int *c)
{

    float e;
    int Hour,Minute,Second;
        
    Hour = (int)(Num);                              //                
    Minute = (int)((Num-Hour)*60);                  
    Second = (int)(((Num-Hour)*60 - Minute) *60);   //

    e = ((Num-Hour)*60 - Minute) *60 - Second;      //ËÄÉ«ÎåÈë

    if(5 <=(int)(e *10) )
    {
        Second = Second + 1;
    }
    
    if(60 == Second)
    {
        Second = 0;
        Minute = Minute + 1;
    }    
    
    if(60 == Minute)
    {
        Minute = 0;
        Hour = Hour + 1;
    }    

    *a = Hour;
    *b = Minute;
    *c = Second;

    return 1;

}

void inputxy(double GLAT,double GLON,double distance,double angle)
{
		
	  float LongtitudeNumber = 0;
    float LatitudeNumber = 0;	  

    int LongtitudeHour = 0;
    int LongtitudeMinute = 0;
    int LongtitudeSecond = 0;

    int LatitudeHour = 0;
    int LatitudeMinute = 0;
    int LatitudeSecond = 0;
    float dx = distance*100*sin(angle);
    float dy = distance*100*cos(angle);
	  float ec =Eb+(Ea-Eb)*(90.0-GLAT)/90.0; 
	  float ed = ec*cos(GLAT*pi/180);
	  LongtitudeNumber = (dx/ed + GLAT*pi/180.0)*180.0/pi; 
	  LatitudeNumber = (dy/ec + GLON*pi/180.0)*180.0/pi; 


    (void)ChangetoSexagesimal(LongtitudeNumber, &LongtitudeHour, &LongtitudeMinute, &LongtitudeSecond);
    
    (void)ChangetoSexagesimal(LatitudeNumber, &LatitudeHour
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值