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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC89C52單片機做GPS測速 源程序

  [復制鏈接]
跳轉到指定樓層
樓主
單片機源程序如下:

單片機源程序如下:
  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)//延時函數
  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)//寫數據
  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]);//通過循環將要顯示的字符注意顯示出來
  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"這一幀數據    且是否為有效數據
  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轉換成km/h
  53.             Speed_dat1=(uint)(S*0.514);      //把海里/h轉換成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;       //關閉串行口中斷
  101. }
  102. void main()
  103. {                    
  104.       init();     //系統初始化
  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. 開頭的字符串,并寫入接收數組
  130. {
  131.        RI=0;  table0[i]=SBUF;        i++;
  132.        if(table0[0]==0x24)//如果是此字符;馬上接收數據
  133.        {
  134.                  if(i==62){ i=0;flag=1;ES=0; }                              
  135.        }
  136.        else          i=0;
  137. }
復制代碼

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

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

使用道具 舉報

沙發
ID:79544 發表于 2020-5-4 18:01 | 只看該作者
感謝樓主分享!學習啦。
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩乱码一二三 | 国产999精品久久久久久绿帽 | 国产亚洲欧美另类一区二区三区 | 精品婷婷 | 久久99国产精一区二区三区 | 久久精品在线播放 | 国产亚洲精品久久久久久牛牛 | 精品欧美乱码久久久久久 | 国产精品视频网址 | 免费美女网站 | 超碰在线久 | 成人亚洲一区 | 国产精品国产三级国产aⅴ中文 | 一区二区小视频 | 综合伊人| 欧美一区在线看 | 成人国产一区二区三区精品麻豆 | 成人亚洲视频 | 免费高清av| 欧美精品欧美精品系列 | 亚洲国产欧美91 | 欧美精品一区在线 | 午夜影院在线观看版 | 99久久久无码国产精品 | 农夫在线精品视频免费观看 | 国产色婷婷精品综合在线播放 | 国产激情一区二区三区 | 精品久久精品 | 亚洲国产精品美女 | 天天玩天天操天天干 | 亚洲国产中文字幕 | 国产成人精品一区二区三区视频 | 国产精品永久久久久久久www | 亚洲精品在线视频 | 国产视频欧美 | 视频一区中文字幕 | 欧美视频在线播放 | 欧美激情在线精品一区二区三区 | 伊人二区| 国产福利在线免费观看 | 欧美日韩国产不卡 |