基于单片机的语音电子门锁毕业论文Word文档格式.docx

上传人:b****5 文档编号:17407395 上传时间:2022-12-01 格式:DOCX 页数:37 大小:616.38KB
下载 相关 举报
基于单片机的语音电子门锁毕业论文Word文档格式.docx_第1页
第1页 / 共37页
基于单片机的语音电子门锁毕业论文Word文档格式.docx_第2页
第2页 / 共37页
基于单片机的语音电子门锁毕业论文Word文档格式.docx_第3页
第3页 / 共37页
基于单片机的语音电子门锁毕业论文Word文档格式.docx_第4页
第4页 / 共37页
基于单片机的语音电子门锁毕业论文Word文档格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于单片机的语音电子门锁毕业论文Word文档格式.docx

《基于单片机的语音电子门锁毕业论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的语音电子门锁毕业论文Word文档格式.docx(37页珍藏版)》请在冰豆网上搜索。

基于单片机的语音电子门锁毕业论文Word文档格式.docx

由此可以看出组合使用各种信息是电子锁以后发展的必然趋势。

1.3本设计实现的目标

本设计采用单片机STC89C52与STC11L08XE为主控芯片,结合一些外围电路,组成语音电子门锁,用户如果想要打开门锁,必需要先通过提供的键盘输入正确的密码才能将门锁打开,或者通过二级语音口令识别开门。

如果密码输入错误蜂鸣器会有提示,为了提高实际安全性,设计当密码输入错误超过三次后将报警并且封锁键盘。

密码可以由用户登陆后由自己随意修改设定,设定密码长度为4位。

修改密码只有门锁打开后才能修改密码。

修改密码时要前后两次输入的新密码一致才能修改成功,修改成功后会有指示灯提示。

语音识别开门时要首先说出一级加密的口令,其次再说出二级加密口令才能将门打开。

1.4设计方案的设计

由于现在市面上的单片机种类很多,每种单片机都具有一定的优缺点,因此在选用时做了很多比较,最后比较合理的选择了STC单片机,以期获得最高的性价比。

通常情况来说在选取单片机时要从以下几个方面考虑:

存储器、性能、运行速度、定时/计数器、I/O口、模拟电路功能、串行接口、功耗、工作电压、抗干扰性、封装形式、性等,除了以上方面还有一些最基本参数比如:

中断源的优先级和数量、有没有低电压检测功能、工作温度围、有无上电复位功能、单片机有无时钟振荡器等。

在开发过程中项目的开发还受到:

编程器、开发工具、开发人员的适应性、开发成本、技术服务和支持等等因素。

基于以上一些因素本设计选用单片机STC89C52与STC11L08XE两个单片机作为主控单片机。

其中STC89C52单片机主要负责的功能是四位数码管的显示、按键设置密码、蜂鸣器报警。

一些操作时的指示状态等;

单片机STC11L08XE主要负责语音部分识别,与门锁控制的输出。

本设计之所以选择用两个芯片是因为如果用一个芯片来完成,就需要用一个比较高端的芯片,而且管脚资源要足够多,Flash等要足够大,这样处理起来才更容易,但是如果选择了这种芯片成本就会提高很多。

而向本设计这样采用两个简单的单片机来做就既能照顾到成本,又能保证硬件资源够用。

性价比还是很高的。

当用户开锁时,先按键盘的开锁键,之后再按键盘的确定键来调整要设置密码的位,再通过增加键或者减小键来调整密码,当调整好后按下确定键,继续调整下一位,直到四位密码都输入完,按确定键瑞出键盘输入程序。

如果密码输入正确则开锁,不正确蜂鸣器会发出短暂的一生响动要重新输入密码,如果连续输入三次密码错误那么就会发出报警。

如果用户需要修改密码时,需要在输入密码正确后,继续输入两次新密码,只有这两次新密码一致时,新密码才修改成功。

密码修改成功时会有绿色的LED指示。

2单片机介绍

2.1单片机STC89C52

STC89C52RC这个单片机是宏晶科技公司推出的新一代的低功耗、高速并且有很强抗干扰的能力,它的指令代码兼容传统的老8051单片机,可以12时钟/机器周期或者是6时钟/机器周期的任意选择。

2.1.1单片机STC89C52的主要特性

1.这是一款增强型的8051单片机,6时钟/机器周期或者是12时钟/机器周期可以任意选择,其指令代码完全兼容传统8051单片机的指令代码。

2.这种单片机的工作电压围:

5.5V~3.3V(5V单片机)或者3.8V~2.0V(3V单片机)。

3.它的工作频率围:

0~40MHz,相对于普通8051的0~80MHz,实际上其工作频率可达48MHz。

4.用户的应用程序存储空间为8K字节(Flash)。

片上集成了512字节数据存数区(RAM)。

6.通用I/O口有32个,复位后为:

P1/P2/P3/P4是准双向口/弱上拉的,P0口是漏极开路输出口,当在作为总线扩展用时是不用加上拉电阻的,当作为I/O口用时,需加若上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),不需要专用的编程器和专用仿真器,就可以通过串口(RxD/P3.0,TxD/P3.1)将用户程序直接下载到单片机里,数秒即可完成一片数据的写入操作。

8.新增了EEPROM功能。

9.具有看门狗功能。

10.片上共有3个16位定时器/计数器。

即定时器T0、T1、T2定时器。

11.有4路外部中断,包括低电平触发电路或下降沿中断,PowerDown模式可以由外部的中断低电平方式触发进行中断唤醒。

12.片上有通用的异步通信串行口(UART),它还可以用定时器实现多个UART工作。

13.单片机的工作温度围:

-40~+85℃(工业级)/0~75℃(商业级)

2.1.2STC89C52RC单片机的工作模式模式

1.典型功耗<

0.1μA,可以由外部的中断来唤醒,中断执行并且返回后,继续执行原来的用户程序。

2.空闲模式:

此种模式的典型功耗2mA。

3.正常工作模式:

此种模式的典型功耗4mA~7mA。

4.掉电模式可以通过外部中断来唤醒,这适用气表、水表等一些电池供电的设备与一些便携的设备。

STC89C52RC单片机引脚功能说明。

引脚图如图2-1所示。

图2-1STC89C52RC引脚图

VCC(40引脚):

接电源电压。

VSS(20引脚):

接地。

P0端口(P0.0~P0.7对应39~32引脚)。

P0端口是一个漏极开路的8位双向的I/O口。

当作为输出端口用时,每个引脚可以驱动8个TTL的负载;

当对P0端口写入“1”时,它又可以作为高阻抗输入。

在访问外部程序和数据存储器时,P0端口也可以提供低8位地址和8位数据的复用总线。

此时,P0端口部的若上拉电阻有效。

当在FlashROM编程时,由P0端口接收指令字节;

在校验程序时,则输出指令字节。

在验证时,要求要外接上拉电阻。

P1端口(P1.0~P1.7对应于1~8引脚)。

P1端口是一个带部上拉电阻的8位的双向I/O端口。

P1的输出缓冲器可以驱动4个TTL的输入。

当对端口写入1时,部的上拉电阻会把端口拉到高电平,这时端口可以当做输出使用。

当P1端口作输入口使用时,因为部有上拉电阻,那些被外部拉低的引脚会输出一个电流(IIL)。

P2端口(P2.0~P2.7,21~28引脚):

P2口是一个带部上拉电阻的8位双向I/O端口。

P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。

对端口写入1时,通过部的上拉电阻把端口拉到高电平,这时可用作输入口。

P2端口作为输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。

P3端口(P3.0~P3.7对应于10~17引脚)。

P3端口是一个带有部上拉电阻的8位的双向I/O端口。

P3端口的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入的信号。

当对端口写入“1”时,它部的上拉电阻会把端口拉到高电平,此时P3端口可用作输出口。

当P3端口做输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(IIL)。

当在对FlashROM编程或程序校验时,P3端口还接收一些控制信号。

P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示:

引脚号

复用功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

(外部中断0)

P3.3

(外部中断1)

P3.4

T0(定时器0的外部输入)

P3.5

T1(定时器1的外部输入)

P3.6

(外部数据存储器写选通)

P3.7

(外部数据存储器读选通)

表2-1P3口引脚复用功能复用功能

RST(9引脚):

复位引脚。

当通过此引脚给单片机连续输入两个机器周期以上的高电平信号时为有效,此引脚的功能为用来完成单片机的复位初始化操作。

当看门狗计时完成后,RST复位引脚输出96个晶振周期的高电平信号。

特殊寄存器AUXR(地址8EH)上的DISRTO位可以让此功能无效。

DISRTO在默认状态下,复位高电平有效。

ALE/ROG(30引脚):

地址锁存控制功能:

(ALE)引脚是当访问外部程序存储器的时候,锁存低8位地址的输出脉冲。

当在Flash编程时,此引脚(ROG)也可以用作编程输入脉冲。

(29引脚):

)是外部程序存储器的选通信号。

当单片机从外部程序存储器执行外部代码时,

会在每个机器周期被激活两次,而访问外部数据存储器的时候,

将不被激活。

EA/VPP(31引脚):

访问外部程序存储器的控制信号。

为了使能从0000H到FFFFH的外部程序存储器的读取指令,EA必须接地(GND)。

注意加密方式为1时,EA将部锁定为RESET。

为了执行部程序指令,EA应该接VCC。

在Flash编程期间,A也接收12伏特的VPP电压。

XTAL1(19引脚):

振荡器的反相放大器和部时钟发生电路的输入端。

XTAL2(18引脚):

振荡器的反相放大器的输入端

2.2单片机STC11L08XE

STC11L08XE的主要性能:

1.高速,1个时钟/机器周期,增强型8051核,速度比普通8051快8-12倍

2.宽电压,5.5-4.1/3.7,3.6-2.4/2.1

3.低功耗设计,空闲模式

4.低功耗模式,掉电模式和远程唤醒模式

5.工作频率,0-35MHz,相当于普通8051的0-420MHz

6.时钟,外部晶振或部晶振磕训啊

7.片EEPROM功能,擦写次数10万次以上

8.2个16位定时器

9.1个独立波特率发生器

10.可编程时钟输出功能

11.硬件看门狗

12.全双工异步串行口

13.先进的指令集结构

14.通用I/O口(36/40个)

管脚图如图2-2-所示:

图2-2STC11L08XE单片机引脚图

3语音识别模块介绍

语音识别模块实物如图3-1所示。

本模块的主要芯片是LD3320语音识别芯片。

LD3320是一颗基于非特定人语音识别(SI-ASR:

Speaker-IndependentAutomaticSpeechRecognition)技术的语音识别/声控芯片。

提供了真正的单芯片语音识别解决方案。

LD3320芯片上集成了高精度的A/D和D/A接口,不再需要外接辅助的Flash和RAM,即可以实现语音识别/声控/人机对话功能。

并且,识别的关键词语列表是可以动态编辑的。

基于LD3320,可以在任何的电子产品中,甚至包括最简单的51作为主控芯片的系统中,轻松实现语音识别/声控/人机对话功能。

为所有的电子产品增加VUI(VoiceUserInterface)语音用户操作界面。

图3-1语音识别模块实物图

主要特色功能:

非特定人语音识别技术:

不需要用户进行录音训练

可动态编辑的识别关键词语列表:

只需要把识别的关键词语以字符串的形式传送进芯片,即可以在下次识别中立即生效。

比如,用户在51等MCU的编程中,简单地通过设置芯片的寄存器,把诸如“你好”这样的识别关键词的容动态地传入芯片中,芯片就可以识别这样设定的关键词语了。

真正单芯片解决方案:

不需要任何外接的辅助Flash和RAM,真正降低系统成本。

置高精度A/D和D/A通道:

不需要外接AD芯片,只需要把麦克风接在芯片的AD引脚上;

可以播放声音文件,并提供550mW的置放大器。

高准确度和实用的语音识别效果

支持用户自由编辑50条关键词语在同一时刻,最多在50条关键词语中进行识别,终端用户可以根据场景需要,随时编辑和更新这50条关键词语的容。

模块上集成了MIC音频输入设备与串口通信接口,论文模块还预留了16个I/O给用户使用。

本设计中只有用到了模块的P1.0与P1.1口。

其功能与使用方法见后面介绍,这里不再多叙述。

4硬件设计

硬件设计部分电路主要包括复位电路、晶振电路、电源部分、报警部分、数码管显示部分、按键部分、指示灯部分、语音识别模块接口部分等。

4.1复位电路部分

复位电路如图4-1所示。

图中C103为滤波电容,S1为复位按键,电阻R101为下拉电阻。

单片机正常运行时复位管脚RST被下拉电阻R101拉到低电位,当按键S1按下时,单片机管脚RST被拉倒高电平,此时单片机复位。

图4-1复位电路

4.2晶振电路

晶振电路如图4-2所示。

图中选用的是外接无源的12MHz晶振,根据单片机的数据手册,选择晶振电容为瓷片的33pF电容。

晶振电路在系统中虽然看起来很简单,但是在整个系统中是最重要的一部分,因为如果晶振电路不能正常运行,那么单片机的用户程序就不能呗有效的执行。

图4-2晶振电路

4.3电源部分

电源部分如图4-3所示。

图中D201是电源指示灯,当电源有电时D201点亮,当电源没电或者电压不够足时,D201熄灭。

R201为限流电阻,其功能是限制流过D201的电流过大烧坏二极管D201。

电容C201与C202为滤波电容,作用是滤除电源的杂波,保证单片机尽量小的收到外界文波带你呀的干扰。

图4-3电源部分电路

4.4报警部分电路

报警部分电路如图4-4所示。

图中R401为限流电阻,三极管Q5起到扩流的作用,因为51的单片机驱动能力都很有限,因此要用三极管扩流。

U3为报警用的蜂鸣器,当有报警时,蜂鸣器会发出声响,当无任何报警产生时,蜂鸣器静音。

图4-4报警部分电路

4.5数码管显示电路

数码管显示电路如图4-5所示。

图中Q1、Q2、Q3、Q4为起到扩流作用。

R306-R312,R301-R304起到限流的作用。

RP1为排阻,是P0口上啦电阻。

加这个上拉电阻是因为51单片机的P0口都是准双向口,即做输出时如果不加上拉电阻是不可以的。

数码管LG5641BH是共阳的数码管。

此部分电路的工作原理是,比如单片机的P0口都输出低电平,P2.4输出高电平,那么此时三极管Q1导通数码管第一位被点亮,显示的数据因为P0都为低电平,故现实的数据是8.其他数码管的点亮与显示的数据原理如此一样。

图4-5数码管显示电路

4.6按键部分电路

按键电路如图4-6所示。

图中R401-R404为上拉电阻,当按键未被按下时,单片机的相应管脚为高电平,当按键按下时单片机的相应管脚变为低电平,当单片机检测到低电平时,说明按键按下。

在本设计中P1.0口的功能定义为菜单键,P1.1口的功能定义为确定键,P1.2口的功能定义为增加键,P1.3口的功能定义为减小键。

图4-6按键部分电路

4.7指示灯部分电路

指示灯部分电路如图4-7所示。

图中D402为密码输入指示灯,R403为密码输入指示灯的限流电阻。

D403为密码修改正确指示灯,R404为密码修改指示灯的限流电阻。

在系统运行时,当用户按下菜单键后准备输入密码的过程中D402指示灯亮。

如果用户密码修改正确时,用D403指示密码修改成功与否,如果修改正确,D403亮,如果修改不成功,则D403保持灭的状态。

图4-7指示灯电路

4.8语音识别接口

语音识别接口电路如图4-8所示。

因为语音识别模块的用电电压是3.3V,故如果要让两个单片机通过I/O口连接就需要将电平信号做一些转变。

途中的R201与稳压管D1就是将5V电压转变到3.3V的电路。

图中语音识别模块部分的R402与D401为最终的门控制输出指示灯。

当D401亮时表示门锁打开,当D401灭时表示门锁关闭。

图4-8语音识别接口电路

5软件部分

软件部分的程序包括两个方面,STC89C52单片机的程序和STC11L08XE单片机程序。

其中STC89C52单片机主要负责按键处理与密码显示、报警与一些操作状态的处理,而STC11L08XE单片机负责语音的识别与处理和检测STC89C52单片机的I/O开关门命令以与门锁控制的最终输出。

5.1STC89C52单片机的程序

STC89C52的单片机程序包括宏定义、初始化、按键处理、显示、主函数等部分。

线距离来说明程序部分。

5.1.1单片机程序的宏定义与一些申明

程序代码与注视如下:

#include<

reg52.h>

//包含单片机头文件

intrins.h>

//宏

#defineGPIO_DIGP0//定义P0口为数码管显示接口用

sbitLS1=P2^4;

//定义P2.4口为数码管第一位控制

sbitLS2=P2^5;

//定义P2.5口为数码管第二位控制

sbitLS3=P2^6;

//定义P2.6口为数码管第三位控制

sbitLS4=P2^7;

//定义P2.7口为数码管第四位控制

sbitin_led=P2^3;

//定义P2.3口为输入密码指示灯

sbitpassword_led=P2^2;

//定义P2.2口为密码设置成功指示灯

sbitdoor_out=P2^0;

//定义P2.0口为门锁输出

sbitalarm=P1^4;

//定义报警输出

unsignedcharTrg=0;

//按键触发标志

unsignedcharCont=0;

//长按键标志

unsignedcharkey_menu=0;

//菜单标志

unsignedcharkey_enteradd=0;

//按键设置位变量

unsignedcharkey_datadd=0;

unsignedcharkey_lock=0;

//键盘锁标志

unsignedcharcodeDIG_CODE[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

//0、1、2、3、4、5、6、7、8、9的显示码

intge,shi,bai,qian;

unsignedcharkey_password=0;

//密码设置标志

unsignedintresult=1234;

//默认密码为1234

unsignedintresult1=0;

//输入密码

unsignedintresult2=0;

//验证密码

unsignedintresult3=0;

unsignedintpassword_count=0;

//验证密码计数

unsignedintcount=0;

//输入密码错误计数

unsignedintt1_count=0;

//定时器1定时计数

voidDelay();

//延时

voidInit();

//初始化函数

voiddata_change();

//数据转换

voidkey_read();

//按键函数

voidkey_set();

//按键设置函数

voidDigDisplay(unsignedcharx);

//动态显示函数

5.1.2初始化函数

/*********************************************************

函数名:

Init()

*函数功能:

初始化函数

*输入:

*输出:

*************************************************************/

voidInit()

{

alarm=1;

//初始化报警关闭

in_led=1;

//初始化,输入密码指示灯

door_out=0;

//门锁输出默认为0,关闭状态

password_led=1;

//关闭

////////////////以下为定时器初始化////////////////

EA=1;

//开全局中断

ET0=1;

//开定时中断0

IT0=0;

//外部中断0电平触发

IT1=0;

//外部中断1电平触发

PT0=1;

//定时中断0高

TMOD=0x28;

//T0T1方式控制

TH0=0x0c;

//T0高8位

TL0=0x78;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1