STC15W单片机解析GPS数据2

4 篇文章 0 订阅
$GNGGA,093507.000,3145.615378,N,11955.720475,E,1,9,1.79,29.336,M,6.667,M,,*47
$GPGSA,A,3,19,17,09,193,28,05,,,,,,,2.00,1.79,0.89*3D
$GLGSA,A,3,72,65,86,,,,,,,,,,2.00,1.79,0.89*1A
$GPGSV,3,1,12,19,73,093,38,193,64,120,24,06,58,356,16,17,54,120,34*46
$GPGSV,3,2,12,50,52,166,36,02,42,305,20,09,36,094,36,05,27,227,19*76
$GPGSV,3,3,12,12,26,303,15,04,20,058,,28,11,177,29,25,05,322,*73
$GLGSV,2,1,08,72,70,095,30,87,46,353,,65,44,182,36,86,35,083,25*62
$GLGSV,2,2,08,71,29,035,,88,19,317,,77,12,250,,78,12,301,*61
$GNRMC,093507.000,A,3145.615378,N,11955.720475,E,0.00,353.79,240520,,,A*75
$GNVTG,353.79,T,,M,0.00,N,0.00,K,A*28

前一篇博客STC15W单片机解析GPS数据1存在一个缺陷,只能选取GPS串口发送数据的第一条语句,即只能选取$GNGGA语句,其它语句无法选取,主要是程序的缺陷.

修改后usart.c的程序:

/********************* UART2中断函数************************/
void UART2_int (void) interrupt UART2_VECTOR
{
	
	if(RI2)
	{
		CLR_RI2();
		if(COM2.B_RX_OK == 0)
		{
			if(COM2.RX_Cnt >= COM_RX2_Lenth)	COM2.RX_Cnt = 0;
			temp=S2BUF;
			RX2_Buffer[COM2.RX_Cnt++] = temp;
                       //接收$GNGGA语句						
        //	if((RX2_Buffer[2]=='N')&&(RX2_Buffer[5]=='A'))
        //	{
        //		RcvStart=1;
        //	}

                       //选择接收$GNVTG语句		
			if(RX2_Buffer[0]=='$')
			{
			//根据需求选取关心的语句,本例程关心$GNVTG语句
			if((RX2_Buffer[2]=='N')&&(RX2_Buffer[5]=='G'))
				{
					LED=0;
					RcvStart=1;
				}
			}
			if((RcvStart==1)&&(temp=='\n'))
			{
				RcvStart=0;
				S2CON &= ~(1<<4);	//禁止串口2接收
				RcvFlag=1;//接收完成$GNGGA字符串
				LED=1;
			}
                       if((RcvFlag==0)&&(temp=='\n'))
			{
		          COM2.RX_Cnt=0;
			}
			COM2.RX_TimeOut = TimeOutSet2;
		}
	}

	if(TI2)
	{
		CLR_TI2();
		if(COM2.TX_read != COM2.TX_write)
		{
		 	S2BUF = TX2_Buffer[COM2.TX_read];
			if(++COM2.TX_read >= COM_TX2_Lenth) COM2.TX_read = 0;
		}
		else	COM2.B_TX_busy = 0;
	}

}

 根据关心的语句 修改程序中的RX2_Buffer的下标  if((RX2_Buffer[2]=='N')&&(RX2_Buffer[5]=='G'))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
STC15W单片机是一种常用的控制单元,适用于各种电子设备和电子控制系统。太阳能追光系统利用太阳能电池板捕捉太阳的光线,并根据光线的方向调整太阳能电池板的位置,以实现太阳能的最大转换效率。 要实现太阳能追光,首先需要使用STC15W单片机来获取光线的方向。可以通过连接光敏电阻或光敏二极管等传感器模块,让STC15W单片机实时测量光线的强弱,并将其转换为适当的电压或电流信号。 然后,单片机需要通过连接电机驱动器来控制太阳能电池板的转动。可以使用直流电机或步进电机,在太阳能电池板的两个方向上实现转动。单片机可以通过调整电机的速度和方向来实现太阳能电池板的自动追踪。 STC15W单片机可以编程实现太阳能追光系统的控制逻辑。可以编写程序,使单片机根据测量到的光线强度通过PID算法或其他控制算法来自动调整太阳能电池板的位置,使其始终朝向光线最强的方向。 另外,为了保护太阳能电池板和单片机,可以在系统中加入适当的保护电路。例如,使用过压保护电路、过流保护电路和短路保护电路等,以确保系统的稳定和安全运行。 总之,STC15W单片机可以实现太阳能追光系统的智能控制和优化能量利用。它可以根据实时测量的光线强度,控制太阳能电池板的转动,使其始终朝向太阳的方向,从而最大程度地提高太阳能的转换效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

armcsdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值