电路设计,软件开发,专业项目团队承接电子产品开发!


ISPRO下载型编程器
火爆销售中

RS232/TTL转换器
全IC串口窃电

RS232/TTL转换线
全IC串口窃电

ByteBlasterMV Cable
CPLD/FPGA并口下载线

ByteBlaster II Cable ISPRO下载型编程器
支持S51/AVR/PIC
超级51开发板套件
前卫实用超值

PC/MCU/CPLD
三合一学习套件

全新万年历方案
AVR单片机开发板
 

Min51单片机仿真机
迷你型

ARM7开发板
仅售260元!
 

RS-232/RS-485双向接口电平转换器  

51单片机升级STM32
火爆销售中
MPLAB-ICD2
火爆销售中
LED51开发板
玩具又名图文显示棒

面板模块/开发板
经济危机明智决择

       

GSM MODEM GSM猫

SMS短信模块 工业级/全自动
火爆销售中

大功率数传电台

高速数传电台

您当前位置:电子技术资料 -> 外围驱动 -> 音乐播放 ->

祝您阅读愉快!

ISPRO下载型编程器

RS232 TO TTL转换器
↑↑本文相关产品介绍↑↑

用单片机实现WAV文件的播放


类别:技术文章
来源:未知
作者:未知
关键字:WAV
加入日期:2010-8-4

//这段程序解8KWAV,可生成51的数据格式。使用TC20以上编译。
//中国电子网 www.EC66.com
#include <process.h>
#include <stdio.h>

extern long filesize(FILE *stream);

void main(int argc, char *argv[])
{
int i;
long j,l,p;
unsigned char k;
FILE *tmp,*fp,*file;
union datastruct{
unsigned long r_long;
unsigned char r_char[4];
}datain;

/*
file = fopen("a:\\crun.exe", "rb");
l=filesize(file);
tmp = fopen("a:\\run.exe", "wb");
for(j=0;j<2000;j++){
fread(&k,1,1,file);
fwrite(&k,1,1,tmp);
}
fread(&k,1,1,file);
k=77;
fwrite(&k,1,1,tmp);
fread(&k,1,1,file);
k=77;
fwrite(&k,1,1,tmp);

for(j=2002;j<l;j++){
fread(&k,1,1,file);
fwrite(&k,1,1,tmp);
}

fclose(tmp);
fclose(file);
return;
*/
// argc=2;
// argv[1]="d.wav";
// argv[2]="b.wav";
/***********************************************************/
printf("\nCollect wave files to gensc.bin:\n");
for (i=1; i<argc; i++)printf("[%2d] : %s\n", i, argv[i]);

if ((tmp = fopen("gensc.tmp", "wb"))== NULL)
{
fprintf(stderr, "Cannot open file gensc.tmp.\n");
return ;
}
/*********************************************************/
file = fopen("genadpcm.dat", "wb");
fclose(file);

for(i=1,j=0;i<argc;i++){
sound_process(argv[i]);
if ((fp = fopen("genadpcm.sav", "rb"))== NULL)
{
fprintf(stderr, "Cannot open file gensapcm.sav.\n");
exit(1) ;
}

datain.r_long=filesize(fp)+j;
j=datain.r_long;
fwrite(&datain.r_char[2],1,1,tmp);
fwrite(&datain.r_char[1],1,1,tmp);
fwrite(&datain.r_char[0],1,1,tmp);

if ((file = fopen("genadpcm.dat", "ab"))== NULL)
{
fprintf(stderr, "Cannot open file genadpcm.dat.\n");
return ;
}
for(datain.r_long=0;datain.r_long<filesize(fp);datain.r_long++){
fread(&k,1,1,fp);
fwrite(&k,1,1,file);
}
fclose(fp);
fclose(file);
}

l=filesize(tmp)+3;
fclose(tmp);

/********************************************************/
if ((tmp = fopen("gensc.bin", "wb"))== NULL)
{
fprintf(stderr, "Cannot open file gensc.bin.\n");
return ;
}
if ((fp = fopen("gensc.tmp", "rb"))== NULL)
{
fprintf(stderr, "Cannot open file gensc.tmp.\n");
return ;
}
/********************************************************/
datain.r_long=l;
fwrite(&datain.r_char[2],1,1,tmp);
fwrite(&datain.r_char[1],1,1,tmp);
fwrite(&datain.r_char[0],1,1,tmp);
for(i=3;i<l;i+=3){
fread(&datain.r_char[2],1,1,fp);
fread(&datain.r_char[1],1,1,fp);
fread(&datain.r_char[0],1,1,fp);
datain.r_char[3]=0;
datain.r_long+=l;
fwrite(&datain.r_char[2],1,1,tmp);
fwrite(&datain.r_char[1],1,1,tmp);
fwrite(&datain.r_char[0],1,1,tmp);
}
fclose(fp);

if ((fp = fopen("genadpcm.dat", "rb"))== NULL)
{
fprintf(stderr, "Cannot open file genadpcm.dat.\n",i);
return ;
}

p=filesize(fp);
for(j=0;j<p;j++){
fread(&k,1,1,fp);
fwrite(&k,1,1,tmp);
}
fclose(fp);

fclose(tmp);
printf("File gensc.bin success!\n");
}

您可能还会关注的相关技术资料:

中国电子网
www.EC66.com
QQ:34740080 EMAIL:iloveaoe@163.com
最佳浏览:1024*768
Copyright (C) 2001-2010 EC66.COM All Rights Reserved
Aoe/帝国 制作维护
粤ICP备18061901号