微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM7学习---GPS练习

ARM7学习---GPS练习

时间:11-18 来源:互联网 点击:
下午抽了点时间在调试ARM7,想把上次用ATMEGA8做的GPS移植到ARM7上去,下午移植了LCD和串口,但是还没把串口中断程序编写好。按键也还没移植,其他OK了,再花点时间就可以完整了。我想GPS和GSM结合起来,这样可以做个比较实用的东西。自己玩玩很不错!哈哈!再接再厉继续努力......

/**************ARM7(LPC2103)练习程序**************************/
/*************************************************************/
/*****File Function : lcd10265液晶显示程序 *****/
/*****Program Author : ZhengWen(ClimberWin) *****/
/*****MCU : LPC2103F 外部11.0592M晶振 *****/
/*****Compile Date : 2010/01/13 *****/
/*****Edition Info : V1.0 *****/
/*************************************************************/
//编译环境 KEIL for ARM
//修改时间2010年2月9日,能够串口输出数据,接收数据,并且LCD上显示
/*************************************************************/
//修改时间2010年2月10日
//修改内容:一直串口和LCD显示不能同时用,后来发现是设置好PLL后由于时序太快,导致液晶不能显示
// 调整好时序后液晶可以正常显示。
//LCD GUI移植成功,还需要移植按键
//#include
//#include
#include "RCU6093.h"
#include "win_delay.h"
#include "GPS_GH_80.h"
#define uchar unsigned char
#define uint unsigned int
#define baudrate 9600 //设置波特率
#define PE (U0LSR&0x40)//定义串口数据发送忙碌与否,PE=1忙碌;PE=0;不忙绿

#define Fosc(11059200)//晶振频率,10MHz~25MHz,应当与实际一至
#define Fcclk(Fosc * 6) //66.3552 系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ
#define Fcco(Fcclk * 4) //CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz
#define Fpclk(Fcclk / 4) * 1 //016.5888,VPB时钟频率,只能为(Fcclk / 4)的1 ~ 4倍

//常量定义
uchar lcd_y_num=0;//液晶显示Y轴坐标
uchar temp_h;
uchar temp_l;
uchar stop=0;

uchar UART_MID;//定义一个缓存区数据临时存储地址

uchar numh=0;
uchar numl=0;

uchar flag=0;
uchar temp1;

uchar data_num0=1;
uchar data_num1=1;

uchar key1_flag; //定义按键标志位
uchar key2_flag;
uchar key3_flag;
uchar gps_flag;//定义是否有GPS数据

//////////////////////////////////////////////////////////////
void LCD_PORT_INI(void);
void LCD_write_LCD(unsigned char data,unsigned char cmd);
void LCD_RCU6093_Clear(void);
void LCD_RCU6093_tset(void);
void LCD_RCU6093_int(void);

void init_USART(void);//USART 初始化
void write_asicc(uchar assi);
void LCD_xy(uchar x,uchar y);
void write_hanzi(uchar hz);
void write_hanzi16(uchar hz,uchar x,uchar y,uchar mirror);
void PLL_Init(void);

void UART0_INT(void); //串口初始化
void UART0_SendByte(unsigned char data); //串口发送字节
void UART0_SendStr(unsigned char const *str);//串口发送字符串

void keytest(void); //按键测试程序

void Charge(void);//电池充电子程序
void Signal_strength(void);//信号强度指示程序
void banbenxinxi(void);//显示版本信息
void GPS_display(void);
/**********************************************/

void keytest(void) //按键测试程序
{

}
////////////充电状态////////////////////

void Charge(void)
{
uchar i;
LCD_xy(94,1);//LCD指针坐标
write_hanzi(19);//
for(i=0;i<6;i++)
{ LCD_xy(94,0);//LCD指针坐标
write_hanzi(13+i);//
delayms(60000);
delayms(60000);
delayms(60000);
}
}

///////////信号强度状态//////////////////
void Signal_strength(void)
{
uchar i;
LCD_xy(0,1);//LCD指针坐标
write_hanzi(20);//
for(i=0;i<4;i++)
{ LCD_xy(0,0);//LCD指针坐标
write_hanzi(21+i);//
delayms(60000);
delayms(60000);
delayms(60000);
}
}

///////////////////////////////
/////////////////////////////////
void banbenxinxi(void)
{
LCD_RCU6093_int(); //初始化液晶

LCD_xy(0,2);//LCD指针坐标

write_asicc(G);
write_asicc(P);
write_asicc(S);
write_asicc(0);
write_asicc(V);
write_asicc(1);
write_asicc(.);
write_asicc(2);

LCD_xy(0,3);//LCD指针坐标
write_asicc(C);
write_asicc(P);
write_asicc(U);
write_asicc(:);

write_asicc(A);
write_asicc(R);
write_asicc(M);
write_asicc(7);
write_asicc(T);
write_asicc(D);
write_asicc(M);
write_asicc(I);

L

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top