⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 语音录放模块程序.txt

📁 PIC单片机C语言程序设计实例精粹
💻 TXT
字号:

1.  SPI口通信模块
(1)下面为初始化部分的代码程序。
	void SPI_Init(void)
	{
   		TRISB=0xe1;				//设置PORTB数据方向寄存器
   		PORTB=0x80;				//设置PORTD
	}
	
(2)以下程序SPI总线读写功能,data既是向SPI写入的数据,也是从SPI中读取的数据,返回给函数。
	unsigned char SPI_ReadWrite(unsigned char data)
  { 
  	unsigned char i;
  	for(i=8; i!=0; i--)
  	{ 
	SPI_CLK=0;			//CLK引脚置低电平
  		SPI_DI=0; 			//数据线置低电平
	if(data&0x80) 
	SPI_DI=1;		//若data高位为1,则数据线置高电平
  		data<<=1; 
  		SPI_CLK=1;			// CLK引脚置高电平
  		if(SPI_DO)
	data|=1;			// 读入一位
  	} 
  	SPI_CLK=0; 
 	 	return data;

 2.  ISD4004录音操作
	
	// 录音操作
	void Record(int nAddr)
	{
	    int i;
	    unsigned char code;
	    
	    // 发送加电指令
	    PowerUp();
	    // 延时25ms以上
	    Delay_ms(30);
	    // 再次发送加电指令
	    PowerUp();
	    // 延时25ms以上
	    Delay_ms(30);
	    // 延时25ms以上
	    Delay_ms(30);
	    
	    // 发送地址信息
	    SendAddr(nAddr);
	    
	    // 发送SETREC命令
	    code = 0x05;
	    SendOpCode(code);
	    
	    // 发送REC命令
	    code = 0x0D;
	    SendOpCode(code);
	    
	    // 处理结束
	    for(;;)
	    {
	        // 如果发生溢出的时候则结束录音
	        if(nOVF == 1)
	    	{
	    	    nOVF = 0;//清除中断标志变量
	    	    // 发送停止命令            
	            Stop();
	            // 延迟一点时间
	            for(i = 0;i < 100;i++) ;
	            
	            break;
	    	}
	    	// 如果第2次按下录音键,则结束录音
	        if((nRec == 0) && (nRec_count == 2))
	    	{
	    	    nRec_count = 0;//清除按键次数记录变量
	    	    // 发送停止命令            
	            Stop();
	            // 延迟一点时间
	            for(i = 0;i < 100;i++) ;
	            
	            break;
	    	}
	    	
	    }
	    
	    // 发送掉电指令
	    PowerDown();
	    // 延迟一段时间
	    Delay_ms(30);
	    
	    return;

3.  ISD4004放音操作
	
	// 放音操作
	void Play(int nAddr)
	{
	    int i;
	    unsigned char code;
	    
	    // 发送加电指令
	    PowerUp();
	    // 延时25ms以上
	    Delay_ms(30);
	    
	    // 发送地址信息
	    SendAddr(nAddr);
	    
	    // 发送SETPLAY命令
	    code = 0x07;
	    SendOpCode(code);
	    
	    // 发送PLAY命令
	    code = 0x0F;
	    SendOpCode(code);
	    
	    // 处理结束
	    for(;;)
	    {
	        // 如果发生溢出的时候则结束录音
	        if(nOVF == 1)
	    	{
	    	    nOVF = 0;//清除中断标志变量
	    	    // 发送停止命令            
	            Stop();
	            // 延迟一点时间
	            for(i = 0;i < 100;i++) ;
	            
	            break;
	    	}
	    	// 如果第2次按下放音键,则结束放音
	        if((nPlay == 0) && (nPlay_count == 2))
	    	{
	    	    nPlay_count = 0;//清除按键次数记录变量
	    	    // 发送停止命令            
	            Stop();
	            // 延迟一点时间
	            for(i = 0;i < 100;i++) ;
	            
	            break;
	    	}
	    	
	    }
	    
	    // 发送掉电指令
	    PowerDown();
	    // 延迟一段时间
	    Delay_ms(30);
	    
	    return;
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -