找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2074|回复: 2
打印 上一主题 下一主题
收起左侧

基于AT89S52+SIM300 GPRS的远程控制系统程序

[复制链接]
跳转到指定楼层
楼主


单片机源程序如下:
  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>    //串口发送接收程序
  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命令发送OK

  21. uchar strcall[]="ATD15851861610";  //要拨打的电话号码
  22. uint len=15;                       //strcall[] 的长度
  23. uint switch = 0;                   //SIM300 reset 成功

  24.         
  25. /*****************************************************************************************
  26. *函数名称:init_IO(void)
  27. *函数功能:单片机I/O初始化
  28. *入口函数:无
  29. *出口函数:无
  30. *****************************************************************************************/               
  31. void init_IO(void)
  32. {
  33.     PWR_ON=0;
  34.     PRW_KEY=0;
  35. }
  36. /*****************************************************************************************
  37. *函数名称:SIM300_reset(void)
  38. *函数功能:SIM300复位
  39. *入口函数:无
  40. *出口函数: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);    //模块开启或关闭后等待3S
  48.   
  49.    PWR_KEY=0;        //pwrkey须先置高大于2s,再置低之后,才能正确复位模块
  50.   
  51.    delay_ms(2500);
  52.   
  53.    return SWITCH;

  54. }
  55. /*****************************************************************************************
  56. *函数名称:SendAT(void)
  57. *函数功能:发送AT命令
  58. *入口函数:无
  59. *出口函数:AT_SEND_OK
  60. *****************************************************************************************/               
  61. uint SendAT(void)
  62. {

  63.         send_str(strcall[],len);  //调用 Target.c里的send_str()
  64.                
  65.         return AT_SEND_OK;
  66. }
  67. /*****************************************************************************************
  68. *函数名称:void main(int argc, char **argv)
  69. *函数功能:主函数
  70. *入口函数:无
  71. *出口函数:无
  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();    //发送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的远程控制系统.zip (46.85 KB, 下载次数: 38)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:65956 发表于 2020-11-2 10:29 | 只看该作者
你这程序有点怪,那些初始化都放在主循环里,那运行起来都是在循环中,这样没必要吧
回复

使用道具 举报

板凳
ID:385637 发表于 2020-12-17 10:31 | 只看该作者
初始化放无限循环中?那不是一直无限次初始化
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表