پاسخ : نوشتن برنامه
کامل و دقیقش باید دیتا شیت ای سی رو نگاه کرد؟
کامل و دقیقش باید دیتا شیت ای سی رو نگاه کرد؟
;
;
;
;
;
;

#include<mega32.h>
#asm
.equ__lcd_port=0x1B
#endasm
#include<lcd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<delay.h>
#define xtal 8000000
int i=0;
flash unsigned char lcd_buffer[100];
unsigned char sample1,sample2,sample3;
unsigned char str_sam1[20],str_sam2[20],str_sam3[20],ch=',';
unsigned char str_RMC[];
unsigned char GPRMC[13][20];
int lat_deg=0,long_deg=0,UTC_hh=0,UTC_mm=0,UTC_ss=0;
void Init(void)
{
UCSRA=0x00;
UCSRB=0x10;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
}
void main(void)
{
lcd_init(32);
lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("in the name of god");
delay_ms(2000);
lcd_clear();
while(1)
{
Init();
scanf("%s",str_RMC);
while(strncmp(str_RMC,"$GPRMC",6)!=0);
scanf("%s",str_RMC);
sample1=str_RMC;
for(i=0;i<13;i++)
{
sample2=strchr(sample1,',');
sample1=sample2+1;
sample3=strchr(sample1,',');
strncpy(GPRMC[i],sample1,sample3-sample1);
}
//...................................................
//UTC Time................................
//...................................................
strncpy(str_sam1,GPRMC[0],2);
UTC_hh=atoi(str_sam1);
strncpy(str_sam1,GPRMC[0]+2,2);
UTC_mm=atoi(str_sam1);
strncpy(str_sam1,GPRMC[0]+4,2);
UTC_ss=atoi(str_sam1);
//Tehran time
if((UTC_mm+30)>59)
{
UTC_mm=UTC_mm-30;
UTC_hh=UTC_hh+3+1;
}
else
{
UTC_mm=UTC_mm+30;
UTC_hh=UTC_hh+3;
}
lcd_gotoxy(2,0);
sprintf(lcd_buffer,"%2d:%2d:%2d",UTC_hh,UTC_mm,UTC_ss);
lcd_putsf(lcd_buffer);
//...............
//latitude_degree....
//...................
strncpy(str_sam2,GPRMC[2],2);
lat_deg=atoi(str_sam2);
lcd_gotoxy(3,0);
sprintf(lcd_buffer,"lat_deg:%s%4d",GPRMC[3],lat_deg);
lcd_putsf(lcd_buffer);
//......................
//longitude.............
//......................
strncpy(str_sam3,GPRMC[4],3);
long_deg=atoi(str_sam3);
lcd_gotoxy(4,0);
sprintf(lcd_buffer,"long_deg:%s%5",GPRMC[5],long_deg);
lcd_putsf(lcd_buffer);
i=0;
}
}
دیدگاه