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

📄 正弦波数据产生程序.c

📁 正弦波数据产生程序,升级版本, 更方便,不必必源程序,直接输入所要产生的数据个数!
💻 C
字号:
/***************生成DA转换产生正弦波的数据*******************/
#include<stdio.h>
#include<math.h>
#include<string.h>

unsigned int data_num;				/*取点数*/
char filename[]="sinedat";			/*文件名*/
char str[10];						/*取点数转变为字符串*/
char txt[]=".txt";					/* 文件后缀名*/

unsigned char error=0;

/*void numtochar(unsigned int);*/
/*******数字变为字符串************/
void numtochar(unsigned int a)
{
	unsigned char ge,shi,bai,qian,wan;
	ge=a%10;
	a/=10;
	shi=a%10;
	a/=10;
	bai=a%10;
	a/=10;
	qian=a%10;
	a/=10;
	wan=a%10;
	
	if(wan!=0)						/*万位不为0*/
		{
			str[0]=wan+48;
			str[1]=qian+48;
			str[2]=bai+48;
			str[3]=shi+48;
			str[4]=ge+48;					
		}else if(qian!=0)			/*千位为0*/
			{
				str[0]=qian+48;
				str[1]=bai+48;
				str[2]=shi+48;
				str[3]=ge+48; 				
			}else if(bai!=0)
				{
					str[0]=bai+48;
					str[1]=shi+48;
					str[2]=ge+48;  						
				}else if(shi!=0)
					{
						str[0]=shi+48;
						str[1]=ge+48;							
					}else if(ge!=0)
						{
							str[0]=ge+48; 									
						}	
}	


main()
{
int i;
int a;
FILE *fp;
putdata:
	/*clrscr();*/
	printf("\n===========================================\nSinewave Data Produce Source\nDesigned By Huangchayong \n===========================================\nPlease Enter The Number of The Wave Data:");	
	if(error==1)
	{  	
		error=0;	
		printf("\n\n  Error!! The number you enter is too large,it must be 0~32767 !\n  Please Enter Again:" );
	}
	scanf("%d",&data_num);								/*输入取点数*/
	if(data_num>32767)
		{
				error=1;
				goto putdata;
		}		
	numtochar(data_num);								/*将取点数转化为字符串,存入str[]中*/
	strcpy(filename,str);								/*将str中串复制到filename中*/
	strcat(filename,txt);								/* 文件名加后缀.txt */
	fp=fopen(filename,"w");								/*产生的数据放置的位置,文件名*/
	fprintf(fp,"/********正弦波数据表,取点数:");		/*数据表注释*/
	fprintf(fp,str);									/*数据表注释*//* 在这写出取点数 */
	fprintf(fp,",设计者:黄茶勇 2006-09-02********/\n");	/*数据表注释*/
	fprintf(fp,"unsigned char code SineWaveTable[]={\n");/*数据表表头*/
	 	for(i=0;i<data_num;i++)								/*数据表数据*/
	  {
	    a=128*sin(i*6.28/data_num)+128;						/*获取数据*/
	    fprintf(fp,"0x");									/*在数据前加0x */
	   /* if(a<16)fprintf(fp,"0");  */
	    fprintf(fp,"%02x",a);								/* 十六进制输出,空2格*/
	    fprintf(fp,"," );									/* 数据后加"," */
	    if((i+1)%10==0) fprintf(fp,"\n"); 					/*每10个数据一行*/
	  }
	fprintf(fp,"};\n");									/*数据表尾*/
	printf("completed.\n");
	fclose(fp);											/*关闭文件*/

}

⌨️ 快捷键说明

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