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

📄 playsound.c

📁 以C8051F020单片机做的多功能计数器
💻 C
字号:
#include "playSound.h"

extern xdata uchar MeasureType;
extern xdata uchar s_MHz;//the second part of the period,The Millions of the frequency value
extern xdata uint ms_KHz,us_Hz;////the ms and us part of the period
extern xdata uint decimal;//the part after point of the  frequency and period

extern unsigned char xdata soundNumList[10];//0xee为结束标志

void soundPeriod()
{
	if(MeasureType==1)
		Sound5008Play(PERIOD_SOUND);//周期
	else if(MeasureType==2)
		Sound5008Play(INTERVAL_SOUND);//间隔
	Delayms(3*ONE_WORD);

	if(s_MHz>0)
	{
		soundInteger(s_MHz);	
		Sound5008Play(POINT_SOUND);//点
		Delayms(ONE_WORD);
		soundDecimal(ms_KHz,3);
		soundDecimal(us_Hz,3);
		soundDecimal(decimal,3);
		Sound5008Play(SECOND_SOUND);//秒
		Delayms(3*ONE_WORD);
	}
	else if(ms_KHz>0)
	{
		soundInteger(ms_KHz);
		Sound5008Play(POINT_SOUND);//点
		Delayms(ONE_WORD);
		soundDecimal(us_Hz,3);
		soundDecimal(decimal,3);
		Sound5008Play(MS_SOUND);//毫秒
		Delayms(3*ONE_WORD);
	}
	else if(us_Hz>=0)
	{
		if(us_Hz==0)
			Sound5008Play(10);//零
		else
			soundInteger(us_Hz);
		Delayms(ONE_WORD);
		Sound5008Play(POINT_SOUND);//点
		Delayms(ONE_WORD);
		soundDecimal(decimal,3);
		Sound5008Play(US_SOUND);//微秒
		Delayms(3*ONE_WORD);
	}

}

void soundFrequency()
{
	Sound5008Play(FREQUENCY_SOUND);
	Delayms(3*ONE_WORD);	

	if(s_MHz>0)
	{
		soundInteger(s_MHz);	
		Sound5008Play(POINT_SOUND);//点
		Delayms(ONE_WORD);
		soundDecimal(ms_KHz,3);
		soundDecimal(us_Hz,3);
		soundDecimal(decimal,4);
		Sound5008Play(MHZ_SOUND);
		Delayms(3*ONE_WORD);
	}
	else if(ms_KHz>0)
	{
		soundInteger(ms_KHz);
		Sound5008Play(POINT_SOUND);//点
		Delayms(ONE_WORD);
		soundDecimal(us_Hz,3);
		soundDecimal(decimal,4);
		Sound5008Play(KHZ_SOUND);
		Delayms(3*ONE_WORD);
	}
	else if(us_Hz>=0)
	{
		if(us_Hz==0)
			Sound5008Play(10);//零
		else
			soundInteger(us_Hz);
		Delayms(ONE_WORD);
		Sound5008Play(POINT_SOUND);//点
		Delayms(ONE_WORD);
		soundDecimal(decimal,4);
		Sound5008Play(HZ_SOUND);
		Delayms(3*ONE_WORD);
	}
}



void soundDecimal(uint Number,uchar len)
{
   xdata uchar ch,j;
   uchar i=0;  
   while(Number)
   {
   	  soundNumList[i] = Number%10;
	  if(0==soundNumList[i])
		  soundNumList[i]=10;
	  i++;		
      Number = Number/10;
   }
   for(j=i;j<len;j++)
	 soundNumList[j]=10;
   i=len;

   for(j=0;j<i/2;j++)
   {
	   ch=soundNumList[j];
	   soundNumList[j]=soundNumList[i-1-j];
	   soundNumList[i-1-j]=ch;
   }
   soundNumList[len] = 0xee;
   //几个数字声音地址已经设置好
   //直接连续播放这些数字
   Sound5008PlaySome();//播放声音
   Delayms(ONE_WORD);

} 

void soundInteger(uint Number)//限3位数
{
   xdata uchar ch,j;
   uchar i=0; 
   //分别取出个/十/百位
   while(Number)
   {
   	  soundNumList[i] = Number%10;
	  if(0==soundNumList[i])
		  soundNumList[i]=10;
	  i++;		
      Number = Number/10;
   }
   //调整好顺序百/十/个
   for(j=0;j<i/2;j++)
   {
	   ch=soundNumList[j];
	   soundNumList[j]=soundNumList[i-1-j];
	   soundNumList[i-1-j]=ch;
   }
	//开始播放
   switch(i)
   {
		case 3:
			soundNumList[5]=0xee;
			if(soundNumList[2]==0)
				soundNumList[4]=0xee;
			else
				soundNumList[4]=soundNumList[2];
			soundNumList[3]=TEN_SOUND;
			if(0==soundNumList[1])
				soundNumList[2]=10;
			else
				soundNumList[2]=soundNumList[1];		
			soundNumList[1]=HUNDRED_SOUND;
			break;
		case 2:
			soundNumList[3]=0xee;
			if(soundNumList[1]==0)
				soundNumList[2]=0xee;
			else
				soundNumList[2]=soundNumList[1];
			soundNumList[1]=TEN_SOUND;
			break;
		case 1:
			soundNumList[1]=0xee;
   }
   Sound5008PlaySome();//播放声音
   Delayms(ONE_WORD);
   
} 

/*
void soundInteger(uint Number)//限3位数
{
   xdata uchar ch,j;
   uchar i=0; 
   //分别取出个/十/百位
   while(Number)
   {
   	  soundNumList[i] = Number%10;
	  if(0==soundNumList[i])
		  soundNumList[i]=10;
	  i++;		
      Number = Number/10;
   }
   //调整好顺序百/十/个
   for(j=0;j<i/2;j++)
   {
	   ch=soundNumList[j];
	   soundNumList[j]=soundNumList[i-1-j];
	   soundNumList[i-1-j]=ch;
   }
	//开始播放
   switch(i)
   {
		case 3:
			Sound5008Play(soundNumList[0]);
			Delayms(ONE_WORD);
			Sound5008Play(12);//百;
			Delayms(ONE_WORD);
			//不要break;
		case 2:
			Sound5008Play(soundNumList[1]);
			Delayms(ONE_WORD);
			if(soundNumList[1]!=10)//十位不是0才读出“十”
			{
				Sound5008Play(11);//十;
				Delayms(ONE_WORD);
			}
			//不要break;
		case 1:
			if(soundNumList[2]!=10)//个位不是0才读出
			{
				Sound5008Play(soundNumList[2]);//十;
				Delayms(2*ONE_WORD);
			}

   }
   
} 

*/

⌨️ 快捷键说明

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