将GPS与8051单片机相连接
GPS模块是一个使用全球定位系统来确定车辆或人的位置的设备。GPS接收机用于在地球上的任何时候和任何地方为用户提供可靠的导航、定位和计时服务。 这个全球定位系统使用24至32颗卫星向接收器提供数据。全球定位系统对全球导航非常重要,它对土地测量、道路标记、地图制作、跟踪和监视商业和科学用途非常有用。但是,在了解这个电路之前,先了解一下如何将LCD与8051单片机连接起来。
电路原理:
GPS模块通过读取卫星发射的信号来计算位置。每颗卫星不断地传送信息,其中包含发送的时间。GPS接收器根据每个信息的到达时间测量与每个卫星的距离。这些信息被用来计算GPS接收器的位置。收到的原始数据被转换为纬度、经度、纬度、速度和时间,供用户使用。
电路图:
将GPS连接到8051微控制器的电路图
电路元件:
AT89C51控制器
编程板
编程电缆
12V直流电池或适配器
max232集成电路
16*2 LCD
GPS模块
电位器10k
12兆赫晶体
电解电容 - 1uF (4), 10u
陶瓷电容 - 33pF (2)
电阻器 - 10k
电路设计:
在上述电路中,LCD(液晶显示器)数据引脚连接到控制器的PORT2,控制引脚RS、RW和EN分别连接到P1.0、P1.1和P1.2。位置的纬度和经度值显示在LCD上。这里的RV1用于调整LCD的对比度。GPS模块的接收引脚连接到max232 IC的第13个引脚,GND引脚连接到地面。控制器的RXD引脚被连接到max232的第12个引脚。这里max232集成电路用于电平转换。
GPS接收机按照NMEA标准使用RS232协议连续传输数据。在这种NMEA格式中,位置的LATITUDE和LONGITUDE值在GPRMC句子中可用。在这个项目中,LATITUDE和LONGITUDE值从NMEA格式中提取并显示在LCD上。
我们必须使用UART协议串行接收GPS模块的数据,然后从接收到的信息中提取纬度和经度值并显示在LCD上。
从NMEA格式中提取纬度和经度值:
从GPS模块收到的前6个字符将与字符串$GPRMC进行比较,如果匹配,将进行进一步的处理,否则将重复同样的过程。如果字符串是匹配的,那么等待你将得到两个逗号,下一个字符表示GPS是否被激活。如果这个字符是A,那么GPS被激活,否则GPS没有被激活。现在再次等待,直到你得到逗号(,)。接下来的9个字符表示纬度(LATITUDE)。等到你再得到两个逗号(,),接下来的10个字符就表示长纬度。
如果你想在没有任何编码的情况下检查位置的经纬度值,那么请使用Trimble studio软件。当你连接GPS模块时,这个软件直接提供经度、纬度、高度、速度、时间和日期。甚至它还提供你在谷歌地图上的位置。
下面的函数用于从NMEA格式中提取LATITUDE和LONGITUDE值。
void gps ()
{
unsigned int LAT[9], LON[10];
unsigned char Temp, i;
if (rx_data() == ‘$’)
{
if( rx_data() == ‘G’)
{
if (rx_data() == ‘P’)
{
if (rx_data() == ‘R’)
{
if (rx_data() == ‘M’)
{
if (rx_data() == ‘C’)
{
while (rx_data() != ‘,’);
while (rx_data() != ‘,’);
/*checking for “A” condition*/
Temp = rx_data();
if (Temp == ‘A’||Temp == ‘V’)
{
while (rx_data() != ‘,’);
/*latitude values*/
LCDCmd (0x80);
for (i=0; i<9; i++)
{
LAT[i] = rx_data();
LCDData (LAT[i]);
}
while (rx_data() != ‘,’);
while (rx_data() != ‘,’);
/*longitude values*/
LCDCmd (0xc0);
for (i=0; i<10; i++)
{
LON[i] = rx_data();
LCDData (LON[i]);
}
}
}}}}}}
}
如何操作?
现在按照电路图的要求进行连接
使用适配器给GPS模块供电
将GPS模块连接到电脑上,并打开超级终端来检查接收到的信息。
检查GPS是否被激活。
现在将GPS连接到电路上,你可以观察到LCD显示经度和纬度值。
关闭电路和GPS模块的电源。
电路的应用:
该系统可用于海洋导航、汽车导航和车队管理
用于跟踪设备和测绘设备
用于个人定位
本项目用于嵌入式系统的应用,以找出位置。
评论