GPS全球定位系统仿真(基于PIC)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//----------------------------------------------------main.c---------------------------------------------------

// 名称:GPS全球定位系统仿真

//----------------------------------------------------------------------------------------------------------------

// 说明:在运行时,LCD屏将显示出当前经纬度,时间,速度信息

// 在Proteus环境下完成本实验时,需要运行程序:// 1、Virtual serial port Driver(VSPD,虚拟串口驱动)

// 2、Virtual GPS(虚拟GPS软件)

// 建议在VSPD中将COM3和COM4设为对联串口// Proteus中设COMPIM为COM3,在虚拟GPS软件中选择COM4

// 单片机程序将接收虚拟GPS软件通过串口发回来的信息

// 解析与显示在LCD上。

//

//-----------------------------------------------------------------------------------------------------------------

#include

#include

#include ”PG160128.h”

#include ”PictureDots.h”

volatile INT8U rec_OK = 0;

volatile char time[] = ”00:00:00”;

volatile char Longitude [] = ”ddd\xAl\xE3mm.mmmm’X”; //经度

volatile char Latitude [] = ”dd\xAl\xE3mm.mmmm’X”; //纬度

volatile char Speed[12]; //地面速度

const char p[] = ”SGPRMC”;

//---------------------------------------------------------------------------------------------------------------

// 延时函数

//---------------------------------------------------------------------------------------------------------------

void delay (INT8U x)

{

While (--x)_delay_ms(100);

}

//---------------------------------------------------------------------------------------------------------------

// 串口初始化

//---------------------------------------------------------------------------------------------------------------

void Init_SerialPort()

{

TRISC6 = 0; //TXD 输出

TRISC7 = 1; //RXD 输入

SYNC = 0;//选择异步通信模式

BRGH = 1;//选择高速波特率发生模式

TXEN = 1; //允许发送数据

SPBRG = _XTAL_FREQ/16/4800-1; //设置波特率为4800

SPEN = 1 //串行通信端口打开

CREN = 1;//使能

连续接收串行数据

}

//---------------------------------------------------------------------------------------------------------------

// 主程序

//---------------------------------------------------------------------------------------------------------------

void main()

{

ADCON1 = 6;//RA端口设置为数字端口

TRISC2 = TRISC3 = TRISC4 = 0; //液晶输出端口

PORTD = TRISD = 0x00;

LCD_Initialise(); //初始化LCD

Clear_Screen(); //清屏

Draw_Image((INT8U*) Title_Image,0,0); //显示GPS导航系统标题

Draw_Image((INT8U*) info4_Image,30,0); //显示GPS导航系统4项信息

Init_SerialPort(); //初始化串口

RCIE = 1; //使能接收中断

GIE = 1;//开放全局中断

PEIE = 1;//使能外部中断

While(1)

//处理SGPRMC,分解出时间,经纬度及速度信息并显示

If(rec_OK == 1)

{

//显示经度信息

Disp_Str_at_xy(40,36,(char*)Longitude,15,1);

//显示纬度信息

Disp_Str_at_xy(40,52,(char*)Latitude,15,1);

//显示速度信息(Knots 单位转换为km/s)

相关文档
最新文档