標題: 基于AT89S52+SIM300 GPRS的遠程控制系統(tǒng)程序 [打印本頁]

作者: v帆帆帆帆    時間: 2020-10-30 16:57
標題: 基于AT89S52+SIM300 GPRS的遠程控制系統(tǒng)程序


單片機源程序如下:
  1. /****************************************************************************************
  2. * 文件名稱:SIM300.c
  3. * 說明:本文件為單片機控制GPRS模塊程序文件
  4. * 功能:單片機控制SIM300模塊撥打電話
  5. * 修改:無
  6. * 版本:1.0.0
  7. * 作者:YuanDong
  8. * 時間:2009.8.5
  9. *****************************************************************************************/
  10. #include <51reg.h>
  11. #include <string.h>
  12. #include <stdio.h>      /*標準輸入輸出定義*/

  13. #include <Target.h>  
  14. #include <Target.c>    //串口發(fā)送接收程序
  15.    

  16. #define PWR_ON   P2.5      //SIM300模塊供電腳
  17. #define PWR_Key  P2.4      //SIM300上電控制腳

  18. sbit  P2.4=P2^4;
  19. sbit  P2.5=P2^5;

  20. #define                AT_SEND_OK         0    //AT命令發(fā)送OK

  21. uchar strcall[]="ATD15851861610";  //要撥打的電話號碼
  22. uint len=15;                       //strcall[] 的長度
  23. uint switch = 0;                   //SIM300 reset 成功

  24.         
  25. /*****************************************************************************************
  26. *函數(shù)名稱:init_IO(void)
  27. *函數(shù)功能:單片機I/O初始化
  28. *入口函數(shù):無
  29. *出口函數(shù):無
  30. *****************************************************************************************/               
  31. void init_IO(void)
  32. {
  33.     PWR_ON=0;
  34.     PRW_KEY=0;
  35. }
  36. /*****************************************************************************************
  37. *函數(shù)名稱:SIM300_reset(void)
  38. *函數(shù)功能:SIM300復位
  39. *入口函數(shù):無
  40. *出口函數(shù):SWITCH
  41. *****************************************************************************************/               
  42. uint SIM300_reset(void)
  43. {
  44.    PWR_ON=1;           //GPRS PWR CTL on
  45.    PWR_KEY=1;         //GPRS PWRKEY CTL hight
  46.   
  47.    delay_ms(3000);    //模塊開啟或關(guān)閉后等待3S
  48.   
  49.    PWR_KEY=0;        //pwrkey須先置高大于2s,再置低之后,才能正確復位模塊
  50.   
  51.    delay_ms(2500);
  52.   
  53.    return SWITCH;

  54. }
  55. /*****************************************************************************************
  56. *函數(shù)名稱:SendAT(void)
  57. *函數(shù)功能:發(fā)送AT命令
  58. *入口函數(shù):無
  59. *出口函數(shù):AT_SEND_OK
  60. *****************************************************************************************/               
  61. uint SendAT(void)
  62. {

  63.         send_str(strcall[],len);  //調(diào)用 Target.c里的send_str()
  64.                
  65.         return AT_SEND_OK;
  66. }
  67. /*****************************************************************************************
  68. *函數(shù)名稱:void main(int argc, char **argv)
  69. *函數(shù)功能:主函數(shù)
  70. *入口函數(shù):無
  71. *出口函數(shù):無
  72. *****************************************************************************************/        
  73. void main(void)
  74. {

  75.   while(1)
  76.   {
  77.    int i,j,k,status;
  78.    
  79.    init_IO();        //I/O 初始化
  80.    usart0_initial(); //串口初始化
  81.    SIM300_reset();   //SIM300 復位
  82.   

  83.    
  84.    
  85.    for(i=0;i<10000;i++)
  86.    for(j=0;j<100;j++)
  87.    for(k=0;k<100;k++);   //延時一段時間
  88.    
  89.    status = SendAT();    //發(fā)送AT命令
  90.    
  91.    for(k=0;k<20000;k++);
  92.    
  93.    if(!status)
  94.    {
  95.      
  96.      printf("GPRS link ok!");
  97.    }
  98.    else
  99.    {

  100.      printf("GPRS link error!");  
  101.    }
  102.             
  103.   }
  104.   
  105. }
復制代碼

所有程序51hei提供下載:
基于AT89S52+GPRS的遠程控制系統(tǒng).zip (46.85 KB, 下載次數(shù): 38)


作者: aking991    時間: 2020-11-2 10:29
你這程序有點怪,那些初始化都放在主循環(huán)里,那運行起來都是在循環(huán)中,這樣沒必要吧
作者: shenyuqiu    時間: 2020-12-17 10:31
初始化放無限循環(huán)中?那不是一直無限次初始化




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1