搜索
bottom↓
回复: 7

MT8880怎么接手机啊?接语音输出端??我用示波器测了,按键时波形没什么变化,不知道是不是示

[复制链接]

出0入0汤圆

发表于 2009-4-16 13:33:22 | 显示全部楼层 |阅读模式
路过的朋友可以提些意见,或者讨论一下!!!!


MT8880怎么接手机啊?接语音输出端??我用示波器测了,按键时波形没什么变化,不知道是不是示波器问题。
MIC1P
麦克风 1 正极
MIC1N
麦克风 1 负极
SPK1P
受话器 1 正极
SPK1N
受话器 1 负极
个人认为DTMP-INPUT应该接SPKIP(语音端输入,翻译为受话器,英文为RECEIVER,翻译后为接收器、听筒)。
电路如下:mt8880提供

(原文件名:dtmf.JPG)
cs接地了!!!
附上资料提供的:

(原文件名:dtmf1.JPG)
程序如下:dtmf接收  中断模式
#include "port128.h"
#include <avr/io.h>
#include "avrlibdefs.h"
#include <avr/interrupt.h>


//PORTA0-PORTA3:D0-D3
//PORTA4:RW
//PORTA5:RS0

#define  DTMF  PORTA
unsigned char  data;
unsigned char dt_number=0;
unsigned char r_buf[8];


/* MT8880芯片初始化子函数 */
void MT8880_initialize(void)
{
         DTMF=0x3f;  /* 读SR */
         DTMF=0x20;  /* CRA=0000 */
         DTMF=0x20;  /* CRA=0000 */
         DTMF=0x28;  /* CRA=1000 */
         DTMF=0x20; /* CRB=0000 */
}
   
  

/* 接收初始化子函数 */
void MT8880_rece_init(void)
{
        cli();
        cbi(DDRD,1);
        sbi(PORTD,1);
        EIMSK=0xfd;//屏蔽int1  1111 1101
        EICRA=0xfe;//int1下降沿沿触发  1111 1110
        EIFR |= 0x02;//清零intf1
        EIMSK|= 0x02;//使能int1
        sei();
}


/* 接收中断服务程序 */

SIGNAL(SIG_INTERRUPT1)
{
        cli();
        DTMF=0x3f;  /* 读SR */
        DTMF=0x1f;  /* 读RDR */
        r_buf[dt_number++]=DTMF&0x0f;  /* 保存 */
        sei();

}
/*
英文mt8880资料:
点击此处下载 ourdev_436852.pdf(文件大小:318K) (原文件名:mt8880.pdf)
中文mt8880资料:
点击此处下载 ourdev_436839.pdf(文件大小:181K) (原文件名:mt8880-1.pdf)
没听880论文集:
点击此处下载 ourdev_436938.pdf(文件大小:9.52M) (原文件名:dtmf论文集.pdf)

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2009-4-17 17:18:12 | 显示全部楼层
1、找出点问题,中断一没打开。
2、clk通过一个电容接了晶振的一端。我用的片子是mega128,时序可能和51的不同。clk引脚接了porta。7,并加了延时。



问题还是多多。电话通后,按键没反应。不能进中断。(软件模拟可以的)

#include "port128.h"
#include <avr/io.h>
#include "avrlibdefs.h"
#include <avr/interrupt.h>
#include "dtmf.h"
#include "delay.h"

//PORTA0-PORTA3:D0-D3
//PORTA4:RW
//PORTA5:RS0
//PORTA6:CLK    ++++++   avr&micro;&yen;&AElig;&not;&raquo;ú&ordm;&Iacute;51&micro;&yen;&AElig;&not;&raquo;ú&Ecirc;±&ETH;ò&Icirc;&Ecirc;&Igrave;&acirc;&pound;&iquest;&para;&Ocirc;&Oacute;&Uacute;51&Iacute;¨&sup1;&yacute;&Ograve;&raquo;&cedil;&ouml;30p&micro;&Auml;&micro;&ccedil;×è&frac12;&Oacute;&frac34;§&Otilde;&ntilde;&sup1;&Uuml;&frac12;&Aring;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;

#define  DTMF  PORTA
unsigned char  data;
unsigned char dt_number=0;
unsigned char r_buf[8];


/* MT8880&ETH;&frac34;&AElig;&not;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;×&Oacute;&ordm;&macr;&Ecirc;&yacute; */
void MT8880_initialize(void)
{
         DTMF=0x3f;  /* &para;&Aacute;SR */
         DTMF |= 0x40; //CS=0;
         delay_1us();
         DTMF=0x20;  /* CRA=0000 */
         DTMF &= 0xdf; //CS=1;


         DTMF |= 0x40; //CS=0;
         delay_1us();
         DTMF=0x20;  /* CRA=0000 */
         DTMF &= 0xdf; //CS=1;



         DTMF |= 0x40; //CS=0;
         delay_1us();
         DTMF=0x28;  /* CRA=1000 */
         DTMF &= 0xdf; //CS=1;

         DTMF |= 0x40; //CS=0;
         delay_1us();
         DTMF=0x20; /* CRB=0000 */
         DTMF &= 0xdf; //CS=1;
}
   
  

/* &frac12;&Oacute;&Ecirc;&Otilde;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;×&Oacute;&ordm;&macr;&Ecirc;&yacute; */
void MT8880_rece_init(void)
{
        cli();
        cbi(DDRD,1);
        sbi(PORTD,1);
        EIMSK &= 0xfd;//&AElig;&Aacute;±&Icirc;int1  1111 1101
        EICRA = (EICRA|0x08)&0xfb;//int1&Iuml;&Acirc;&frac12;&micro;&Ntilde;&Oslash;&Ntilde;&Oslash;&acute;&yen;·&cent; ****10**
        EIFR |= 0x02;//&Ccedil;&aring;&Aacute;&atilde;intf1
        EIMSK|= 0x02;//&Ecirc;&sup1;&Auml;&Uuml;int1
        sei();
}

/* &frac12;&Oacute;&Ecirc;&Otilde;&Ouml;&ETH;&para;&Iuml;·&thorn;&Icirc;&ntilde;&sup3;&Igrave;&ETH;ò */

SIGNAL(SIG_INTERRUPT1)
{
        cli();
        DTMF |= 0x40; //CS=0;
        delay_1us();
        DTMF=0x3f;  /* &para;&Aacute;SR */
        DTMF &= 0xdf; //CS=1;

        DTMF |= 0x40; //CS=0;
        delay_1us();
        DTMF=0x1f;  /* &para;&Aacute;RDR */
        DTMF &= 0xdf; //CS=1;


        r_buf[dt_number++]=DTMF&0x0f;  /* ±&pound;&acute;&aelig; */
        sei();

}


试验中,请路过的高手多多指教。

出0入0汤圆

发表于 2009-4-18 19:49:59 | 显示全部楼层
LZ是打算把固定电话当成手机用嘛?利用老N或者老M的退休手机,又想避免家里人不会用手机。

出0入0汤圆

 楼主| 发表于 2009-4-20 20:05:56 | 显示全部楼层
不是的!想给手机加上自动语音提示的功能。就像拨打10086一样!!!

出0入0汤圆

 楼主| 发表于 2009-4-20 20:14:40 | 显示全部楼层
现在基本上确定dtmf_in就是接语音的输出端。
今天空闲时,又改了改程序严格按照资料上的来的。只是资料上的延时不是很确定说得不是很清楚。不知道怎么办。IRQ端的中断拨号时总打不开。
措施一:改查询方式,状态寄存器的接受位竟然一直是1。
措施二:自己写数据寄存器,然后在自己读。用jtag调试。一点反应没有。
现在想确定mt8880是不是坏的!!!!

各位大侠有没有什么高招啊!资料上有个测试的,看不太懂!!!

出0入0汤圆

 楼主| 发表于 2009-6-15 14:09:32 | 显示全部楼层
帖子沉了,顶一顶!!!!

出0入0汤圆

 楼主| 发表于 2009-6-15 14:09:56 | 显示全部楼层
帖子沉了,顶一顶!!!!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-29 08:02

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

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