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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機gps遠程手機控制直流電機調(diào)速系統(tǒng)設(shè)計源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:197554 發(fā)表于 2018-1-24 17:46 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本人校賽做了一個雙機通信加gps遠程手機控制電機調(diào)速裝置,現(xiàn)在發(fā)上來與大家分享。


所有資料51hei提供下載:
直流電機 互聯(lián)網(wǎng) 調(diào)速系統(tǒng)程序.rar (398.62 KB, 下載次數(shù): 14)

一 硬件構(gòu)成
1 l298n一個 stc12c60s2最小系統(tǒng)2個(與51最小系統(tǒng)基本相同 具體百度)
2 1.8寸tft屏(淘寶)
3 sim808模塊
4 直流減速電機 霍爾傳感器
5 1802電池三節(jié) 電池盒
6 其他 自己想
二 說明
1 tft屏幕檔位初始值不可控  現(xiàn)初始值為8 原因未知 解決
2 tft屏檔位及實時速度加減速度上下限未設(shè)置
3 調(diào)速范圍實際0—60轉(zhuǎn)每分鐘 范圍過小 由經(jīng)費不足 電機調(diào)速范圍有限所致
想改可以花錢買好電機
4 經(jīng)緯度無法實時顯示在tft上 能力知識所限 以后解決
5 程序還有不懂 待消化 程序臃腫 待優(yōu)化
6 調(diào)速過程稍慢 遠程調(diào)速與近程調(diào)速無法繼承 例如 遠程開啟電機后近程無法關(guān)閉
只能單獨遠程或近程
7 遠程開關(guān)啟停信息代碼會顯示在檔位上
8 實時轉(zhuǎn)速無法發(fā)送給手機

gps遠程調(diào)速部分程序:
本程序通過GPRS服務(wù)器控制LED的亮滅
使用單片機串口1與模塊通信;接法如下
    STC單片機   GPRS模塊
    P3.0(RXD1)->RXD
    P3.1(TXD1)->TXD
    GND      ->GND
   
    晶振選用11.0592MHz
1、1、板子上電后運行指示燈RUNING_LED會以一秒的頻率閃爍;
2、通過單片機的串口1,可以監(jiān)視模塊的登錄情況;
3、手機發(fā)送“onled”點亮LED;
4、手機發(fā)送“offled”熄滅LED;
5、單片機每隔10秒會向服務(wù)器發(fā)送心跳幀“OK”
6、通過串口助手監(jiān)控單片機的串口1可以看到服務(wù)器發(fā)送的信息;

單片機源程序如下:
  1. /**********************************************************************************
  2. * 工程名  :GPRS
  3. * 描述    :測試GPRS連接,并且服務(wù)器可以通過GPRS控制LED
  4. * 實驗平臺:C51
  5. * 庫版本  :


  6. * 軟件功能說明
  7.    板子上電后運行指示燈RUNING_LED會以一秒的頻率閃爍
  8.          服務(wù)器發(fā)送“onled”點亮LED;
  9.    服務(wù)器發(fā)送“offled”熄滅LED;
  10.          單片機每隔10秒會向服務(wù)器發(fā)送心跳幀“OK”
  11. **********************************************************************************/
  12. #include "config.h"
  13. #include "string.h"
  14. #include "delay.h"
  15. #include "uart.h"

  16. #define Automatic_Startup 1     //定義自啟動 V1.2版本起有自啟動功能
  17. #define Buf2_Max 200
  18. #define Buf1_Max 200                                           //串口2緩存長度
  19. /*************        本地常量聲明        **************/
  20. xdata unsigned char content[100]="GPS positioning success";//發(fā)送短信內(nèi)容
  21. static unsigned char *phone="\"18800435381\"";     //短信接收方手機號
  22. //const u8 *string = "AT+CIPSTART=\"TCP\",\"116.31.51.113\",9015";        //IP登錄服務(wù)器
  23. //sbit RUNING_LED = P1^1;                                        //運行指示燈
  24. //sbit LED                          = P1^2;                                        //控制指示燈
  25. char flag1=0;

  26. /*************  本地變量聲明        **************/
  27. xdata u8 Uart1_Buf[Buf1_Max];
  28. xdata u8 Uart2_Buf[Buf2_Max];
  29. u8 Times=0,First_Int = 0,shijian=0;
  30. u8 key_buf=0;
  31. char *p2;
  32. //u16 Heartbeat=0;
  33. //u8 Time_count=0;
  34. bdata u8 Flag;//定時器標志位
  35. sbit Timer0_start =Flag^0;        //定時器0延時啟動計數(shù)器
  36. //sbit Heart_beat                =Flag^1;        //發(fā)送心跳幀標志位
  37. sbit KEY=P3^5;
  38. sbit RUNING_LED=P1^0;

  39. /*************        本地函數(shù)聲明        **************/
  40. void GPIO_config(void);
  41. void Timer0Init(void);
  42. void CLR_Buf1(void);
  43. u8 Find(u8 *a);
  44. void Second_AT_Command(u8 *b,u8 *a,u8 wait_time);
  45. //void Set_ATE0(void);
  46. //void Connect_Server(void);
  47. //void Rec_Server_Data(void);
  48. void Wait_CREG(void);
  49. //void Send_OK(void);
  50. void Set_Text_Mode(void); //設(shè)置短信為TEXT模式
  51. void Check_New_Message(void);  //查詢新短信

  52. /*************  外部函數(shù)和變量聲明*****************/

  53. /*******************************************************************************
  54. * 函數(shù)名 : Uart1
  55. * 描述   : 串口1中斷服務(wù)入口函數(shù)
  56. * 輸入   :
  57. * 輸出   :
  58. * 返回   :
  59. * 注意   :
  60. *******************************************************************************/
  61. void Uart1() interrupt 4
  62. {
  63.     if (RI)
  64.     {
  65.       RI = 0;                           //清除RI位
  66.                         Uart1_Buf[First_Int] = SBUF;            //將接收到的字符串存到緩存中
  67.                         First_Int++;                                        //緩存指針向后移動
  68.                         if(First_Int > Buf1_Max)                       //如果緩存滿,將緩存指針指向緩存的首地址
  69.                         {
  70.                                 First_Int = 0;
  71.                         }
  72.     }
  73.     if (TI)
  74.     {
  75.         TI = 0;                          //清除TI位
  76.     }
  77. }

  78. void Timer0Init(void)                //20毫秒@11.0592MHz
  79. {
  80.         AUXR &= 0x7F;                //定時器時鐘12T模式
  81.         TMOD &= 0xF0;                //
  82.         TMOD |= 0x01;                //設(shè)置定時器模式,16位定時器
  83.         TL0 = 0x00;                  //設(shè)置定時器初值
  84.         TH0 = 0xB8;                  //設(shè)置定時器初值
  85.         TF0 = 0;                    //清TF0標志
  86.         TR0 = 1;                    //定時器0開始計時
  87.         ET0 = 1;              //使能定時器0中斷
  88. }

  89. void Timer0_ISR() interrupt 1
  90. {
  91.         static u8 Time_count=0;
  92.         TR0=0;//關(guān)定時器
  93.         TL0 = 0x00;                //重設(shè)定時器初值
  94.         TH0 = 0xB8;                //重設(shè)定時器初值
  95.         Time_count++;
  96.         if(Time_count>=50)//1秒運行指示燈閃爍
  97.         {
  98.                 Time_count = 0;
  99.                 RUNING_LED =~RUNING_LED;
  100.         }
  101.         /*if(count_20ms) //20ms延時計數(shù)器
  102.                 count_20ms--;*/
  103.         /*Heartbeat++;
  104.         if(Heartbeat>500)//每10秒發(fā)送心跳幀
  105.         {
  106.                 Heartbeat=0;
  107.                 Heart_beat=1;
  108.         } */
  109.         if(Timer0_start)
  110.         Times++;
  111.         if(Times > (50*shijian))
  112.         {
  113.                 Timer0_start = 0;
  114.                 Times = 0;
  115.         }
  116.         TR0=1;//開定時器
  117. }

  118. void CLR_Buf1(void)
  119. {
  120.         u16 k;
  121.         for(k=0;k<Buf1_Max;k++)      //將緩存內(nèi)容清零
  122.         {
  123.                 Uart1_Buf[k] = 0x00;
  124.         }
  125.     First_Int = 0;             //接收字符串的起始存儲位置
  126. }

  127. void         Wait_CREG(void)
  128. {
  129.         u8 i;
  130.         u8 k;
  131.         i = 0;
  132.         CLR_Buf1();
  133.   while(i == 0)                                
  134.         {
  135.                 CLR_Buf1();        
  136.                 UART1_SendString("AT+CREG?");
  137.                 UART1_SendLR();
  138.                 delay_ms(250);                                                  
  139.             for(k=0;k<Buf1_Max;k++)                              
  140.             {
  141.                         if(Uart1_Buf[k] == ':')
  142.                         {
  143.                                 if((Uart1_Buf[k+4] == '1')||(Uart1_Buf[k+4] == '5'))
  144.                                 {
  145.                                         i = 1;
  146.                                   break;
  147.                                 }
  148.                         }
  149.                 }
  150.         }
  151. }

  152. u8 Find(u8 *a)
  153. {
  154.   if(strstr(Uart1_Buf,a)!=NULL)
  155.             return 1;
  156.         else
  157.                         return 0;
  158. }

  159. /*******************************************************************************
  160. * 函數(shù)名 : Timer0_ISR
  161. * 描述   : 定時器0中斷服務(wù)入口函數(shù),20ms中斷一次
  162. * 輸入   :
  163. * 輸出   :
  164. * 返回   :
  165. * 注意   :
  166. *******************************************************************************/

  167. /*******************************************************************************
  168. * 函數(shù)名 : Timer0Init
  169. * 描述   : 定時器0初始化,20ms定時
  170. * 輸入   :
  171. * 輸出   :
  172. * 返回   :
  173. * 注意   :
  174. *******************************************************************************/


  175. /*******************************************************************************
  176. * 函數(shù)名 : CLR_Buf1
  177. * 描述   : 清除串口2緩存數(shù)據(jù)
  178. * 輸入   :
  179. * 輸出   :
  180. * 返回   :
  181. * 注意   :
  182. *******************************************************************************/

  183. /*******************************************************************************
  184. * 函數(shù)名 : Wait_CREG
  185. * 描述   : 等待模塊注冊成功
  186. * 輸入   :
  187. * 輸出   :
  188. * 返回   :
  189. * 注意   :
  190. *******************************************************************************/

  191. /*******************************************************************************
  192. * 函數(shù)名 : Find
  193. * 描述   : 判斷緩存中是否含有指定的字符串
  194. * 輸入   :
  195. * 輸出   :
  196. * 返回   : unsigned char:1 找到指定字符,0 未找到指定字符
  197. * 注意   :
  198. *******************************************************************************/


  199. /*******************************************************************************
  200. * 函數(shù)名 : Second_AT_Command
  201. * 描述   : 發(fā)送AT指令函數(shù)
  202. * 輸入   : 發(fā)送數(shù)據(jù)的指針、發(fā)送等待時間(單位:S)
  203. * 輸出   :
  204. * 返回   :
  205. * 注意   :
  206. *******************************************************************************/

  207. void Second_AT_Command(u8 *b,u8 *a,u8 wait_time)         
  208. {
  209.         u8 i;
  210.         u8 *c;
  211.         c = b;                                                                                //保存字符串地址到c
  212.         CLR_Buf1();
  213.   i = 0;
  214.         while(i == 0)                    
  215.         {
  216.                 if(!Find(a))
  217.                 {
  218.                         if(Timer0_start == 0)
  219.                         {
  220.                                 b = c;                                                        //將字符串地址給b
  221.                                 for (b; *b!='\0';b++)
  222.                                 {
  223.                                         UART1_SendData(*b);
  224.                                 }
  225.                                 UART1_SendLR();        
  226.                                 Times = 0;
  227.                                 shijian = wait_time;
  228.                                 Timer0_start = 1;
  229.                    }
  230.     }
  231.            else
  232.                 {
  233.                         i = 1;
  234.                         Timer0_start = 0;
  235.                 }
  236.         }
  237. //        CLR_Buf1();
  238. }

  239. /*******************************************************************************
  240. * 函數(shù)名 : Set_ATE0
  241. * 描述   : 取消回顯
  242. * 輸入   :
  243. * 輸出   :
  244. * 返回   :
  245. * 注意   :
  246. *******************************************************************************/
  247. /*void Set_ATE0(void)
  248. {
  249.         Second_AT_Command("ATE0","OK",3);                                                                //取消回顯               
  250. }*/
  251. /*******************************************************************************
  252. * 函數(shù)名 : Connect_Server
  253. * 描述   : GPRS連接服務(wù)器函數(shù)
  254. * 輸入   :
  255. * 輸出   :
  256. * 返回   :
  257. * 注意   :
  258. *******************************************************************************/
  259. /*void Connect_Server(void)
  260. {
  261.         UART1_SendString("AT+CIPCLOSE=1");        //關(guān)閉連接
  262.         delay_ms(5);
  263.         Second_AT_Command("AT+CIPSHUT","SHUT OK",2);                //關(guān)閉移動場景
  264.         Second_AT_Command("AT+CGCLASS=\"B\"","OK",2);//設(shè)置GPRS移動臺類別為B,支持包交換和數(shù)據(jù)交換
  265.         Second_AT_Command("AT+CGDCONT=1,\"IP\",\"CMNET\"","OK",2);//設(shè)置PDP上下文,互聯(lián)網(wǎng)接協(xié)議,接入點等信息
  266.         Second_AT_Command("AT+CGATT=1","OK",2);//附著GPRS業(yè)務(wù)
  267.         Second_AT_Command("AT+CIPCSGP=1,\"CMNET\"","OK",2);//設(shè)置為GPRS連接模式
  268.         Second_AT_Command("AT+CIPHEAD=1","OK",2);//設(shè)置接收數(shù)據(jù)顯示IP頭(方便判斷數(shù)據(jù)來源,僅在單路連接有效)
  269.         Second_AT_Command(string,"OK",5);        
  270.         delay_ms(5);
  271.         CLR_Buf1();
  272. } */
  273. /*******************************************************************************
  274. * 函數(shù)名 : Rec_Server_Data
  275. * 描述   : 接收服務(wù)器數(shù)據(jù)函數(shù)
  276. * 輸入   :
  277. * 輸出   :
  278. * 返回   :
  279. * 注意   :
  280. *******************************************************************************/
  281. /*void Rec_Server_Data(void)
  282. {
  283.         if(strstr(Uart1_Buf,"+IPD")!=NULL)                   //若緩存字符串中含有^SISR
  284.         {        
  285.                 Heartbeat=0;        //清除心跳幀計數(shù)器
  286.                 Heart_beat=0;
  287.                 delay_ms(10);
  288.                 if(strstr(Uart1_Buf,"onled")!=NULL)
  289.                 {
  290.                         LED = 0;
  291.                 }
  292.                 else if(strstr(Uart1_Buf,"offled")!=NULL)
  293.                 {
  294.                         LED = 1;
  295.                 }
  296.                 CLR_Buf1();
  297.                 Heart_beat=1;//發(fā)送應(yīng)答數(shù)據(jù),告訴服務(wù)器收到數(shù)據(jù)               
  298.         }
  299. } */
  300. /*******************************************************************************
  301. * 函數(shù)名 : Send_OK
  302. * 描述   : 發(fā)送數(shù)據(jù)應(yīng)答服務(wù)器的指令,該函數(shù)在有兩功能
  303.                                         1:接收到服務(wù)器的數(shù)據(jù)后,應(yīng)答服務(wù)器
  304.                                         2:服務(wù)器無下發(fā)數(shù)據(jù)時,每隔10秒發(fā)送一幀心跳,保持與服務(wù)器連接
  305. * 輸入   :
  306. * 輸出   :
  307. * 返回   :
  308. * 注意   :
  309. *******************************************************************************/
  310. /*void Send_OK(void)
  311. {
  312.         Second_AT_Command("AT+CIPSEND",">",2);
  313.         Second_AT_Command("OK\32\0","SEND OK",8);;                        //回復(fù)OK
  314.         delay_ms(10);
  315.         CLR_Buf1();
  316. }
  317. */
  318. /*******************************************************************************
  319. * 函數(shù)名 : Set_Text_Mode
  320. * 描述   : 設(shè)置短信為TEXT文本模式
  321. * 輸入   :
  322. * 輸出   :
  323. * 返回   :
  324. * 注意   :
  325. *******************************************************************************/
  326. void Set_Text_Mode(void)
  327. {
  328.         //unsigned char temp[25]="AT+CSCA=";
  329.         Second_AT_Command("ATE0","OK",3);                                                                                //取消回顯        
  330.         Second_AT_Command("AT+CMGF=1","OK",3);                                                                //TEXT模式        
  331.         Second_AT_Command("AT+CSCS=\"GSM\"","OK",3);//所有操作都在SIM卡中進行
  332.         Second_AT_Command("AT+CSMP=17,167,0,241","OK",3);

  333.         Second_AT_Command("AT+CNMI=3,2,0,0,0","OK",3);
  334.         Second_AT_Command("AT+CPMS=\"SM\",\"SM\",\"SM\"","OK",3);                //所有操作都在SIM卡中進行                        
  335.                                 
  336.         Second_AT_Command("AT+CSCA?","OK",3);
  337. //        strcat(temp,SMS_Num); //字符串拼接函數(shù)(庫函數(shù))
  338.         //Second_AT_Command(temp,"OK",3);//設(shè)置短信中心號
  339. }

  340. void Check_New_Message(void)
  341. {
  342.         u8 temp=0;
  343.         if(strstr(Uart1_Buf,"+CMT")!=NULL)                   //若緩存字符串中含有"+CMT"就表示有新的短信
  344.         {
  345.                 delay_ms(3);//等待數(shù)據(jù)全部接收完成
  346.                 if(strstr(Uart1_Buf,"aa")!=NULL)        ///短信識別短信內(nèi)容 通過串口2發(fā)送給另一個單片機信息
  347.                 {
  348.                 UART2_SendString("11105");
  349.                 }
  350.                 else
  351.                 if(strstr(Uart1_Buf,"ab")!=NULL)
  352.                 {
  353.                                 UART2_SendString("11106");

  354.                 }
  355.                 else
  356.                         if(strstr(Uart1_Buf,"ac")!=NULL)
  357.                 {
  358.                                 UART2_SendString("11107");//前三位為速度開關(guān)信息

  359.                 }
  360.                 else
  361.                 if(strstr(Uart1_Buf,"ad")!=NULL)
  362.                 {
  363.                                         UART2_SendString("11108");

  364.                 }
  365.                 else
  366.                         if(strstr(Uart1_Buf,"ae")!=NULL)
  367.                 {
  368.                                 UART2_SendString("11109");

  369.                 }
  370.                 else
  371.                 if(strstr(Uart1_Buf,"af")!=NULL)
  372.                 {
  373.                                         UART2_SendString("11110");

  374.                 }
  375.                 else
  376.                         if(strstr(Uart1_Buf,"ag")!=NULL)
  377.                 {
  378.                                 UART2_SendString("11111");
  379.                 }
  380.                 else
  381.                 if(strstr(Uart1_Buf,"ah")!=NULL)
  382.                 {
  383.                                 UART2_SendString("11112");
  384.                 }
  385.                 else
  386.                         if(strstr(Uart1_Buf,"ai")!=NULL)
  387.                 {
  388.                                 UART2_SendString("11113");
  389.                 }
  390.                 else
  391.                 if(strstr(Uart1_Buf,"aj")!=NULL)
  392.                 {
  393.                                 UART2_SendString("11114");
  394.                 }
  395.                 else
  396.                         if(strstr(Uart1_Buf,"ak")!=NULL)
  397.                 {
  398.                         UART2_SendString("11115");
  399.                 }
  400.                 else
  401.                 if(strstr(Uart1_Buf,"al")!=NULL)
  402.                 {
  403.                                 UART2_SendString("11116");
  404.                 }
  405.                 else
  406.                         if(strstr(Uart1_Buf,"am")!=NULL)
  407.                 {
  408.                                 UART2_SendString("11117");
  409.                 }
  410.                 else
  411.                 if(strstr(Uart1_Buf,"an")!=NULL)
  412.                 {
  413.                         UART2_SendString("11118");
  414.                 }
  415.                 if(strstr(Uart1_Buf,"ao")!=NULL)
  416.                 {
  417.                                 UART2_SendString("11119");
  418.                 }
  419.                 else
  420.                         if(strstr(Uart1_Buf,"ap")!=NULL)
  421.                 {
  422.                                 UART2_SendString("11120");
  423.                 }
  424.                 else
  425.                 if(strstr(Uart1_Buf,"aq")!=NULL)
  426.                 {
  427.                                 UART2_SendString("11121");
  428.                 }
  429.                 else
  430.                         if(strstr(Uart1_Buf,"ar")!=NULL)
  431.                 {
  432.                                 UART2_SendString("11122");
  433.                 }
  434.                 else
  435.                 if(strstr(Uart1_Buf,"as")!=NULL)
  436.                 {
  437.                                 UART2_SendString("11123");
  438.                 }
  439.                 else
  440.                         if(strstr(Uart1_Buf,"at")!=NULL)
  441.                 {
  442.                                 UART2_SendString("11124");
  443.                 }
  444.                 else
  445.                 if(strstr(Uart1_Buf,"au")!=NULL)
  446.                 {
  447.                                 UART2_SendString("11125");
  448.                 }
  449.                 else
  450.                         if(strstr(Uart1_Buf,"av")!=NULL)
  451.                 {
  452.                                 UART2_SendString("11126");
  453.                 }
  454.                 else
  455.                 if(strstr(Uart1_Buf,"aw")!=NULL)
  456.                 {
  457.                                 UART2_SendString("11127");
  458.                 }
  459.                 else
  460.                         if(strstr(Uart1_Buf,"ax")!=NULL)
  461.                 {
  462.                                 UART2_SendString("11128");
  463.                 }
  464.                 else
  465.                 if(strstr(Uart1_Buf,"ay")!=NULL)
  466.                 {
  467.                                 UART2_SendString("11129");
  468.                 }
  469.                 else
  470.                         if(strstr(Uart1_Buf,"az")!=NULL)
  471.                 {
  472.                                 UART2_SendString("11130");
  473.                 }
  474.                 else
  475.                 if(strstr(Uart1_Buf,"ba")!=NULL)
  476.                 {
  477.                                 UART2_SendString("11131");
  478.                 }
  479.                 else
  480.         //        *****************************************************************//
  481.                 if(strstr(Uart1_Buf,"bb")!=NULL)
  482.                 {
  483.                                 UART2_SendString("11132");
  484.                 }
  485.                 else
  486.                         if(strstr(Uart1_Buf,"bc")!=NULL)
  487.                 {
  488.                                 UART2_SendString("11133");
  489.                 }
  490.                 else
  491.                 if(strstr(Uart1_Buf,"bd")!=NULL)
  492.                 {
  493.                                 UART2_SendString("11134");
  494.                 }
  495.                 else
  496.                         if(strstr(Uart1_Buf,"be")!=NULL)
  497.                 {
  498.                                 UART2_SendString("11135");
  499.                 }
  500.                 else
  501.                 if(strstr(Uart1_Buf,"bf")!=NULL)
  502.                 {
  503.                                 UART2_SendString("11136");
  504.                 }
  505.                 else
  506.                         if(strstr(Uart1_Buf,"bg")!=NULL)
  507.                 {
  508.                                 UART2_SendString("11137");
  509.                 }
  510.                 else
  511.                 if(strstr(Uart1_Buf,"bh")!=NULL)
  512.                 {
  513.                                 UART2_SendString("11138");
  514.                 }
  515.                 else
  516.                         if(strstr(Uart1_Buf,"bi")!=NULL)
  517.                 {
  518.                                 UART2_SendString("11139");
  519.                 }
  520.                 else
  521.                 if(strstr(Uart1_Buf,"bj")!=NULL)
  522.                 {
  523.                                 UART2_SendString("11140");
  524.                 }
  525.                 else
  526.                         if(strstr(Uart1_Buf,"bk")!=NULL)
  527.                 {
  528.                                 UART2_SendString("11141");
  529.                 }
  530.                 else
  531.                 if(strstr(Uart1_Buf,"bl")!=NULL)
  532.                 {
  533.                                 UART2_SendString("11142");
  534.                 }
  535.                 else
  536.                         if(strstr(Uart1_Buf,"bm")!=NULL)
  537.                 {
  538.                                 UART2_SendString("11143");
  539.                 }
  540.                 else
  541.                 if(strstr(Uart1_Buf,"bn")!=NULL)
  542.                 {
  543.                                 UART2_SendString("11144");
  544.                 }
  545.                 else
  546.                         if(strstr(Uart1_Buf,"bo")!=NULL)
  547.                 {
  548.                                 UART2_SendString("11145");
  549.                 }
  550.                 else
  551.                 if(strstr(Uart1_Buf,"bp")!=NULL)
  552.                 {
  553.                                 UART2_SendString("11146");
  554.                 }
  555.                 else
  556.                 if(strstr(Uart1_Buf,"bq")!=NULL)
  557.                 {
  558.                                 UART2_SendString("11147");
  559.                 }
  560.                 else
  561.                 if(strstr(Uart1_Buf,"br")!=NULL)
  562.                 {
  563.                                 UART2_SendString("11148");
  564.                 }
  565.                 else
  566.                 if(strstr(Uart1_Buf,"bs")!=NULL)
  567.                 {
  568.                                 UART2_SendString("11149");
  569.                 }
  570.                 else
  571.                 if(strstr(Uart1_Buf,"bt")!=NULL)
  572.                 {
  573.                                 UART2_SendString("11150");
  574.                 }
  575.                 else
  576.                 if(strstr(Uart1_Buf,"bu")!=NULL)
  577.                 {
  578.                                 UART2_SendString("11151");
  579.                 }
  580.                 else
  581.                 if(strstr(Uart1_Buf,"bv")!=NULL)
  582.                 {
  583.                                 UART2_SendString("11152");
  584.                 }
  585.                 else
  586.                 if(strstr(Uart1_Buf,"bw")!=NULL)
  587.                 {
  588.                                 UART2_SendString("11153");
  589.                 }
  590.                 else
  591.                 if(strstr(Uart1_Buf,"bx")!=NULL)
  592.                 {
  593.                                 UART2_SendString("11154");
  594.                 }else
  595.                 if(strstr(Uart1_Buf,"by")!=NULL)
  596.                 {
  597.                                 UART2_SendString("11155");
  598.                 }else
  599.                 if(strstr(Uart1_Buf,"bz")!=NULL)
  600.                 {
  601.                                 UART2_SendString("11156");
  602.                 } else
  603.                 if(strstr(Uart1_Buf,"ca")!=NULL)
  604.                 {
  605.                                 UART2_SendString("11157");
  606.                 }else
  607.                 if(strstr(Uart1_Buf,"cb")!=NULL)
  608.                 {
  609.                                 UART2_SendString("11158");
  610.                 }else
  611.                 if(strstr(Uart1_Buf,"cc")!=NULL)
  612.                 {
  613.                                 UART2_SendString("11159");
  614.                 }else
  615.                 if(strstr(Uart1_Buf,"cd")!=NULL)
  616.                 {
  617.                                 UART2_SendString("11160");
  618.                 }else
  619.                 if(strstr(Uart1_Buf,"ce")!=NULL)
  620.                 {
  621.                                 UART2_SendString("11161");
  622.                 }else
  623.                 if(strstr(Uart1_Buf,"cf")!=NULL)
  624.                 {
  625.                                 UART2_SendString("11162");
  626.                 }else
  627.                 if(strstr(Uart1_Buf,"cg")!=NULL)
  628.                 {
  629.                                 UART2_SendString("11163");
  630.                 }else
  631.                 if(strstr(Uart1_Buf,"G")!=NULL)
  632.                 {
  633.                                 UART2_SendString("004");
  634.                 }else
  635.                 if(strstr(Uart1_Buf,"Z")!=NULL)
  636.                 {
  637.                                 UART2_SendString("002");
  638.                 }else
  639.                 if(strstr(Uart1_Buf,"F")!=NULL)
  640.                 {
  641.                                 UART2_SendString("003");
  642.                 }
  643.                 CLR_Buf1();
  644.                 Second_AT_Command("AT+CMGD=1,4","OK",3);//刪除短信
  645.         }
  646. }

  647. /*******************************************************************************
  648. * 函數(shù)名 : Send_Text_Sms
  649. * 描述   : 發(fā)送TEXT文本短信
  650. * 輸入   :
  651. * 輸出   :
  652. * 返回   :
  653. * 注意   :
  654. *******************************************************************************/
  655. void Send_Text_Sms(void)
  656. {
  657.         unsigned char temp[50]="AT+CMGS=";
  658.         
  659.         strcat(temp,phone); //字符串拼接函數(shù)(庫函數(shù))
  660.         Second_AT_Command(temp,">",3); //等待接收到“>”才發(fā)送短信內(nèi)容
  661.         UART1_SendString(content);     //發(fā)送短信內(nèi)容
  662.         UART1_SendData(0X1A);          //發(fā)送結(jié)束符
  663. }
  664. void main(void)
  665. {
  666.         Timer0Init();
  667.         EA=1;        //開總中斷
  668.         Uart1Init();
  669.         Uart2Init();
  670.                 Wait_CREG();    //查詢等待模塊注冊成功
  671.                 Set_Text_Mode();//設(shè)置短信為TEXT模式
  672.                 Second_AT_Command("AT+CGNSPWR=1\r\n","OK",2);   //打開GPS電源
  673.          /**************************************************************/
  674.         
  675.         Send_Text_Sms();//發(fā)送一條短消息
  676.         
  677.         /*************************************************************/
  678.         while(1)
  679.         {        
  680.                 Check_New_Message();
  681.         //        if(!KEY)delay_ms(10);//按鍵松開
  682.         //        {
  683.                  
  684.         //        if(KEY==0)//按鍵按下
  685. //        {                  
  686. //        UART2_SendString("16\r\n");
  687.                          if(Find("CRING")|Find("RING"))  //有新來電
  688.                         {
  689.                                                   CLR_Buf1();
  690.                                   UART1_SendString("ATH\r\n");//掛斷來電
  691.                                   flag1=1;
  692.                         }
  693.                         delay_ms(250);
  694.                                   if(flag1)
  695.                                 {
  696.                                    flag1=0;
  697.                                 content[0]=0;//添加字符串結(jié)束符
  698.                                 strcat(content,"GPS data:");
  699.                                 Second_AT_Command("AT+CGNSINF\r\n","OK",3);
  700.                                 if((p2=(char*)strstr(Uart1_Buf,"OK")),(p2!=NULL))//尋找結(jié)束符
  701.                                 {
  702.                                         *p2=0;//添加結(jié)束符
  703.                                         p2=strtok(Uart1_Buf,",");
  704.                                         p2=(char*)strtok(NULL,",");
  705.                                         p2=(char*)strtok(NULL,",");
  706.                                         p2=(char*)strtok(NULL,",");

  707.                                         strcat(content,"latitude:");
  708.                                         strcat(content,(char *)p2);
  709.                                         p2=(char*)strtok(NULL,",");

  710.                                         strcat(content,"longitude:");
  711.                                         strcat(content,(char *)p2);
  712.                                         p2=(char*)strtok(NULL,",");

  713.                                         strcat(content,"elevation:");
  714.                                         strcat(content,(char *)p2);
  715.                                         Send_Text_Sms();//發(fā)送定位信息
  716.                                         delay_ms(1000);
  717.                                         CLR_Buf1();
  718. ……………………

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


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品网站 | 亚洲精品中文字幕在线观看 | 精品一区二区久久久久久久网站 | 日韩一区中文字幕 | 久久精品小短片 | 亚洲午夜电影 | 久久久久久久久蜜桃 | 国产精品18久久久久久白浆动漫 | 国产乱码精品一区二区三区中文 | 婷婷久久综合 | 国产日韩欧美在线 | 夜夜骑首页 | 91在线观看 | 91网视频| 精品国产视频 | 久久中文免费视频 | 精品一区二区免费视频 | 国产真实精品久久二三区 | 日韩一区二区三区在线观看 | 国产精品亚洲视频 | 国产精品夜间视频香蕉 | 国产精品久久在线 | 久久精品久久久久久 | 在线视频亚洲 | 日韩视频精品在线 | 91免费在线播放 | 99久久亚洲| 精品久久久久久亚洲精品 | 精品国产乱码久久久久久丨区2区 | 欧美国产一区二区 | 一本一道久久a久久精品综合 | 欧美一区二区三区在线观看 | 99精品免费在线观看 | 91精品久久久久久久久中文字幕 | 免费视频色 | 欧美在线观看一区 | 成年无码av片在线 | 国产精品欧美大片 | 亚洲欧洲成人在线 | 日韩性在线 | 国产色网站 |