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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5820|回復: 12
收起左側

GPS(日期+時間)+溫度(3溫度)+LCD2004(IIC 顯示模塊)+STC12C5A60S2+22.1184MH...

  [復制鏈接]
ID:408809 發表于 2020-1-30 09:58 | 顯示全部樓層 |閱讀模式
GPS(日期+時間)+溫度(3溫度)+LCD2004(IIC 顯示模塊)+STC12C5A60S2+22.1184MHz+串口1+串口2
綜合性那么高的資料網上應該時找不到了吧!反正是花了我好久好久的時間才弄出來的。反正我是被折磨的快瘋掉了!!

初學者可以看看,高手可以幫忙指正!


最終效果圖.jpg

單片機源程序如下:
  1. #include "GPS.h"

  2. unsigned char RX_Buffer[68];                //此數組用于直接儲存來自GPS的原始數據
  3. unsigned char RX_Count = 0;

  4. bit Flag_GPS_OK = 0;


  5. void Uart_Init()                                                                     
  6. {
  7.         SCON = 0X50;  //UART方式1;8位UART
  8.         REN  = 1;     //允許串行口接收數據
  9.         PCON = 0x00;  //SMOD=0;波特率不加倍
  10.         TMOD = 0x20;  //T1方式2,用于產生波特率
  11.         TH1  = 0xFD;  //裝初值
  12.         TL1  = 0xFD;
  13.         TR1  = 1;     //啟動定時器1
  14.         EA   = 1;     //打開全局中斷控制
  15.         ES   = 1;     //打開串行口中斷        
  16. }



  17. void RECEIVE_DATA(void) interrupt 4 using 3                  //串口中斷函數,收到GPS的數據時進入此中斷        
  18. {
  19.         unsigned char temp = 0;
  20.         ES=0;                                                                                //先關閉串行口中斷
  21.         temp = SBUF;                                                                //接收SBUF中的數據
  22.         RI = 0;                                                                                //接收完成的標志位清零
  23. //        LED1 = ~LED1;
  24.         
  25.         if(temp == '*******************************************************************************

  26. 此程序使用  22.1184MHz  晶振

  27. *******************************************************************************/
  28. #include "STC12C5A60S2.h"
  29. #include "1602IIC.h"
  30. #include "GPS.h"
  31. #include "18b20.h"

  32. uchar code table1[]={0x00,0x00,0x10,0x07,0x08,0x08,0x07,0x00};//字符℃



  33. //****************************************************
  34. //                        主函數                   ***
  35. //****************************************************
  36. void main()
  37. {
  38.                 unsigned char num;
  39.                 Init_Lcd();                                                                                        //LCD初始化
  40.                 Uart2_Init();                                                                        //串口初始化
  41.                 LCD_write_command(0xc0);                                       
  42.                 LCD_write_word("Welcome to use GPS..");
  43.                 Delay1ms();
  44.                 LCD_write_command(0x01);
  45.         

  46.                 LCD_write_command(0x80);                                       
  47.                 LCD_write_word("n:");
  48.                 LCD_write_command(0xc0);                                       
  49.                 LCD_write_word("w:");
  50.                 LCD_write_command(0x94);                                       
  51.                 LCD_write_word("s:");
  52.                 LCD_write_command(0x8a);                                       
  53.                 LCD_write_word("D:");
  54.                 LCD_write_command(0xca);                                       
  55.                 LCD_write_word("T:");
  56.         
  57.         
  58.                 Write_LCD(5,0,".");
  59.                 Write_LCD(5,1,".");        
  60.                 LCD_write_command(0x99);
  61.                 LCD_write_word(".");
  62.         
  63.                 LCD_write_command(0x9E);                                       
  64.                 LCD_write_word("*:");        
  65.                
  66.                 LCD_write_command(0x40); //自建字符的第一個指令地址
  67.                 for(num=0;num<8;num++)
  68.                         {
  69.         LCD_write_data(table1[num]);
  70.                         }
  71.                 LCD_write_command(0x87);   //自建字符顯示位置
  72.                 LCD_write_data(0X00);     //自建字符的第一個數據地址(1602 總共可以自建8個字符)
  73.                 LCD_write_command(0xc7);   //自建字符顯示位置
  74.                 LCD_write_data(0X00);     //自建字符的第一個數據地址(1602 總共可以自建8個字符)
  75.                 LCD_write_command(0x9b);   //自建字符顯示位置
  76.                 LCD_write_data(0X00);     //自建字符的第一個數據地址(1602 總共可以自建8個字符)               

  77.         while(1)
  78.         {
  79.                
  80.                 unsigned int t;        
  81.                 qian_OK=0;                                                                        // 標志變量歸零
  82.                 k=0;                                                                                    // 累計量歸零
  83.                 P2=0x00;
  84.                 //for(t=0;t<60000;t++)                                // 此數值小于5000則GPS數據更新太慢,甚至不正常;大于7000則會讓溫度更新時間超過三秒。
  85.                         {               
  86.                                 GPS_JieXi();
  87. P2=0xff;
  88. delay1(10);                                
  89.                         }
  90.                         
  91.         
  92.                         //datapros(Ds18b20ReadTemp());           //溫度數據處理函數        
  93.                         //dataprosN(Ds18b20ReadTempN());         //溫度數據處理函數        
  94.                         //dataprosS(Ds18b20ReadTempS());         //溫度數據處理函數
  95.                
  96.         
  97.         }
  98. }



  99. )                                                                //若是統一的數據頭,則作為數組第一個元素
  100.         {
  101.                 RX_Count = 0;
  102.                 Flag_GPS_OK = 0;               
  103.         }

  104.         RX_Buffer[RX_Count++] = temp;                                //收到的數據放到數組中

  105.         if(RX_Count >= 66)                                                        //序號大于66的數據無用,統一放到第66位覆蓋掉
  106.         {
  107.                 RX_Count = 66;
  108.         }

  109.         if(temp == '*')                                                                //收到*,則完成一幀數據的接收,不管是否完整有效
  110.         {
  111.                 Flag_GPS_OK = 1;                                                //標志變量置為1
  112.         }

  113.         ES=1;                                                                                 //重新打開串行口中斷
  114. }
復制代碼
  1. /*******************************************************************************

  2. 此程序使用  22.1184MHz  晶振

  3. *******************************************************************************/
  4. #include "STC12C5A60S2.h"
  5. #include "1602IIC.h"
  6. #include "GPS.h"
  7. #include "18b20.h"

  8. uchar code table1[]={0x00,0x00,0x10,0x07,0x08,0x08,0x07,0x00};//字符℃



  9. //****************************************************
  10. //                        主函數                   ***
  11. //****************************************************
  12. void main()
  13. {
  14.                 unsigned char num;
  15.                 Init_Lcd();                                                                                        //LCD初始化
  16.                 Uart2_Init();                                                                        //串口初始化
  17.                 LCD_write_command(0xc0);                                       
  18.                 LCD_write_word("Welcome to use GPS..");
  19.                 Delay1ms();
  20.                 LCD_write_command(0x01);
  21.         

  22.                 LCD_write_command(0x80);                                       
  23.                 LCD_write_word("n:");
  24.                 LCD_write_command(0xc0);                                       
  25.                 LCD_write_word("w:");
  26.                 LCD_write_command(0x94);                                       
  27.                 LCD_write_word("s:");
  28.                 LCD_write_command(0x8a);                                       
  29.                 LCD_write_word("D:");
  30.                 LCD_write_command(0xca);                                       
  31.                 LCD_write_word("T:");
  32.         
  33.         
  34.                 Write_LCD(5,0,".");
  35.                 Write_LCD(5,1,".");        
  36.                 LCD_write_command(0x99);
  37.                 LCD_write_word(".");
  38.         
  39.                 LCD_write_command(0x9E);                                       
  40.                 LCD_write_word("*:");        
  41.                
  42.                 LCD_write_command(0x40); //自建字符的第一個指令地址
  43.                 for(num=0;num&lt;8;num++)
  44.                         {
  45.         LCD_write_data(table1[num]);
  46.                         }
  47.                 LCD_write_command(0x87);   //自建字符顯示位置
  48.                 LCD_write_data(0X00);     //自建字符的第一個數據地址(1602 總共可以自建8個字符)
  49.                 LCD_write_command(0xc7);   //自建字符顯示位置
  50.                 LCD_write_data(0X00);     //自建字符的第一個數據地址(1602 總共可以自建8個字符)
  51.                 LCD_write_command(0x9b);   //自建字符顯示位置
  52.                 LCD_write_data(0X00);     //自建字符的第一個數據地址(1602 總共可以自建8個字符)               

  53.         while(1)
  54.         {
  55.                
  56.                 unsigned int t;        
  57.                 qian_OK=0;                                                                        // 標志變量歸零
  58.                 k=0;                                                                                    // 累計量歸零
  59.                 P2=0x00;
  60.                 //for(t=0;t&lt;60000;t++)                                // 此數值小于5000則GPS數據更新太慢,甚至不正常;大于7000則會讓溫度更新時間超過三秒。
  61.                         {               
  62.                                 GPS_JieXi();
  63. P2=0xff;
  64. delay1(10);                                
  65.                         }
  66.                         
  67.         
  68.                         //datapros(Ds18b20ReadTemp());           //溫度數據處理函數        
  69.                         //dataprosN(Ds18b20ReadTempN());         //溫度數據處理函數        
  70.                         //dataprosS(Ds18b20ReadTempS());         //溫度數據處理函數
  71.                
  72.         
  73.         }
  74. }


復制代碼


所有資料51hei提供下載:
22.1184MHz版本-最終版本IIC-GPS+1602+C52-日期、時間、速度、3溫度 - (GPS接串口2).7z (40.08 KB, 下載次數: 175)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:408809 發表于 2020-1-30 09:59 | 顯示全部樓層
“A”  是代表有效數據,“V”是代表無效數據
回復

使用道具 舉報

ID:64053 發表于 2020-2-1 00:24 | 顯示全部樓層
樓主,這個有衛星數顯示嗎
回復

使用道具 舉報

ID:408809 發表于 2020-2-1 23:32 | 顯示全部樓層
93mxt 發表于 2020-2-1 00:24
樓主,這個有衛星數顯示嗎

之前的版本有,這個版本被我刪了。
回復

使用道具 舉報

ID:64053 發表于 2020-2-14 21:29 | 顯示全部樓層
樓主你好,能做一個在12864屏上顯示衛星的數據就好了,粗體字更可愛
回復

使用道具 舉報

ID:535242 發表于 2020-2-23 12:55 | 顯示全部樓層
不錯哈 雖然目前不用這方面 還是感謝分享
回復

使用道具 舉報

ID:64053 發表于 2020-12-27 21:46 | 顯示全部樓層
gps波特率是多少
回復

使用道具 舉報

ID:800086 發表于 2020-12-28 23:18 來自手機 | 顯示全部樓層
別的東西都有,就差一個顯示屏。先保存下來
回復

使用道具 舉報

ID:120677 發表于 2020-12-30 17:02 | 顯示全部樓層
先保存下來 以后再學
回復

使用道具 舉報

ID:827881 發表于 2021-12-13 11:14 來自手機 | 顯示全部樓層
13503412974 發表于 2020-12-28 23:18
別的東西都有,就差一個顯示屏。先保存下來

是哪個型號的gps模塊,請問下
回復

使用道具 舉報

ID:336378 發表于 2021-12-13 18:15 | 顯示全部樓層
    先下載了, 到時要用再來學習。
回復

使用道具 舉報

ID:85508 發表于 2022-12-11 18:30 | 顯示全部樓層
收藏、下載了
回復

使用道具 舉報

ID:1115137 發表于 2024-4-2 14:12 | 顯示全部樓層
感謝分享,請問這個LCD2004模塊的iic通信是怎么樣連接的,采用的四位MCU和pcf8574連接嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 第一区在线观看免费国语入口 | 91在线电影| 在线播放亚洲 | 一区二区三区视频 | 福利网址 | 久久久久网站 | 一级毛片在线播放 | 欧洲妇女成人淫片aaa视频 | 蜜桃视频一区二区三区 | 欧美三区视频 | 日韩在线视频网址 | 欧美日韩久久 | 欧美日韩精品一区二区三区蜜桃 | 在线免费观看黄色 | 91精品国产一区二区三区 | 91国产精品| 黄网站涩免费蜜桃网站 | 欧美在线国产精品 | 三a毛片 | 一级毛片色一级 | 欧美一区在线看 | 三级视频在线观看电影 | 中文字幕国产日韩 | 成年精品| 99久久99热这里只有精品 | 午夜免费网站 | 久久精品综合 | 成人亚洲网站 | gogo肉体亚洲高清在线视 | 久久久久久久久久久久久久国产 | 久草.com| 精品成人一区二区 | 久久看精品 | 日韩一区二区三区精品 | 红色av社区| 久久美女网| 欧美成人免费在线视频 | av无遮挡 | 亚洲天天 | 国内精品免费久久久久软件老师 | 黄a免费网络|