搜索
bottom↓
回复: 1

DTMF软解码中的怪现象,哪位高人给分析一下

[复制链接]

出0入0汤圆

发表于 2010-9-15 21:53:35 | 显示全部楼层 |阅读模式
从论坛中参考hendry的DTMF软解码程序,但是在使用时始终不间断输出,在电话摘机时按键,串口接收的DTMF解码结果如下:
6666111#####11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111166611777**#####7777788800000**77788999000007777700#####8887788800###7777788888000008877700###DD88877888#####8877788000##0008877788###DD8887788800666AA333##999##########99###############################################################################################999#####00########88111BB000##88899555111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111CC666##AAA99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966AAA66BBB1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111AAA5#006666666666666663366666666666666666666666666666666666666666666666666666666666666666666666666666666666662227774411111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111BB446666666633333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333336663322233555992224411111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111116
实际DTMF按键为:#、9、6、3
想进行数字滤波处理一下,思路是:连续解码5次,只有连续5次一致时、且不为0时再串口输出,但是一滤波处理,解码数组就变成了0x00不知为何?检查了几遍也没看出问题!哪位高人给看一下!谢谢了!尤其欢迎hendry给出意见
void output_dtmf(void)
{
  signed char ch;
  unsigned char i, j;
  unsigned char ch_num[5];
       
  init_dtmf_decoder();        // 初始化解码器
  j = 0;
  sei();
  do
  {
    for(i=0;i<5;i++)
    {
      if(!is_fifo_empty())
      {
        ch = read_fifo();
        ch += -128;
       ch_num = decode_dtmf(ch);
      }
                       
     /* 验证输出测试 1 */
     transmitByte(ch_num);        // 解码结果正常输出!
    }
               
    for(i=0;i<5;i++)        // 一致性比较
   {
      /* 验证输出测试 2 */
      transmitByte(ch_num);        // 输出为NULL!即ch_num变为0!

      if(ch_num[0]==ch_num)
      {
        j++;
                               
        /* 验证输出测试 3 */
        transmitByte(ch_num); // 输出为NULL!即ch_num变为0!
      }
      else
      {
        j = 0;
        break;
      }
   }
               
   if((j==4) && (ch_num[0]!=0))
   {
     transmitByte(ch_num[0]);        // 没有输出!因为是NULL!即ch_num变为0!
     j = 0;
   }
                       
  } while( !(PINB & _BV(PB3)) );
  cli();
}
这是hendry的DTMF软解码参考程序:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3231035&bbs_page_no=1&search_mode=1&search_text=软解码&bbs_id=1000

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-8-6 11:28:28 | 显示全部楼层
为什么出来那么多1的?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 14:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表