维库电子市场网
登录 免费注册 首页 | 行业黑名单 | 委托交易 | 帮助 | English
 
IC供应
IC求购
非IC供应
非IC求购
电子资讯
技术资料
商人论坛
 
技术文章 PDF资料 IC价格 引脚说明 电路图 IC替换 IC厂商 电子辞典
作者 主题 内容
采购元器件好去处--维库电子市场网推荐
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

用过MT8888的XDJM请指教

来源:21ic 作者:lets3 栏目:通信技术
用过MT8888的XDJM请指教
电话通信实验中,本人采用单片机控制MT8888做收发控制,
现在接收没有问题,但是发送始终不成功,现已焦头烂额,
恳请各位大侠好心人帮忙!
谢谢!

1楼: >>参与讨论
chunyang
先用音频放大器听听是否有输出
这样可以确定是你没有操作正确IC还是接口电路的问题,缩小范围是第一步。

2楼: >>参与讨论
君临城下
rfrrffr
好的,我做一下实验,谢谢!
目前我从示波器上看,输出脚没有信号,但是发送有中断,发送寄存器TDR也有置位,是不是可以说是数据已经发送完毕?

3楼: >>参与讨论
xiubing65
呵呵
别急,我解决拨号问题一共用了可能有10天左右,什么问题都被我遇上了。首先将8880的8脚负载断开,接一个10K电阻到地,用示波器(别告诉我你有哦)看8脚波形是否为DTMF波形,一定要是DTMF波形,如果是单音正弦波或没波形可能是没有初始化或初始化程序有问题。
    如果这儿正常可能是你的DTMF偶合电路有问题,将电路复原,在外线并一个电话,提机后用你的系统拨号,在电话中应该能听到拨号音,如果这个声音没有你平时用电话机拨号声音大,可能是幅度太小,可以用我推荐的那个电路,如果没一点反应,说明你的DTMF电路根本没有工作。

4楼: >>参与讨论
君临城下
5555
接了电阻了确实没有波形,我有进行初始化,依你的经验初始化应该注意什么呢?


5楼: >>参与讨论
xiubing65
初始化没什么特别要求,关键是要对
时序,关键要正确,比如写控制积存器和写发送积存器要求的逻辑就不同,根据我的经验没有初始化成功的概率比较大,没有初始化成功我遇见3种情况,一种是一会完全正常,一会不正常,就是没输出,2是从来都没输出,3是怎么搞都是输出正弦波单音,这要根据心片而定,但是8880通常不易损坏,我吹下来很烫,用水冷却后装上还能用,

6楼: >>参与讨论
xiubing65
还有
还有就是你的控制字,CA=0F,CB=0;我试过网上介绍的CA=D=B=C,好象只有CA=F才完全正常,其他都有少许问题。

7楼: >>参与讨论
君临城下
还是不行
还是不行啊,用音频放大器听过了没有声音
是不是应该首先怀疑操作的问题阿?

8楼: >>参与讨论
chunyang
那就显然是你对芯片操作有误了
仔细看看器件说明文档。

9楼: >>参与讨论
君临城下
困惑
如果是操作问题那为什么中断和标志位都有置位?
我觉得接受和拨号的控制上有相似之处阿,
为什么接收可以,拨号不行啊?
愁愁愁

10楼: >>参与讨论
lets3
我是发送没问题,接收有问题
你发你的接收程序给我看看吗

11楼: >>参与讨论
lets3
IC有坏了的可能,试换二片试试
我用MT8880CE,发送是可以打公司的分机了,有二片应是坏了的,换上去打不了605,用电话听只有一声DTMF,发不了三声,只有一片可以打到电话.你试换二片新的上去

12楼: >>参与讨论
lets3
我也搞到没法了!
xiubing65,,能不能给你的接收程序给我看看?我也搞到没法了!

13楼: >>参与讨论
xiubing65
你肯定是用监测状态位了
换成延时方式,不用等待状态位方式
还有,你到底是发送问题还有接收问题啊
怎么我一会见是接收一会是发送呢

14楼: >>参与讨论
lets3
请大家搞好的帮帮忙嘛
我的EMAIL:lets3@163.com

15楼: >>参与讨论
xiubing65
别轻易换芯片
根据我的经验,MT8880CE是不易损坏的,我换了三片,以为有问题,后来搞好后重新装上还能用,即使被吹风吹的很热,首先要确认软件和硬件没有问题,不在万不得以,别换芯片

16楼: >>参与讨论
lets3
我是接收问题!!
现在这个贴子下三个贴子就是我的求助贴子,里面有程序了,帮我看看接收时是那里出错了.发送没问题了,可以打到公司的电话了

17楼: >>参与讨论
君临城下
看看
我用的是51系列的单片机
#define WCM   XBYTE[0xBFff]//命令
#define WDATA XBYTE[0x3Fff]//数据
void Initial88(void)
{    
    uchar i;
    i=WCM;
    WCM=0X00;
    WCM=0X00;
    WCM=0X08;
    WCM=0X00;    
    i=WCM;
}//初始化

main(void)
{
Initial88();
....
....
WCM=0xfd;//接受
WCM=0X00;
k=WCM;
if(k&0x04)
{
    k=WDATA ;
}
....
....

}

我接收就是这样控制的,不知道对你有没有帮助
你通过电话都可以听到声音吗?你的输出有没有接放大器阿?

18楼: >>参与讨论
lets3
谢了,让我看看有什么地方不同,一会改改试试
我也是用51MCU,不过我是用ASM写的,

19楼: >>参与讨论
lets3
发送OK的了
TOUT出来,通过二个9014再到M97060互感,DTMF输入是互感过C104再过100K电阻到MT8880的IN-脚,负反电阻为470K,用示波器测IN-,几乎看不到波形(0.1V档了),不知是不是这里没有信号输入.但测C104100K接点时,波形很清晰,我想试一试把100K换成更小的电阻试试

20楼: >>参与讨论
lets3
不能用监测状态位的吗?
我用监测状态位,换了五片,只有一片是可以打电话,其它四片只有一个DTMF,一片完全没反应,所以打不了电话了.我的IC是插在IC坐上的,所以换IC是一件好易的事,

21楼: >>参与讨论
mm7989680
仅供参考
//////////////////////////////////////////////////////////////////////
//说明:      控制MT8888拨打电话号码,MT8888工作于DTMF模式,
//            电话号码存储在TeleNumer数组中。
//晶振:       11.0592MHZ
//MCU:        AT89S52
//接口:      void InitializeMT8888(void);
//            void SetMT8888Mode(void);
//            void DialTelephoneNumber(void);
//Version:      1.0
//LastDate:    2006/05/17
//Complier:    Keil
//MT8888 T0 89S52 :
// !IRQ---!INT1
// RS0----P1.0
// !WR----P1.2
// !RD----P1.1
// D0-----P0.4
// D1-----P0.5
// D2-----P0.6
// D3-----P0.7
//////////////////////////////////////////////////////////////////////
#include<AT89X52.h>
#include<intrins.h>

void InitializeMT8888(void);
void SetMT8888Mode(void);
void DialTelephoneNumber(void);
void ReadStatus(void);

data  unsigned CHAR MTStatus;
unsigned CHAR code TeleNumber[11]={1,3,1,3,1,1,1,1,1,1,1};

void Delayms(unsigned int ms)
{
    unsigned int i,j;
    for(i=0;i<ms;i++)
    for(j=0;j<113;j++);
}
void Delay50ms(unsigned CHAR ms)
{
    unsigned int i;
    unsigned CHAR j;
    for(j=0;j<ms;j++)
    for(i=0;i<9135;i++);
}

void delay1s(void)
{
     unsigned CHAR h,i,j,k;
    for(h=5;h>0;h--)
    for(i=4;i>0;i--)
    for(j=116;j>0;j--)
    for(k=214;k>0;k--);
}
//读MT8888状态寄存器
void ReadStatus(void)
{
    P1=0xF5;
    P0=0xFF;
    MTStatus=P0;
    //_nop_();
    //_nop_();
    //_nop_();
}
//上电后均需要初始化MT8888
void InitializeMT8888(void)
{
    ReadStatus();
    P1=0xF3;             //WRITE TO CONTROL REGESTER
    //_nop_();
    //_nop_();
    P0=0x00;
    //_nop_();
    //_nop_();
    P1=0xF3;             //WRITE TO CONTROL REGESTER
    //_nop_();
    //_nop_();
    P0=0x00;
    //_nop_();
    //_nop_();
    P1=0xF3;             //WRITE TO CONTROL REGESTER
    //_nop_();
    //_nop_();
    P0=0x80;             //CAREFUL
    //_nop_();
    //_nop_();
    P1=0xF3;             //WRITE TO CONTROL REGESTER
    //_nop_();
    //_nop_();
    P0=0x00;
    //_nop_();
    //_nop_();
    ReadStatus();
}

//设置MT8888工作模式
void SetMT8888Mode(void)
{
    P1=0xF3;             //WRITE TO CONTROL REGESTER
    //_nop_();
    //_nop_();
    P0=0x9F;             //CRA=1101  1001
    //_nop_();
    //_nop_();
    P1=0xF3;             //WRITE TO CONTROL REGESTER
    //_nop_();
    //_nop_();
    P0=0x0F;             //CRB=0000
    //_nop_();
    //_nop_();
    Delay50ms(2);
}


void DialTelephoneNumber(void)
{
    unsigned CHAR i,j;
    for(i=0;i<11;i++)
    {
        j=TeleNumber[i];
        if(j==0)    
        {
            j=10;      //如果号码为0时,按照MT8888的规则应送0x0a
        }
        P1=0xF2;      //write to send-regester
        //_nop_();
        //_nop_();  
        P0=(j<<4);    //MSB into b3-b0
        Delay50ms(3);
        P2_4=0;
        do {
            ReadStatus();
            P2_6=!P2_6;
           }while((MTStatus&0x20)!=0x20);
        Delayms(20);
        P2_2=0;
    }
}


/* main  */
void main(void)
{
  P2=0xFF;
  P1=0xDF;
  while(1)
  {   
      unsigned CHAR seconds;
      P1_5=1;   //摘机
      InitializeMT8888();
      //P2_4=0;
      SetMT8888Mode();
      //P2_2=0;
      DialTelephoneNumber();
      P2_0=0;
      for(seconds=0;seconds<5;seconds++)
      {
       delay1s();
       };
      P1_5=0;
      delay1s();
      delay1s();

   };
}


22楼: >>参与讨论
君临城下
有改善
换了个芯片,现在可以从音频放大器中听到声音,但是还是没有拨出去
接下来应该注意哪些问题?

23楼: >>参与讨论
君临城下
有改善
换了个芯片,现在输出有波形,从音频放大器上也能够听到声音,很快
但还是没有拨出去,拨号时的速度有要求吗?

24楼: >>参与讨论
君临城下
连接
MT8888的输出脚有DTMF信号输出,怎么和电话连接呢?

25楼: >>参与讨论
lets3

工作在BURST模式下,DTMF只有50MS,当然快了,我是用1:1互感耦合到电话线上的.耦合前先用9014放大TOUT出来的信号.去电子市场买回来的MT8880全是别人用过的(10元一片的),所以就算是行的,也会有点问题,昨天叫采购员去买,全新的MT8880CE散卖要31大洋一片.接收我还是没有搞好!烦

26楼: >>参与讨论
lets3
君临城下你有没QQ,MSN之类的?
我的MSN:lets3@hotmail.com 有什么问题可以相互帮助一下,我也想你指点一下我的接收问题,

27楼: >>参与讨论
lets3
君临城下,你的搞好没有?
我昨天测试过了,GS出来的DTMF波形很好,ST/GT脚也有高电平出来,但就是跳不过测试接收满状态.我设了CRA IRQ有效,测IRQ/CP脚总是低电平,我是用ASM写的,读状态位是没错的,我在发DTMF时也用了测试状态位,能拨打公司的分机了,所以读写状态位的时序没问题,只说明了测试状态位收满位是一直为0,但是ST/GT脚是有高电平了,有高电平就说明了锁存了译码的DTMF了,不是这样子的吗?

28楼: >>参与讨论
lets3
我的程式本就是OK的
好了,31大洋的新片回来了,一测试,OK了,市场上太多的MT8880是工厂退货再拿出来卖的了,害死我们这些开发人员了.

29楼: >>参与讨论
teddeng
晕倒,30一片的DTMF CODEC???!!
怎么不用HT9200+9170代替呢?加起来也不到6块钱啊?8880,典型的教科书芯片!

30楼: >>参与讨论
hq_y
这么贵啊
 
31楼: >>参与讨论
君临城下
连接
 
32楼: >>参与讨论
lets3
我有用HT9200+9170,
我有用HT9200+9170,现在只是试功能,HT9200+9170 深圳这边5大洋就搞定了.

33楼: >>参与讨论
cdbjdz
使用HT9200+HT9170更加稳定可靠!
 
34楼: >>参与讨论
君临城下
拨号问题
   我用耦合变压器降电话地与电源地隔离,在变压器的输入端有双音频信号,但变压器之后没有信号为什么?
且不能拨号。


35楼: >>参与讨论
lets3
搞好没有?
你用的是不是1:1变压器?要是有输入,但没输出,可能是你的互感坏了.


参与讨论
昵称:
讨论内容:
 
 
相关帖子
红外传感的问题
AT89C51+MT8888的系统不需要和电话网络隔离吗?
做自动抄表的集中器用什么规约
请教:如何在ADS软件上得到Y-Smith圆图
SOS  有人用过 51 编  LMX2326 吗???


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号