久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1478|回復: 0
打印 上一主題 下一主題
收起左側

單片機+GPS顯示的緯度為什么不對?附程序

[復制鏈接]
跳轉到指定樓層
樓主
源程序   http://www.zg4o1577.cn/bbs/dpj-183505-1.html
圖中經緯度上面是計算后的  下面是沒計算的  
經度顯示結果正常  緯度錯誤  緯度除以60后得到的數不對   正常結果應該是 474643除以60等于791071   在電腦用軟件看  獲得的數除以60等于顯示的緯度正常     474519除以60等于790865

程序有什么問題嗎怎么修改   計算部分我沒改 只改成了同時顯示四行


  1. //包含頭文件
  2. #include <REG52.h>
  3. #include "uart.c"

  4. //宏定義
  5. #define LCM_Data  P0                  //將P0口定義為LCM_Data
  6. #define uchar unsigned char
  7. #define uint  unsigned int

  8. //1602的控制腳
  9. sbit lcd1602_rs=P2^5;
  10. sbit lcd1602_rw=P2^6;
  11. sbit lcd1602_en=P2^7;

  12. #define RsBuf_N                800

  13. unsigned char xdata RsBuf[RsBuf_N];        //定義串口接收數據緩沖區
  14. uchar code sousuo[]="GPS Searching...";
  15. uint RsPoint;
  16. bit dis_flag=0;
  17. unsigned long weidunum=0;
  18. unsigned long jingdunum=0;
  19. //==================================================================================================
  20. //=======================================LCD1602====================================================
  21. //==================================================================================================
  22. //----------------延時函數,后面經常調用----------------------
  23. void delay(uint xms)//延時函數,有參函數
  24. {
  25.         uint x,y;
  26.         for(x=xms;x>0;x--)
  27.          for(y=10;y>0;y--);
  28. }

  29. //--------------------------寫指令---------------------------
  30. void write_1602com(uchar com)//****液晶寫入指令函數****
  31. {
  32.         lcd1602_rs=0;//數據/指令選擇置為指令
  33.         lcd1602_rw=0; //讀寫選擇置為寫
  34.         P0=com;//送入數據
  35.         delay(1);
  36.         lcd1602_en=1;//拉高使能端,為制造有效的下降沿做準備
  37.         delay(1);
  38.         lcd1602_en=0;//en由高變低,產生下降沿,液晶執行命令
  39. }

  40. //-------------------------寫數據-----------------------------
  41. void write_1602dat(uchar dat)//***液晶寫入數據函數****
  42. {
  43.         lcd1602_rs=1;//數據/指令選擇置為數據
  44.         lcd1602_rw=0; //讀寫選擇置為寫
  45.         P0=dat;//送入數據
  46.         delay(1);
  47.         lcd1602_en=1; //en置高電平,為制造下降沿做準備
  48.         delay(1);
  49.         lcd1602_en=0; //en由高變低,產生下降沿,液晶執行命令
  50. }

  51. //-------------------------初始化-------------------------
  52. void lcd_init(void)
  53. {
  54.         uchar i;
  55.         write_1602com(0x38);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據
  56.         write_1602com(0x0c);//開顯示不顯示光標
  57.         write_1602com(0x06);//整屏不移動,光標自動右移
  58.         write_1602com(0x01);//清顯示
  59.         delay(1000);
  60.         write_1602com(0x80);
  61.         for(i=0;i<16;i++)
  62.         write_1602dat(sousuo[i]);
  63. }

  64. //  通訊中斷接收程序   中斷函數無返回值
  65.   void uart_rx(void)  interrupt 4        using 3         
  66. {
  67.          EA=0;
  68.            if((RsPoint<RsBuf_N)&&RI) //必須判斷RI是否為1

  69.     {
  70.             RI=0;
  71.                 if(SBUF=='


  72. )
  73.                 RsPoint=0;
  74.             RsBuf[RsPoint++]=SBUF;
  75.     }
  76.         EA=1;
  77. }
  78. //==============================主函數===============================
  79. void main(void)
  80. {
  81.          uint i;

  82.          lcd_init();
  83.         Uart_init();
  84.         for(i=0;i<RsBuf_N;i++)
  85.         RsBuf[i]='0';
  86.         while(1)
  87.         {
  88.                    if(RsBuf[0]=='


  89. &&RsBuf[1]=='G'&&RsBuf[2]=='P'&&RsBuf[3]=='G'&&RsBuf[4]=='G'&&RsBuf[5]=='A'&&RsBuf[44]!='0')
  90.                    {
  91.                         if(RI==0&&((RsBuf[30]-48)*100+(RsBuf[31]-48)*10+(RsBuf[32]-48))>=0&&((RsBuf[30]-48)*100+(RsBuf[31]-48)*10+(RsBuf[32]-48))<=180)
  92.                         {
  93.                                 
  94.                                         weidunum=        ((RsBuf[17]-48)*10000000+(RsBuf[18]-48)*1000000)
  95.                                                                 +(((((RsBuf[19]-48)*10)+(RsBuf[20]-48))*100000)/6)
  96.                                                                 +(((((RsBuf[22]-48)*1000)+((RsBuf[23]-48)*100)+((RsBuf[24]-48)*10)+(RsBuf[25]-48))*10)/6);         
  97.                                         write_1602com(0x80);
  98.                                         write_1602dat('W');
  99.                                         write_1602dat('D');
  100.                                         write_1602dat(':');
  101.                                         write_1602dat(' ');
  102.                                         write_1602dat(weidunum/10000000+0x30);
  103.                                         write_1602dat(weidunum%10000000/1000000+0x30);
  104.                                         write_1602dat('.');
  105.                                         write_1602dat(weidunum%1000000/100000+0x30);
  106.                                         write_1602dat(weidunum%100000/10000+0x30);
  107.                                         write_1602dat(weidunum%10000/1000+0x30);
  108.                                         write_1602dat(weidunum%1000/100+0x30);
  109.                                         write_1602dat(weidunum%100/10+0x30);
  110.                                         write_1602dat(weidunum%10+0x30);        
  111.                                         write_1602dat(RsBuf[28]);
  112.                                         write_1602dat(' ');
  113.                                         write_1602dat(' ');

  114.                                         write_1602com(0xC0);
  115.                                         write_1602dat('W');
  116.                                         write_1602dat('D');
  117.                                         write_1602dat(':');
  118.                                         write_1602dat(' ');
  119.                                         write_1602dat(RsBuf[17]);
  120.                                         write_1602dat(RsBuf[18]);
  121.                                         write_1602dat(RsBuf[21]);
  122.                                         write_1602dat(RsBuf[19]);
  123.                                         write_1602dat(RsBuf[20]);        
  124.                                         write_1602dat(RsBuf[22]);
  125.                                         write_1602dat(RsBuf[23]);
  126.                                         write_1602dat(RsBuf[24]);
  127.                                         write_1602dat(RsBuf[25]);
  128.                                         write_1602dat(RsBuf[26]);
  129.                                         write_1602dat(RsBuf[28]);
  130.                                         write_1602dat(' ');
  131.                                         write_1602dat(' ');


  132.                
  133.                
  134.                                         jingdunum=        (((RsBuf[30]-48)*100000000)+((RsBuf[31]-48)*10000000)+((RsBuf[32]-48)*1000000))
  135.                                                                 +(((((RsBuf[33]-48)*10)+(RsBuf[34]-48))*100000)/6)
  136.                                                                 +(((((RsBuf[36]-48)*1000)+((RsBuf[37]-48)*100)+((RsBuf[38]-48)*10)+(RsBuf[39]-48))*10)/6);           
  137.                                         write_1602com(0x94);
  138.                                         write_1602dat('J');
  139.                                         write_1602dat('D');
  140.                                         write_1602dat(':');
  141.                                         write_1602dat(jingdunum/100000000+0x30);
  142.                                         write_1602dat(jingdunum%100000000/10000000+0x30);
  143.                                         write_1602dat(jingdunum%10000000/1000000+0x30);
  144.                                         write_1602dat('.');
  145.                                         write_1602dat(jingdunum%1000000/100000+0x30);
  146.                                         write_1602dat(jingdunum%100000/10000+0x30);
  147.                                         write_1602dat(jingdunum%10000/1000+0x30);
  148.                                         write_1602dat(jingdunum%1000/100+0x30);
  149.                                         write_1602dat(jingdunum%100/10+0x30);
  150.                                         write_1602dat(jingdunum%10+0x30);               
  151.                                         write_1602dat(RsBuf[42]);
  152.                                         write_1602dat(' ');
  153.                                         write_1602dat(' ');


  154.                                         write_1602com(0xD4);
  155.                                         write_1602dat('J');
  156.                                         write_1602dat('D');
  157.                                         write_1602dat(':');
  158.                                         write_1602dat(RsBuf[30]);
  159.                                         write_1602dat(RsBuf[31]);
  160.                                         write_1602dat(RsBuf[32]);
  161.                                         write_1602dat(RsBuf[35]);
  162.                                         write_1602dat(RsBuf[33]);
  163.                                         write_1602dat(RsBuf[34]);
  164.                                         write_1602dat(RsBuf[36]);
  165.                                         write_1602dat(RsBuf[37]);
  166.                                         write_1602dat(RsBuf[38]);
  167.                                         write_1602dat(RsBuf[39]);
  168.                                         write_1602dat(RsBuf[40]);
  169.                                         write_1602dat(RsBuf[42]);
  170.                         }
  171.                 }
  172.         }
  173. }
  174. void T0_time() interrupt 1
  175. {
  176.         uchar mm;
  177.         TH0=0x4b;
  178.         TL0=0xff;
  179.         mm++;
  180.         if(mm>=60)
  181.         {
  182.                 mm=0;
  183.                 dis_flag=!dis_flag;
  184.         }
  185. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本成人福利视频 | 国产成人综合久久 | 免费黄色片在线观看 | 欧美久久久久久 | 日韩在线观看中文字幕 | 午夜黄色影院 | 国产精品久久久久久久午夜片 | 国产在线一级片 | 午夜精品网站 | 国产女人与拘做受免费视频 | 日本不卡免费新一二三区 | 在线免费中文字幕 | 久久精品小视频 | 人人玩人人添人人澡欧美 | 成人无遮挡毛片免费看 | 日韩中文字幕网 | 午夜成人免费视频 | 九九色九九 | 三级成人在线 | 色偷偷噜噜噜亚洲男人 | 成人精品一区 | 91欧美| 亚洲免费三区 | 中文字幕在线观看一区 | 日韩中文字幕 | 成人精品免费 | 国产精品不卡一区 | 国产成人精品一区二区三区 | 亚洲国产成人av好男人在线观看 | 婷婷毛片 | 亚洲综合视频 | 亚州av在线 | 日本a v在线播放 | 日韩在线免费看 | 国产一区二区 | 一区二区精品视频 | 欧美日韩高清 | 欧美视频精品 | 中文精品视频 | 亚洲精品字幕 | 另类专区成人 |