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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4568|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

STC89C52單片機(jī)做GPS測速 源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:487236 發(fā)表于 2019-8-7 20:58 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機(jī)源程序如下:

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit EN=P2^7; //LCD使能
  5. sbit RS=P2^6;
  6. sbit KEY=P3^5; //清0鍵
  7. uchar table[]="0123456789:-";
  8. uchar table1[]={"Wait..."};     //
  9. uchar a,b,c,d,i=0,flag;
  10. uchar table0[62];
  11. float S;
  12. uint Speed_dat,Speed_dat1;
  13. uint Total_distance;
  14. uchar num1=0;
  15. uchar time_flag=0;
  16. void delay(uint z)//延時函數(shù)
  17. {
  18.    uint x,y;
  19.    for(x=z;x>0;x--)
  20.       for(y=110;y>0;y--);
  21. }
  22. /*******************1602液晶***********************/

  23. void write_date(uchar date)//寫數(shù)據(jù)
  24. { EN=0;    RS=1;  P0=date;        EN=0;  delay(5); EN=1;}
  25. void write_com(uchar date)//寫命令
  26. {    EN=0;RS=0;P0=date;    EN=0;delay(5); EN=1; }
  27. void init_1602()  //LCD初始化
  28. {
  29.     uchar num;
  30.     write_com(0x38); write_com(0x0c);write_com(0x06);
  31.     write_com(0x01); write_com(0x80);
  32.     for(num=0;num<7;num++)      //顯示“Wait...”   
  33.     {
  34.         write_date(table1[num]);//通過循環(huán)將要顯示的字符注意顯示出來
  35.     }
  36.     delay(1000);   //等待大約3s
  37. }

  38. void display()
  39. {
  40.     if(flag==1)
  41.     {  
  42.        flag=0;  
  43.        if(table0[4]=='M'&&(table0[18]=='A'))//確定是否收到"GPRMC"這一幀數(shù)據(jù)    且是否為有效數(shù)據(jù)
  44.        {   
  45.                if(table0[43]=='E')      //
  46.             {
  47.                 if(table0[46]=='.')  //<10海里每小時
  48.                     S=(table0[45]-48)*100+(table0[47]-48)*10+(table0[48]-48);
  49.                 else if(table0[47]=='.')
  50.                     S=(table0[45]-48)*1000+(table0[46]-48)*100+(table0[48]-48)*10+(table0[49]-48);
  51.             }
  52.             Speed_dat=(uint)(S*1.85);     //把海里/h轉(zhuǎn)換成km/h
  53.             Speed_dat1=(uint)(S*0.514);      //把海里/h轉(zhuǎn)換成m/s 計算總里程中用到
  54.             if(time_flag==1)
  55.             {
  56.                 time_flag=0;
  57.                 Total_distance+=(Speed_dat1/100);    //每秒刷新一次里程單位m
  58.                 TR0=1;
  59.             }     

  60.             write_com(0x80);        //顯示速度
  61.             write_date('S');
  62.             write_date('P');
  63.             write_date('E');
  64.             write_date('E');
  65.             write_date('D');
  66.             write_date(':');
  67.             if(Speed_dat/100<10){write_date(' ');write_date(table[Speed_dat/100]);}                     
  68.             else{write_date(table[Speed_dat/1000]);write_date(table[Speed_dat%1000/100]);}      
  69.             write_date('.');
  70.             write_date(table[Speed_dat%100/10]);
  71.             write_date('K');   write_date('m'); write_date('/');  write_date('h');

  72.             write_com(0x80+0x40);        //顯示里程
  73.             write_date('J');write_date('O');write_date('U');write_date('R');
  74.             write_date('N');write_date('E');write_date('Y');
  75.             write_date(':');
  76.             write_date(table[Total_distance/10000]);
  77.             write_date(table[Total_distance%10000/1000]);
  78.             write_date('.');
  79.             write_date(table[Total_distance%10000%1000/100]);
  80.             write_date(table[Total_distance%10000%1000%100/10]);
  81.             write_date('K');    write_date('m');
  82.        }
  83.        ES=1; //開串口中斷                                                   
  84.    }
  85. }

  86. void init()//初始化
  87. {
  88.        i=0;
  89.        TMOD=0x21;  PCON=0x00;
  90.        TH1=0xfD;   TL1=0xfD;  //波特率9600
  91.        TH0=(65536-50000)/256; //給定時器高四位賦初值
  92.         TL0=(65536-50000)%256; //給定時器第四位賦初值
  93.        ET0=1;        //打開定時器T1中段
  94.         TR0=1;        //啟動定時器T0
  95.        SM0=0;       //串行口方式1
  96.        SM1=1;
  97.        REN=1;       ////允許接收
  98.        EA=1;       //開中斷
  99.        TR1=1;      //啟動T1
  100.        ES=0;       //關(guān)閉串行口中斷
  101. }
  102. void main()
  103. {                    
  104.       init();     //系統(tǒng)初始化
  105.       init_1602();//LCD1602初始化
  106.       ES=1;          //開串行口中斷
  107.       while(1)
  108.       {
  109.           display(); //顯示速度
  110.           if(!KEY)     //清0鍵按下
  111.           {        delay(10);
  112.                 if(!KEY){Total_distance=0;while(!KEY);     }
  113.             }
  114.       }
  115. }

  116. void time0() interrupt  1          //定時器中斷0
  117. {
  118.     TH0=(65536-50000)/256; //給定時器高四位賦初值
  119.      TL0=(65536-50000)%256; //給定時器第四位賦初值
  120.     num1++;
  121.     if(num1==20)   //1秒到
  122.     {
  123.         TR0=0;
  124.         num1=0;
  125.         time_flag=1;
  126.     }   
  127. }

  128. void ser() interrupt 4//串口中斷、初次分離'

  129. 開頭的字符串,并寫入接收數(shù)組
  130. {
  131.        RI=0;  table0[i]=SBUF;        i++;
  132.        if(table0[0]==0x24)//如果是此字符;馬上接收數(shù)據(jù)
  133.        {
  134.                  if(i==62){ i=0;flag=1;ES=0; }                              
  135.        }
  136.        else          i=0;
  137. }
復(fù)制代碼

所有資料51hei提供下載:
源程序和pdf格式的原理圖.7z (79.33 KB, 下載次數(shù): 10)

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

使用道具 舉報

沙發(fā)
ID:79544 發(fā)表于 2020-5-4 18:01 | 只看該作者
感謝樓主分享!學(xué)習(xí)啦。
回復(fù)

使用道具 舉報

板凳
ID:343297 發(fā)表于 2022-1-11 21:55 | 只看該作者
樓主,GPS模塊哪家的都行嗎?
回復(fù)

使用道具 舉報

地板
ID:310441 發(fā)表于 2022-2-7 17:45 來自手機(jī) | 只看該作者
解碼部分還是得考慮一下容錯和兼容吧
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美一区二区三区 | 亚洲精品久久久蜜桃网站 | 日韩电影一区二区三区 | 欧美黑人体内she精在线观看 | 久久久久久国产一区二区三区 | 久久精品国产亚洲 | 99久久99久久精品国产片果冰 | 欧美成视频 | 91av在线免费 | 一级做a爰片久久毛片免费看 | 日韩精品一区二区三区在线播放 | 日韩免费1区二区电影 | 亚洲激情av | 亚洲国产黄 | 久久精品69 | 欧美激情精品久久久久久变态 | 在线免费观看黄色av | 亚洲免费在线观看 | 国产亚洲一区二区三区在线观看 | 91在线免费观看网站 | 亚洲性视频网站 | 一区二区三区国产 | 欧美bondage紧缚视频 | 久久久久1| 91福利网址 | 久热免费在线 | 91色视频在线观看 | 99在线精品视频 | 日韩中文字幕免费在线观看 | 中文字幕av第一页 | 精品久久久久久久久久久久 | 久久一区二区三区免费 | 天天噜天天干 | 国产三级电影网站 | 亚洲欧美一区二区三区在线 | 国产精品久久久久久婷婷天堂 | 91精品国产综合久久久久久 | 日日射影院 | 欧美日韩精品国产 | 干干干操操操 | 日本亚洲精品成人欧美一区 |