-1

请帮助我正在尝试准备一个需要在 PIC16F877A 和 GSM sim900 之间进行串行通信的项目,以便我可以从远程发送和接收短信这里是用 MPLAB XC8 编写的发送短信的代码和平

           UART_Write_Text("AT+CMGF=1");
         __delay_ms(500);
          UART_Write_Text("AT+CMGS=\"+25XXXXXXXXX\"\n\r");
          __delay_ms(500);
          UART_Write_Text("Fuse number 1 had blown up");
          __delay_ms(500);
          UART_Write(26);
        __delay_ms(6000);
         UART_Write_Text("AT+CMGF=1");
         __delay_ms(500);
          UART_Write_Text("AT+CMGS=\"+255XXXXXXX\"\n\r");
          __delay_ms(500);
          UART_Write_Text("Fuse number 2 had blown up");
          __delay_ms(600);
          UART_Write(0x1A);
        __delay_ms(6000);
         UART_Write_Text("ATD+25XXXXXXX;");
         __delay_ms(6000);`

你可以看到我试图检查问题是否是用于终止短信的 ASCII 字符 26,但问题是 PIC 芯片无法与 GSM 通信,由于电压等级不同我尝试使用 MAX232,我最初通过MAX232制作的接口如下图,通过MAX232与PIC16F877A的GSM接口但没有发送,我尝试在没有max232的情况下交换串行引脚仍然没有发送。然后我尝试用 GSM SIM900A min 更改 GSM SIM900,它具有三个端口选项,RS232、3V Tx 和 Rx、5V Tx 和 Rx,因为 PIC16F877a 它的逻辑电压是 5v,所以我使用了 5V 端口但仍然没有发送。但 GSM 和 PIC 都通过 5v FTDI 分支端口与笔记本电脑的超级终端进行良好通信。

4

1 回答 1

0

恐怕您必须首先限制您的问题:硬件或软件。你有你的连接模式吗?

另一方面,在您的代码中,您使用此功能:

UART_Write_Text("AT+CMGF=1");

你不应该用\r\n\n\r完成那行,或者UART_Write_Text为你做吗?

于 2017-07-12T11:25:31.173 回答