×
单片机 > 单片机程序设计 > 详情

GPS模块(G28U7FTTL)(1)——与单片机通信

发布时间:2020-06-18 发布时间:
|

为什么会设计到这个模块,是因为我们想给学生开展一个实训,源于同事的一个实际项目:自动调速播种机,原理是,将该GPS模块装在播种机上,然后根据GPS采集的速度信息来调整播种机的播种速度,这样就保证了播种的均匀,提高实用性。


接下来先来介绍一下GPS模块:


GPS模块(G28U7FTTL)


实物图:

引脚说明图:

与单片机连接,如下表:


GPS模块(G28U7FTTL) 单片机(STC12C5A60S2)

GND GND

VCC VCC

TXD RXD2(P1.2)

RXD TXD2(P1.3)

这里要注意一下,我们准备使用单片机(STC12C5A60S2)的第二份串口,以前的传统串口留着与PC机相连,通过串口助手查看GPS接收的信号。大家有时间可以研读一下STC12C5A60S2这个型号的单片机,他集成的功能还是比较强大的。

P1.2和P1.3口作为串口,其实也比较简单,我们可以给大家截取一点文档看看。

再回到这个GPS模块,它所接受的大致数据为:

现在我们看一下我的硬件代码:


#include

 

unsigned char Read_buf[40];

unsigned char Send_buf[40];

unsigned char Send_length=0;

unsigned int Read_id=0;

unsigned int Send_flag=0;

unsigned int Send_id=0;

 

/* 函数申明 */

void usart_Init();

void usart2_Init();

 

void main()

{

    usart_Init();  //   串口1初始化

    usart2_Init();  //  串口2初始化

    IE2=0X01;   //  允许中断2中断

    ES=1;       //  允许中断1中断

    EA=1;       //  开启总中断

    while(1);

}

 

void usart_Init()   //  串口1初始化函数,产生9600bps波特率,可用串口助手自动完成

{

PCON &= 0x7F; //波特率不倍速

SCON = 0x50; //8位数据,可变波特率

AUXR &= 0xFB; //独立波特率发生器时钟为Fosc/12,即12T

BRT = 0xFD; //设定独立波特率发生器重装值

AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器

AUXR |= 0x10; //启动独立波特率发生器

}

void usart2_Init()  // 串口2初始化函数,产生9600bps波特率,可用串口助手自动完成

{

AUXR &= 0xF7; //波特率不倍速

S2CON = 0x50; //8位数据,可变波特率

AUXR &= 0xFB; //独立波特率发生器时钟为Fosc/12,即12T

BRT = 0xFD; //设定独立波特率发生器重装值

AUXR |= 0x10; //启动独立波特率发生器

 

}

 

void usart2() interrupt 8

{

    unsigned char x;

    if((S2CON & 0X01) == 1) //  接受中断标志位,表示开始接受数据

    {

        S2CON=S2CON&0XFE;    // 清串口2中的中断接受标志位

        x=S2BUF;

        SBUF=x;              // 发送数据给串口1 

    }

 

}

 

void usart() interrupt 4

{

    if(TI==1)     //    发送数据

    {

        TI=0;

    }

}

运行的结果为:


你会发现这个GPS的确不停的在发这些数据,如果我们只想取其中一条数据,然后在这个串口助手中显示呢?


如,我只取这个速度信息,前缀为:$GPVTG,,,,,,,,,,,,,N*30,如图:



该如何实现呢?我们将在下次文章中讲解。

关键字:GPS模块  G28U7FTTL  单片机通信 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法