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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 9201|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

用Arduino做BP機(jī)編碼程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:18867 發(fā)表于 2019-6-4 15:39 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用Arduino做BP機(jī)POCSAG編碼程序,配合寶峰5R成功呼響大顧問(wèn)機(jī),用串口助手發(fā)送字符,發(fā)送格式a+1234567+b+信息(a=N或P向位,1234567為呼機(jī)在7位地址碼,b=1-4,為鈴聲)如:N12345671測(cè)試!

Arduino源程序如下:
  1. #define uchar unsigned char
  2. #define uint unsigned int
  3. String comdata = "";
  4. unsigned long addr;

  5. int PTT = 10; //PTT控制端
  6. int TX=9;//數(shù)據(jù)輸出端
  7. int ys=819;//延時(shí)
  8. unsigned long tem;
  9. uchar  Tx_Num;
  10. unsigned long  calc_bch_and_parity(unsigned long cw_e) //BCH校驗(yàn)和奇偶校驗(yàn)函數(shù)
  11. {
  12.     uchar i;
  13.    uchar  parity = 0; //奇偶校驗(yàn)計(jì)數(shù)   
  14.    unsigned long local_cw; //臨時(shí)存放數(shù)         
  15.    local_cw=cw_e;//保存cw_e參數(shù)值
  16.    for(i=1;i<=21; i++,cw_e<<=1)           
  17.        if (cw_e & 0x80000000) cw_e ^= 0xED200000;  
  18.    cw_e=cw_e&0xFFC00000;//保留前10位,BCH校驗(yàn)值共11位,只保留前10位有效數(shù)據(jù)         
  19.    local_cw |= (cw_e >> 21); //BCH校驗(yàn)數(shù)移至第22位到31位,BCH共10位,并和原始數(shù)據(jù)相加
  20.    cw_e=local_cw;         
  21.    for(i=0; i<31; i++, cw_e<<=1) if(cw_e&0x80000000) parity++;        
  22.    if(parity%2) local_cw+=1;//從1至31位判斷為奇數(shù)則后面加1補(bǔ)充為偶數(shù)
  23.    return local_cw;
  24.       
  25. }  
  26. unsigned long  calc_addr( unsigned long add,uchar fun ) //地址轉(zhuǎn)換,第1參數(shù)為地址,第2參數(shù)為功能
  27. {
  28.   unsigned long adr;
  29.   unsigned long tem;   
  30.   Tx_Num=(uchar)(add&0x00000007);//獲取地址發(fā)射的幀位次,111位第7幀,后3位地址數(shù)據(jù)隱藏不發(fā)送,接收按幀位還原
  31.   adr=0x00;
  32.   adr=add&0xFFFFFFF8;        //去掉地址碼后3位
  33.   adr=adr<<10;  //地址左移10位
  34.   tem=0x00;
  35.   tem=fun;  //功能位
  36.   tem=tem<<11;//功能位左移11位,功能位為00 01 10 11四種狀態(tài),代表4個(gè)地址碼
  37.   adr=adr|tem; //地址碼和功能位合成地址碼;
  38.   return adr;
  39. }

  40. void Send_start(unsigned long s)
  41. {
  42.     uchar i,n;
  43.     unsigned long tem;
  44.     for(i=0; i<20; i++)//發(fā)送576個(gè)前導(dǎo)10101010101010
  45.     {
  46.         tem=s;
  47.         for (n=0; n<32; n++)
  48.         {
  49.             if(tem&0x80000000)
  50.             {
  51.                 digitalWrite(TX,HIGH);
  52.             }
  53.             else
  54.             {
  55.                 digitalWrite(TX,LOW);
  56.             }
  57.             delayMicroseconds(ys);//等待延時(shí)結(jié)束 0.833ms
  58.             tem<<=1;
  59.         }
  60.     }
  61. }
  62. void Send_nill()//發(fā)送閑置位
  63. {
  64.     uchar n;
  65.     unsigned long s=0x7A89C197;
  66.     for(n=0; n<32; n++)
  67.     {
  68.         if(s&0x80000000)
  69.         {
  70.             digitalWrite(TX,LOW);
  71.         }
  72.         else
  73.         {
  74.             digitalWrite(TX,HIGH);
  75.         }
  76.         delayMicroseconds(ys);//等待延時(shí)結(jié)束 0.833ms
  77.         s<<=1;
  78.     }
  79. }
  80. void Send_Num(unsigned long s,char npi)         //發(fā)送數(shù)據(jù)
  81. {
  82.     uchar n;
  83.     int xx0,xx1;
  84.     if(npi=='P'){xx1=1;xx0=0;}
  85.     if(npi=='N'){xx1=0;xx0=1;}
  86.     for (n=0; n<32; n++)
  87.     {
  88.         if(s&0x80000000)
  89.         {
  90.             digitalWrite(TX,xx1);
  91.             //Serial.print(xx1);
  92.         }
  93.         else
  94.         {
  95.             digitalWrite(TX,xx0);
  96.             //Serial.print(xx0);
  97.         }
  98.         delayMicroseconds(ys);//等待延時(shí)結(jié)束 0.833ms
  99.         s<<=1;
  100.     }
  101. }
  102. void setup() {
  103.   Serial.begin(9600); //設(shè)置波特率為9600,一般是這個(gè)波特率
  104.   pinMode(TX,OUTPUT);   
  105.   pinMode(PTT,OUTPUT);
  106. }

  107. void loop() {
  108.    while (Serial.available() > 0)  //讀取串口數(shù)據(jù)
  109.     {
  110.       comdata += char(Serial.read());
  111.       delay(2);
  112.       }
  113.       if (comdata.length() > 0) //如果有數(shù)據(jù)進(jìn)入處理
  114.       {
  115.         String np = comdata.substring(0,1);         
  116.         char npzf=toupper(np[0]);
  117.         String ly=comdata.substring(8,9);
  118.         int lyi=ly[0];
  119.         String dz = comdata.substring(1,8);         //獲取地址碼
  120.         unsigned long az=dz.toInt();                //地址碼s轉(zhuǎn)類型
  121.         tem=calc_addr(az,lyi-48);                        //地址碼移位處理
  122.         addr=calc_bch_and_parity(tem);              //地址碼BCH校驗(yàn)
  123.         String msgdata = comdata.substring(9,200);  //截取信息碼內(nèi)容
  124.         int len = msgdata.length()+10;               //獲取信息碼字節(jié)長(zhǎng)度(+4為了讓長(zhǎng)度大于1幀,就不用1個(gè)漢字還用做判斷了)
  125.         byte hui[200]={0};
  126.         digitalWrite(PTT,LOW);                      //對(duì)講機(jī)ppt
  127.         delay(500);                                 //延時(shí)500ms                              
  128.         unsigned long mess[200]={0};                //信息碼數(shù)組         
  129.                                             //信息碼數(shù)組元素
  130.         unsigned long msg;
  131.         int ll=0;
  132.         int wz=0;
  133.         if(!(msgdata[0]&0x80)){hui[wz]=0x0f;wz++;}
  134.         for(int i=0;i<len;i++)
  135.         {
  136.          if(!(msgdata[i]&0x80) && msgdata[i-1]&0x80 && i>0){hui[wz]=0x0f;wz++;}
  137.           hui[wz]=msgdata[i];
  138.           wz++;
  139.           if(!(msgdata[i]&0x80) && msgdata[i+1]&0x80){hui[wz]=0x0e;wz++;}
  140.          }
  141.           wz=0;
  142.           int k=1;
  143.           for(int n=0;n<=len;n++)
  144.           {
  145.             for(int j=0;j<7;j++)
  146.             {
  147.               if(hui[wz]&0x01){msg|=0x00000001;}
  148.               msg<<=1;
  149.               hui[wz]>>=1;
  150.               ll++;
  151.               if(ll%20==0)
  152.               {
  153.                 msg<<=10;
  154.                 msg|=0x80000000;
  155.                 mess[k]=calc_bch_and_parity(msg);
  156.                 msg=0;
  157.                 k++;
  158.               }
  159.             }
  160.             wz++;
  161.           }
  162.             Send_start(0xAAAAAAAA);                 //發(fā)送前言碼
  163.             Send_Num(0x7CD215D8,npzf);                   //發(fā)送同步碼
  164.             mess[0]=addr;                           //地址碼放入信息碼第一碼字
  165.             for(int j=0;j<120;j++)                  //循環(huán)發(fā)送信息碼
  166.             {
  167.               if(mess[j]!=0){Send_Num(mess[j],npzf);}    //數(shù)組元素不為0的發(fā)送
  168.               Serial.println(mess[j],BIN);

  169.               if((j+1)%16==0 && j!=0){Send_Num(0x7CD215D8,npzf);}  //每隔8幀發(fā)送一個(gè)同步碼
  170.             }
  171.           Send_Num(0x7A89C197,npzf);                   //末尾發(fā)送閑置碼
  172.           comdata="";
  173.           msgdata="";
  174.           }
  175.           digitalWrite(PTT,HIGH);
  176.           }

復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2019-6-5 05:50 | 只看該作者
好東東啊 家里剛好還有一個(gè)bp機(jī),不知道樓主的電路該如何連接啊?
回復(fù)

使用道具 舉報(bào)

板凳
ID:452731 發(fā)表于 2019-7-8 16:13 | 只看該作者
有詳細(xì)電路連接就是最好不過(guò)了
回復(fù)

使用道具 舉報(bào)

地板
ID:373684 發(fā)表于 2019-10-10 20:30 | 只看該作者
把壓縮文件下了,,可能在那里有吧
回復(fù)

使用道具 舉報(bào)

5#
ID:617305 發(fā)表于 2019-10-13 11:05 | 只看該作者
這個(gè)BP機(jī)不是已經(jīng)淘汰了嗎?做這個(gè)有實(shí)際用處嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:688099 發(fā)表于 2020-1-25 10:33 | 只看該作者
樓主,你好,請(qǐng)問(wèn)怎么配合寶峰5R,有具體的接線圖或說(shuō)明嗎,非常感謝!
回復(fù)

使用道具 舉報(bào)

7#
ID:686444 發(fā)表于 2020-1-29 19:34 | 只看該作者
看 代碼應(yīng)該是9腳連對(duì)講機(jī)輸出 , 10腳連對(duì)講機(jī)輸出控制
回復(fù)

使用道具 舉報(bào)

8#
ID:934976 發(fā)表于 2021-6-8 18:33 | 只看該作者
請(qǐng)問(wèn)一下有沒(méi)有連線實(shí)物圖呢?
回復(fù)

使用道具 舉報(bào)

9#
無(wú)效樓層,該帖已經(jīng)被刪除
10#
ID:1031190 發(fā)表于 2022-5-31 10:15 | 只看該作者
請(qǐng)問(wèn)一下有沒(méi)有連線實(shí)物圖呢?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美aaaaaa | 久久国产欧美日韩精品 | 青青草中文字幕 | 毛片一区二区 | 精品久久久久久久久久 | 欧美乱淫视频 | 欧美精品久久久久 | 亚洲三级在线观看 | 日韩不卡一区二区三区 | 久久天堂网 | 日韩伦理电影免费在线观看 | 天天操天天操 | 国产精品成人一区二区三区 | 国产成人精品一区二区三区视频 | a在线观看| 国产乱码精品一区二区三区忘忧草 | 国产农村妇女毛片精品久久麻豆 | 日本不卡一区二区三区 | 国产精品欧美一区二区三区不卡 | 亚洲 欧美 另类 综合 偷拍 | 国产99小视频 | 久久国内精品 | 天天干狠狠操 | 91国产精品在线 | 成人精品一区二区户外勾搭野战 | jizz18国产 | 日韩一二三区视频 | 久久99视频 | 日韩精品一区二区三区中文在线 | 欧美性大战久久久久久久蜜臀 | 亚洲精品自拍视频 | 在线一区观看 | 日本网站免费观看 | 国产精品一级 | 国产福利视频网站 | 日韩成人av在线 | 黄色成人在线观看 | 成人免费视频播放 | 国产欧美一区二区三区久久手机版 | 久久国产精品久久 | 亚洲日韩中文字幕一区 |