找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机向SIM800A发送AT指令,但SIM800A不发送信息是什么原因?

[复制链接]
跳转到指定楼层
楼主
当单片机与电脑通信时,串口助手显示如下:


我独自用电脑操作串口助手发送AT指令,SIM800A成功发送信息:


但当我单片机与SIM800A通信时,SIM800A没有执行指令。想请教各位专家是什么原因?接线如下:



代码如下:
  1. #include<REGX52.H>
  2. #include<intrins.h>
  3. #include "Delay.h"
  4. #include "LCD1602.h"
  5. #include "ADC0832.h"
  6. #include<stdio.h>
  7. #define FOSC_110592M
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. unsigned int AD_X;
  11. unsigned int AD_Y;
  12. unsigned int  rec_data_len_uart=0;   
  13. unsigned char idata Buffer_Uart0_Rec[25]={0};         
  14. void SerialInti()
  15. {
  16.     TMOD=0x20;
  17. #ifdef FOSC_12M           
  18.     TH1=0xf3;
  19.     TL1=0xf3;   
  20. #else     
  21.     TH1=0xfd;
  22.     TL1=0xfd;
  23. #endif
  24.     TR1=1;
  25.     SM0=0;
  26.     SM1=1;
  27.     REN=1;
  28.     EA=1;
  29.     ES=1;
  30. }
  31. void Serial_interrupt() interrupt 4
  32. {
  33.     unsigned char temp_rec_data_uart0;   
  34.     temp_rec_data_uart0 = SBUF;
  35.     RI=0;
  36.     Buffer_Uart0_Rec[rec_data_len_uart]=temp_rec_data_uart0;   
  37.     rec_data_len_uart++;
  38.     if(rec_data_len_uart>24)
  39.     {
  40.         rec_data_len_uart=0;     
  41.     }   
  42. }
  43. void Uart1Send(uchar c)
  44. {
  45.     SBUF=c;
  46.     while(!TI);
  47.     TI=0;   
  48. }
  49. void Uart1Sends(uchar *str)
  50. {
  51.     while(*str!='\0')
  52.     {
  53.         Uart1Send(*str);
  54.         
  55.         
  56.         
  57.         str++;
  58.     }
  59. }
  60. void main()
  61. {
  62.     LCD_Init();
  63.     SerialInti();
  64.     LCD_ShowString(1,1,"X     Y");
  65.     Delay(10000);
  66.     while(1)
  67.     {
  68.         AD_X=ADC0832(1);
  69.         LCD_ShowNum(2,1,AD_X,3);
  70.     AD_Y=ADC0832(0);
  71.         LCD_ShowNum(2,6,AD_Y,3);
  72.         if((AD_X<=47  ||  AD_X>=126) || (AD_Y>=141 ||  AD_Y<=57))
  73.         {
  74.                
  75.                 Uart1Sends("AT\r\n");
  76.                 Delay(2000);
  77.                 Uart1Sends("AT+CSCS=\"UCS2\"\r\n");
  78.                 Delay(2000);
  79.                 Uart1Sends("AT+CMGF=1\r\n");
  80.                 Delay(2000);
  81.             Uart1Sends("AT+CSCA?\n");
  82.                 Delay(2000);
  83.             Uart1Sends("AT+CSMP=17,167,0,25\r\n");
  84.                 Delay(2000);
  85.                 Uart1Sends("AT+CMGS=\"00310039003100360037003500340036003700320034\"\r\n");
  86.                                                                                        
  87.                                                                                        
  88.                 Delay(2000);
  89.                 Uart1Sends("4F7F7528800553EF80FD64545012FF0C8BF7524D5F800058005800585E2E52A9FF01");
  90.                 Uart1Send(0x1a);
  91.                 Delay(8000);
  92.         }
  93.         Delay(100);
  94.     }
  95. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:236035 发表于 2024-3-12 09:16 | 只看该作者
先用电脑和SIM800A通讯,成功后再用单片机通讯。
回复

使用道具 举报

板凳
ID:314651 发表于 2024-3-12 11:45 | 只看该作者
首先看下规格书,电压使用是否正确。如果没问题,再使用串口助手发送指令,测试没问题,再上单片机。单片机的波特率需要注意与晶振的匹配。
回复

使用道具 举报

地板
ID:1112757 发表于 2024-3-12 15:15 | 只看该作者
ly1972001 发表于 2024-3-12 09:16
先用电脑和SIM800A通讯,成功后再用单片机通讯。

试过了,可以。
回复

使用道具 举报

5#
ID:1019324 发表于 2024-3-12 15:31 | 只看该作者
实在不行就验证大小端是否一致
回复

使用道具 举报

6#
ID:1112757 发表于 2024-3-12 16:37 | 只看该作者
找到原因了,我接线错误。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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