欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4828|回復(fù): 1
收起左側(cè)

GPS定位程序 用51單片機(jī)+1602實(shí)現(xiàn)

[復(fù)制鏈接]
ID:719206 發(fā)表于 2020-3-31 15:54 | 顯示全部樓層 |閱讀模式
          大二的時(shí)候?qū)W單片機(jī)沒事做搞得,現(xiàn)在快工作了,做個(gè) 紀(jì)念。。
     用到的器件:
           1、89c52
           2、gps
           3、1602顯示器

51hei.png

單片機(jī)源程序如下:
  1. //包含頭文件
  2. #include <REG52.h>
  3. #include "uart.c"

  4. //宏定義
  5. #define LCM_Data  P0                  //將P0口定義為L(zhǎng)CM_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];        //定義串口接收數(shù)據(jù)緩沖區(qū)
  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. //----------------延時(shí)函數(shù),后面經(jīng)常調(diào)用----------------------
  23. void delay(uint xms)//延時(shí)函數(shù),有參函數(shù)
  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)//****液晶寫入指令函數(shù)****
  31. {
  32.         lcd1602_rs=0;//數(shù)據(jù)/指令選擇置為指令
  33.         lcd1602_rw=0; //讀寫選擇置為寫
  34.         P0=com;//送入數(shù)據(jù)
  35.         delay(1);
  36.         lcd1602_en=1;//拉高使能端,為制造有效的下降沿做準(zhǔn)備
  37.         delay(1);
  38.         lcd1602_en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令
  39. }

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

  51. //-------------------------初始化-------------------------
  52. void lcd_init(void)
  53. {
  54.         uchar i;
  55.         write_1602com(0x38);//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)
  56.         write_1602com(0x0c);//開顯示不顯示光標(biāo)
  57.         write_1602com(0x06);//整屏不移動(dòng),光標(biāo)自動(dòng)右移
  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. //  通訊中斷接收程序   中斷函數(shù)無返回值
  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. //==============================主函數(shù)===============================
  79. void main(void)
  80. {
  81.          uint i;
  82.         uchar shi;
  83.          lcd_init();
  84.         Uart_init();
  85.         for(i=0;i<RsBuf_N;i++)
  86.         RsBuf[i]='0';
  87.         while(1)
  88.         {
  89.                    if(RsBuf[0]=='

  90. &&RsBuf[1]=='G'&&RsBuf[2]=='P'&&RsBuf[3]=='G'&&RsBuf[4]=='G'&&RsBuf[5]=='A'&&RsBuf[44]!='0')
  91.                    {
  92.                         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)
  93.                         {
  94.                                 TR0=1;
  95.                                 if(dis_flag==0)
  96.                                 {        
  97.                                         write_1602com(0x80);
  98.                                         write_1602dat('T');
  99.                                         write_1602dat('i');
  100.                                         write_1602dat('m');
  101.                                         write_1602dat('e');
  102.                                         write_1602dat(':');
  103.                                         shi=((RsBuf[7]-0x30)*10+(RsBuf[8]-0x30)+8)%24;
  104.                                         write_1602dat(shi/10+0x30);
  105.                                         write_1602dat(shi%10+0x30);
  106.                                         write_1602dat('-');
  107.                                         write_1602dat(RsBuf[9]);
  108.                                         write_1602dat(RsBuf[10]);
  109.                                         write_1602dat('-');
  110.                                         write_1602dat(RsBuf[11]);
  111.                                         write_1602dat(RsBuf[12]);
  112.                                         write_1602dat(' ');
  113.                                         write_1602dat(' ');
  114.                                         write_1602dat(' ');
  115.                
  116.                                         write_1602com(0xc0);
  117.                                         write_1602dat('W');
  118.                                         write_1602dat('X');
  119.                                         write_1602dat(':');
  120.                                         write_1602dat(RsBuf[46]);
  121.                                         write_1602dat(RsBuf[47]);  
  122.                                         write_1602dat(' ');
  123.                                         write_1602dat(' ');

  124.                                         write_1602com(0xc7);
  125.                                         write_1602dat('J');
  126.                                         write_1602dat('D');
  127.                                         write_1602dat(':');
  128.                                         write_1602dat(RsBuf[49]);
  129.                                         write_1602dat(RsBuf[50]);
  130.                                         write_1602dat(RsBuf[51]);
  131.                                         write_1602dat(RsBuf[52]);
  132.                                         write_1602dat(' ');
  133.                                         write_1602dat(' ');
  134.                                 }
  135.                                 else
  136.                                 {
  137.                                         weidunum=        ((RsBuf[17]-48)*10000000+(RsBuf[18]-48)*1000000)
  138.                                                                 +(((((RsBuf[19]-48)*10)+(RsBuf[20]-48))*100000)/6)
  139.                                                                 +(((((RsBuf[22]-48)*1000)+((RsBuf[23]-48)*100)+((RsBuf[24]-48)*10)+(RsBuf[25]-48))*10)/6);         
  140.                                         write_1602com(0x80);
  141.                                         write_1602dat('W');
  142.                                         write_1602dat('D');
  143.                                         write_1602dat(':');
  144.                                         write_1602dat(' ');
  145.                                         write_1602dat(weidunum/10000000+0x30);
  146.                                         write_1602dat(weidunum%10000000/1000000+0x30);
  147.                                         write_1602dat('.');
  148.                                         write_1602dat(weidunum%1000000/100000+0x30);
  149.                                         write_1602dat(weidunum%100000/10000+0x30);
  150.                                         write_1602dat(weidunum%10000/1000+0x30);
  151.                                         write_1602dat(weidunum%1000/100+0x30);
  152.                                         write_1602dat(weidunum%100/10+0x30);
  153.                                         write_1602dat(weidunum%10+0x30);        
  154.                                         write_1602dat(RsBuf[28]);
  155.                                         write_1602dat(' ');
  156.                                         write_1602dat(' ');
  157.                
  158.                
  159.                                         jingdunum=        (((RsBuf[30]-48)*100000000)+((RsBuf[31]-48)*10000000)+((RsBuf[32]-48)*1000000))
  160.                                                                 +(((((RsBuf[33]-48)*10)+(RsBuf[34]-48))*100000)/6)
  161.                                                                 +(((((RsBuf[36]-48)*1000)+((RsBuf[37]-48)*100)+((RsBuf[38]-48)*10)+(RsBuf[39]-48))*10)/6);           
  162.                                         write_1602com(0xc0);
  163.                                         write_1602dat('J');
  164.                                         write_1602dat('D');
  165.                                         write_1602dat(':');
  166.                                         write_1602dat(jingdunum/100000000+0x30);
  167.                                         write_1602dat(jingdunum%100000000/10000000+0x30);
  168.                                         write_1602dat(jingdunum%10000000/1000000+0x30);
  169.                                         write_1602dat('.');
  170.                                         write_1602dat(jingdunum%1000000/100000+0x30);
  171.                                         write_1602dat(jingdunum%100000/10000+0x30);
  172.                                         write_1602dat(jingdunum%10000/1000+0x30);
  173. ……………………

  174. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
882-GPS定位1602顯示.rar (1.66 MB, 下載次數(shù): 109)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:261025 發(fā)表于 2021-8-26 17:00 | 顯示全部樓層
為什么緯度和手機(jī)導(dǎo)航軟件手機(jī)衛(wèi)星地圖軟件不一樣   
手機(jī)導(dǎo)航上小數(shù)是078531  這個(gè)程序顯示068181
根據(jù)坐標(biāo)在衛(wèi)星地圖上看誤差1000多米
回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表