找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1617|回復: 5
收起左側(cè)

51單片機向SIM800A發(fā)送AT指令,但SIM800A不發(fā)送信息是什么原因?

[復制鏈接]
ID:1112757 發(fā)表于 2024-3-11 22:39 | 顯示全部樓層 |閱讀模式
當單片機與電腦通信時,串口助手顯示如下:

51hei.png
我獨自用電腦操作串口助手發(fā)送AT指令,SIM800A成功發(fā)送信息:

51hei1.png
但當我單片機與SIM800A通信時,SIM800A沒有執(zhí)行指令。想請教各位專家是什么原因?接線如下:
16b4a7143db14db3b2268c38d8bcdde4.jpeg


代碼如下:
  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. }
復制代碼
回復

使用道具 舉報

ID:236035 發(fā)表于 2024-3-12 09:16 | 顯示全部樓層
先用電腦和SIM800A通訊,成功后再用單片機通訊。
回復

使用道具 舉報

ID:314651 發(fā)表于 2024-3-12 11:45 | 顯示全部樓層
首先看下規(guī)格書,電壓使用是否正確。如果沒問題,再使用串口助手發(fā)送指令,測試沒問題,再上單片機。單片機的波特率需要注意與晶振的匹配。
回復

使用道具 舉報

ID:1112757 發(fā)表于 2024-3-12 15:15 | 顯示全部樓層
ly1972001 發(fā)表于 2024-3-12 09:16
先用電腦和SIM800A通訊,成功后再用單片機通訊。

試過了,可以。
回復

使用道具 舉報

ID:1019324 發(fā)表于 2024-3-12 15:31 | 顯示全部樓層
實在不行就驗證大小端是否一致
回復

使用道具 舉報

ID:1112757 發(fā)表于 2024-3-12 16:37 | 顯示全部樓層
找到原因了,我接線錯誤。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表