简易数字显示声音信号采集测量仪.docx
- 文档编号:3544580
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:25
- 大小:129.54KB
简易数字显示声音信号采集测量仪.docx
《简易数字显示声音信号采集测量仪.docx》由会员分享,可在线阅读,更多相关《简易数字显示声音信号采集测量仪.docx(25页珍藏版)》请在冰豆网上搜索。
简易数字显示声音信号采集测量仪
简易数字显示声音信号采集测量仪
摘要
本声音信号采集测量仪采用MSP430为中心控制系统,由键盘输入模块,液晶显示模块,信号滤波,放大模块,AD转换模块,声光报警模块,数据处理模块,其中在数据处理模块中,我们采用了真有效值处理电路和过零比较电路,在频率的测量过程中,误差小于1HZ,而且通过键盘的控制可实现1秒到3600秒的定时,以及液晶的分屏显示。
整个设计不仅完成了所有的功能要求,而且超过了题目本身的性能指标。
一、方案设计和论证
1、数据处理
方案一:
如图所示:
为了能够得到声音信号的频率值和声级数,我们将信号分为两路,一路通过真有效值电路后,送入AD转换后送入单片机,由单片机处理以后就可以得到信号的声级数,另一路信号通过过零比较电路后直接送入单片机,处理以后就可以得到频率值。
方案二:
如图所示:
将声音信号放大以后通过AD转换电路直接送入FPGA,利用FPGA对数据进行FFT变换,将变换以后的数据进行处理就可以直接得到信号的频率值和声级数,然后再将数据送回单片机。
通过上面两种方案的比较,我们发现两种方案各有优点,方案一的电路设计相对来说要复杂一些,但在数据处理方面要简单一些,而且数据的精度也很高。
方案二的电路设计相当简单,而且数据的处理速度很快,但由于要用到FFT算法,所以软件设计的难度增大了很多,经过综合的考虑,我们选择了方案一。
2、功率测量电路
方案一:
直接用AD转换器采样音频输出的电压瞬时值,用单片机计算有效值和平均功率,原理框图如下图,但算法复杂,软件工作量大。
方案二:
由于功放输出的频率范围在20HZ~20KHZ,故必须采用真有效值变换电路。
此方案采用真有效值转换专用芯片,先得到音频信号电压的真有效值。
再用AD转换器采样该有效值,直接用单片机计算平均功率,原理图如下,软件工作量小,精度高,速度快。
二、系统总框图
2.1:
总体设计
音频信号通过MIC以后送入信号调理电路,将信号进行滤波,放大后分为两路,一路送入真有效值电路变换后送入AD转换电路,将数据送入单片机。
另一路送入过零比较电路后送入单片机。
单片机对两路数据进行处理后就可以得到声级数和频率值,利用键盘做为人机接口,控制采样的时间,声光报警的频率范围,以及液晶显示分屏。
具体框图如下:
2.2:
音频信号放大电路设计
信号输入电压为100mV~5V,为达到A/D转换器最佳的转换电压需要对待测量信号进行放大和阻抗变换。
前级信号调理电路采用一级跟随器和同相放大电路,将信号输入电压分为5档,如图3.1所示,取
则由放大倍数公式可求得R值分别为:
。
本模块采用两片OP07构成一级跟随器和一级同相放大电路,主要用于实现系统阻抗变换和弱信号放大。
由于AD转换芯片的模拟输入端口为容性负载,对输入信号会造成严重的波形失真,采用两级运放可以消除误差,同时达到阻抗匹配的目的。
图1:
音频信号放大电路
2.3真有效值变换
负载网络和取样电阻上采集的是的交流电压信号,如果直接送单片机A/D进行处理,会增大系统误差。
为把系统误差控制在题目要求的范围内,我们在每一个信号的输入和输出级都进行有效的处理。
为此,为测量交流电平电压有效值的测量,采用RMS-DC变换器集成芯片AD536。
频带很宽,它可以测量到频率为300kHz、电压值在100mV以上带有3dB误差的信号电平。
利用外部提供的参考电压,用户能方便设置0dB电平,使其可以对应于从0.1V到2V之间的任何有效值。
2.4过零比较电路
为了得到声音信号设频率值,我们将信号通过过零比较电路,电路主要有LM339构成,其输出电压和TTL,DTL,ECL,MOS,CMOS兼容,最大偏置电压是7mv,微分输入电压范围和电源电压相等。
具体的电路如下图
图2、真有效值电路和过零比较电路
三:
软件设计
单片机主要控制数据的采集,计算,键盘输入响应,液晶显示,以及声光报警模块的响应,具体过程如下图:
四系统调试与系统测试
4.1系统调试
根据方案设计要求,调试过程公分三大部分,硬件调试,软件调试,软件和硬件联调。
电路按模块逐个调试,各模块调试通过后在联调。
程序先在最小系统板调试,通过后在软硬联调。
硬件调试主要是考虑怎么把各个模块的测量误差降到最低,把误差控制在最小范围内。
A/D转换的精度、真有效值转换的测量误差、取样电阻的精度、放大电路的倍率等都是系统的主要误差来源。
由于在系统的硬件设计中考虑到各个部分电路的误差分配,尽量将误差降低到最小。
软件和硬件的联合调试过程中,我们运用的相应的软件补偿和硬件补偿措施,保证把误差控制在一个小范围内波动。
4.2测试数据
(1)频率测量
输入频率
20HZ
100HZ
500HZ
1000HZ
10KHZ
20KHZ
30KHZ
测试频率
20HZ
100HZ
500HZ
999HZ
9986HZ
19976HZ
29968HZ
频率误差
0%
0%
0%
0.1%
0.14%
0.12%
0.11%
由表可以看出声源信号的频率远远超过了题目所要求的范围,达到了30KHZ,频率的误差几乎可以忽略,满足了题目的要求。
(2)声级测量
F
Vp-p
20HZ
100HZ
500HZ
1000HZ
10KHZ
20KHZ
30KHZ
1.0V
14.3db
14.2db
14.4db
14.3db
14.3db
14.2db
14.3db
1.5v
21.5db
21.6db
21.6db
21.7db
21.7db
21.7db
21.6db
2.0v
29.3db
29.4db
29.2db
29.1db
29.1db
29.2db
29.1db
2.5v
36.3db
36.3db
36.2db
36.2db
36.2db
36.2db
36.3db
3.0v
43.5db
43.6db
43.7db
43.6db
43.5db
43.6db
43.5db
3.5v
50.8db
50.8db
50.7db
50.9db
50.8db
50.7db
50.8db
五、结束语
在本次的设计中,我们达到了题目的要求,但在调试系统时,我们也发现了一些小问题,主要是由于单片机端口之间的干扰引起的,在改进的过程中,我们也学到了很多东西,相信通过以后的不断学习,我们的设计会更加完美。
五:
附件
主要程序清单
#include
#include"jianpan.h"
#include"lcd.h"
#defineCPU_F((double)1000000)
#definedelay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))
#definedelay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))
unsignedchardat_sheng[]={/*--文字:
声--*/
0x02,0x12,0xD2,0x52,0x52,0x52,0x52,0xDF,0x52,0x52,0x52,0x52,0xD2,0x12,0x02,0x00,
0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,
};
unsignedchardat_ji[]={/*--文字:
级--*/
0x20,0x30,0xAC,0x63,0x20,0x18,0x02,0x82,0x7E,0x82,0x42,0x72,0x4E,0xC0,0x40,0x00,
0x10,0x13,0x11,0x49,0x29,0x91,0x8C,0x43,0x40,0x23,0x14,0x18,0x66,0xC1,0x40,0x00,
};
unsignedchardat_pin[]={/*--文字:
频--*/
0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00,
};
unsignedchardat_lv[]={/*--文字:
率--*/
0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04,0x04,0x00,
0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0A,0x08,0x00,
};
unsignedchardat_zui[]={/*--文字:
最--*/
0x40,0x40,0xC0,0x5F,0x55,0x55,0xD5,0x55,0x55,0x55,0x55,0x5F,0x40,0x40,0x40,0x00,
0x20,0x20,0x3F,0x15,0x15,0x15,0xFF,0x48,0x23,0x15,0x09,0x15,0x23,0x61,0x20,0x00,
};
unsignedchardat_da[]={/*--文字:
大--*/
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,
};
unsignedchardat_she[]={/*--文字:
设--*/
0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,
0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00,
};
unsignedchardat_zhi[]={/*--文字:
置--*/
0x00,0x20,0x2F,0xA9,0xA9,0xAF,0xE9,0xB9,0xA9,0xAF,0xA9,0xA9,0x2F,0x20,0x00,0x00,
0x80,0x80,0x80,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0x80,0x80,0x80,0x00,
};
unsignedchardat_bao[]={/*--文字:
报--*/
0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xFF,0xC1,0x41,0x41,0x49,0x51,0xCF,0x00,0x00,
0x01,0x41,0x80,0x7F,0x00,0x00,0x00,0xFF,0x40,0x23,0x14,0x1C,0x33,0x60,0x20,0x00,
};
unsignedchardat_jing[]={/*--文字:
警--*/
0x20,0x1A,0xFA,0xAF,0xAA,0xEF,0x0A,0xFA,0x10,0x8F,0x54,0x24,0x5C,0x84,0x04,0x00,
0x02,0x02,0x02,0xEA,0xAA,0xAA,0xAB,0xAA,0xAB,0xAA,0xAA,0xEA,0x02,0x02,0x03,0x00,
};
unsignedchardat_fan[]={/*--文字:
范--*/
0x44,0x94,0xA4,0x64,0x04,0x0F,0x04,0xE4,0x24,0x2C,0x2F,0x24,0xE4,0x04,0x04,0x00,
0x08,0x09,0xF8,0x04,0x03,0x00,0x00,0x3F,0x40,0x40,0x42,0x46,0x43,0x70,0x00,0x00,
};
unsignedchardat_wei[]={/*--文字:
围--*/
0x00,0xFF,0x01,0x89,0xA9,0xA9,0xFF,0xA9,0xA9,0xA9,0xA9,0x09,0x01,0xFF,0x00,0x00,
0x00,0xFF,0x40,0x40,0x40,0x40,0x5F,0x40,0x48,0x50,0x4F,0x40,0x40,0xFF,0x00,0x00,
};
unsignedchardat_shang[]={/*--文字:
上--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00,
};
unsignedchardat_xia[]={/*--文字:
下--*/
0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x22,0x62,0xC2,0x82,0x02,0x03,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
};
unsignedchardat_xian[]={/*--文字:
限--*/
0xFE,0x02,0x32,0x4E,0x82,0x00,0xFE,0x4A,0xCA,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,
0xFF,0x00,0x02,0x04,0x03,0x00,0xFF,0x40,0x20,0x03,0x0C,0x12,0x21,0x60,0x20,0x00,
};
unsignedchardat_mao[]={/*--文字:
:
--*/
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00
};
unsignedchardat_d[]={/*--文字:
d--*/
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20
};
unsignedchardat_B[]={/*--文字:
B--*/
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00
};
unsignedchardat_H[]={/*--文字:
H--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=8x16--*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20
};
unsignedchardat_Z[]={/*--文字:
Z--*/
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00
};
unsignedchardat_dian[]={/*--文字:
.--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00
};
unsignedchardat_0[]={/*--文字:
0--*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00
};
unsignedchardat_1[]={/*--文字:
1--*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00
};
unsignedchardat_2[]={/*--文字:
2--*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00
};
unsignedchardat_3[]={/*--文字:
3--*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00
};
unsignedchardat_4[]={/*--文字:
4--*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00
};
unsignedchardat_5[]={/*--文字:
5--*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00
};
unsignedchardat_6[]={/*--文字:
6--*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00
};
unsignedchardat_7[]={/*--文字:
7--*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00
};
unsignedchardat_8[]={/*--文字:
8--*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00
};
unsignedchardat_9[]={/*--文字:
9--*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00
};
unsignedchardat_kong[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
structSHENGJI_SHIJIAN{
unsignedcharfen_shi;
unsignedcharfen_ge;
unsignedcharmiao_shi;
unsignedcharmiao_ge;
unsignedintshengji;
};
structSHENGJI_SHIJIANshengji_shijian[10];
unsignedchar*dat_shu[10]={dat_0,dat_1,dat_2,dat_3,dat_4,dat_5,dat_6,dat_7,dat_8,dat_9};
unsignedintmax_shengji[10]={0};
voidxianshi_db();
voidxianshi_zuida();
voidxianshi_pinlv();
voidxianshi_10ge();
voidxianshi_shezhi_hz();
voidCSH_shuzhu();
voidCapture_f();
unsignedcharkey=0;//键盘值
unsignedcharj=1;//捕获的是第几个数
unsignedintbuhuo_zhi=0,buhuo_buff=0;
unsignedintADOUT=0;
unsignedintAD_max=0;
unsignedcharflag_ping=0;//换屏0:
主屏,1:
子屏,2:
子屏,3:
子屏
unsignedcharflag_queren_f=0;//确认频率报警范围标志
unsignedintflag_max_min=0;//调整MIN还是MAX标志
unsignedcharmiao_ge=0,miao_shi=0,fen_ge=0,fen_shi=0;
unsignedcharSD_miao_ge=0,SD_miao_shi=0,SD_fen_ge=0,SD_fen_shi=0;
unsignedintMIN_HZ=0,MAX_HZ=0;//设置最大和最小的频率报警范围
intmain()
{
unsignedinti=0;
//Stopwatchdogtimertopreventtimeoutreset
WDTCTL=WDTPW+WDTHOLD;
P2DIR&=~BIT0;//P2.0输入
P2SEL|=BIT0;//P2.0TA2
init_jianpan();
lcd_init
(1);
lcd_init(0);
/*******************************************************************************/
structSHENGJI_SHIJIANchushihua;//初始化shengji_shijian[10];
chushihua.fen_shi=0;
chushihua.fen_ge=0;
chushihua.miao_shi=0;
chushihua.miao_ge=0;
chushihua.shengji=0;
for(i=0;i<10;i++)
shengji_shijian[i]=chushihua;
/*******************************************************************************/
zhiti(0,0,dat_sheng,1);//显示声级:
dB
zhiti(0,1,dat_ji,1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 显示 声音 信号 采集 测量仪