[基于单片机的语音门铃设计毕业设计]迎宾门铃毕业设计

基于单片机的语音门铃设计毕业设计 第一章 绪论 1.1音乐门铃、电子密码锁简介 在现代电子产品中, 由于电子音乐门铃具有悦耳动听,价格低廉,耗电少等优点,在现代家居中的应用越来越流行。本毕业设计是基于单片机的“叮咚”门铃,通过单片机控制输出频率,由音频功率放大器LM386放大给扬声器,使之发出不再是单调的提示音,而是不同凡响的流行音乐旋律。当有客人来访时,按一下按钮,门铃就会奏出优美的电子音乐。而电子密码锁是一种有别于传统机械锁而且能通过密码的输入来控制电路或者是芯片工作,继而控制机械开关的闭合,从而完成开锁、闭锁任务的电子类产品。它的类别众多,既有简单的电路产品,也有基于单片机芯片的产品。现在应用比较广泛的电子密码锁是以控制芯片为核心,通过程序的编译来实现的。它的性能和安全性远远的超过了机械锁。其特点如下:
(1)保密性好,编码量多,远远大于弹子锁,随机开锁成功率几乎为零。

(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。

(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。

(4)无活动零件,不会磨损,寿命长。

(5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。

(6) 电子密码锁操作简单易行,一学即会。

因此把门铃与电子密码锁进一步结合起来,就出现了新一代多功能的语音门铃。

1.2语音门铃的发展趋势 近几年来,随着市场上智能化楼房的不断升温,门铃系统已作为智能化的办公室与智能化的住宅小区的一个不可分割的组成部分,被各商家和用户所接受。人们渐渐开始习惯利用门铃系统来代替传统的铁钥匙去管理各种通道门,就促使门铃系统得到了突破性的发展。

从以前的“叮咚”门铃,它价格便宜,性能可靠,耗电量少,安装也简便;
然后就有了音乐门铃,按下再也不是“叮咚”声,而是悦耳的音乐,让客人可以耐心的等待;
现在的门铃已经出现可视门铃,在屋里屋外都有可视机,并且可以对话,通过对话,主人可以在里屋按动旋纽开门,这样主人就不用亲自出来开门了,很方便。

而目前门锁主要是老式的机械式锁,这样的锁钥匙也容易丢失,人们需要携带多把钥匙,使用很不方便,况且钥匙丢失后锁的安全性就大大降低。针对这些机械锁给人们带来的不便,为满足人们对锁的应用要求,增加锁的安全性,用密码代替钥匙的密码锁诞生了。它的到来给人们的生活带来了极大地的方便和安全,有极大地市场发展前景。随着电子元件的进一步发展,电子密码锁也被研究出了很多的种类,功能也逐渐强大,使用起来更加方便自如,保护性更强,从以前的单密码输入的发展到现在的密码加上有感应功能的元器件,实现了双重的电子加密,使用者只有密码或电子钥匙其中的一个,是不能打开锁的,由于电子元器件的发展和人们对保密性要求的提高就产生了更多的电子密码锁。出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等,从这可以看出组合使用电子信息是电子密码锁将来的发展的趋势。

微型计算机的出现和大量使用将人类社会带入一个新的时代,单片微型计算机(简称单片机)在其中扮演着十分重要的角色。由于单片机的控制功能强大、使用灵活、体积小、可靠性高、性价比高、用以产品化等特点,近年来在智能仪器仪表、机电一体化、实时控制、分布式多机系统、家用电气等各个领域都得到了广泛的应用,对各个行业的技术改造和产品的更新换代起着重要的推动作用,对人们生活质量的提高产生了深刻的影响。传统的门铃都是叮咚声,所具备的功能较少,也比较弱,而且结构很复杂。根本不能满足这个飞速发展的社会的需要,将来的门铃将会更智能化,更人性化,满足人类各种需要。

1.3 本设计所要实现的目标 本次设计使用TTMEL公司的AT89S51实现基于单片机的多功能的语音门铃,其主要具有如下功能:
(1) 当有客人来访时,按一下按钮,门铃就会奏出优美的电子音乐,每按一下就会播放不同的音乐,共编有6首电子音乐。

(2) 密码通过键盘输入,若密码正确,则将锁打开。

(3) 报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘。

(4) 电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有 LED 提示灯,报警蜂鸣器等。

(i)密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。

(ii)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。

(iii)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。

主要的设计实施过程:首先,选用 ATMEL公司的单片机 AT89C51,以及选购其他电子元器件。第二步,使用Protel 99设计硬件电路原理图。第三步,使用 Keil uVision4软件编写单片机的 汇编及C 语言程序、仿真、软件调试。第四部,使用 Proteus软件进行模拟软、硬件调试。最后,联合软、硬件调试电路板,完成本次毕业设计。

第二章 系统方案选择与论证 2.1系统基本方案 2.1.1系统框图 简易的语音门铃由下面几个部分组成,如图2.1所示:
单片机 AT89C51 键盘模块 晶振电路 报警模块 音频放大器 扬声器 显示模块 图2-1 电子密码锁控制系 晶振电路:由石英振荡器和两个一样大小的电容组成;

键盘模块:由16 个轻触式开关组成;

单片机控制模块:由ATMEL公司生产的AT89C51作为控制模块;

显示模块:采用六个数码管时时显示当前输入数据;

报警模块:采用发光二极管和蜂鸣器做声光报警;

语音模块:由音频放大器和扬声器组成。

2.1.2 各模块方案选择与论证 (1)单片机的选择 方案一:
采用AT89C51 单片机,它可以与其它51 系列的单片机兼容、内部ROM 全部采用FLASH ROM、最高时钟频率可达24MHz 且能以3V 超低压工作。但不支持ISP 在线编程技术、内部ROM 仅为4KB 不利于功能扩展。

方案二:
采用AT98S51 单片机,它具同时被AT98C51 的全部功能外,还支持ISP 在线编程技术且内部ROM 为8KB 有利于功能扩展。

(2)键盘的选择 方案一:使用独立式按键来控制 使用独立式按键来控制数码管的显示,这样需要很多的按键,每个按键实现一个能,易于控制,程序编写简单,但是每个按键都要接上拉电阻,占用了单片机大量的I/O 接口资源,要对单片机外扩I/O 口,并且在电路焊接方面又不方便,还要浪费大量的资源,提高了成本。

方案二:采用矩阵式键来控制 把按键按行列组成矩阵,在行列交点上都对应有一个键,这样使用的按键要少,为判定有无键被按下以及被按键的位置,这种称为键扫描法。这样虽然提高了编程难度,但是节约了单片机大量的I/O 口,免去了上拉电阻为焊接带来了方便,提高了整块电路板的美观度。

(3)显示模块的选择 方案一:数码管静态显示 采用LED 数码管静态显示方法,电路容易理解,驱动程序简单,但需要每个数码管都要一块74LS47 来驱动显示,增高了成本,浪费系统硬件资源,而需要占用单片机多个I/O 口。

方案二:数码管动态显示 采用LED 数码管动态扫显示方法,只需一块数码管驱动器芯片和一块译码器芯片就可以驱动多个数码管,价格便宜,只需要7 个I/O 口就可以同时驱动8 个数码管显示。硬件利用效率高,驱动程序容易理解和编程。

方案三:液晶显示 采用LCD 液晶显示,显示的位数多,由单片机驱动。此方案有美观、显示清晰多样的优点。但同时液晶显示器的驱动程序复杂,编程困难,成本高,价格昂贵,浪费大量的资源。

(4)数码管驱动选择 采用74LS47 驱动数码管和74LS138 译码器来控制数码管的COM 端,因为74LS47 只能驱动共阳数码管,而74LS138 的输出为低电平有效。因此,在74LS138 的输出端加入反向器才可以接到数码管的COM 端。

方案一:74LS04 芯片的选择 采用74LS04 芯片做反向器,74LS47 是集成六反向器芯片,刚好可驱动六个数码管,但是它的输入输出引脚两边均分布,造成跳线较多给电路焊接时带来麻烦影响了整块电路的美观度。

方案二:三极管的选择 三极管也具有反向的功能,采用的是PNP 管,电路的连接中又方便,减少了跳线提高美观度。

(5)报警模块的选择 方案一:
采用语音报警,虽然可以使整个系统更加完美,但是会使程序更加复杂而且提高了整个系统的造价。

方案二:
采用发光二极管和蜂鸣器来报警,可以发出声光报警且降低了成本。

(6)语音模块的选择 方案一:用电阻和三极管来控制扬声器,从而发出声音。

方案二:利用音频功率放大器的输出大信号和大功率,对音频信号有效不失真的进行放大以推动扬声器发出声音,少了噪声的干扰。

2.1.3系统各模块的最终方案 结合整个系统的功能、成本、美观度等综合考虑,用AT89S51 单片机为主控模块、用4×4 键盘输入、用74LS47、74LS138 和三极管来驱动六个数码管做显示模块、用发光二极管和蜂鸣器做为报警模块。系统框图如图2. 4×4键盘输入 时钟电路 声光报警 LM386 扬声器 六位数码管显示 AT89C51 图2-2系统框图 第三章 系统主要硬件介绍 3.1 芯片AT89C51介绍 该设计所用主要芯片是AT89C51,现对各组成部分的情况介绍如下:中央处理器,内部数据存储器,内部程序存储器,定时器,串行口,中断控制系统,以及时钟复位电路等等。

3.1.1 AT89C51主要功能 1、为一般控制应用的 8 位单芯片 2、晶片内部具时钟振荡器及时钟电路 3、内部程式存储器(ROM)为 4KB 4、内部数据存储器(RAM)为 128B 5、外部程序存储器可扩充至 64KB 6、外部数据存储器可扩充至 64KB 7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制 8、5 个中断源,两个优先级嵌套中断结构 9、2 组独立的 16 位定时器 10、1 个全多工串行通信端口 11、一个具有位寻址功能、适合逻辑运算的位处理机 12、21个特殊功能寄存器 3.1.2 AT89C51芯片的定义与功能 AT89C51芯片引脚图如图3-1所示,芯片引脚介绍如下:
(1)主电源引脚 Vcc(40脚):单片机供电电源引脚,一般接+5V电源正端;

Vss(39脚):单片机供电电源引脚,一般接+5V电源地端;

(2)外接晶体振荡器引脚 XTAL1(19脚):晶体1反相振荡放大器输入和内部时钟发生电路输入。

XTAL2(20脚):晶体2反相振荡放大器输出。

(3)控制线 ALE:地址锁存使能,ALE是英文“Address Latch Enable“的缩写,表示地址锁存器启用信号。在正常情况ALE输出的信号定值为1/6振荡频率而且可以用作外部时钟或者定时。在访问外部存储器时,ALE输出的脉冲下降沿用于锁存P0口输出的低8位地址线,与P2口结合形成16位地址总线;
但是每次访问外部数据时一个ALE脉冲将被忽略,这时不宜作为时钟输出。

图3-1 AT89C51引脚图 PSEN:片外程序存储器读选通信号输出端,此为“Program Store Enable“的缩写,其意为程序储存启用。当从外部程序存储器读取指令或常数期间,该信号在每个机器周期两次有效,通过数据总线P0口读回指令或常数。在访问外部数据存储器时,该信号将不出现。

/EA:片外程序存储器选用端,低电平有效。该引脚为高电平时,访问内部程序存储器,当PC(程序计数器)值超过片内程序存储器空间是,则自动转向外部程序存储器的程序。该引脚为低电平时,只访问外部程序存储器,不管是否有内部程序存储器。

RST/VPD:复位/备用电源线。RST的含义为复位(RESET),VPD 的含义为备用电源,该引脚为单片机的上电复位或掉电保护输入端。复位分为上电复位和系统运行中复位。最简单的复位电路形式是次引脚和Vss引脚之间连接一个约8.2千欧的下拉电阻,与Vcc引脚之间连接一个约10uF的电容,以保证可靠的复位。单片机系统正常运行时,该引脚上出现持续两个机械周期的高电平,可使单片机回复到初始状态,实现单片机的复位操作,这种形式的复位称为系统运行中复位。AT89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作。

(4)输入/输出口 PORT0(P0.0~P0.7):
端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。

PORT2(P2.0~P2.7):
端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。

PORT1(P1.0~P1.7):
端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。

PORT3(P3.0~P3.7):
端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还具有第二功能,包括串口通信、外部中断信号的控制、计时计数的控制还有外部数据存储器内容的读取或者写入控制等功能。

其引脚分配如下:
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,外部数据存储器读选通信号输出。

3.2 时钟电路的设计 时钟电路产生单片机运行所需要的时钟信号,为了来保证同步工作方式的实现,电路应在同一时钟信号的控制下来严格按时序进行工作。时序研究的就是指令执行中各种信号之间的相互时间的关系。

在51芯片内部有一个用来构成振荡器的高增益的反向放大器,它的输入端是芯片引脚XTAL1,输出端引脚为XTAL2。两个引脚连接晶体振荡器和微调电容组成并联谐振回路,就形成乐反馈电路,构成一个稳定的自激振荡器[6]。如图3-2所示:
图3-2 时钟电路的设计 内部程序存振荡晶体可在1.2MHz~12MHz之间选择,电容值无严格要求,但在电容值取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF~100pF之间取值,但在60pF~70pF时振荡器有较高的频率稳定性。本设计选取晶振为11.0592MHz,电容为30pF。

3.3 复位电路的设计 复位是单片机的初始化操作,它的主要功能就是把PC初始化成为入口地址0000H,让单片机由入口地址处开始执行程序。它不仅可以进行系统的正常的初始化,而且有时当程序运行有毛病或者操作不当使系统处于死锁的状态时,为了处理这种情况,也要用按复位键来重新启动系统。

在振荡器工作时将RST脚保持至少两个机器周期高电平,可实现系统的复位。为了保证上电复位的可靠RST保持高电平的时间至少为振荡器启动时间通常为几个毫秒再加上两个机器周期。

单片机在RESET为高电平控制下,程序计数器(PC)和特殊功能寄存器的复位如表3-1所示。单片机的复位并不影响芯片内部RAM状态,只要RESET引脚保持高电平,单片机将循环复位。在复位有效期间内,ALE﹑PSEN将输出高电平。

表3-1 复位后寄存器状态 寄存器 复位状态 寄存器 复位状态 PC 0000H TMOD 00H ACC 00H TCON 00H B 00H TL0 00H PSW 00H TH0 00H SP 07H TL1 00H DPTR 0000H TH1 00H P0—P3 0FFH SCON 00H IP ××000000B SBUF 不定 IE 0×000000 PCON 0×××0000 本次设计复位电路,如图3-3所示。

图3-3 复位电路 3.4 存储器的分配 51系列单片机存储器结构从物理地址空间上可分为片内、片外程序存储器与片内、片外数据存储器4部分。由于片内、片外程序存储器统一编址,因此,从用户使用的角度,其寻址(逻辑地址)空间可分为:片内统一的64KB的程序存储器、128B内部数据存储器和64KB的外部数据存储器3个独立的地址空间。在访问这3个不同的逻辑空间采用的是不同形式的指令。

3.5 振荡器特性 XTAL1和XTAL2分别为反向放大器的输入和输出。振荡器的频率主要取决与晶体的震荡频率,一般晶体可在1.2~12MHz之间选择,电容C1,,C2一般取30Uf。该反向放大器可以配置为片内振荡器。如采用外部时钟源驱动器件,XTAL2应不接。其余输入至内部时钟信号要通过一个二分频的触发器,因此对外部时钟信号的脉宽来说没有其他的要求,但必须保证脉冲的高低电平所要求的脉宽。

3.6 芯片擦除 芯片的电擦除可以通过正确的控制信号组合,以及保持ALE管脚处于低电平10ms 来实现。在芯片擦操作中,代码的阵列全被写“1”且在所有非空存储字节被重复编程前,该操作一定要被执行。

此外,AT89C51内部有稳态逻辑,当工作在闲置模式时,CPU就停止工作。但是RAM,定时器,计数器,串行口与中断系统仍然可以工作。但是工作在掉电模式下,能够保存数据存储器的内容并且可以冻结振荡器。

3.7 单片机的工作方式 80C51的工作方式有:复位方式、程序执行方式、掉电保护方式、低功耗方式以及EPROM编程和校验方式。不同的工作方式,代表单片机处于不同的状态。单片机工作方式的多少,是衡量单片机性能的一项重要指标。

3.7.1 程序执行方式 程序执行方式是单片机的基本工作方式,由于单片机复位后PC回到初始入口地址,所以程序总是从入口地址开始执行。程序执行的方式可以分成连续执行和单步运行两种。

1.连续执行方式 连续执行方式是从指定的地址开始连续的执行程序存储器ROM中存放的程序,每一次程序,PC自动加1. 2.单步运行方式 程序的单步运行方式是指在单步运行键的控制下完成的,每按一次单步运行键,程序就顺序执行一条指令。单步运行方式通常是用户采用仿真器调试程序是使用的一种特殊运行方式,主要用于观察每条指令的执行情况。

3.7.2 掉电保护方式 当CPU执行一条置PCON.1(Power Down)为1的指令后,系统即进入掉电工作方式。

掉电的具体含义是指由于电源的故障使电源电压丢失或工作电压低于正常要求的范围值。掉电将使单片机系统不能运行,若不采取保护措施,会丢失RAM和寄存器中的数据,为此单片机设置有掉电保护措施,以进行掉电保护处理。具体做法是:检测电路一旦发现掉电,立即先把程序运行过程中的有用信息转存到RAM,然后又备用电源维持RAM供电。

退出掉电方式只有一种,就是硬件复位,进行复位时将所有特殊功能寄存器的内容初始化,但没有改变内部数据存储器区的数据。

在掉电工作方式下,能把Vcc降到2V,但在掉电方式开始工作之前,不能把Vcc降低。即将退出掉电方式之前,Vcc一定要恢复正常的工作电压值,而且需要维持一些时间(约10ms),是振荡器重启并稳定后方可退出掉电方式。

3.7.3 80C51的低功耗方式 单片机大量应用于携带产品和家用消费产品,低电压和低功耗的特性尤为重要。许多单片机已可在2.2V的电压下运行,有的已能在1.2V或0.9V电压下工作;
功耗降至uA级,一粒纽扣就可以长期使用。

1.待机工作方式 当程序将PCON的IDLE位置后,系统就进入了空闲工作方式。在此工作方式下,单片机的工作电流可降到正常工作方式是电流德 15%左右。但是振荡器继续工作,中断系统、串行口以及定时器模块由时钟驱动工作。但是时钟不提供给CPU,也就是说,CPU处于待机状态,工作暂停。

退出空闲方式的方法有两种,一种是中断退出,另一种是按键复位退出。

2.掉电工作方式 掉电工作方式在3.7.2掉电保护方式中已有详细说明,在此不再重复。

第四章 系统的硬件设计与实现 4.1 系统硬件概述 本系统是当有客人来访时,按一下按钮,门铃就会奏出优美的电子音乐,每按一下就会播放不同的音乐,共编有6首电子音乐;
而且能通过键盘扫描模块,能够显示数据并且还能修改密码,开锁密码,具有强大的功能,通过键盘扫描模块输入到单片机控制系统AT89C51中。然后通过数码显示模块来显示我们所要有数据;
还有一个就是报警模块,当输入的密码相同时,则显示模块的灯点亮,当输入的密码是错误时,绿灯点亮,报警模块立刻发出声音报警。为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、数码管显示模块、声光报警模块,电子音乐模块等5模块组成。

4.2主要单元电路的设计 4.2.1 键盘扫描模块电路的设计 如图4-1所示,本模块的作用是进行键盘的扫描,首先判定有没有键被按下,然后再判定被按键的位置,因为键盘矩阵有键被按下时,被按键处的行线和列线被接通,使得开关之间接通。当扫描表明有按键被按下之后,紧接着应是进行去抖动处理,一般我们采用的是软件来去抖动,软件方法则是采用时间延迟以躲过抖动,待行线上状态稳定之后,再进行行状态输入。

图4-1键盘扫描模块 4.2.2 单片机控制模块电路的设计 单片机作为本装置的核心器件,在系统中起到控制声光报警、以及数码动态显示的作用,其中采用的是AT89C51,AT89C51 是标准的40 引脚双列直插式集成电路芯片,有4 个八位的并行双向I/O 端口,分别记作P0、P1、P2、P3。第20 引脚为接地端;
第40引脚为电源端;
第31 引脚需要接高电位使单片机选用内部程序存储器;
第18、19 脚之间接上一个12MHz 的晶振为单片机提供时钟信号;
第9 脚为复位脚,当其接高电位时,单片机停止工作。P0 口接两个发光二极管和一个蜂鸣器以实现声光报警功能,P2 口连接一片七段译码器和一片3-8 译码器以动态扫描方式同时驱动六个数码管,P1 口与16 个阵列式按键相连实现对键盘的扫描。通过编程既能识别从译码器来驱动数码管来显示数据,同时也通过运行指令来达到完成声光报警及动态显示数码管等功能。如图4-2 所示 图4-2单片机控制模块 4.2.3 声光报警模块电路的设计 图4-3声光报警模块 如图4-3所示,本模块的作用是当开锁按钮被按下时,如果数码管当前显示值相同,则绿灯点亮,当输入的数与密码不同时,则红灯点亮并且蜂鸣器立刻发出声音报警。

4.2.4 数码显示模块电路的设计 如图4-4 所示,该模块主要由74LS47 译码器,74LS138 译码器和6 个8 段数码显示管组成,如图所示,从编码器输送过来的数据经过两片74LS47 芯片和74LS138 蕊片译码后,传送到8 段数码显示管,显示管根据接收到数据电平的高低来显示不同的数据。

从下图中可以看到单片机P2 口低4 位连接一片74LS47 七段译码器,由于74LS47 是共阳极数码管的七段译码器,因此要选用共阳极的数码管。单片机P2.0-P21.3 的输出信号经过74LS47 译码后就可以驱动数码管的段码显示相应的数字,另外在74LS47 的输出与数码管之间还要接上7 个470 欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。P2.4-P2.6 口接于3-8 译码器74LS138 的三个输入端,而74LS138 的输出端通过三极管分别接于八个数码管的公共极。通过由P1.4-P1.6 口的输出量来控制74LS138 选择点亮某一个数码管。由于74LS138 是低电位有效,所以应该采用PNP 型的三极管来驱动数码管,在此三极管相当于一个开关的作用依靠这两块芯片就可以控制数码管实现动态扫描显示。

例如:使六个数码管显示123456。在第一时刻输出“0001”给74LS47,让数码管显示“1”,同时输出“000” 给74LS138,选择第一个数码管工作,其余数码管不工作,这样第一时刻就只有第一个数码管显示“1”,其余数码管均不显示。同理第二时刻也只有第二个数码管显示“2”,依次类推第N 时刻就只有第N 个数码管显示“N”。人的肉眼只能分辨0.1 秒内的变化,所以如果以每一时刻0.01 秒的频率循环变化,看起来就感觉每一个数码管都被点亮了,显示“123456”。

图4-4数码显示模块 1. 74LS47译码器引脚及其功能 图4-5 74LS47引脚图 74LS47是BCD-7段数码管译码器/驱动器,74LS47的功能主要用于将BCD码转化成数码块中的数字,然后通过它来进行解码,可以直接把数字转换为数码管的数字,从而简化了程序,节约了单片机的I/O开销。因此这是一个非常好用的芯片,但此芯片成本上较其他同等译码管芯片较贵,因此目前从节约成本的角度考虑,此类芯片已经很少有人采用,大部分情况下都是用动态扫描数码管的形式来实现数码管显示。

各引脚功能 /LT:试灯输入,能检查各个数码管各段能否正常发光。当/LT=0时,无论输入A3 ,A2 ,A1 ,A0是哪种状态,译码器输出的均是低电平,若是数码管工作正常,则显示8。  / BI:灭灯输入,能够灭掉多位数码。/BI=0时。不论/LT和输入端口A3 ,A2 ,A1,A0是哪种状态,译码器的输出电位都是高电平,然后就会把7段数码管全部熄灭。  /RBI:灭零输入,它能熄灭不想显示的0。当每一位A3= A2 =A1 =A0=0时,本应显示0,但是在/RBI=0作用下,译码器的输出全是1。这样的结果与利用灭灯信号的结果是一样的,可以将0熄灭。  /RBO:灭零输出,与灭灯输入端口/BI共用一个端口,两者能够配合的运用,能够对多位数码显示实现灭零的控制。

2.74LS47译码器原理 译码本身就是编码的逆过程,它可以把编码时赋予代码的含义编译过来从而产生能够译码的逻辑电路就成为了译码器。译码器的输出代码与输入代码是一一对应的关系。74LS47就是一个输出低电平才会显示的七段字形的译码器,它能和数码管配合进行使用,正如下表列出了74LS47的真值表,即表明了它和数码管之间对应的关系。

/LT /RBI A3 A2 A1 A0 RI /RBO /a /b /c /d /e /f /g 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 X 0 0 0 1 1 1 0 0 1 1 1 1 1 1 X 0 0 1 0 1 0 0 1 0 0 1 0 2 1 X 0 0 1 1 1 0 0 0 0 1 1 0 3 1 X 0 1 0 0 1 1 0 0 1 1 0 0 4 1 X 0 1 0 1 1 0 1 0 0 1 0 0 5 1 X 0 1 1 0 1 1 1 0 0 0 0 0 6 1 X 0 1 1 1 1 0 0 0 1 1 1 1 7 1 X 1 0 0 0 1 0 0 0 0 0 0 0 8 1 X 1 0 0 1 1 0 0 0 1 1 0 0 9 X X X X X X 0 1 1 1 1 1 1 1 熄灭 1 0 0 0 0 0 0 1 1 1 1 1 1 1 熄灭 0 X X X X X 1 0 0 0 0 0 0 0 8 表4-1 74LS47的功能表 3.七段数码管工作原理 7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极连接在一起并接地;
它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。无论共阴极还是共阳极的7段显示电路,都有必要加上限流的电阻,不然通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源的电压去掉发光二极管的工作电压除上10mA到15mA得出来的数即为限流电阻的值。发光二极管的正常工作电压一般在1.8V--2.2V,通常选2V即可!发光二极管的正常工作电流一般选取在6-20mA,电流如果选低了,7段数码管发出的光就不亮,选高了数码管工作时间长了就比较容易坏掉。对于大功率7段数码管可根据实际的情况来进行选取限流电阻及电阻的大小。

4. 74LS138芯片介绍 74LS138除了3线到8线的基本译码输入输出端外,为便于扩展成更多位的译码电路和实现数据分配功能,74LS138还有三个输入使能端 EN1, EN2A和EN2B 。74LS138真值表和内部逻辑图分别见表4-2和图(a),图1(c)所示符号图中,输入输出有效用极性指示符表示,同时极性指示符又标明了信号方向。74138的三个输入使能(又称选通ST)信号之间是与逻辑关系, EN1高电平有效,EN2A和EN2B低电平有效。只有在所有使能端都为有效电平(EN1EN2AEN2B=100)时,74138才对输入进行译码,相应输出端为低电平,即输出信号为低电平有效。在EN1EN2AEN2B ≠100时,译码器停止译码,输出无效电平(高电平)。

1)74LS138原理图 图4-6 74LS138原理图 2)引脚功能 A0~A2:地址输入端 STA(E1):选通端 /STB(/E2)、/STC(/E3):选通端(低电平有效) /Y0~/Y7:输出端(低电平有效) VCC:电源正 GND:地 3)工作原理 ①当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。

②利用 E1、E2和E3可级联扩展成 24 线译码器;
若外接一个反相器还可级联扩展成 32 线译码器。

③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。

④可用在8086的译码电路中,扩展内存。

4.2.5 音频功率放大电路 LM386是美国国家半导体公司生产的音频功率放大器, 它是一种音频集成功放,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,经常应用于录音机和收音机等低电压消费类产品。一般为了减少外围元件,电压增益内置常为20。通常在引脚1和引脚8之间外接一个电阻和电容,便可将电压增益调为不大于200的任何值。输入端如果用地位来作为参考,与此同时输出端会被自动的偏置到电源电压的一半,而且在6V的电源电压下,它的静态的功耗仅仅是24mW,因此LM386经常应用于电池供电的场合。

LM386概述 1.特性:
1) 静态功耗较低,大约是4mA,可用电池来进行供电;

2) 正常工作电压的范围比较宽,4-12V 或者5-18V;

3) 外围元件少;

4) 电压增益可调,20-200;

5) 低失真度。

2.应用特点:
LM386是美国国家半导体公司生产的音频功率放大器,通过外接电路可以可将电压增益调为任意值,不能大于200。此外,在6V电源电压下,它的静态功耗仅为24mW,因此LM386特别适用于电池供电的场合。

3.内部电路:
LM386内部的电路原理图就是一个三级的放大电路。

第一级是差分放大电路,T分别与T2、T3和T4构成复合管,因此可作为差分放大电路的放大管;
T5和T6构成镜像电流源作为T1和T2的有源负载;
T3信号和T4信号由管的基极输入,从T2管的集电极输出,为双端输入、单端输出的差分电路。把镜像电流源当成差分放大电路的有源负载,可以让单端输出电路的增益基本上等同于双端输出电容的放大增益。

第二级为共射极放大电路,T7为放大管,恒流源当做有源负载,来增大放大电路的放大倍数。

第三级中的T8管与T9管复合成了PNP型管,与NPN型管T10构成准互补输出级。二极管D1和D2能够为输出级供给适宜的偏置电压,能够消除信号交越带来的失真。

电阻R7是由输出端与T2的发射极连接到一起,从而构成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。

4.LM386的引脚图:
LM386的外形和引脚如下图4-8所示,引脚2为反相输入端,3为同相输入端;
引脚5为输出端;
引脚6和4分别为电源和地;
引脚1和8为电压增益设定端;
使用时在引脚7和地之间接旁路电容,通常取10μF。

查LM386的datasheet,电源电压4-12V或5-18V(LM386N-4);
静态消耗电流为4mA;
电压增益为20-200;
在1、8脚开路时,带宽为300KHz;
输入阻抗为50K;
音频功率0.5W。

图4-7 LM386引脚图 第五章 系统的软件设计 5.1 音乐符设计 (1)首先建立音乐,把音乐的音符找出。建立各个音符的定时常数T值表,编写程序时我们把T值表按顺序建立在“TABLE”栏。每个发音符使用一个字节,字节的位(简谱码)代表音符的节拍。如果1拍为0.4秒,4分之一拍就是0.1秒。只要设定延时时间就求得节拍的时间。假设4分之一拍为1DELAY,则一拍应为4DELAY,依次类推。所以只要求出4分之一的DELAY时间。4分之一拍的延时在此我们设为125ms,节拍码及音符对应的简谱码、频率和定时常数如下表:
表5-1 节拍码 节拍数 节码数 1 1/4拍 2 2/4拍 3 3/4拍 4 1拍 5 1又1/4拍 6 1又1/2拍 8 2拍 A 2又1/2拍 C 3拍 F 3又3/4拍 表5-2音符对应的简谱码、频率及定时常数、 音符 简谱码 频率(HZ) 定时常数(T) 低SO 1 392 64260 低LA 2 440 64400 低TI 3 494 64524 中DO 4 523 64580 中RE 5 587 64684 中MI 6 659 64777 中FA 7 698 64820 中SO 8 784 64898 中LA 9 880 64968 中TI A 988 65030 高DO B 1046 65058 高RE C 1175 65110 高MI D 1318 65157 高FA E 1397 65178 高SO F 1568 65217 不发音 0 ( 2)定时器初始值的求法如下:
T=65536-N=65536-Fi÷2÷Fr 例如:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音的DO(1046Hz)的定时器初始值。

T=65536-N=65536-Fi÷2÷Fr=65536-1000000÷2÷Fr=65536-500000/Fr 低音DO:T=65536-500000/262=63627 中音DO:T=65536-500000/523=64580 高音DO:T=65536-500000/1047=65059 5.2 语音程序设计方法 1).我们用单片机实定时/计数器T0来产生不同赫兹的频率,根据定时/计数器T0,我们取定时250us,因此,例如对于700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。

信号产生的方法:500Hz信号周期为2ms,信号电平为每1ms(4X250us)变反1次, 2).在设计过程,只有当按下SP0之后,才启动T0开始工作,当T0工作完毕,回到最初状态。

3).例如“叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。

5.3 语音程序流程图 在设计过程,只有当按下SP0之后,才启动T0开始工作,当T0工作完毕,回到最初状态。流程图如下图5-1: 5.4 电子锁主流程图 本系统的工作流程为:通过键盘扫描来实现三种不同的功能,刚开始是设置的初始密码123456 通过数码管来显示,用10 个按键来输入0 到9 这从右到左依次输入,还用三个按键来显示密码,修改密码,开锁等。当开锁按钮被按下时,如果数码管与当前显示值相同,则点亮LED1;
当数码管值不同时,则点亮LED2,并且立刻发出报警声音。流程图如下图5-2:
主程序开始 初始化变量 初始化定时器 演奏电子音乐 等待按键, 是否有按键 Y N 图5-1 语音程序流程图 开始 初始化 自检子程序 键盘扫描子程序 有按键按下 显示子程序 循环 相应子程序 图5-2电子锁程序流程图 此程序说明:单片机复位后进入初始化把初始密码“123456”依次存放到40H 到45H六个单元中,把30H 到35H 六个单设置为六位数码管显示数据的存放地址,设置完毕调用自检子程序进入自检状态,自检完毕调用扫描子程序对键盘进行扫描,给键盘所连接的P2 口赋扫描码,例如:MOV P2,#0FEH,则扫描最后一行按键。写入这个扫描码后P2 口的高4 位写入“1”,被设为输入状态,低4位中只有P2.0 为“0”。而P2 口的高4 位通过按键与低4 位相连,所以此时从P2 口的高4位就可以读入低4 位的数据。与被按下的键相连接的高位口,读入的数据为“0”,其它高位口读入的为“1”从而识别出是哪一个按键被按下。随后再依次对P2 口写入FDH、FBH、07H,分别扫描第三、第二、第一行,这样交替循环便可完成对4×4 键盘的扫描。如果有按键被按下则跳转到相应的子程序,再调用显示子程序把30H 到35H 六个单元的数据给六个数码管显示出来。显示完毕就跳加扫描子程序继续对键盘进行扫描,如此循环。

5.4.1移位子程序 开始 (34H)→ (35H) (33H)→ (34H) (32H)→ (33H) (31H)→ (32H) (30H)→ (31H) 相应数据→(30H) 返回 图5-3 移位子程序流程图 移位程序说明:进入移位子后就把30H 到35H 六个单元里的数据向右移一位,移位完毕后把35H 单元里的数据推出去,把30H 单元空出。

5.4.2开锁子程序 开锁程序说明:判断30H 到35H 单元里的数据与40H 到45H 单元里的数据是否相同,如果相同,开锁成功绿灯亮;
如果不相同,开锁不成功报警红灯亮且蜂鸣器响。如图5-6所示 开始 (30H)~ (35H) = (40H ) ~ (45H) ? 开锁 返回 报警 YES NO 图 5-4 开锁子程程序流程图 5.4.3修改密码子程序 开始 成功开锁? 修改密码 不修改 返回 YES NO 图 5-5 修改密码子程序流程图 修改密码程序说明:判断绿灯是否已点亮,点亮则说明已开锁成功可修改密码, 否则不修改。

第六章 软件介绍 本设计中,绘图、编程序大多依赖于软件。主要用到的软件有PROTEL99SE、PROTEUS、Keil uVision4等。

6.1 PROTEL99SE简介 随着计算机技术的发展,电路设计中的很多工作都可以交给计算机来完成,这样不仅大大减轻了设计人员的劳动量,还保证了设计的规范性。因此,电子设计自动化已经成为不可逆转的时代潮流。

Protel99SE是PROTEL公司推出的一款性能比较稳定的EDA软件。它在升级以前版本的基础上形成一个全面、集成、全32位的电路设计系统。PROTEL99SE包含多种功能,集原理图设计、电路混合信号仿真、PCB设计与布线等功能于一体,在电路设计领域有相当重要的地位。

Protel 99SE中主要功能模块如下:
(1) 原理图设计系统 该模块主要用于电路原理图设计、原理图元件设计和各种原理图报表生成等。

(2)印刷电路板设计系统模块 该模块能够提供一个功能强大并且互相交流的PCB设计的环境,主要应用于PCB的设计、元件封装的设计、报表的形成及PCB输出。

(3)自动布线系统模块 该模块是一个集成过的无网格自动布线系统,布线效率比较高。

(4)PCB信号完整性分析模块 该模块能够提供比较精确的板级物理信号的分析,能够检查出串扰、过冲、下冲、延时和阻抗等问题,而且能够自动的给出具体解问题的决方案。

(5)电路仿真系统模块 该模块是一个基于较为新Spice3.5标准的仿真器,为用户的设计前端提供了完整、直观的解决方案。

(6)可编程逻辑器件设计系统模块 该模块是一个集成的PLD开发环境,可使用原理图或CUPL硬件描述语言作为设计前端,能提供工业标准JEDEC输出。

在本设计中,通过PROTEL软件完成了原理图。

6.2 Keil 软件 6.2.1 Keil软件概述 本次设计的语音录放系统是以AT89C51为核心建立的系统,在软件编辑方面,需要对语音门铃和电子锁俩部分分别构成的子函数进行编辑。在编辑中需要用Keil uVision4软件。

在2009年2月发布Keil uVision4,Keil uVision4引入了较为先进窗口管理系统,这样开发人员就能够使用多台监视器,并能视觉上的对窗口位置的的任何地方进行完全控制。新的用户界面能够更好地运用屏幕空间和更有效地组织多个窗口,提供一个较为整洁,而且高效的环境来开发应用程序。

目前使用Keil uVision4的产品有Keil MDK-ARM,Keil C51,Keil C166和Keil C251。

6.2.2 Keil 新特征 (1)最新的Keil uVision4 IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发;

(2)uVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口;

(3)uVision4在μVision3 IDE的基础上,增