پاسخ : نوشتن برنامه
کامل و دقیقش باید دیتا شیت ای سی رو نگاه کرد؟
کامل و دقیقش باید دیتا شیت ای سی رو نگاه کرد؟
#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; } }
دیدگاه