语音电子开关身份认证系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

语音电子开关身份认证系统

一、 设计要求: 1、功能

语音电子你身份认证系统功能为:可以识别8个语音输入,语音识别正确后能自动开锁,且对8个语音输入给出8种不同的语音回答。系统在语言不能正确识别,比如感冒时,可以输入6位的密码开锁,6位密码也可以修改。 2、基本条件

本课题主要是兴趣,再加上看书刚好看到,暂时没有板子,但是如果有条件的话,很想尝试着做一个模型出来;但是我们现在已经学习了单片机、嵌入式、数电模电及高频等等,这些足以帮助我们在实际的课题中解决相关问题。此外网络也给我们的学习提供了方便,我们可以通过网络查找我们需要的资料,比如本课题的语音识别芯片AP7003及语音回放芯片ISD4002-120芯片等等。

二、原理性设计(含部分功能解释)

框图:

ISD4002不能独立进行录放工作,需要采用SPI 总线的方式与单片机链接,应用电路如下。

ISD4002的声音输出采用音频功率放大器调节声音。LM386是音频功率放大器,主要应用与低电压消费产品,在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,可以调节范围为20~200。ISD4002的通过数据端MOSI 、MISO 、时钟端SCLK 、片选端SS 、中断端INT 与单片机相连,单片机的外围电路如下:

录放音系统电路:

在本系统中,采用由按键直接控制的AP7003-02芯片。AP7003-02可以单独使用,无需控制器,适合于用键盘直接控制。芯片有8键控制盒12键控制两种键盘操作模式。PIM1=1接高电平时,AP7003-02为12键控制模式,12键控制模式的典型电路如下:

AP7003的12键模式:

PIM1=0接低电平时,AP7003-02为8键控制模式,8键控制模式的典型电路如下:

AP7003的8键模式:

系统语音识别电路如下,电路采用AP7003-02的12键模式的标准电路,PIM1接高电平。系统可以识别8个1.5m语音长度的语音信号,识别标志信号在A端POA1-POA8输出,POSL接低电平,则A口低输出有效。通电后,先按1#键,LED1端的语音录音指示灯和POA1端的指示灯同时亮,此时可对着话筒讲话,POA1灭,LED1亮。再对着话筒“学习”,LED2语音识别指示灯和POA1同时亮,表示“学习”成功。接着再按2#键,LED1、POA2同时亮,另外一个家庭成员立刻对着话筒发话,以此类推,直到1~8键全部学习完毕,也可以对某一键或某几个键进行无序输入和学习,也可以一个家庭成员输入多个语音识别信息。

在此把8路的输出POA1-POA8端接与8-3优先编码器74LS148芯片,74LS148的输入端0~7低电平有效,7段优先级较高,和AP7003的输出低电平有效正好对应,在此把AP7003的A端POA1-POA8与74LS148的输入端7~0端依次相连,则1号语音信息有效级较高。74LS148芯片的EI端为输入使能端,低电平有效,在此接一个开关,可以控制识别的输出信号是否送单片机,74LS148的A、B、C输出端为输入0~7的编码输出,也是低电平有效,GS端为芯片工作且有有效信号输入的输出端。A、B、C输出端接与单片机的P2.0~P2.2端,GS端接单片机的中断0INT0端,有语音识别成功时可以产生中断,进入中断服务程序。第11键clear output为输出转换键,每转换控制一种电器都需按一下该键。

语音识别正确或输入密码正确时,P2.4端输出高电平,三极管Q1导通,继电器得以动作,黄色指示灯DS12亮表示开锁。

语音电子门锁系统:

三、程序

流程图:

1、系统主流程图:

2、电子密码锁修改密码子程序流程图

3、电子密码锁输入密码子程序流程图:

源程序代码:

1、语音识别:

#include <reg51.h> //语音识别程序

#include <absacc.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

sbit ISD_SS = P1^0; //ISD4002片选

sbit ISD_SCLK = P1^1; //ISD4002时钟

sbit ISD_MOSI = P1^2; //ISD4002数据输入

sbit ISD_MISO = P1^3; //ISD4002数据输出

sbit ISD_INT = P3^3; //ISD4002溢出或放音结束中断

sbit PR = P1^4; //PR=1录音PR=0放音

sbit RUN = P1^5; //执行录音或放音

sbit STOP = P1^6; //复位

sbit LED = P1^7; //指示灯

sbit SDA= P3^1; //24c02数据端

sbit SCL= P3^0; //24c02时钟端

sbit error= P2^4; //闭锁指示端

sbit right= P2^5; //开锁指示端和开锁输出

#define COM XBYTE [0x7fff] //8279命令状态地址A11 A14

#define DAT XBYTE [0x77fF] //8279数据地址

sbit clflag=ACC^7; //记录状态字最高位

bit int0_flag=0; //中断0标志位

uchar nmb_flag; //语音识别编号

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //0,1,2,3,4,5,6,7

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 //8,9,A,B,C,D,E,F }; //共阳极数码管显示段码uchar idata diss[8]; //显示用数据暂存器8位数据

uchar idata mima[6]; //密码用数据暂存器6位数据

//************** 函数声明**********************

void reply(void); //自动回答程序

void ISD_PR(void); //手动对ISD录放音

void ISD_WRITE(uchar isdx); //SPI串行发送一个字节子程序

void ISD_STOP(void); //发送stop指令程序

void ISD_PU(void); //发送上电指令程序

void ISD_PD(void); //发送省电指令程序

void ISD_PLAY(void); //发送play指令程序

void ISD_REC(void); //发送rec指令程序

void ISD_SETPLAY(uchar adl,uchar adh); //发送setplay指令程序

void ISD_SETREC(uchar adl,uchar adh); //发送setrec指令程序

uchar READ_ISD_OVF(void); //读溢出标志OVF程序

void ISD_OVF(void); //LED闪烁程序

void DELAY(uint n); //延迟n微秒

void DELAYms(uint n); //延迟n毫秒

相关文档
最新文档