久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3092|回復: 7
打印 上一主題 下一主題
收起左側

求助大神,單片機接收不到sim800a的消息。

[復制鏈接]
跳轉到指定樓層
樓主
單片機是stc89c52rc的最小系統,代碼在下面:
  1. #include <reg51.h>
  2. #include <string.H>
  3. #include <intrins.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int       
  6. unsigned int  rec_data_len_uart=0;    //標記Buffer_Uart0接收數組
  7. unsigned char idata Buffer_Uart0_Rec[25]={0};                 //Uart0中斷接收數組
  8. uint flag=0;
  9.    
  10. void SerialInti()//初始化程序(必須使用,否則無法收發)
  11. {
  12.         TMOD=0x20;//定時器1操作模式2:8位自動重載定時器

  13.        
  14.         TH1=0xfd;//裝入初值,波特率9600
  15.         TL1=0xfd;

  16.         TR1=1;//打開定時器
  17.         SM0=0;//設置串行通訊工作模式,(10為一部發送,波特率可變,由定時器1的溢出率控制)
  18.         SM1=1;//(同上)在此模式下,定時器溢出一次就發送一個位的數據
  19.         REN=1;//串行接收允許位(要先設置sm0sm1再開串行允許)
  20.         EA=1;//開總中斷
  21.         ES=1;//開串行口中斷       
  22. }

  23. /*串行通訊中斷,收發完成將進入該中斷*/
  24. void Serial_interrupt() interrupt 4
  25. {
  26.         if(RI)
  27.         {
  28.                 unsigned char temp_rec_data_uart0;       
  29.                 temp_rec_data_uart0 = SBUF;//讀取接收數據               
  30.                 RI=0;//接收中斷信號清零,表示將繼續接收                       
  31.                 Buffer_Uart0_Rec[rec_data_len_uart]=temp_rec_data_uart0;        //接收數據
  32.                 rec_data_len_uart++;
  33.                 if(rec_data_len_uart>24)
  34.                 {
  35.                         rec_data_len_uart=0;         //從頭開始接收數據
  36.                 }       
  37.   }
  38. }
  39. void Uart1Send(uchar c)
  40. {
  41.         SBUF=c;
  42.         while(!TI);//等待發送完成信號(TI=1)出現
  43.         TI=0;       
  44. }
  45. //串行口連續發送char型數組,遇到終止號/0將停止
  46. void Uart1Sends(uchar *str)
  47. {
  48.         while(*str!='\0')
  49.         {
  50.                 SBUF=*str;
  51.                 while(!TI);//等待發送完成信號(TI=1)出現
  52.                 TI=0;
  53.                 str++;
  54.         }
  55. }
  56. //延時函數大概是1s鐘,不過延時大的話不準...
  57. void DelaySec(int sec)
  58. {
  59.         uint i , j= 0;
  60.         for(i=0; i<sec; i++)
  61.         {
  62.                 for(j=0; j<65535; j++)
  63.                 {       
  64.                 }
  65.         }
  66. }
  67. void clear_rec_data()
  68. {
  69.         uchar i;
  70.         for(i=0;i<strlen(Buffer_Uart0_Rec);i++)
  71.         {
  72.                 Buffer_Uart0_Rec[i]='\0';
  73.        
  74.         }
  75.         rec_data_len_uart=0;
  76. }

  77. uchar hand(uchar *ptr)
  78. {
  79.         if(strstr(Buffer_Uart0_Rec,ptr)!=NULL)
  80.                 return 1;
  81.         else
  82.                 return 0;
  83. }

  84. void main()
  85. {
  86.         uchar i = 0;
  87.         SerialInti();
  88.         DelaySec(1);
  89.         Uart1Sends("AT\r\n\0");
  90.         while(!hand("OK"))
  91.         {
  92.                 clear_rec_data();
  93.                 Uart1Sends("AT\r\n\0");
  94.                 DelaySec(1);
  95.         }
  96.         Uart1Sends("AT+CSCS=\"GSM\"\r\n\0");
  97.         DelaySec(1);//延時大約3秒
  98.         Uart1Sends("AT+CMGF=1\r\n\0");
  99.         DelaySec(1);//延時3秒
  100.         Uart1Sends("AT+CSCA?\r\n\0");
  101.         DelaySec(1);//延時3秒
  102.         Uart1Sends("AT+CSMP=17,167,0,241\r\n\0");
  103.         DelaySec(1);//延時3秒
  104.         Uart1Sends("AT+CMGS=\"+86153xxxxxxxx\"\r\n\0");//電話號
  105.         DelaySec(1);//延時3秒
  106.         Uart1Sends("HELLO 123\0");//修改短信內容,短信內容可為英文和數字
  107.         DelaySec(1);//延時3秒
  108.         Uart1Send(0x1a);

  109. }
復制代碼
出現的問題是單片機發送AT指令但是讀取不到sim800a模塊返回的ok消息,但是在串口調試助手里面輸入OK是可以進入下面的步驟的。
sim800a的電源是由一根5v轉12v的現供給的,單片機通過microusb連接電腦,sim800a的串口和接地還有vmcu連接到單片機上面。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:865103 發表于 2020-12-22 08:25 | 只看該作者
單片接在普中單片機開發板上面拔掉vmcu線可以使用,但是接在我的貼片最小系統上面拔掉哪根線都沒用。
回復

使用道具 舉報

板凳
ID:865103 發表于 2020-12-22 09:06 | 只看該作者
可能是電源問題,還在查找
回復

使用道具 舉報

地板
ID:865103 發表于 2020-12-22 10:05 | 只看該作者
sim800換5v的電源也還是不行
回復

使用道具 舉報

5#
ID:369312 發表于 2020-12-22 10:46 | 只看該作者
先用串口工具試試是不是SIM800的問題
回復

使用道具 舉報

6#
ID:865103 發表于 2020-12-22 10:50 | 只看該作者
君莫笑1 發表于 2020-12-22 10:46
先用串口工具試試是不是SIM800的問題

可以用單片機控制發短信,但是就是接收數據不正常,使用直插的單片機,拔一拔線再插線可以正常收sim800的消息,單獨用電腦連sim800可以正常收發at指令
回復

使用道具 舉報

7#
ID:865103 發表于 2020-12-22 10:52 | 只看該作者
君莫笑1 發表于 2020-12-22 10:46
先用串口工具試試是不是SIM800的問題

拔線是先拔掉下面兩根vmcu和接地的線,再把最下面的232的接線的接地插到單片機上就可以正常使用了
回復

使用道具 舉報

8#
ID:865103 發表于 2020-12-22 12:22 | 只看該作者
在貼片的stc89c52rc上面怎么搞都成功不了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 大色av| 久久久久久久成人 | 欧美激情国产精品 | 我要看一级黄色片 | 中文在线观看免费网站 | 成人毛片在线播放 | 日韩av免费在线播放 | 亚洲精品久久久久久久久久久 | 天天色网站 | 黄色在线观看网址 | 激情综合婷婷 | h片免费观看| 国产激情综合五月久久 | 日韩亚洲欧美在线 | 丰满少妇高潮无套内谢 | 天天天天天干 | 亚洲永久免费视频 | 精品一区二区免费视频 | 成人毛片100免费观看 | 欧美日本在线 | 日韩成人在线播放 | 欧美老少妇 | 日韩av免费在线 | 欧美8888 | 精品免费视频 | 18视频在线观看 | 久久精品免费看 | 欧美一级特黄aa大片 | 永久免费看片在线播放 | a级片毛片 | 人人爽视频 | 欧美日韩精品久久久免费观看 | 亚洲精品综合 | 一区二区三区在线免费 | 国产视频一区二区三区四区 | 美女毛片视频 | 国产精品伦子伦免费视频 | 黄色片网站在线观看 | 51成人做爰www免费看网站 | 久久久精品一区二区三区 | 欧美a级成人淫片免费看 |