微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 语音模块调用不出声,独立播放正常。

语音模块调用不出声,独立播放正常。

时间:10-02 整理:3721RD 点击:
单片机使用AT89S52,语音模块使用ISD1760
1760上接口与单片机管脚对应:
            
sbit ISD_SS=P2^0;
sbit ISD_SCLK=P2^1;
sbit ISD_MISO=P2^3;
sbit ISD_MOSI=P2^2;
要实现的的功能是在密码锁正确、错误、以及错误3次播放语音。
**********************************************************
在线等大家指导,提意见。
主程序:
   *********************程序中调用播放实例****************************     
   
        spi_pu();                         //给1760上电
        while(1) GetSound(1);     //密码正确则应该调用语音
/**************获取指定语音段地址并播放,用户可根据实际需要进行增减******************/
/**************对应的语音段地址在SOUND.H文件里,具体地址从录音软件中读取*************/
void GetSound(uchar soundtick)
{
    ISD_SS=0;
    switch(soundtick)
    {  
        case 0:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_0A, sound_0B); }break;    //现在时间
        case 1:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_1A, sound_1B); }break;    //点
        case 2:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_2A, sound_2B); }  break;    //分
        default: break;
     }
    ISD_SS=1;
}            
*********************sound.h*****************************
#define sound_0A           0x0005  
#define sound_0B           0x0020   
#define sound_1A           0x0021      
#define sound_1B           0x0035
#define sound_2A           0x0036
#define sound_2B           0x003f     
**********************追溯 isd1700_7byte_comm()****************************
//7个字节命令
void isd1700_7byte_comm(uchar comm_par, uint star_addr, uint end_addr)
       {
         uchar i;
         ISD_COMM_RAM[0]=comm_par;
          ISD_COMM_RAM[1]=NULL1;
         ISD_COMM_RAM[2]=star_addr;
         ISD_COMM_RAM[3]=star_addr>>8;
         ISD_COMM_RAM[4]=end_addr;
         ISD_COMM_RAM[5]=end_addr>>8;
         ISD_COMM_RAM[6]=NULL1;
         rest_isd_comm_ptr();         
         i=0;
         do{
             *back_data_ptr++=T_R_comm_byte(*isd_comm_ptr++);
             i++;
           }while(i<=7);
       }
***************************追溯 rest_isd_comm_ptr()**********************************
//复位
void rest_isd_comm_ptr(void)
        {
         isd_comm_ptr=ISD_COMM_RAM;
         back_data_ptr=ISD_COMM_RAM_C;
        }
*********************追溯T_R_comm_byte()**********************************
//SPI接口函数
uchar T_R_comm_byte( uchar comm_data )
      {
         uchar bit_nuber;
         uchar temp;
         bit_nuber=0;
         temp=0;
         do{
             ISD_SCLK=0;
             delay(1);
             if((comm_data>>bit_nuber&0x01)!=0)
                {ISD_MOSI=1;}
             else
                {ISD_MOSI=0;}
             if(ISD_MISO)
               {temp=(temp>>1)|0x80;}
             else
               {temp=temp>>1;}
             ISD_SCLK=1;
             delay(1);
            
            }while(++bit_nuber<=7);
         ISD_MOSI=0;
          return (temp);
      }

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top