本程序主要通过话筒对声音信号进行识别,由于本电路有效的去除杂波,所以仅能对响度较大的声音进行识别(例:拍手声)。像正常的说话声对本电路虑除,不会产生信息的输入。话筒识别的加入,为我们建立了声控平台。
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
三、 实现代码:plcjs.技.术_网
//============================================================ === //WWW_PLCJS_COM-PLC-技.术_网
// 开发日期: 2009/01/27 //WWW_PLCJS_COM-PLC-技.术_网
// 修改日期: //W1WW_P4LCJS_COM-PLC-技.术_网
// 程序作者: guojun 益芯科技 //WW.W_PLCJS_COM-PLC-技.术_网
// 程序备注: 此程序仅为表现本机功能而演示用,当用作实际工程时请慎用. //WWW_P※LCJS_CO※M-PLC-技-.术_网
// 特别声明: 此程序可作研究之用,但引用,转载,使用请注明出处. //WWW.PLCJS.COM——可编程控制器技术门户
//================================================================//WWcW_PLCJS_COM-PLC-技.术_网
#include <at89x51.h> //包含51单片机相关头文件WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
sbit LeftLed=P2^0; //定义前方左侧指示灯端口WWW_PLC※JS_COM-PmLC-技.术_网
sbit RightLed=P0^7; //定义前方右侧指示灯端口WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
sbit B1=P0^4; //定义话筒输入端口WWcW_PLCJS_COM-PLC-技.术_网
void Delay() //定义去除杂音延时子程序W1WW_P4LCJS_COM-PLC-技.术_网
{ unsigned int DelayTime=1000; //定义去除杂音变量P.L.C.技.术.网——可编程控制器技术门户
while(DelayTime--); //延时循环开始WWW_P※LCJS_CO※M-PLC-技-.术_网
return;WWW_PLCJS_COM-PLC-技.术_网
}WWW_P※LCJS_COM-PLC-)技.术_网
void main() //主程序入口WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
{WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
LeftLed=0; //前方左侧指示灯亮WWW_PLC※JS_COM-PmLC-技.术_网
RightLed=0; //前方右侧批示灯亮WWW_PLCJS_COM-PLC-技.术_网
while(1) //程序主循环WW.W_PLCJS_COM-PLC-技.术_网
{WWW_PLC※JS_COM-PmLC-技.术_网
if(0==B1) //判断是否有声音输入WW.W_PLC※JS_C,OM-PL,C-技.术_网
{W1WW_P4LCJS_COM-PLC-技.术_网
while(0==B1); //等待声音信号结束WWW_PLCJS@_COM%-PLC-技.术_网
Delay(); //去除多余杂音WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
LeftLed=!LeftLed; //前方左侧指示灯取反WW.W_PLCJS_COM-PLC-技.术_网
RightLed=!RightLed; //前方右侧指示灯取反WW.W_PLC※JS_C,OM-PL,C-技.术_网
}WWcW_PLCJS_COM-PLC-技.术_网
}WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
四、 运行效果:WWW_PLCJS@_COM%-PLC-技.术_网
程序运行效果:本程序开机后,前方两侧的指示灯点亮,拍一下手后,前方指示灯关闭。再一次进行拍手,指示灯又一次被点亮。plcjs.技.术_网