打印

ht9200怎么老是打不出电话?(附程序)

[复制链接]
2173|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
oh_right|  楼主 | 2009-12-25 10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
几天了,HT9200还是打不出电话。
附上程序。大家能帮我看看么?
CPU:ATMEGA48V
CRYSTAL:4MHz

uint8 numbers[20]={9,1,3,5,3,2,0,4,1,4,0,4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};

unsigned char table_dtmf[] = {0x0a,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0d,0x0e,0x0f,0x00,0x0b,0x0c};
                            // 0    1    2    3     4    5   6    7    8    9    A    B     C    D    *    #   
//==============================================================================
//延时10ms
void delay10ms(unsigned char s)   
{   
    unsigned int i;  
    while(s--)
    {
       for(i=0;i<5600;i++);
    }
}  
//==============================================================================
//发送一个字节
//用视波器测得时钟频率:116.279K
void send_byte(unsigned char num)   
{
    //将num的低5位发送出去,先发低,后发高   
    unsigned char i;   
    for(i=0;i<5;i++)   
    {   
       HT9200_CLK_HIG;              //下降沿发送数据
       if(num&0x01)
       {
          HT9200_DATA_HIG;
       }
       else
       {
          HT9200_DATA_LOW;
       }  
       __delay_cycles(10);          //delay 2.5us
       HT9200_CLK_LOW;              //发送数据
       __delay_cycles(10);          //delay 2.5us
       num>>=1;
    }   
    HT9200_CLK_HIG;
    delay10ms(1);                    //延时让DTMF发出号码   
}   
//==============================================================================
//拨号
void dial(uint8 *ip)   
{  
    CLI();
    unsigned char num;
    HT9200_CLK_HIG;
    HT9200_CS_LOW;   
    delay10ms(1);               //延时10ms,以使其起振   
    while((*ip!=0x20))
    {
        num = *ip++;
        send_byte(table_dtmf[num]);
    }
    send_byte(0xff);
    delay10ms(6);   //延时60ms,发送DTMF  
    HT9200_CS_HIG;
    HT9200_CLK_HIG;
    SEI();
}   
//==============================================================================
void main()
{
   init_devices();
   ANSWER_TEL;   
   dial(numbers);
   while(1)
   {
       ;
   }
}

相关帖子

沙发
china0043| | 2013-6-1 14:23 | 只看该作者
#i nclude<reg51.h>
#i nclude<intrins.h>
sbit HT9200_CE=P1^0;
sbit HT9200_DATA=P1^1;
sbit HT9200_CLK=P1^2;
#define delay_5us() _nop_();_nop_()
/***********************************************************
功能:延时
入口:延迟的毫秒数
出口:无
2006.10.02
************************************************************/
void delayMs(unsigned char secnd)
{
      unsigned int i;
      while(secnd--)
      {
            for(i=250;i>0;i--);
      }
}/********************************************
功能:发送一位DTMF号码
入口:DTMF码数据
出口:无
全局变量:无
2006.10.02
*******************************************/
void sendHt9200Bit(unsigned char dtmfData)
{
            unsigned char count=5;
            HT9200_CE=0;      //选中HT9200
            delayMs(10);      //延时10ms,以使其起振
            while(count--)
            {
                  //------------------------------------------------
                  //HT9200_DATA=(bit)(dtmfData&0x01);      //
                  //-----------------------------------------------
                  if(dtmfData&0x01)
                  {
                        HT9200_DATA=1;
                  }
                  else
                  {
                        HT9200_DATA=0;
                  }
                  //------------------------------------------
                  delay_5us();      //
                  HT9200_CLK=0;      //
                  delay_5us();      //
                  HT9200_CLK=1;      //
                  dtmfData>>=1;      //
            }
            delayMs(60);      //延时60ms,发送DTMF
            HT9200_CE=1;      //禁止HT9200      
}/*-------------------------------------------------------------------
功能:发送一串DTMF号码
入口:1。发送数据的指针。2。号码长度
全局变量:无
2006.10.02
------------------------------------------------------------------------
*/
void sendDTMF(unsigned char *s,l)
{
      while(l--)
      {
            sendHt9200Bit(*s);
            delayMs(50);      //延时50msDTMF间隔
            s++;
      }
}

void main(void)
{
      unsigned char data haoma[]={1,3,3,1,7,7,7,8,1,5,9};//test
      sendDTMF(haoma,11);
      while(1);
}
帮忙看一下这程序问题出在哪里了,拔不出去号码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

28

帖子

0

粉丝