1、概述
声音传感器是一种可以检测、测量并显示声音波形的传感器,广泛的用于日常生活、军事、医疗、工业、领海、航天等中,并且成为现代社会发展所不能缺少的部分。在本设计中,只采用声音传感器的检测声音的能力。
2、硬件设计
1.1硬件组成
该声音传感器由声音采集电路、信号比较电路和LED显示电路组成,主要芯片有51单片机和LM939电压比较器,工作电压为3.3V-5V。结构框图如图1.1所示,原理图如图1.2所示。 图1.1 结构框图
图1.2 原理图
1.2声音采集电路
这部分由一个声音采集器,一个由RC振荡器构成的滤波器和一个放大器组成。其中,声音采集器可以检测声音,滤波器可以减少外部干扰,放大器放大信号电压,以便进行处理。原理图如图1.3。
图1.3 声音采集电路
1.3信号比较电路
信号比较部分采用LM393集成芯片实现功能,这一芯片的结构图如图1.4所示,由图可知,3管脚接声音采集电路,输入采集到的声音信号;管脚2接LED显示电路所给定的一个可调电压。其中,声音信号与给定的电压比较,若大于该电压,则由1脚输出信号0;若低于给定的电压,则由1管脚输出信号1。1管脚连接单片机p0.1和LED显示电路的管脚1。 图1.4 LM393内部结构
1.4LED显示电路
该部分电路的原理图如图1.5所示,该电路由VCC给一个高电平,滑动变阻器R8用以调节供给比较器的电压阀值。当接电时,灯1亮;当比较器输出值为1时,由于电路两边都是高电平,所以灯2不亮,反之,灯2亮,这样就能反应出有无声音信号了。
3、程序编写
单片机的作用是根据声音信号由串口发送字符串,51单片机串口通信的程序如下:
#include <reg52.h>
unsigned char date;
#define uchar unsigned char
#define uint unsigned int
sbit key1=P0^1;
/* 函数申明 -----------------------------------------------*/
void delay(uint z);
void Initial_com(void);
/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
//******************************
//*****串口初始化函数***********
//******************************
void Initial_com(void)
{
EA=1; //开总中断
ES=1; //允许串口中断
ET1=1; //允许定时器T1的中断
TMOD=0x20; //定时器T1,在方式2中断产生波特率
PCON=0x00; //SMOD=0
SCON=0x50; // 方式1 由定时器控制
TH1=0xfd; //波特率设置为9600
TL1=0xfd;
TR1=1; //开定时器T1运行控制位
}
//*************************
//**********主函数*********
//*************************
main()
{
Initial_com();
while(1)
{
if(key1==0)
{
delay(); //消抖动
if(key1==0) //确认触发
{
SBUF=0X01;
delay(200);
}
}
if(RI)
{
date=SBUF; //单片机接受
SBUF=date; //单片机发送
RI=0;
}
}
}
注:可通过改变程序中的红部分来改变声音信号的输入管脚和串行口输出的内容。