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

📄 speech.c

📁 超声波倒车雷达的设计程序 利用SPCE061A单片机实现超声波倒车雷达的测量计算方法。程序中采用软件校正
💻 C
字号:
//========================================================
//	文件名称:	Speech.c
//	功能描述:	语音功能代码
//	维护记录:	2006-4-13	build
//				2006-4-20   加入Too_Freq变量,用以控制语音报警间隔时间
//========================================================


//========================================================
#include "SPCE061A.h"
#include "S480.h"
extern void Save_INTSetting(void);						//定义在isr.asm
extern unsigned int F_Binary_BCD(unsigned int Binary);
unsigned int Counter_2Hz = 10;							//2Hz中断用的计数器,用于语音播放控制
extern unsigned int Too_Freq;													

//=======================================================================
//	语法格式:	void PlaySnd_Auto(unsigned int uiSndIndex,
//								unsigned int uiDAC_Channel)
//	实现功能:	通过自动方式播放语音资源
//	参数:		1.uiSndIndex:语音资源序号 2.uiDAC_Channel:语音播放通道
//	返回值:	无
//=======================================================================
void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel)
{
	//if(Counter_2Hz>14)									//如果此数大于6,则表示距上次语音播报超过了3秒了
	//{
		//Counter_2Hz = 0;								//计数器清零
		//*P_INT_Ctrl = *P_INT_Ctrl_New|0x0008;			//重新打开IRQ5的2Hz中断
		
		Save_INTSetting();								//保存当前中断设置,并通知语音库当前开放的中断
		SACM_S480_Initial(1);							//初始化语音播放,自动方式
		SACM_S480_Play(uiSndIndex,uiDAC_Channel,3);	//播放语音
		while((SACM_S480_Status() & 0x0001) != 0)		//判断当前是否在播放?返回最低位为1则表示当前在播放
		{
			SACM_S480_ServiceLoop();					//服务程序
			*P_Watchdog_Clear = 0x0001;			
		}
		SACM_S480_Stop();								//停止
	//}
}

//============================================================= 
// 函数名称:    Speech_Result()
// 功能描述:	对测量得到的数据进行语报:X点XX米
//              同时还要存贮测量值(存放在Flash)中 
// 语法格式:    void Speech_Result(unsigned int uiResult)
// 入口参数:    uiResult---要用语音报的结果
// 出口参数:    无
// 注意事项:    仅为用户模型
//=============================================================
void Speech_Result(unsigned int uiResult,unsigned int Direction)
{
	if(Counter_2Hz>Too_Freq)//Too_Freq
	{
	unsigned int uiResult_BCD;
	unsigned int uiTemp;
	PlaySnd_Auto(Direction,3);
	uiResult_BCD = F_Binary_BCD(uiResult);
	uiTemp = (uiResult_BCD>>8)&0x000f;
	PlaySnd_Auto(uiTemp,3);
	PlaySnd_Auto(10,3);					//语音"点"
	uiTemp = (uiResult_BCD>>4)&0x000f;
	PlaySnd_Auto(uiTemp,3);
	uiTemp = uiResult_BCD&0x000f;
	PlaySnd_Auto(uiTemp,3);
	PlaySnd_Auto(11,3);					//语音"米"
	Counter_2Hz = 0;								//计数器清零
	*P_INT_Ctrl = *P_INT_Ctrl_New|0x0008;			//重新打开IRQ5的2Hz中断
	}
}

⌨️ 快捷键说明

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