A. 基于51单片机的语音降噪处理设计
51 单片机,不适于搞这样的题目。
B. 急求基于51单片机噪声测量原理图和汇编程序代码,噪声误差不超过1dB,用LCD显示,望高手帮忙!!
网上查论文吧,这些系统的产品,没有人愿意做义工的。
C. 基于单片机和protues仿真软件的环境噪声测量仪,要有软件仿真结果,附完整电路图和程序,
模电、数电一般用Multisim,当然也可以用protues ewb 软件是最普通的 .MultiSIM7还具有I-V分析仪(相当于真实环境中的晶体管特性图示仪)和Agilent
D. 我想用咪头单片机来测量噪声,噪声是用声压的对数太表示,请问咪头的
理应来说,做为仪表,应该用仪用运放,因为它的线性度比较好,但是,传统仪表对这样的器件要求可能更高一些,你用的是单片机,所以,很大程度上可以用软件解决。仪用运放需要的电压一般较高,像OP07,不太适合在单5V上使用,而且它也很贵。从成本上来说,LM358比较合适,另外,358最低支持在2V的电压下工作,或者正负1V,5V可以用虚地做一个中点当成正负2.5V来使用,也可以直接使用单5V为358供电,所以用它是首选。 接下来就是线性度的问题了,由于驻极体话筒本身还有运放本身对不同频率的响应不同,而且对声压的反应也不同,还有你的电路本身接法也会影响频响和强度变化情况,最重要的是,不要放大过头,防止大信号消顶失真。可以的话要多设置几个增益档位,配合软件实现自动量程功能。 在软件处理时,可以使用基准强度的声源进行校正,最后把校正表存在程序里,通过软件来纠正由于元件和电路带来的整体线性度问题。这样一来,每个部分带来的线性度问题就全都被解决了。 刚才提到频响的问题,所以纠正的时候不要忘了对不同频率的信号做不同的纠正。这点大概用ADC0809有点困难,因为它的采样率一般,如果做频率分析有点困难,当然一定范围内还是可用的,可以使用FFT算法来分析。定时法容易因为信号复杂而无法得到准确的中心频率。 所以总的来说,电路不是难题,难的是软件部分。
E. 单片机里面的抑制噪声的噪声是什么
应该多做一点说明
单片机里面的抑制噪声
噪声有很多种类
电磁干扰噪声
语音信号噪声,等等
F. 51单片机常用抗强干扰的方法!
印刷电路板的设计对单片机系统的抗干扰能力来说是非常重要的,需本着尽量控制噪声源、减小噪声的传播与耦合、减小噪声的吸收三大原则设计。
单片机系统的印刷电路板通常可分三个区,即模拟区(怕干扰)、数字区(既怕干扰又产生干扰)和功率驱动区(干扰源)。应遵循单点接电源、单点接地的原则供电。三个区域的电源线、地线分三路引出,噪声元件与非噪声元件要离得远一些。
笔者把多年来的设计经验和技巧介绍给大家,供参考。
1. 把时钟振荡电路、特殊高速逻辑电路部分用地线圈起来,让周围电场接近于零。
2.I/O驱动器件、功率放大2S件尽量靠近板子的边缘,靠近接插件。
3.能用低速的器件就不用高速的器件,高速器件只用在关键地方。
4.使用满足系统要求的最低频率的时钟,时钟发生器尽量靠近用到该时钟的器件。晶体振荡器外壳要接地,时钟线要尽量短。晶体振荡器及噪声敏感器件的下面要加大接地的面积且不应该走其他信号线,时钟线垂直于 I/O线比平行I/O线干扰小且尽量远离 I/O线。
1.使用45°的线而不要使用90°的折线,以减小高频信号的发射。电源线、地线要尽量粗。信号线的过孔要尽量少。
6.四层板比双面板噪声低20dB,六层板比四层板低10dB。
7.关键的线尽量短且粗,并在其两边加保护地线,敏感信号和噪声地带信号通过一条扁带电缆要用地线—信号—地线的方式引出。
8.任何信号线都不要形成环路,如不可避免,环路应尽量小。
9.对A/D类器件,数字部分与模拟部分宁可绕一下也不要交叉,噪声敏感线不要与高速线、大电流线平行。
10.单片机及其他IC电路,如有多个电源、地的话,每端都要加一个去耦电容;每个IC要加一个去耦电容,选高频信号好的独石或瓷片电容作为去耦电容,焊接去耦电容时,引脚要尽量短;用大容量的钽电容或聚脂电容而不用电解电容作为电路充电的储能电容是因为电解电容分布电感较大,对高频无效;如用电解电容则要与高频特性好的去耦电容成对使用。
11.单片机中未用的I/O口要定义成输出;从高噪声区来的信号要加滤波;继电器线圈外要加放电二极管。可以用串一个电阻的办法来软化I/O线的跳变沿或提供一定的阻尼。
12. 需要时,电源线、地线上可加用铜线绕制铁氧体而成的高频扼流器件来阻断高频噪声的传导,弱信号的引出线、高频、大功率引出电缆要加屏蔽:引出线与地线要绞起来。
13. 印刷电路板过大或信号线频率过高,使得线上的延迟时间大于等于信号上升时间,该线要按传输线处理,要加终端匹配电阻。
14.尽量不要使用IC插座;因IC座有较大的分布电容。
G. 基于51单片机C语言的噪音监控,求高人给发个程序,感恩不尽
/********************************************************************
* 文件名 : 温度采集DS18B20.c
* 描述 : 该文件实现了用温度传感器件DS18B20对温度的采集,并在数码管上显示出来。
* 创建人 : 东流,2009年4月10日
* 版本号 : 2.0
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define jump_ROM 0xCC
#define start 0x44
#define read_EEROM 0xBE
sbit DQ = P2^3; //DS18B20数据口
unsigned char TMPH,TMPL;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/********************************************************************
* 名称 : delay()
* 功能 : 延时,延时时间大概为140US。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay_1()
{
int i,j;
for(i=0; i<=10; i++)
for(j=0; j<=2; j++)
;
}
/********************************************************************
* 名称 : delay()
* 功能 : 延时函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay(uint N)
{
int i;
for(i=0; i<N; i++)
;
}
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
/********************************************************************
* 名称 : Reset()
* 功能 : 复位DS18B20
* 输入 : 无
* 输出 : 无
***********************************************************************/
uchar Reset(void)
{
uchar deceive_ready;
DQ = 0;
delay(29);
DQ = 1;
delay(3);
deceive_ready = DQ;
delay(25);
return(deceive_ready);
}
/********************************************************************
* 名称 : read_bit()
* 功能 : 从DS18B20读一个位值
* 输入 : 无
* 输出 : 从DS18B20读出的一个位值
***********************************************************************/
uchar read_bit(void)
{
uchar i;
DQ = 0;
DQ = 1;
for(i=0; i<3; i++);
return(DQ);
}
/********************************************************************
* 名称 : write_bit()
* 功能 : 向DS18B20写一位
* 输入 : bitval(要对DS18B20写入的位值)
* 输出 : 无
***********************************************************************/
void write_bit(uchar bitval)
{
DQ=0;if(bitval==1)
DQ=1;
delay(5);
DQ=1;
}
/********************************************************************
* 名称 : read_byte()
* 功能 : 从DS18B20读一个字节
* 输入 : 无
* 输出 : 从DS18B20读到的值
***********************************************************************/
uchar read_byte(void)
{
uchar i,m,receive_data;
m = 1;
receive_data = 0;
for(i=0; i<8; i++)
{
if(read_bit())
{
receive_data = receive_data + (m << i);
}
delay(6);
}
return(receive_data);
}
/********************************************************************
* 名称 : write_byte()
* 功能 : 向DS18B20写一个字节
* 输入 : val(要对DS18B20写入的命令值)
* 输出 : 无
***********************************************************************/
void write_byte(uchar val)
{
uchar i,temp;
for(i=0; i<8; i++)
{
temp = val >> i;
temp = temp & 0x01;
write_bit(temp);
delay(5);
}
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main()
{
float tt;
uint temp;
P2 = 0x00;
while(1)
{
Reset();
write_byte(jump_ROM);
write_byte(start);
Reset();
write_byte(jump_ROM);
write_byte(read_EEROM);
TMPL = read_byte();
TMPH = read_byte();
temp = TMPL / 16 + TMPH * 16;
P0 = table[temp/10%10];
P2 = 6;
Delay_1ms(5);
P0 = table[temp%10];
P2 = 7;
Delay_1ms(5);
}
}
H. 基于单片机的噪音检测系统 采集到电压如何对应分贝值模数转换使用的是ADC0809
原理上把ADC0809转换电压得到的数据做对数计算 后乘以一个系数 再加一个常数 即可, 这两个参数可以通过与标准声强计比较来定标。
不过我建议你在噪声传感器前置电路后面用一个对数放大器,然后再进ADC0809,.
不然8位的ad转换动态范围太小了,表达噪声的分贝值会很尴尬的。
不想做对数放大器的话,就不用0809,
可以先把噪声信号前置放大,计权滤波,精密整流,然后用低速的积分型AD转换器(例如电压频率转换)