2017-06-10 54 views
-1

請幫我準備一個項目,需要PIC16F877A和GSM sim900之間的串行通信,以便我可以發送和接收來自遠程的短信這裏是發送短信的代碼和平寫在MPLAB XC8`GSM和PIC16F877A之間的seial通信

  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接口,如下圖所示,GSM interface with PIC16F877A through MAX232但沒有發送,我試圖交換串口引腳沒有max232仍然沒有發送。然後我試着用GSM SIM900A min來改變GSM SIM900,它有三個端口,RS232,3V Tx和Rx,5V Tx和Rx選項,由於PIC16F877a的邏輯電壓是5V,因此我使用5V端口,但仍沒有發送任何數據。但GSM和PIC都可以通過5v FTDI分線端口與筆記本電腦的超級終端良好地通信。

回答

0

恐怕你必須首先限制你的問題:硬件或軟件。你有你的連接模式嗎?

用另一隻手,在你的代碼使用此功能:

UART_Write_Text("AT+CMGF=1"); 

你不應該結束了\ r \ n\ n \ r,或UART_Write_Text該行是否適合你?