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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于reb3571 + STC12C5A60S2 + LCD12864 + 18650的便攜GPS定位系統

  [復制鏈接]
跳轉到指定樓層
樓主
ID:70481 發表于 2014-12-17 16:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
前段時間受朋友影響,決定買個GPS模塊學習一下這東西怎么用,寫這帖子是為了和大家共同學習這模塊,為了控制這模塊搭建了一套簡單的測試電路,希望能給也想了解這模塊的朋友來個參考,廢話不多說,有圖有真相;在使用12864的時候發現點問題,請教高人,12864檢測忙的時候就是不好使,總忙為啥呢?無奈換套路用延時,我每次給12864送指令都需要延時;還有個問題就是我在12864顯示的時候 最早用STC89C58正常,但是換STC12C5A60S2的時候,屏幕會閃的很厲害(相應延時已由12T的調整為1T的),調整延時后還是閃,最后在main里添加延時后好多了,但是程序一變化相應的延時也得變,有啥辦法能讓屏幕不閃呢,是因為1T的單片機太快了,12864跟不上節奏嗎? 請高人指點 謝謝
應大家要求 做下說明:
本系統初衷是本人為了 了解GPS模塊而做的測試,GPS模塊用的是上文提到的REB3571,其實我覺得市面上賣的GPS模塊基本都遵循NMEA0183協議,所以在整體設計的時候只要為單片機留出串口就行了,一般的GPS模塊都會引出TTL電平的TXD和RXD引腳,我用的GPS模塊采用5V供電,跟51供電相同所以不用電壓轉換;單片機其實最早我用的是AT89S52,但是因為程序編譯后大概20K左右,所以放棄了52選用STC的89C58,買芯片的時候發現STC89C58和STC12C5A60S2一個價,所以就一樣買了一片(在電子市場買的,賣家比較黑一片要我12塊錢),源程序在58上進行的測試,后來移植到1T的STC12C5A60S2上,因為STC12C5A60S2有倆串口,以后可以擴展,所以果斷棄掉58轉投STC12C5A60S2;液晶方面用的是12864(控制器芯片 ST7920 ),我也是剛知道LCD還有控制器芯片;最初的測試是用的USB供電,但是做完之后只能在電腦旁測試也沒速度;就想了個招用4節5號電池的電池盒(一般的1元錢4節的電池,4節加一起都能達到6.8V,為了供電穩定可以考慮串1n4007,或是上7805穩壓,我覺得1117的5V芯片挺好使,其間也試過LM317),最后還是采用了18650(這就是筆記本的電芯,一般都2000mh以上),加個一個升壓模塊(模塊上有可調的電位器,自己調整電壓感覺需要比5V高點,因為測試的時候沒接負載呢,也不知道這么想對不?哈哈希望高人指點謝謝);我整理一下 回頭上傳電路圖。

各位論壇的好朋友實在抱歉,由于一些原因好長、好長時間都沒碰單片機了,差點就放棄這個專業了,
附上解碼的程序 大家共同學習研究,有需要電路圖的朋友請留言,我得好好找找都不知道放哪里了。

int GPS_RMC_Parse(char *line,GPS_INFO *GPS)
{
        uchar ch, status, tmp;
        float lati_cent_tmp, lati_second_tmp;
        float long_cent_tmp, long_second_tmp;
        float speed_tmp;
        char *buf = line;
        ch = buf[5];
        status = buf[GetComma(2, buf)];

        if (ch == 'C')  //如果第五個字符是C,($GPRMC)      
        {
                if (status == 'A')  //如果數據有效,則分析      
                {
                        GPS -> NS       = buf[GetComma(4, buf)];
                        GPS -> EW       = buf[GetComma(6, buf)];

                        GPS->latitude   = Get_Double_Number(&buf[GetComma(3, buf)]);
                        GPS->longitude  = Get_Double_Number(&buf[GetComma( 5, buf)]);

                       GPS->latitude_Degree  = (int)GPS->latitude / 100;       //分離緯度     
                        lati_cent_tmp         = (GPS->latitude - GPS->latitude_Degree * 100);
                        GPS->latitude_Cent    = (int)lati_cent_tmp;
                        lati_second_tmp       = (lati_cent_tmp - GPS->latitude_Cent) * 60;
                        GPS->latitude_Second  = (int)lati_second_tmp;

                        GPS->longitude_Degree = (int)GPS->longitude / 100;        //分離經度   
                        long_cent_tmp         = (GPS->longitude - GPS->longitude_Degree * 100);
                        GPS->longitude_Cent   = (int)long_cent_tmp;   
                        long_second_tmp       = (long_cent_tmp - GPS->longitude_Cent) * 60;
                        GPS->longitude_Second = (int)long_second_tmp;

                        speed_tmp      = Get_Float_Number(&buf[GetComma(7, buf)]);    //速度(單位:海里/時)   
                        GPS->speed     = speed_tmp * 1.85;                           //1海里=1.85公里   
                        GPS->direction = Get_Float_Number(&buf[GetComma(8, buf)]); //角度                           

                        GPS->D.hour    = (buf[7] - '0') * 10 + (buf[8] - '0');                //時間   
                        GPS->D.minute  = (buf[9] - '0') * 10 + (buf[10] - '0');
                        GPS->D.second  = (buf[11] - '0') * 10 + (buf[12] - '0');
                        tmp = GetComma(9, buf);
                        GPS->D.day     = (buf[tmp + 0] - '0') * 10 + (buf[tmp + 1] - '0'); //日期   
                        GPS->D.month   = (buf[tmp + 2] - '0') * 10 + (buf[tmp + 3] - '0');
                        GPS->D.year    = (buf[tmp + 4] - '0') * 10 + (buf[tmp + 5] - '0')+2000;

                        UTC2BTC(&GPS->D);

                        return 1;
                }               
        }

        return 0;
}


int GPS_GGA_Parse(char *line,GPS_INFO *GPS)
{
        uchar ch, status;
        char *buf = line;
        ch = buf[4];
        status = buf[GetComma(2, buf)];

        if (ch == 'G')  //$GPGGA
        {
                if (status != ',')
                {
                        GPS->height_sea = Get_Float_Number(&buf[GetComma(9, buf)]);
//                        GPS->height_ground = Get_Float_Number(&buf[GetComma(11, buf)]);
                        GPS->height_ground = Get_Float_Number(&buf[GetComma(10, buf)]);  //要的是大地水平高度,應該解析第10個逗號之后的數據

                        return 1;
                }
        }

        return 0;
}







液晶部分 焊個電位器 調對比度



電源部分 為了到戶外測試方便 加個18650和升壓模塊



初始化狀態



測試的結果






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

使用道具 舉報

沙發
ID:70653 發表于 2014-12-17 21:41 | 只看該作者
最近也在搞這個,學習一下
回復

使用道具 舉報

板凳
ID:70653 發表于 2014-12-17 21:45 | 只看該作者
樓主,原理圖和程序請共享一下,謝謝。5279751@qq.com
回復

使用道具 舉報

地板
ID:70104 發表于 2014-12-19 15:57 | 只看該作者
你搞什么飛機~~原理和程序呢
回復

使用道具 舉報

5#
ID:71046 發表于 2014-12-24 22:13 | 只看該作者
樓主,原理圖和程序請共享一下,謝謝598804594@qq.com
回復

使用道具 舉報

6#
ID:74471 發表于 2015-4-8 07:43 | 只看該作者
樓主,程序和原理圖能分享嗎?謝謝  1419214137@qq.com
回復

使用道具 舉報

7#
ID:87835 發表于 2015-8-7 14:23 | 只看該作者

樓主,原理圖和程序請共享一下,謝謝754433618@qq.com
回復

使用道具 舉報

8#
ID:72559 發表于 2016-5-12 16:50 | 只看該作者
樓主我來晚了,不知道還能不能將原理圖和程序請共享一下,605102025@qq.com
還有就是我也做得GPS定位,之前用的STC89C52現在也是改用了STC12C5A60S2,液晶顯示出現了亂碼的情況,我也不清楚怎么辦才好,延時也改了,不知道還需要改哪些,希望樓主可以指導一下
回復

使用道具 舉報

9#
ID:122417 發表于 2016-5-21 18:49 | 只看該作者
最近想學一下GPS,跪求樓主的程序和原理圖。謝謝樓主 1318537276@qq.com
回復

使用道具 舉報

10#
ID:99590 發表于 2016-11-9 21:12 | 只看該作者
最近正在弄GPS,跪求樓主的程序和原理圖。謝謝樓主 420301282@qq.com
回復

使用道具 舉報

11#
ID:169296 發表于 2017-4-9 12:13 | 只看該作者
樓主,可以分享一下程序和原理圖嗎?非常感謝! 1587254004@qq.com
回復

使用道具 舉報

12#
ID:213928 發表于 2017-7-2 17:55 | 只看該作者
可以分享一下程序和原理圖嗎?非常感謝! 1065304416@qq.com
回復

使用道具 舉報

13#
ID:430659 發表于 2018-12-16 17:23 | 只看該作者
可以分享一下程序和原理圖嗎?萬分感謝! 308378000@qq.com
回復

使用道具 舉報

14#
ID:523982 發表于 2019-4-29 20:02 | 只看該作者
可以分享一下程序和原理圖嗎?萬分感謝!
回復

使用道具 舉報

15#
ID:914953 發表于 2021-5-2 18:35 | 只看該作者
可以分享一下程序和原理圖嗎?萬分感謝!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 特级做a爰片毛片免费看108 | 精品国产一区二区三区性色av | 欧美一级黄色免费看 | 四虎影视一区二区 | 久久视频免费观看 | 亚洲成人精品免费 | 国产欧美一区二区三区在线看 | 日韩在线中文字幕 | 欧美在线a | 黄色免费网站在线看 | 中文在线视频 | 男人天堂网站 | 九九九视频 | 久久久国产一区二区三区 | 美女一级a毛片免费观看97 | 欧美激情va永久在线播放 | 成年精品 | 99国产欧美| 久久蜜桃av一区二区天堂 | 九九亚洲 | 男女黄网站 | 亚洲成av| av中文字幕在线 | 亚洲欧美在线视频 | 亚洲精品中文字幕 | 成人日b视频 | 精品久久久久久亚洲精品 | 久久er精品 | 午夜精品久久久久久 | 久久美女网 | 国产福利资源在线 | 成人av网站在线观看 | 国产成人综合亚洲欧美94在线 | 91热在线| 天久久 | 精品视频一区在线 | 色桃网 | 一级网站| 老司机午夜性大片 | 亚洲在线日韩 | 一区二区国产在线观看 |