亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gps_display_release.c

?? 使用AVR單片機(jī)解析出GPSRM數(shù)據(jù)段的信息
?? C
字號(hào):
/*
; 使用AVR單片機(jī)解析出GPSRM數(shù)據(jù)段的信息,提取時(shí)間、經(jīng)緯度、指示出南北半球及東西經(jīng)、日期、以及當(dāng)前數(shù)據(jù)是否有效的標(biāo)識(shí)位,
; 并將這些信息顯示在1602液晶屏上。
;
; 網(wǎng)站:  http://www.ruixuedz.cn
;email: unaided@tom.com
; 作者:  老蔣
*/

#include <AVR_PQ1A.h>		//包含自定義常量頭文件
#include <avr/interrupt.h>

uchar buf[500];     //串口接受數(shù)據(jù)緩沖區(qū)
uint readCount=0;   //串口解析數(shù)據(jù)計(jì)數(shù) 
uint writeCount=0;  //串口接受數(shù)據(jù)計(jì)數(shù)
uchar Time[6];      //gps時(shí)間
uchar Date[6];      //gps日期
uchar Status;       //gps有效性
uchar Latitude[9];  //gps緯度
uchar NSIndicator;  //gps南北半球標(biāo)識(shí)位
uchar Longitude[10];//gps經(jīng)度
uchar EWIndicator;  //gps東西經(jīng)標(biāo)識(shí)位
uchar Speed[4];     //gps速度

/*******************************************
函數(shù)名稱: Uart_init
功    能: 異步串口初始化
參    數(shù): baud--設(shè)置的波特率
返回值  : 無
********************************************/
void Uart_init(uint baud)			  			 	  
{ 
   baud=MCLK/16/baud-1;				      //波特率最大為65K
   UCSRB=0x00; 
   UCSRA=0x00; 						 	  //控制寄存器清零
   UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0); //選擇UCSRC,異步模式,禁止校驗(yàn),1位停止位,8位數(shù)據(jù)位
   UBRRL=baud; 					     	  
   UBRRH=baud>>8; 						  //設(shè)置波特率
   UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);  //接收、發(fā)送使能,接收中斷使能
   sei();							  //全局中斷開放
   DDRD|=0X02;							  //配置TX為輸出(很重要)
}

/*******************************************
函數(shù)名稱: Uart_sendB
功    能: 異步串口發(fā)送一個(gè)字節(jié)
參    數(shù): sendB--發(fā)送的字節(jié)數(shù)據(jù)
返回值  : 無
********************************************/
void Uart_sendB(uchar sendB)
{
 while(!(UCSRA&(1<<UDRE)));		 //等待發(fā)送緩沖區(qū)為空
 UDR=sendB;						 //發(fā)送數(shù)據(jù)
 while(!(UCSRA&(1<<TXC)));		 //等待發(fā)送完畢
 UCSRA|=1<<TXC;					 //清除發(fā)送完畢狀態(tài)位
}

/*******************************************
函數(shù)名稱: Uart_sentstr
功    能: 異步串口發(fā)送一個(gè)字符串
參    數(shù): sendpt--發(fā)送的數(shù)組指針
返回值  : 無
********************************************/
void Uart_sentstr(uchar *sendpt)		
{
    while(*sendpt)				//字符串未結(jié)束則繼續(xù)發(fā)送
	{
	 Uart_sendB(*sendpt++);
	}
}

/*******************************************
函數(shù)名稱: Uart_RX
功    能: 異步串口接收
參    數(shù): 無
返回值  : 無
********************************************/
ISR(USART_RXC_vect)
{
 UCSRB&=~BIT(RXCIE);					//關(guān)閉接收中斷 
 buf[writeCount]=UDR;						//將接收到的數(shù)據(jù)存入全局?jǐn)?shù)組
 ++writeCount;
 if(writeCount > 499)
	writeCount = 0;
 UCSRB|=BIT(RXCIE);						//使能接收中斷
}

/*******************************************
函數(shù)名稱: Read_byte
功    能: 從接受緩沖區(qū)中讀取一個(gè)字節(jié)
參    數(shù): 無
返回值  : temp--讀取到的數(shù)據(jù)
********************************************/
uchar Read_byte(void)
{
	uchar temp;
	while(readCount == writeCount)
	{
		Delayms(10);	
	}
	temp = buf[readCount];
	++readCount;
	if(readCount > 499)
		readCount = 0;
	return temp;	
}

/*******************************************
函數(shù)名稱: LCD1602_portini
功    能: 初始化1602液晶用到的IO口
參    數(shù): 無
返回值  : 無
********************************************/
void LCD1602_portini(void)
{
	LCDa_CTRL_DDR |= BIT(LCDa_RS)|BIT(LCDa_RW)|BIT(LCDa_E);//配置控制管腳為輸出
	LCDa_DATA_DDR |= 0xFF;//配置數(shù)據(jù)管腳為輸出
}

/*******************************************
函數(shù)名稱: LCD1602_readbyte
功    能: 從1602液晶讀出一個(gè)字節(jié)數(shù)據(jù)或者指令
參    數(shù): DatCmd--為iDat時(shí)是數(shù)據(jù),為iCmd時(shí)是指令
返回值  : dByte--讀回的數(shù)據(jù)或者指令
********************************************/
uchar LCD1602_readbyte(uchar DatCmd)
{
 	uchar dByte;
	if (DatCmd == iCmd)		 //指令操作
		LCDa_CLR_RS;
	else
		LCDa_SET_RS;
		
	LCDa_SET_RW;	   	  	 //讀操作
	LCDa_SET_E;
	LCDa_DATA_DDR=0x00;	 	 //數(shù)據(jù)總線定義為輸入
	dByte=LCDa_DI;			 //讀數(shù)據(jù)或者指令
	Delayms(1);				 //時(shí)序調(diào)整
	LCDa_CLR_E;	
	LCDa_DATA_DDR|=0xff;	 //數(shù)據(jù)總線還原為輸出
	return dByte;
}

/*******************************************
函數(shù)名稱: LCD1602_sendbyte
功    能: 向1602液晶寫入一個(gè)字節(jié)數(shù)據(jù)或者指令
參    數(shù): DatCmd--為iDat時(shí)是數(shù)據(jù),為iCmd時(shí)是指令
	  	  dByte--為寫入1602的數(shù)據(jù)或者指令
返回值  : 無
********************************************/
void LCD1602_sendbyte(uchar DatCmd, uchar dByte)
{
	if (DatCmd == iCmd)		//指令操作
		LCDa_CLR_RS;
	else
		LCDa_SET_RS;		//數(shù)據(jù)操作
		
	LCDa_CLR_RW;			//寫操作操作
	LCDa_SET_E;
	LCDa_DO = dByte;		//寫入數(shù)據(jù)
	Delayms(1);
	LCDa_CLR_E;	
}

/*******************************************
函數(shù)名稱: LCD1602_sendstr
功    能: 向1602液晶寫入一個(gè)字符串
參    數(shù): ptString--字符串指針
返回值  : 無
********************************************/
void LCD1602_sendstr(uchar *ptString)
{
	while((*ptString)!='\0')		 //字符串未結(jié)束就一直寫
	{
		LCD1602_sendbyte(iDat, *ptString++);
	}
}

/*******************************************
函數(shù)名稱: LCD1602_clear
功    能: 1602液晶清屏
參    數(shù): 無
返回值  : 無
********************************************/
void LCD1602_clear(void)
{
	LCD1602_sendbyte(iCmd,LCDa_CLS);//寫入清屏指令
	Delayms(40);// 清屏指令寫入后,2ms 的延時(shí)是很必要的!!!
}

/*******************************************
函數(shù)名稱: LCD1602_readBF
功    能: 1602液晶清屏
參    數(shù): 無
返回值  : busy--為1時(shí)是忙狀態(tài),為0時(shí)可以接收指令
********************************************/
uchar LCD1602_readBF(void)
{	  
	uchar busy;
	busy=LCD1602_readbyte(iCmd);		//讀回BF標(biāo)志(忙標(biāo)志)和地址
	if(busy&0x80)						//如果忙返回正在忙的狀態(tài)
		busy=1;
	else	   							//如果不忙,可以寫入
		busy=0;
	return busy;
}

/*******************************************
函數(shù)名稱: LCD1602_gotoXY
功    能: 移動(dòng)到指定位置
參    數(shù): Row--指定的行
	  	  Col--指定的列
返回值  : 無
********************************************/
void LCD1602_gotoXY(uchar Row, uchar Col)
{	
	switch (Row)		  //選擇行
	{
	    case 1:
		    LCD1602_sendbyte(iCmd, LCDa_L1 + Col); break;	//寫入第1行的指定列	
		case 2:
			LCD1602_sendbyte(iCmd, LCDa_L2 + Col); break;	//寫入第2行的指定列	
		default:
		    break;
			
	}
}

/*******************************************
函數(shù)名稱: LCD1602_initial
功    能: 1602液晶初始化
參    數(shù): 無
返回值  : 無
********************************************/
void LCD1602_initial(void)
{
	Delayms(100);				//上電后等待內(nèi)部復(fù)位
	LCD1602_portini();			//端口初始化
	
	LCD1602_sendbyte(iCmd, LCDa_FUNCTION);	//功能、模式設(shè)定,具體的設(shè)定功能可以看C:\icc\include\AVR_PQ1A.H里面的常量定義
	while(LCD1602_readBF());				//等待不忙為止
	LCD1602_sendbyte(iCmd, LCDa_ON);		//打開顯示
	while(LCD1602_readBF());				//等待不忙為止
	LCD1602_clear();						//清屏
	while(LCD1602_readBF());				//等待不忙為止
	LCD1602_sendbyte(iCmd, LCDa_ENTRY);		//輸入模式設(shè)定		
}

/*******************************************
函數(shù)名稱: clear_gprmc
功    能: 清空gprmc顯示緩沖區(qū)
參    數(shù): 無
返回值  : 無
********************************************/
void clear_gprmc(void)
{
	uchar i;
	for(i=0; i<6; i++)
	{
		Time[i] = '0';
		Date[i] = '0';
	}
	for(i=0; i<9; i++)
	{
		Latitude[i] = '0';
	}
	for(i=0; i<10; i++)
	{
		Longitude[i] = '0';
	}
	for(i=0; i<4; i++)
	{
		Speed[i] = '0';
	}		
	Status = '0';     
	NSIndicator = '0';
	EWIndicator = '0';
}

/*******************************************
函數(shù)名稱: Parse_gprmc
功    能: 解析GPRMC字段
參    數(shù): 無
返回值  : 無
********************************************/
void Parse_gprmc(void)
{
	uchar i;
	uchar temp;
	clear_gprmc();
	Read_byte();
	temp = Read_byte();
	if(',' != temp)
	{
		Time[0] = temp;
		for(i=0; i<5; i++)
		{
			Time[i+1] = Read_byte();
		}
		Read_byte();
		Read_byte();
		Read_byte();
		Read_byte();
	}
	Status = Read_byte();
	Read_byte();
	temp = Read_byte();
	if(',' != temp)
	{
		Latitude[0] = temp;
		for(i=0; i<3; i++)
		{
			Latitude[i+1] = Read_byte();
		}
		Read_byte();
		for(i=0; i<5; i++)
		{
			Latitude[4+i] = Read_byte();
		}
		Read_byte();
	}
	temp = Read_byte();
	if(',' != temp)
	{
		NSIndicator = temp;
		Read_byte();
	}
	temp = Read_byte();
	if(',' != temp)
	{
		Longitude[0] = temp;
		for(i=0; i<4; i++)
		{
			Longitude[i+1] = Read_byte();
		}	
		Read_byte();
		for(i=0; i<5; i++)
		{
			Longitude[5+i] = Read_byte();
		}	
		Read_byte();
	}
	temp = Read_byte();
	if(',' != temp)
	{
		EWIndicator = temp;
		Read_byte();
	}
	temp = Read_byte();
	if(',' != temp)
	{
		Speed[0] = temp;
		Read_byte();
		for(i=0; i<3; i++)
		{
			Speed[1+i] = Read_byte();
		}
		Read_byte();
	}
	Read_byte();
	temp = Read_byte();
	if(',' != temp)
	{
		Date[0] = temp;
		for(i=0; i<5; i++)
		{
			Date[i+1] = Read_byte();
		}	
	}
}

/*******************************************
函數(shù)名稱: Display_gprmc
功    能: 顯示GPRMC字段信息
參    數(shù): 無
返回值  : 無
********************************************/
void Display_gprmc(void)
{
	uchar high,low,i;
	high = Time[0];
	low = Time[1];
	low = low+8;
	if(low > 57)
	{
		low = low - 10;
		high = high + 1; 
	}
	LCD1602_clear();
	while(LCD1602_readBF());
	LCD1602_gotoXY(1,0);
	LCD1602_sendbyte(iDat,high);
	LCD1602_sendbyte(iDat,low);
	LCD1602_sendbyte(iDat,':');
	LCD1602_sendbyte(iDat,Time[2]);
	LCD1602_sendbyte(iDat,Time[3]);
	LCD1602_sendbyte(iDat,':');
	LCD1602_sendbyte(iDat,Time[4]);
	LCD1602_sendbyte(iDat,Time[5]);
	LCD1602_sendbyte(iDat,' ');
	LCD1602_sendbyte(iDat,Status);
	while(LCD1602_readBF());
	LCD1602_gotoXY(2,0);
	LCD1602_sendbyte(iDat,Date[4]);
	LCD1602_sendbyte(iDat,Date[5]);
	LCD1602_sendbyte(iDat,'.');
	LCD1602_sendbyte(iDat,Date[2]);
	LCD1602_sendbyte(iDat,Date[3]);
	LCD1602_sendbyte(iDat,'.');
	LCD1602_sendbyte(iDat,Date[0]);
	LCD1602_sendbyte(iDat,Date[1]);
	Delayms(50000);
	LCD1602_clear();
	while(LCD1602_readBF());
	LCD1602_gotoXY(1,0);
	LCD1602_sendbyte(iDat,Latitude[0]);
	LCD1602_sendbyte(iDat,Latitude[1]);
	LCD1602_sendbyte(iDat,'.');
	for(i=0; i<7; i++)
	{
		LCD1602_sendbyte(iDat,Latitude[2+i]);
	}
	LCD1602_sendbyte(iDat,' ');
	LCD1602_sendbyte(iDat,NSIndicator);
	while(LCD1602_readBF());
	LCD1602_gotoXY(2,0);
	LCD1602_sendbyte(iDat,Longitude[0]);
	LCD1602_sendbyte(iDat,Longitude[1]);
	LCD1602_sendbyte(iDat,Longitude[2]);
	LCD1602_sendbyte(iDat,'.');	
	for(i=0; i<7; i++)
	{
		LCD1602_sendbyte(iDat,Longitude[3+i]);
	}	
	LCD1602_sendbyte(iDat,' ');
	LCD1602_sendbyte(iDat,EWIndicator);
	Delayms(50000);
}

/*******************************************
函數(shù)名稱: Read_gprmc
功    能: 讀取GPRMC字段
參    數(shù): 無
返回值  : 無
********************************************/
void Read_gprmc(void)
{
	uchar temp = 0;
	temp = Read_byte();
	if(temp == '$')
	{
		Read_byte();
		Read_byte();
		temp = Read_byte();
		if(temp == 'R')
		{
			temp = Read_byte();
			if(temp == 'M')
			{
				temp = Read_byte();
				if(temp == 'C')
				{
					Parse_gprmc();
					Display_gprmc();
				}
			}
		}
	}
}

/*******************************************
函數(shù)名稱: main
功    能: 
參    數(shù): 無
返回值  : 無
********************************************/
int main(void)
{
 Board_init( );	   			//初始化開發(fā)板
 Uart_init(9600);			//初始化串口,設(shè)置波特率
 LCD1602_initial();
  while(LCD1602_readBF());
  LCD1602_gotoXY(1,0);
  LCD1602_sendstr("AVR_PQ1A BOARD");	
 while(1)
 {
	Read_gprmc();
 }
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九九九久久久精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩亚洲不卡| 丁香天五香天堂综合| 日韩制服丝袜av| 中文字幕在线不卡一区| 精品国产免费视频| 欧美综合天天夜夜久久| 风流少妇一区二区| 极品少妇xxxx精品少妇偷拍| 亚洲在线中文字幕| 综合久久给合久久狠狠狠97色| 久久久电影一区二区三区| 欧美一区二区三区四区久久| 在线观看免费视频综合| 99视频精品在线| 欧美日韩视频在线第一区 | 成人动漫一区二区三区| 蜜桃精品在线观看| 日韩电影一二三区| 亚洲国产精品麻豆| 亚洲一线二线三线视频| 最近日韩中文字幕| 中文字幕中文字幕在线一区| 欧美激情一区在线观看| 久久综合成人精品亚洲另类欧美 | 日本aⅴ免费视频一区二区三区| 亚洲欧美国产77777| 国产精品国产三级国产aⅴ入口| 国产人伦精品一区二区| 久久婷婷成人综合色| 欧美大片日本大片免费观看| 欧美一区二区三区四区在线观看| 欧美日本韩国一区| 欧美日韩精品三区| 6080yy午夜一二三区久久| 欧美性猛片aaaaaaa做受| 色久综合一二码| 91成人免费在线视频| 91视频你懂的| 欧美最猛黑人xxxxx猛交| 91久久香蕉国产日韩欧美9色| 色综合网站在线| 欧美影院精品一区| 欧美日韩国产不卡| 91麻豆精品91久久久久久清纯| 91精品国产黑色紧身裤美女| 日韩欧美二区三区| 国产亚洲婷婷免费| 国产精品国产三级国产普通话99| 国产精品剧情在线亚洲| 日韩理论片网站| 香港成人在线视频| 久久精品久久99精品久久| 国产一区二区三区最好精华液| 国产精品白丝av| 91网站在线播放| 精品视频色一区| 亚洲精品一区二区精华| 中文字幕精品在线不卡| 亚洲免费成人av| 日本午夜一区二区| 国产成人一区二区精品非洲| 99re这里只有精品首页| 欧美日韩一区三区四区| 欧美本精品男人aⅴ天堂| 欧美高清在线视频| 亚洲成av人片www| 久久97超碰国产精品超碰| 成人在线视频首页| 欧美日韩视频一区二区| 久久亚洲综合av| 一区二区三区四区高清精品免费观看 | 欧美tickling挠脚心丨vk| 久久久国产午夜精品| 亚洲精品视频在线| 国产一区福利在线| 色婷婷精品大视频在线蜜桃视频| 日韩视频中午一区| 中文字幕一区二区三区精华液| 性久久久久久久| 国产乱码精品一区二区三| 在线观看视频91| 久久综合国产精品| 亚洲国产精品一区二区www在线| 国产一区二区在线观看免费| 91国内精品野花午夜精品| 欧美变态凌虐bdsm| 亚洲午夜国产一区99re久久| 国产精品一区久久久久| 欧美日韩高清一区二区三区| 中文字幕精品一区二区三区精品 | 成人性生交大片免费| 欧美一区二区三区四区久久| 国产精品不卡在线观看| 美腿丝袜亚洲色图| 91老师国产黑色丝袜在线| 欧美大白屁股肥臀xxxxxx| 亚洲另类一区二区| 国产超碰在线一区| 欧美一级免费观看| 亚洲综合免费观看高清在线观看| 国产suv精品一区二区三区 | 最近日韩中文字幕| 国产精一区二区三区| 91精品国产综合久久香蕉的特点| 综合在线观看色| 国产aⅴ精品一区二区三区色成熟| 欧美一区二区三区小说| 亚洲小说欧美激情另类| 99v久久综合狠狠综合久久| 国产亚洲美州欧州综合国| 免费在线观看成人| 欧美日韩黄色一区二区| 亚洲激情六月丁香| 91偷拍与自偷拍精品| 中文在线资源观看网站视频免费不卡| 蜜桃视频第一区免费观看| 欧美精品在线观看一区二区| 亚洲精品视频一区| 一本久久综合亚洲鲁鲁五月天| 欧美国产在线观看| 粉嫩高潮美女一区二区三区| 久久噜噜亚洲综合| 韩国成人精品a∨在线观看| 欧美一区二区久久| 蜜臂av日日欢夜夜爽一区| 欧美一区二区三区喷汁尤物| 亚洲国产视频一区| 欧美日韩一区二区三区免费看| 悠悠色在线精品| 在线免费观看日本欧美| 亚洲精品日产精品乱码不卡| 色域天天综合网| 亚洲自拍偷拍麻豆| 欧美日韩免费不卡视频一区二区三区| 一区二区理论电影在线观看| 91精品1区2区| 亚洲香肠在线观看| 欧美日韩国产片| 免费一级片91| 日韩欧美亚洲国产精品字幕久久久| 奇米精品一区二区三区在线观看| 日韩欧美高清dvd碟片| 狠狠色综合播放一区二区| 国产欧美精品国产国产专区 | 香蕉久久一区二区不卡无毒影院| 欧美日韩精品一区二区三区蜜桃 | 国产亚洲欧美日韩日本| 国产91精品精华液一区二区三区 | 国产日韩视频一区二区三区| 国产成人丝袜美腿| 亚洲欧美日韩国产成人精品影院| 在线免费观看视频一区| 免费观看在线色综合| 26uuu国产一区二区三区| 国产呦萝稀缺另类资源| 欧美最猛黑人xxxxx猛交| 成人av高清在线| 99久久久久久| 日韩一区欧美小说| 91麻豆.com| 一区二区三区四区在线播放| 欧美视频一区二| 日韩精品电影在线| 欧美日韩一区不卡| 国产一区二区久久| 欧美国产激情一区二区三区蜜月| 99在线精品视频| 日本免费在线视频不卡一不卡二| 日韩视频免费观看高清在线视频| 韩国精品免费视频| 国产精品久久久久久久浪潮网站| 欧美日韩国产影片| 美女脱光内衣内裤视频久久网站 | 久久久另类综合| 91在线porny国产在线看| 亚洲成av人片一区二区梦乃| 欧美v日韩v国产v| 懂色av中文一区二区三区| 午夜精品一区在线观看| 精品日韩一区二区三区| 成人av在线影院| 亚洲免费观看高清完整版在线观看| 日韩女优av电影| 波多野结衣中文一区| 亚洲成人在线网站| www激情久久| 色国产精品一区在线观看| 美女视频黄a大片欧美| 国产精品久久精品日日| 精品卡一卡二卡三卡四在线| av不卡免费电影| 免费在线观看一区二区三区| 亚洲狼人国产精品| 精品日韩av一区二区| 不卡av免费在线观看| 日韩电影在线观看一区| 综合久久给合久久狠狠狠97色 | 国产精品国产三级国产普通话三级|