毕业设计论文基于单片机的语音门铃设计与实现.docx
《毕业设计论文基于单片机的语音门铃设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于单片机的语音门铃设计与实现.docx(36页珍藏版)》请在冰点文库上搜索。
毕业设计论文基于单片机的语音门铃设计与实现
基于单片机的语音门铃设计与实现
摘要
近几年来,随着市场上智能化楼宇的不断升温,语音门铃系统已作为智能化办公室和智能化住宅小区的一个重要组成部分,被各商家和用户所接受。
在一些场合,语音门铃系统给人们带来了意想不到的方便。
本课题主要设计出一种小型的语音门铃系统,它具有提示、留言、警报等功能。
基于这样的思想,本次设计以89C52单片机为核心,结合ISD1700语音芯片及其它成型的芯片,以模块化原则设计一种语音门铃系统,其中ISD1700语音芯片通过单片机以SPI协议模式实现控制,可以充分的发挥其录放功能。
同时,结合红外检测模块,提升了系统的安全性能。
以此作为一种语音门铃系统的探索和实践。
本系统的特点是可具有个性化、人性化、智能化、安全方便具有比较高的性能价格比。
关键词:
语音门铃;单片机;ISD1700
ABSTRACT
Inrecentyears,withintelligentbuildingsonthemarkethasbeenheatingup,thedoorbellsystemhasbeenasintelligentofficeandintelligentresidentialquartersofanimportantcomponentofthetradersanduserstoaccept.Insomecases,voicedoorbellsystemstobringunexpectedconvenience.Themainobjectiveofthistopicistodesignasmallvoicedoorbellsystem,Ithastips,messageandalerts.Basedonthisidea,thedesignofthe89C52MCUasthecore,combinedwiththeISD1700voicechip,andvoicedoorbellsystemtodesignamodularprinciple.WhichISD1700voicechipiscontrolledbytheMCUandtheSPIprotocolmodeandcanfullyplaytheirrecorders.Atthesametime,theuseofinfrareddetectionmoduletoenhancethesafetyperformanceofthesystem.
Thecharacteristicsofthissystemispersonalized,humane,intelligent,safeandconvenienttohavearelativelyhighcostperformance.
Keywords:
voicedoorbell;MCU;ISD1700
第1章绪论
1.1课题的研究背景
随着市场上智能化楼宇的不断升温,门铃系统已作为智能化办公室和智能化住宅小区的一个重要组成部分,被各商家和用户所接受。
微型计算机的出现和大量使用将人类社会带入一个新的时代,单片微型计算机简称单片机,在其中扮演着十分重要的角色。
虽然它没有常见的PC那样大的体积和重量不会在办公桌和控制台上占据一个显要的位置,但它就像小小的螺丝钉一样,镶嵌在人们工作生活中需要计算、控制、测量等智能活动的各个角落。
由于单片机的控制功能强大、使用灵活、体积小、可靠性高、性价比高、用以产品化等特点,近年来在智能仪器仪表、机电一体化、实时控制、分布式多机系统、家用电气等各个领域都得到了广泛的应用,对各个行业的技术改造和产品的更新换代起着重要的推动作用,对人们生活质量的提高产生了深刻的影响。
传统的门铃都是叮咚声,所具备的功能较少,根本不能满足这个飞速发展的社会的需要。
现在主要是一种无绳电话可视门铃对讲系统,这种门铃系统功能强大,实用性强,但是它的设备复杂,价格高。
在无单元门的小区,集体居住宿舍,写字楼等场所安装这样的门铃系统不太适用。
因此,本次设计针对这些门铃系统的一些不足,设计一种适用与以上场所的门铃系统。
它主要实现家中有人时普通门铃的提示;家中无人时,有提示功能,留言功能和安全警报功能;当用户回家后,可以播放留言,并且可以选择家中是否有人。
希望通过这些功能可以对特殊场所的门铃系统进行一定的改善。
1.2课题的主要研究工作
1.2.1课题内容
1、主人离开住宅后按下无人开关启动语音门铃系统;
2、当有人按下门铃后家中无人时语音提示留言信息,家中有人时给出声音提示;
3、主人回家后可以由按键播放来人存储的多段留言信息;
4、提示留言信息延时一分钟后提示来人远离防盗门,否则发出报警鸣音。
1.2.2课题要求
1、设计电路,实现设计要求;
2、控制单片机,实现正确提示使使用者容易操作;
3、通过单片机控制ISD1700芯片,实现录音、播放、擦除、提示功能;
4、通过红外对管检测前方有无障碍物。
1.3课题的研究意义
本次课题的主要研究如何给语音门铃使用者带来更多方便和安全。
很多时候,当家中无人的时候,一些访客可能有一些事情不能表述给用户,带来一些不便;同时,有些别有用心之人在门口逗留,给用户的安全带来隐患。
因此,本次设计主要针对这两项进行改善。
它主要实现语音提示功能,留言功能和安全警报功能。
1.4设计主要的应用场所
由于此设计主要对语音门铃系统的语音提示,留言,安全警报方面进行设计,因此其主要应用场所为无单元门的小区,集体居住宿舍,写字楼,宾馆等场所使用。
第2章模块特性简介
2.1STC89C52单片机简介
2.1.1STC89C52单片机特性
STC89C52RC单片机是宏晶科技推出的新一代高速,低功耗,超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
主要特性如下:
1、增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051
2、工作电压:
5.5V~3.3V
3、工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4、用户应用程序空间为8K字节
5、片上集成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℃(商业级)
14、PDIP封装
2.1.2STC89C52单片机引脚说明
STC89C52单片机引脚如图2.1所示。
图2.1STC89C52引脚图
1、输入/输出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32脚):
P0口是一个漏极开路的8位准双向I/O口。
作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。
当P0口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。
作输入口使用时要先写1,这就是准双向口的含义。
在CPU访问片外存储器时,P0口分时提供低8位地址和8位数据的复用总线。
在此期间,P0口内部上拉电阻有效。
P1口(P1.0~P1.7,1~8脚):
P1口是一个带内部上拉电阻的8位准双向I/O口。
P1口每位能驱动4个LS型TTL负载。
在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。
P2口(P2.0~P2.7,21~28脚):
P2口是一个带内部上拉电阻的8位准双向I/O口。
P口每位能驱动4个LS型TTL负载。
在访问片外EPROM/RAM时,它输出高8位地址。
P3口(P3.0~P3.7,10~17脚):
P3口是一个带内部上拉电阻的8位准双向I/O口。
P3口每位能驱动4个LS型TTL负载。
P3口与其它I/O端口有很大的区别,它的每个引脚都有第二功能,如下:
P3.0:
(RXD)串行数据接收。
P3.1:
(RXD)串行数据发送。
P3.2:
(INT0)外部中断0输入。
P3.3:
(INT1)外部中断1输入。
P3.4:
(T0)定时/计数器0的外部计数输入。
P3.5:
(T1)定时/计数器1的外部计数输入。
P3.6:
(WR)外部数据存储器写选通。
P3.7:
(RD)外部数据存储器读选通。
2、时钟电路引脚XTAL1和XTAL2:
XTAL2(18脚):
接外部晶体和微调电容的一端;在8051片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。
若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查8051/8031的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):
接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚必须接地。
3、80C51单片机的中断系统
80C51系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。
由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
4、定时/计数器的结构和工作原理
(1)定时/计数器的结构
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
如图2.2所示。
图2.2定时/计数器的结构
(2)定时/计数器的工作原理
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。
每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。
如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tcy就是定时时间t。
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。
当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2us。
2.2ISD1700语音芯片介绍
2.2.1ISD1700语音芯片特性
ISD1700系列录放芯片是一种高集成度,高性能的芯片。
它可以多段录音,采样率可在4K至12K间调节,供电范围可以在2.4V至5.5V之间。
ISD1700系列录放芯片可工作于独立按键模式和SPI控制模式。
芯片内有存储管理系统来管理多段语音,这样在独立按键模式下也能进行多段语音录放。
此芯片内有震荡器,可通过外部电阻来调节其震荡频率;还有带自动增益控制(AGC)的话筒运放,模拟线路输入,抗锯齿滤波器,多级存储阵列,平滑滤波器,音量控制,直接驱动喇叭的PWM输出与接外部功放的电流/电压输出。
ISD1700还有有新录音提示功能,当有新的录音后,LED会每几次删一次来提示用户有新录音。
此外还有4种音效来提示用户的操作结果,如开始录音、停止录音、擦除、下一曲和全部擦除等。
录音数据存储在芯片的FLASH内,没有经过任何压缩,所以有较好的音效和断电存储。
芯片有两路独立的语音信号输入通道,话筒输入与模拟信号输入。
在独立按键模式下,当某功能操作完成后芯片会自动进入掉电模式来降低功耗。
在SPI模式下,用户可对芯片进行更多功能操作。
如对任意存储地址进行录放,对模拟通道配置寄存器进行读写等。
图2.3为ISD1700引脚图。
图2.3ISD1700引脚图
1、特点:
·可录、放音十万次,存储内容可以断电保留一百年
·两种控制方式,两种录音输入方式,两种放音输出方式
·可处理多达255段以上信息
·有丰富多样的工作状态提示
·多种采样频率对应多种录放时间
·音质好,电压范围宽,应用灵活,价廉物美
2、电特性:
·工作电压:
2.4V-5.5V最高不能超过6V
·静态电流:
0.5-1μA
·工作电流:
20mA
2.2.2引脚说明:
ISD1700引脚说明如表2.1所示。
表2.1ISD1700引脚说明
管脚名称
PDIP/SOIC
说明
Vccd
1
数字电路电源
LED
2
LED指示信号输出
RESET
3
芯片复位
MISO
4
SPI接口的串行输出。
ISD1700在SCLK下降沿之前的半个周期将数据放置在MISO端。
数据在SCLK的下降沿时移出
MOSI
5
SPI接口的数据输入端口。
主控制芯片在SCLK上升沿之前的半个周期将数据放置在MOSI端。
数据在SCLK上升沿被锁存在芯片内。
此管脚在空闲时,应该被拉高
SCLK
6
SPI接口的时钟。
由主控制芯片产生,并且被用来同步芯片MOSI和MISO端各自的数据输入和输出。
此管脚空闲时,必须拉高
SS
7
为低时,选择该芯片成为当前被控制设备并且开启SPI接口。
空闲时,需要拉高
Vssa
8
模拟地
AnaIn
9
芯片录音或直通时,辅助的模拟输入。
需要一个交流耦合电容(典型值为0.1uF),并且输入信号的幅值不能超出1.0Vpp。
APC寄存器的D3可以决定Analn信号被立刻录制到存储器中,与Mic信号混合被录制到存储器中,或者被缓存到喇叭端并经由直通线路从AUX/AUD输出
MIC+
10
麦克风输入+
MIC-
11
麦克风输入-
Vssp2
12
负极PWM喇叭驱动器地喇叭输出-
SP-
13
PWM喇叭驱动器电源
Vccp
14
喇叭输出+
SP+
15
正极PWM喇叭驱动器地
Vssp1
16
辅助输出,决定于APC寄存器的
AUD/AUX
17
D7,用来输出一个AUD或AUX输出。
AUD是一个单端电流输出,而AuxOut是一个单端电压输出。
他们能够被用来驱动一个外部扬声器。
出厂默认设置为AUD。
APC寄存器的D9可以使其掉电
AGC
18
自动增益控制
VOL
19
音量控制
Rosc
20
振荡电阻ROSC用一个电阻连接到地,决定芯片的采样频率
Vcca
21
模拟电路电源
FT
22
在独立芯片模式下,当FT一直为低,Analn直通线路被激活。
Analn信号被立刻从Analn经由音量控制线路发射到喇叭以及AUD/AUX输出。
该管脚有一个内部上拉设备和一个内部防抖动设计,当在SPI模式下,SPI无视这个输入,而且直通线路被APC寄存器的,允许使用按键开关来控制开始和结束
PLAY
23
播放控制端
REC
24
录音控制端
ERASE
25
擦除控制端
FWD
26
快进控制端
RDY/INT
27
RDY:
录音,放音,擦除和快进操作时保持为低,保持为高时进入空闲状态;INT:
执行完一个SPI指令后将此管脚置低,需要收到清除指令后才将此脚置高。
Ready(独立模式)该管脚在录音,放音,擦除和快进操作时保持为低,保持为高时进入空闲状态Interrupt(SPI模式)在完成SPI命令后,会产生一个低信号的中断。
一旦中断消除,该脚变回为高
Vssd
28
数字地
2.2.3ISD1700的SPI模式
1、微机接口
主控单片机主要通过四线(SCLK,MOSI,MISO,/SS)SPI协议对ISD1700进行串行通信。
ISD1700作为从机,几乎所有的操作都可以通过这个SPI协议来完成。
为了兼容独立按键模式,一些SPI命令:
PLAY,REC,ERASE,FWD,RESET和GLOBAL_ERASE的运行类似于相应的独立按键模式的操作。
另外,SET_PLAY,SET_REC,SET_ERASE命令允许用户指定录音、放音和擦除的开始和结束地址。
2、SPI协议总述
ISD1700系列的SPI串行接口操作遵照以下协议:
(1)一个SPI处理开始于/SS管脚的下降沿。
(2)在一个完整的SPI指令传输周期,/SS管脚必须保持低电平。
(3)数据在SCLK的上升沿锁存在芯片的MOSI管脚,在SCLK的下降沿从MISO管脚输出,并且首先移出低位。
(4)SPI指令操作码包括命令字节,数据字节和地址字节,这决定于1700的指令类型
(5)当命令字及地址数据输入到MOSI管脚时,同时状态寄存器和当前行地址信息从MISO管脚移出。
(6)一个SPI处理在/SS变高后启动。
(7)在完成一个SPI命令的操作后,会启动一个中断信息,并且持续保持为低,直到芯片收到CLR_INT命令或者芯片复位。
3、SPI处理的格式
SPI处理的格式,指令数据以数据队列的形式从MOSI移入芯片,第一个移入的字节是命令字节,这个字节决定了紧跟其后的数据类型。
与此同时,芯片状态以及当前行地址信息以数据队列的方式通过MISO被返给主机。
4、MOSI数据格式
MOSI是SPI接口的“主机输出从机接收端”。
数据在SCLK的上升沿锁存进芯片,并且低位首先移出。
1700的SPI指令格式依赖于命令的类型,根据不同类型的命令,指令可能是两个字节,也可能多达7个字节。
MOSI的一般序列由下表列出,送到芯片的第一个字节是命令字节,这个字节确定了芯片将要完成的任务。
其中命令字节的C4确定LED功能是否被激活。
当C4=1,LED指示被开启,功能开启后,每一个SPI指令启动后,LED灯会闪亮一下。
在命令字节之后,与之相关联的数据字节有可能包括对用来存储信息进行精确操作的起始和结束地址。
多数的指令为两个字节,需要地址信息的指令则为七个字节。
例如LD_APC指令为三个字节,在其第二和第三字节是指令的数据字节。
有两种11位地址设置,即S0>和E0>,作为二进制地址的存放位置。
芯片存储地址从第一个提示音的地址0x0000开始计算,但是0x000-0x00F地址平均保留给了4个提示音。
从0x010地址开始,才是非保留的存储区域,即真正的录音区。
5、MISO数据格式
MISO即1700S的“主机接收从机发送”管脚,数据在SCLK的下降沿从MISO管脚输出,并且低位首先移出。
对应每一个指令,MISO会伴随着指令码的输入,在前两个字节返回芯片当前的状态和行地址信息A0>。
而RD_STATUS,RD_PLAY_PNTR,RD_REC_PNTR和RD_APC这些命令会在前两个字节之后产生额外的信息
在输出信息中,第一字节的状态位提供了重要的信息,该信息标明了上一个SPI命令发送后的结果。
例如,第一字节中的0位(commanderrorbit)用来指示芯片是否接收了上一个SPI命令。
而A0>地址位则给出了当前地址。
第一和第二个数据字节的内容取决于上一个SPI命令。
第五,第六和第七字节则是重复SR0状态寄存器的内容。
6、SPI协议格式
SPI协议格式如图2.4所示。
图2.4SPI时序图
在SPI命令输入到ISD1700前,SPI端口的状态应该保持如下状态:
◎/SS=HIGH
◎SCLK=HIGH
◎MOSI=LOW
7、SPI命令总览:
一个SPI命令总是由第一个命令字节开始。
命令字节中的bit4位(LED)是具有特殊用途的。
这个bit4位可以控制LED的输出。
如果使用者想开启这个操作LED的功能,那么所有的SPI命令字都要将这个bit4位置1。
在SPI模式下,存储位置都可以通过行地址很容易地进行访问。
主控单片机可以访问任何行地址,包括存储SE音效的行地址(0x000-0x00F)。
像SET_PLAY,SET_REC和SET_ERASE这些命令需要一个精确地起始地址和结束地址。
如果开始地址和结束地址相同,那么ISD1700将只在这一行进行操作。
SET_ERASE操作可以精确地擦除在起始地址和结束地址间的所有信息。
SET_REC操作从起始地址开始录音,并结束于结束地址,并且在结束地址自动加上EOM标志。
同理,SET_PLAY操作从起始地址播放语音信息,在结束地址停止播放。
另外,SET_PLAY,SET_REC和SET_ERASE命令有一个先入先出的缓存器,使得从一个存储块到下个存储块之间实现无缝转移。
这个先入先出的缓存器只有在相同类型的SET命令下才有效。
也就是说SET_PLAY在SET_ERASE之后将不能利用这个缓存器,并且这是一个错误的命令,SR0中的COM_ERR位将被置1。
当芯片准备好接收第二个SPI命令时,在SR1中的RDY位将置1。
同样,在操作完成时会输出一个中断。
例如,如果两个连续但带有两对不同地址的SET_PLAY命令被正确发送后,此时缓存器装满。
在完成第一个语音信息的播放后,第一个SET_PLAY操作会遇到一个EOM,这时不会像一般遇到EOM时自动STOP,而是继续执行第二个SET_PLAY命令,芯片将播放第二个语音信息。
这个动作将最小化任何两个录音信息之间潜在的停留时间,且使芯片流畅地连接两个独立的信息。
如果循环存储体系处于令人满意的状态,那么可以使用PLAY,REC,FWD,RESET,ERASE和G_ERASE这些命令,功能类似于1700的独立模式中相应的功能。
这些命令将确保在独立模式下操作时储存机构保持一致,但是,音效提示将不同于独立模式。
如果希望在SPI模式和独立模式之间转换,注意必须使用SET_REC和SET_ERASE以遵循循环存储体系。
8、ISD1700芯片内部寄存器
这些寄存器可以返回1700芯片的内部状态,下边将描述每个寄存器的数据模式:
状态寄存器SR0是两字节数据,由MISO返回。
它包括5个状态位(D4:
D0)以及11个地址位(A10:
A0)。
9、ISD1700的存储结构
芯片内有一套环形存储结构管理系统来管理录音段的存放。
环形存储结构管理系统管理的地址是0x10到末地址,0x000至0x00f为SE的地址。
当地址指针指到末地址后,会自动跳到0x