序
🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机电子密码锁的设计
1系统硬件电路的设计
按照系统设计功能的要求,初步确定设计系统由两大部分组成,分为内外大部分。外部单片机部分可负责外部键盘号码的采集和显示,而内部单片机部分主要负责密码的设置、显示、判断发送来的外部键盘输入码是否是密码和语音播放功能的实现。两大部分内部分别有键盘输入电路、数码显示电路,此外为实现语音播放功能在主单片机部分还应有语音播放芯片电路。主控制芯片使用52系列AT89S52单片机,接口电平转换芯片选用Maxim公司的MAX232,语音芯片采用美国的ISD公司的ISD2540芯片[4]。
图1-1 电子密码锁电路系统构成框图
1.1 系统核心部分——闪电存储型器件AT89S52
1.1.1 AT89S52主要性能
AT89S52具有下列主要性能[5]:
l8KB可改编程序Flash存储器(可经受1000次的写入/擦除周期)。
l全静态工作:0Hz~24MHz。
l三级程序存储器保密。
l128×8字节内部RAM。
l32条可编程I/O线。
l2个16位定时器/计数器。
l6个中断源。
l可编程串行通道。
l片内时钟振荡器。
1.1.2 AT89S52的引脚及功能
AT89S52单片机的管脚说明如图1-2所示。
图1-2 AT89S52的管脚
(1) 主要电源引脚
①VCC 电源端
②GND 接地端
(2) 外接晶体引脚XTAL1和XTAL2
①XTAL1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。
②XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。
(3) 控制或与其它电源复用引脚RST、ALE//PROG、/PSEN和/EA/VPP
①RST 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。
②ALE/PROG 当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)[6]。
③/PSEN 程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89S52/LV52由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
④/EA/VPP 外部访问允许端。要使CPU只访问外部程序存储器(地址为0000H~FFFFH),则/EA端必须保持低电平(接到GND端)。当/EA端保持高电平(接VSS端)时,CPU则执行内部程序存储器中的程序。
(4) 输入/输出引脚 P0.0~ P0.7、P1.0~P1.7、P2.0~ P2.7 和P3.0~P3.7
①P0端口(P0.0~ P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
②P1端口(P1.0~ P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
③P2端口 (P2.0~P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
④P3端口(P3.0~P3.7) P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
由于工艺及标准化等原因,芯片的引脚数目是有限制的,例如MCS-51系列单片机芯片引脚的数目是40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了供需问题。
解决这一问题唯一可行的办法是“复用”,即给一些信号引脚赋予双重功能。如果我们把前述的信号定义为引脚第一功能的话,则根据需要再定义的信号就是它的第二功能。第二功能信号定义主要集中在P3口线中,另外再加上几个其它信号线。
(1)EPROM 存储器程序固化所需要的信号
P3口也可作为AT89S52的一些特殊功能,这些特殊功能见表4-1[7]。
有内部EPROM的单片机芯片(例如87C51),为写入程序需提供专门的编程脉冲和编程电源,它们也是由信号引脚以第二功能的形式提供的,即:
编程脉冲: 30脚(ALE/PROG)
编程电压(25V):31脚(/EA/VPP)
表1-1 P3端口的特殊功能
端口引脚 | 兼 用 功 能 |
P3.0 | RXD (串行输入口) |
P3.1 | TXD (串行输出口) |
P3.2 | /INT0 (外部中断0) |
P3.3 | /INT1 (外部中断1) |
P3.4 | T0 ( 定时器0的外部输入) |
P3.5 | T1 (定时器1的外部输入) |
P3.6 | /WR (外部数据存储器写选通) |
P3.7 | /RD (外部数据存储器读选通) |
(2) 备用电源引入
MCS-51单片机的备用电源也是以信号引脚第二功能的方式由9脚(RST/VPD)引入的。当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不丢失。
通信主要有两种方式:并行通信和串行通信。并行通信是在传送数据过程中每个字节的各位同时进行传送的通信方式,而串行通信[8]是指每个字节的各位分别进行传送的通信方式。
AT89S52串行口可设置四种工作方式[8],可有8位、10位和11位帧格式。本系统中,AT89S52采用串行口工作于方式1,即每帧10位的异步通信格式:1位起始位,8位数据位(低位在前),1位停止位。当SM0=0,SM1=1时,串行口选择方式1。其帧格式为:
图1-3 帧格式图
1.2.2 串行通信控制寄存器
(1) 串行控制寄存器(SCON)
SCON的地址为98H,用于选择串行口的工作方式和指示串行口的工作状态。各位含义如下:
① SM0、SM1:串行口工作方式选择位。
② SM2:多机通信选择位。
③ REN:串行口允许接收位。‘1’时允许接收,‘0’时禁止接收。
④ TI: 串行口发送中断标志位。在方式1中,于发送停止位之前,由硬件置位。因此TI=1,表示帧发送结束。
⑤ RI: 串行口接收中断标志位。在方式1中,当接收到停止位时,该位由硬件置位。RI=1,表示帧接收结束。
(2) 串行数据缓冲器(SBUF)
串行数据缓冲器SBUF的地址为99 H,用来存放需发送和接收的数据,它由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,它们占用同一地址(99H)。当执行写SBUF指令时,数据写入到串行口发送缓冲器中,读SBUF就是读串行口接收缓冲器。
(3) 电源控制寄存器(PCON)
PCON的地址为87H,该寄存器的最高位(SMOD)是串行口波特率的倍增位,当SMOD=1时,串行口波特率加倍。系统复位时,SMOD=0。
(4) 中断允许寄存器(IE)
在IE中,ES位为串行中断允许控制位。ES=0时禁止串行中断,ES=1时允许串行中断。
1.2.3 数据发送与接收
(1) 数据发送
在不发送数据时,TXD端保持高电平。当执行写SBUF的指令时,便启动一次发送过程;发送数据时,先发送一个起始位,该位通知接收端开始接收,也使发送和接收过程同步。接下来发送8位数据,先发送低位,最后发送的是高电平的停止位。
(2) 数据接收
REN=1,CPU允许串行口接收数据,接收数据开始于检测到RXD(P3.0)端发生一个“1”到“0”的跳变。先接收起始位,然后依次将采样RXD端并将数据移入移位寄存器中。
若满足条件RI=0且SM2=0或接收到停止位,则将前8位数据送入SBUF并置位RI;如果上述条件不满足,则数据丢失。
1.3语音电路
1.3.1语言芯片ISD2540
美国ISD公司的2500系列芯片,常见的按录放时间40秒、60秒和120秒分成ISD2540、2560和25120多个品种,该系列产品的电路原理图和控制结构完全相同。ISD2500系列和1400系列语音电路一样,具有抗断电、音质好,使用方便,无需专用的语音开发系统等相同优点。它的最大特点在于片内E2PROM容量为240K(1400系列为128K),所以录放时间长;有9个地址输入端(1400系列仅为8个),寻址能力可达512位;最多能分320段;设有OVF(溢出)端,便于多个器件级联。
采用直接模拟存储技术(DAST),将原始的语音信号以模拟形式直接存入半导体存储器中,无须A/D和D/A转换。这种突破性的EEPROM存储方法同其它的数字存储方式相比,不仅增加了存储容量,而且提高了语音信号存储与还原的保真度。该芯片内部集成了振荡电路、前置放大器、自动增益控制、抗混叠滤波器、平滑滤波器、输出放大器等物理部件,具有易与微处理器接口、零功率存储、方便的存储与回放模式。
(1)DIP封装图
图1-4 ISD2540DIP封装图
(2)各引线端功能[10]
表1-2 各引线端功能
引线端 | 名称 | 功能 |
1-7 | A0/M0~A6/M6 | 地址 |
8-10 | A7~A9 | 地址 |
11 | AUX IN | 辅助输入 |
12,13 | VSSD、VSSA | 数字和模拟地 |
14,15 | SP+、SP- | 扬声器输出 |
16,28 | VCCA 、VCCD | 模拟、数字信号电源正极 |
17,18 | MIC、MIC REF | 麦克风输入和输入参考端 |
19 | AGC | 自动增益控制 |
20,21 | ANA IN、OUT | 模拟信号输入和输出 |
22 | /OVF | 溢出 |
23 | /CE | 片选(低电平允许芯片工作) |
24 | PD | 芯片低功耗状态控制 |
25 | /EOM | 录放音结束信号输出 |
26 | XCLK | 外部时钟 |
27 | /P / R | 录/放控制选择 |
l地址线:A0~A6、A8、A9。共有512种组合状态。最前面的320个状态作为内部存储器的寻址作用,最后192个状态作为操作模式。
l电源:VCCA、VCCD。芯片内部的模拟和数字使用不同的电源总线。模拟和数字电源最好分别走线。
l地线:VSSA、VSSD。芯片内部的模拟和数字也使用不同的地线。
l节电控制:PD。本段拉高使芯片停止工作,进入不耗电的节电状态,芯片发生溢出,即/OVF端输出低电平后,要将本端短暂变高复位芯片,才能使之再次工作。
l片选:CE。本端变低后,而且PD为低时,允许进行录放操作。芯片在本端的下降沿锁存地址线和P/-R端的状态。
l录放模式:P/-R。本端状态在/CE的下降沿锁存。高电平选择放音,低电平选择录音。
l信息结尾标志:EOM。EOM标志在录音时由芯片自动插入到该信息的结尾。放音遇到EOM时,本端输出低电平脉冲。芯片内部会检测到电源电压以维护信息的完整性,当电压低于3.5V时,本端变低,芯片只能放音。
l溢出标志:OVF。芯片处于存储空间末尾时,本端输出低电平脉冲表示溢出,之后本端状态跟随CE端的状态,直到PD端变高。
l麦克输入:MIC。本端连至片内前置放大器。片内自动增益控制电路(AGC)将置增益控制在-15dB至24dB。
l麦克参考:MIC REF。本端是前置放大器的反向输入。当以差分形式连接话筒时,可减少噪声,提高共模抑制比。
l自动增益控制:AGC。AGC动态调整前置增益以补偿话筒输入电平的宽幅变化,使得录制变化很大的音量(从耳语到喧嚣声)时失真都能保持最小。
l模拟输出:ANA OUT。前置放大器的输出,前置电压增益取决于AGC端电平。
l模拟输入:ANA IN。本端为芯片录音信号输出。对话筒输入来说ANA OUT端应通过外接电容连至本端。
l喇叭输出:SP+、SP-。对输出端级驱动16Ω以上的喇叭。单端使用时必须在输出端和喇叭之间接耦合电容,而双端输出既不用电容又不能将功率提高至4倍。录音和节电模式下,他们保持为低电平。
l辅助输入:AUX IN。当/CE和P/-R为高,放音不进行,或处于放音溢出状态时,本端的输入信号过内部功放驱动喇叭输出端。当多个2500芯片级联时,后缀的喇叭输出通过本端连接到本机的输出放大器。
l外部时钟:XCLK。本端内部有下拉元件,不用时应接地。芯片内部的采样时钟在出厂前以调节器校,误差低于1%。
l地址/模式输入:AX/MX。地址端有个作用,取决于最高两位的状态。当最高两位中有一个为0 时,所有输入均解释为地址位,作为当前录入操作的起始地址,地址端只作输入,不输出操作过程中的内部地址信息。
4.3.2 ISD2540典型应用
ISD2540[11]工作在录音状态时.麦克风采集到的小信号从MIC进入,经前置放大后从ANA OUT(模拟量输出)输出,经过隔直电容后送入ANA IN(模拟量输入)。这种输入配置方式可以方便用户自行设计性能更加优良的前置放大器代替芯片内部已有的功能部件,另外ANA IN可作为线输入口(Line In),直接输入电声信号。进入ANA IN的信号经过放大器、自动增益控制(AGC)以及低通滤波器,将被调整到存储电路动态范围的最佳电平,最终将通过模拟收发器写入EEPROM 中。在ISD2540的放音模式下,录入的模拟电压在采样时钟的控制下,顺序的从模拟存储阵列读出,并经输出通道上的平滑滤波器去掉采样频率分量后恢复出原始波形,送入多路器,以便与外界其他信号混合,而后送入功率放大器,并由SP+、SP-端输出,进而可直接驱动扬声器。
图1-5 ISD2540内部原理框图
(1)按键单段录放模式
ISD2500系列的按键单段录放电路非常简单,见图4-6,单段使用时全部地址线接地,录音时置P/R端(S3)为低,按住不放CE端的片选键(S1),即开始录音,松键时或芯片录满时自动停止。放音时置P/R端(S3)为高,按一下CE端的片选键(S1),即开始放音,按一下PD端的节电键(S2)或放音结束时自动停止。
图1-6 ISD2540单段录放模式原理图
(2)按键多段录放模式
图1-7 ISD2540按键多段录放模式原理图
如上图1-7所示,将地址端中的A6、A8、A9接高电平,其余地址线接低电平,即可实现多段的连续顺序录放。录音时置P/R端(S3)为低,按一下CE端的启动/暂停键(S1),即开始录音第一段,再按一下CE端的启动/暂停键(S1)即停止,一段录音结束。反复按CE端的按键可以接着录后面的段,直到芯片录满,或按一下PD端的复位键(S2)系统复位。放音时置P/R端(S3)为高,按一下CE端的启动/暂停键(S1),即开始放音第一段,段结束或中途按一下CE端S1键(S2)即放音停止;再按CE端的S1键又放音第二段,如此播放。
(3)和单片机配合使用模式
单片机的P1口、P3.4和 P3.5分别与ISD2560的地址线相连,用以设置语音段的起始地址。P3.0~P3.3用以控制录放音状态。P3.7连接一按键,供录音时使用,如图1-8所示。
1.3.3工作模式
当最高位地址(MSB)A8、A9都为高电平时,地址端就作为工作模式选择端 (高电平有效)
使用工作模式应注意以下两点:
①所有工作模式下的操作都 是从0地址开始,以后的操作根据模式的不同,而从相应的地址开始工作。当电路中录音转放音或进入省电状态时,地址计数器复位为0。
②工作模式位不加锁定,可以在MSB地址位为高电平时,CE电平变低的任何时间执行工作模式操 作。如果下一片选周期MSB地址位中有一个(或两个)变为低电平,则执行信息地址,即从该地址录音或放音,原来设定的工作模式状态丢失。
表1-3 工作模式功能
模式控制 | 功能 | 典型应用 |
A0/M0 | 信息检索 | 快速检索信息 |
A1/M1 | 删除EOM标志 | 在全部语音录放结束时,给出EOM标志 |
A2/M2 | 未用 | 当工作模式 操作时,此端应接低电平 |
A3/M3 | 循环放音 | 从0地址开始连续重复放音 |
A4/M4 | 连续寻址 | 可录放连续的多段信息 |
A5/M5 | CE电平触发 | 允许信号中止 |
A6/M6 | 按钮控制 | 简化器件接口 |
表1-4 地址空间分配
十进制 | 二进制 | 信息时间(秒) | ||||||||||||
A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | 2560 | 2575 | 2590 | ||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
50 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 5.0 | 6.25 | 7.50 | |
100 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 10.0 | 12.50 | 15.00 | |
250 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 25.0 | 31.25 | 37.50 | |
300 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 30.0 | 37.50 | 45.00 | |
400 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 40.0 | 50.00 | 60.00 | |
500 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 50.0 | 62.50 | 75.00 | |
599 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 59.9 | 74.87 | 89.85 |
2540最多可分为320段,只要在分段录/放音操作前(不少于300纳秒),给地址A0~A9赋值,操作就从该地址开始。2500系列地址空间是这样分配的:地址0~599作为分段用(见上表4-4)。
录音时,按下录音键,单片机通过口线设置语音段的起始地址,再使PD端、P/R端和/CE端为低电平启动录音;结束时,松开按键,单片机又让/CE端回到高电平,即完成一段语音的录制。同样的方法可录取第二段、第三段、 ……。特别值得注意的是,录音时间不能超过预先设定的每段语音的时间。
图1-9 ISD2540语音电路
放音时,根据需播放的语音内容,找到相应的语音段起始地址,并通过口线送出。再将P/R端设为高电平,PD端设为低电平,并让/CE端产生一负脉冲启动放音,这时单片机只需等待ISD2540的信息结束信号,即/EOM的产生。信号为一负脉冲,在负脉冲的上升沿,该段语音才播放结束,所以单片机必须要检测到/EOM的上升沿才能播放第二段,否则播放的语音就不连续,而且会产生啪啪声,这一点在编制软件时一定要注意。
在本设计中,预先用单片机控制语音芯片分别录制好要播放的提示信息,给每段提示信息设置固定的录音时间,这样有利于在分段播放时调用该段语音的首地址,实现在一定的操作结束后会发出相应的语音提示。
1.4电平转换电路
1.4.1电平转换芯片
如果两个51系列单片机系统之间距离很短,可以通过将它们的自带串口直接连接的方法实现双机通信。但若通信距离较远,就可使用RS-232C接口延长通信距离。RS-232C标准是美国EIA与BELL等公司一起开发的,1969年公布的通信协议。由于RS-232C标准规定的逻辑电平与TTL等数字电路的逻辑电平不兼容,因此二者之间进行相互连接时必须先进行串口电平的转换,即必须将单片机的TTL电平和RS-232C标准电平进行转换。
能够实现RS-232C电平转换的专用芯片有很多种,如MC1488、SN75150芯片可完成TTL到EIA电平的转换,而MC1489、SN75154可实现EIA到TTL电平的转换。常用的是Maxim公司的MAX232集成芯片,它能完成TTL和RS-232C的双向转换。
1.4.2 MAX232芯片
(1)MAX232的电路原理图[12]如图1-10所示
图1-11 MAX232的引脚图 图1-10 MAX232的电路原
2 测试结果
上电后,内部与外部单片机均显示“000000”,在外部单片机输入密码时,内部与外部单片机均能在数码管显示所输入的密码。如果密码正确,则发光二极管点亮,提示音提示“密码正确”;如果密码错误,则语音提示“密码错误”。用内部键盘设置密码、输入密码、显示密码时,也会有相应提示信息。
调试分为硬件调试和软件调试。硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。由于硬件电路原件较多,焊接时容易出错,要注意6个数码管以及三极管等的焊接。另外可以通过软件来调试硬件,如为了测试显示电路连接是否正确,可以编写一个简单的显示程序来测试它。接下来可进行软件调试,可以编写键盘程序、显示程序,外部单片机和内部单片机的键盘和显示部分是否正常工作。最后调试语音录制程序和语音播放程序。
语音程序最关键的是如何准确调用到录好的语音信息,在软件编程时,应将分段语音的首地址和语音信息一一对应,处理好单片机的延时。
整体电路图
如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!