基于单片机的电话遥控器毕业设计

更新时间:2024-06-01 17:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计(论文)任务书

学 院 学生姓名 设计(论文)题目 专 业 学 号 通信工程 有线通道遥控器的设计 内容及要求: 应用单片机技术,通过有线交换网用户线实现用外部的有线电话对家中电器进行控制。基本要求: 1. 控制器可检测铃流信号。 2. 可以实现自动模拟摘挂机。 3. 可以接收有线交换网用户线的DTMF信号,可进行密码校验。 4. 能为主叫方提供呼通提示音。 5. 通过电话对电器实现控制(开/关)。 进度安排: 1-3周:查阅相关资料,学习有线电话电路知识;学习单片机的基础知识;完成开题报告。 4-7周:进行硬件电路设计、调试。 8-11周:进行软件编程、调试。 12-13周:软、硬件连试,电路改进、完善。 14-16周:撰写论文,准备答辩。

- 1 -

指导教师(签字): 学院院长(签字): 年 月 日 年 月 日

- 2 -

绪论

电话遥控作为一较新的课题与常规的遥控方式相比,显示出一定的优越性,不需进行专门的布线,不占用无线电频率资源,避免了电磁污染。同时,由于电话线路各地联网,可以充分利用现有的电话网,因此遥控距离可跨省市,甚至跨越国家。

电话属双工通信手段。因此,这可以大大体现出利用电话进行遥控的更大优越性。操作者可以通过各种提示音即时了解受控对象的有关信息,从而进行进一步的操作。电话遥控这一课题目前已有研究者,但是只是还只限于实验室阶段,因而距离实际应用,尤其是对于日常生活尚有一定的差距,并不能完全体现出电话遥控方式的双工通信特点。本作品正是针对这一点进行了较大改进,采取单片机智能控制,利用不同的提示音达到对于不同操作的提示及对受控方状态的信息反馈,从而使操作者能够及时了解受控方信息,使产品达到交互式与智能化。而且本作品的调试都是在线调试,已经在宿舍连接电话经过真正的交换机实验并且成功。

本毕业设计的意义在于:第一、可以让我更加熟悉并加深在学校所学知识的了解。在电路设计方面,可以了解各个元器件在电路中的应用,通过应用可以更加了解书上介绍的功能及用途,更进一步了解书上未提及的功能和性能。第二、通过编写语言来控制单片机可以更加熟练的应用汇编语言,在编写的过程中也遇到了的两的问题,通过老师的指导给于解决,这样更进一步了解汇编语言的实质。第三、产品是为人民服务的,同样此设计的产品以实用性为前提,此电话遥控开关完成后可以通过家中的固定电话线来完成对家中用电器的控制,就是因为用了电话线,这样就可以了远程遥控,只要是可以通信的地方都可以通过固定电话或者手机拨打家中电话的方式来完成对家中用电器的控制。

本毕业设计实现的方法:设计中用到的主要器件是双音解码芯片CM8870、8051型单片机AT89S51单片机、语音芯片ISD1420、光电耦合器P521。CM8870可以把按键发出的双音多频信号解码成8421码。单片机用来接受CM8870发出的8421码来判断是哪一个按键被按下实现按键对应的功能。语音芯片主要用来发出提示音方便用户的操作,使产品更具有人性化。此语音芯片可以录放,可以把自己的声音录进去来作为反馈音,使自己听起来更加亲切。光电耦合器用来采集振铃信号,传到单片机上,让单片机计数,当单片机计数满,单片机完成模拟摘机。本文主要要解决的主要问题有:一、单片机能够采集电话的铃流信号完成计数。二、电话信号能够被准确地送到单片机中,能够被单片机识别。三、单片机

- 3 -

识别送来的信号后能够改变单片机管脚的电平来完成对继电器的控制。四、反馈信息能够清晰准确地回馈到电话线上。单片机采集信号用的是光电耦合器来完成,电话的振铃信号是一个25Hz的正弦波将耦合器并上一个二极管接上电话线,二极管可以保护耦合器,剩下的信号正半周馒头波打通二极管,使耦合器的集电极和发射机接通,每接通依次产生一个脉冲,将脉冲连接到单片机的计数端完成计数(后面有详细的电路图)。电话信号的输入要通过解码芯片CM8870完成,CM8870的连接用的是芯片的典型应用电路,CM8870的数据输出端口与单片机的P1口连接,当电话与单片机接通以后,有按键按键按下,CM8870就会接到一个双频信号。CM8870将接收到的双频信号解码为8421码送到单片机中,完成了数据的接收。单片机控制继电器时是通过两个三极管控制的,管脚电平控制三极管的工作状态来控制继电器。反馈信息包括两部分,一部分由“嘀嘀”声反馈,另一部分由语音信息的反馈。“嘀嘀”声是由单片机的一个管脚(P2.2)发出一定频率的方波,方波直接耦合到反馈线上来完成。语音的反馈是由语音芯片ISD1420发出的,经过LM386一次放大发送到反馈线上来完成。

作品为突出电话遥控的信息反馈功能,并使产品达到非常高性价比。本文用语音芯片作为电话的反馈提示因,这样更能够使用户方便的了解该电路板的功能,而且该电路板还可以进行功能扩展,如:加上留言电路,主人不在家时客人留言。利用遥控方式可使主人很方便地在异地提取留言信息;在各路终端上接上传感器即可实现对环境声响的监听;接上自动拨码电路可定时将预定信息转至主人传呼机或特定电话,从而达到定时提醒主人的目的。本作品还可以应用于工厂企业的自动化控制等领域。

- 4 -

第1章 元器件介绍

1.1 引言

在电子线路的设计应用中,元器件应该是绝对不能缺少的,它是电子线路板

的基础部分。没有元器件的板子不能说是电子板更不会具有电器意义,也不会有电子板的功能。这里将要讲述本毕业设计将要用到的主要器件。

讲述的主要有:光电耦合器、双音频解码芯片、单片机,语音芯片、音频放大芯片,稳压芯片LM317,LM7805。

当然电路中有电阻和电容、二极管等等,并且是用到的最多的。因为这些是最基本的也是大家熟知的我在这里不在多说。电阻在电路中有对电能的吸收作用,可使电路中各元件按需要分配电能,稳定和调节电路中的电流和电压。电容是由两个金属电极中间夹一层绝缘电介质所构成的器件。所以电容是一种储存电能的元件,具有充放电特性和隔直流通交流的能力。二极管具有单向导电特性,可以用来整流,检波,作为开关用,二极管还用到了发光二极管,它们可以用作信号灯。

1.2 稳压器件(LM7805、LM7805)

1.2.1 LM7805介绍

电子产品中常见到的三端稳压集成电路有正电压输出的78××系列和负电压输出的79××系列。故名思义,三端IC是指这种稳压用的集成电路只有三条引脚输出,分别是输入端、接地端和输出端。它的样子象是普通的三极管,TO-220的标准封装,也有9013样子的TO-92封装,如图1-1。

78/79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC型号中的78或79后面的数字代表该三端集成稳压电路的输出电压,如7806表示输出电压为正6V,7909表示输出电压为负9V。同样7805也就是输出正5伏的稳压芯片。

有时在数字78或79后面还有一个M或L,如78M12或79L24,用来区别输出电流和封装形式等, 其中78L调系列的最大输出电流为100mA, 78M系列最大输出电流为1A,78系列最大输出电流为1.5A。它的封装也有多种(塑料封

- 5 -

装的稳压电路具有安装容易、价格低廉等优点,因此用得比较多。 79系列除了输出电压为负。引出脚排列不同以外,命名方法、外形等均与78系列的相同。

因为三端固定集成稳压电路的使用方便,电子制作中经常采用,可以用来改装分立元件的稳压电源,也经常用作电子设备的工作电源。

注意三端集成稳压电路的输入、输出和接地端绝不能接错,不然容易烧坏。一般三端集成稳压电路的最小输入、输出电压差约为2V,否则不能输出稳定的电压,一般应使电压差保持在4-5V,即经变压器变压,二极管整流,电容器滤波后的电压应比稳压值高一些。

在实际应用中,应在三端集成稳压电路上安装足够大的散热器(当然小功率的条件下不用)。当稳压管温度过高时,稳压性能将变差,甚至损坏。

当制作中需要一个能输出1.5A以上电流的稳压电源,通常采用几块三端稳压电路并联起来,使其最大输出电流为N个1.5A,但应用时需注意:并联使用的集成稳压电路应采用同一厂家、同一批号的产品,以保证参数的一致。另外在输出电流上留有一定的余量,以避免个别集成稳压电路失效时导致其他电路的连锁烧毁。

LM7805稳压芯片输出电压为正5伏,输出电流100mA。输入电压应该在9---10伏,输入电压应该高出输出电压4---5伏。

图1-1 LM7805各种型号

1.2.2

LM317是可调节3端正电压稳压器,在输出电压范围为1.2伏到37伏时能够提供超过1.5A的电流。此稳压器非常便于使用,只需要两个外部电阻来设置输

- 6 -

LM317介绍

出电压。此外还使用内部限流、热关断和安全工作区补偿使之基本能防止烧断保险丝。 LM317服务于多种场合,包括局部稳压、卡上稳压。该器件还可以用来制作一种可编程的输出稳压器,或者,通过在调整点和输出之间接 一个固定电阻,LM317可用作一种精密稳流器。 还具有一下特性: 1)、输出电流超过1.5安。 2)、输出在1.2伏和37伏之间可以连续调节。 3)、内部热过载保护。 4)、不随温度变化的内部短路电流限制。 5)、输出晶体管安全工作区补偿。 6)、对高压应用孚空工作。 7)、表面贴装DDPAK形式,和标准3引脚晶体管封装。 下面是LM317的典型应用电路如图1-2: Vin1VinLM317Vout3VoutGNDR2240CoutCin0.1uFIadj20.1uFR1 图1-2 LM317典型应用电路 当稳压器距电源滤波器有一定距离时Cin是必须的。Cout对于稳压而言没有必要,但改变瞬态响应. Vout=1.25V(1+R2R1)+IadjR2 因为Iadj的电流控制在100uA,这一项的误差在大多数应用中可忽略。 根据上面图1-2可以算出外边两个电阻的值,一般情况下,R1的数值是不变的,就是这样可以算出R2的数值。由于Iadj的电流是非常小的,当使用时算 - 7 - R2数值时可以把IADjR2此项省略。比如输出要12伏,代入公式:

Vout=1.25(1+

中可以算出R2=2064欧姆。

R2R1)V

1.3 单片机(AT89S51)

AT89S51单片机在设计中数核心器件有必要详细说明。MCS-51系列单片机产品有8051,8031,8751,80C51,80C31等型号(前三种为CMOS芯片,后两种为CHMOS芯片)。结构基本相同,其主要差别反映在存储器的配置上。8051内部设有4K字节的掩模ROM程序存储器,8031片内没有程序存储器,而8751是将8051片内的ROM换成EPROM。由ATMEL公司生产的89C51将EPROM改成了4K的闪速存储器,它们的结构大同小异,本章将对8051单片机的结构作一介绍。

1.3.1 MCS-51单片机内部结构

MCS-51单片机是在一块芯片中集成了CPU,RAM,ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件。MCS-51单片机内包含下列几个部件:

频率基准源 计数器

中断 控制 并行 I/O 口 串行 串 行 输入 输 出 图1-3 8051单片机框图

- 8 -

64K总线扩展控制 可编程I/O 可编程串行口 振荡器及 定时电路 4K字ROM 128字RAM 2个16位定/计数器 8051CPU ◆ 一个8位CPU;

◆ 一个片内振荡器及时钟电路; ◆ 4K字节ROM程序存储器; ◆ 128字节RAM数据存储器; ◆ 两个16位定时器/计数器;

◆ 可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路; ◆ 32条可编程的I/O线(四个8位并行I/O端口); ◆ 一个可编程全双工串行口;

◆ 具有五个中断源、两个优先级嵌套中断结构。

8051单片机框图如图1-3所示。各功能部件由内部总线联接在一起。 图中4K(4096)字节的ROM存储器部分用EPROM替换就成为8751;图中去掉ROM部分就成为8031的结构图。

在设计中应用了很多I/O口,下一节详细介绍一下I/O口。主要介绍P3口。 1)、P3口(P3.0~P3.7、10~17脚)双功能口

P3口是一个多用途的端口,也是一个准双向口,作为第一功能使用时,其功能同P1口。P3口的位结构如图 1-4。

当作第二功能使用时,每一位功能定义如表1-1所示。P3口的第二功能实际上就是系统具有控制功能的控制线。此时相应的口线锁存器必须为“1”状态,与非门的输出由第二功能输出线的状态确定,从而P3口线的状态取决于第二功能输出线的电平。在P3口的引脚信号输入通道中有两个三态缓冲器,第二功能的输入信号取自第一个缓冲器的输出端,第二个缓冲器仍是第一功能的读引脚信号缓冲器。P3口可驱动4个LSTTL门电路。

第二输出功能读锁存器内部上拉电阻内部总线写锁存器DQP3.X锁存器CPQP3.X引脚VCC&读引脚第二输入功能

图 1-4 P3口位结构

- 9 -

表 1-1 P3口的第二功能

端 口 功 能 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第 二 功 能 RXD---串行输入(数据接收)口 TXD---串行输出(数据发送)口 INT0INT1---外部中断0输入线 ---外部中断1输入线 T0 ---定时器0外部输入 T1 ---定时器1外部输入 WRRD---外部数据存储器写选通信号输出 ---外部数据存储器读选通信号输入 每个I/O端口内部都有一个八位数据输出锁存器和一个八位数据输入缓冲器,四个数据输出锁存器与端口号P0、P1、P2和P3同名,皆为特殊功能寄存器。因此,CPU数据从并行I/O端口输出时可以得到锁存,数据输入时可以得到缓冲。 四个并行I/O端口作为通用I/O口使用时,共有写端口、读端口和读引脚三种操作方式。写端口实际上就是输出数据,是将累加器A或其它寄存器中数据传送到端口锁存器中,然后由端口自动从端口引脚线上输出。读端口不是真正的从外部输入数据,而是将端口锁存器中输出数据读到CPU的累加器。读引脚才是真正的输入外部数据的操作,是从端口引脚线上读入外部的输入数据。端口的上述三种操作实际上是通过指令或程序来实现的。

2)、串行I/O端口

8051有一个全双工的可编程串行I/O端口。这个串行I/O端口既可以在程序控制下将CPU的八位并行数据变成串行数据一位一位地从发送数据线TXD发送出去,也可以把串行接收到的数据变成八位并行数据送给CPU,而且这种串行发送和串行接收可以单独进行,也可以同时进行。

8051串行发送和串行接收利用了P3口的第二功能,即利用P3.1 引脚作为串行数据的发送线TXD和P3.0引脚作为串行数据的接收线RXD,如表2-1所示。串行I/O口的电路结构还包括串行口控制器SCON、电源及波特率选择寄存器PCON和串行数据缓冲器SBUF等,它们都属于特殊功能寄存器SFR。其中PCON和SCON用于设置串行口工作方式和确定数据的发送和接收波特率,SBUF实际上由两个八位寄存器组成,一个用于存放欲发送的数据,另一个用于存放接收到的数据,起着数据的缓冲作用。

3)、总线

MCS-51单片机属总线型结构,通过地址/数据总线可以与存储器(RAM、

- 10 -

EPROM)、并行I/O接口芯片相连接。

在访问外部存储器时,P2口输出高8位地址,P0口输出低8位地址,由ALE(地址锁存允许)信号将P0口(地址/数据总线)上的低8位锁存到外部地址锁存器中,从而为P0口接受数据作准备。

在访问外部程序存储器(即执行MOVX)指令时,PSEN(外部程序存储器选通)信号有效,在访问外部数据存储器(即执行MOVX)指令时,由P3口自动产生读/写(RD/WR)信号,通过P0口对外部数据存储器单元进行读/写操作。 3MCS-51单片机所产生的地址、数据和控制信号与外部存储器、并行4I/O接口芯片连接简单、方便。 1.3.2 单片机的外部结构 1)MCS-51单片机引脚功能 MCS单片机都采用40引脚的双列直插封装方式。图1-5为引脚排列图, 40条引脚说明如下: 1、主电源引脚Vss和Vcc ① Vss接地 ② Vcc正常操作时为+5伏电源 2、外接晶振引脚XTAL1和XTAL2 ① XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。② XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。 12345678910111213141617181920P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7restP3.0/RxDP3.1/TxDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1VSS89S51ic2VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VPPALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.04039383736353433323130292827262524232221当采用外部振荡器时,此引脚接地。 153、控制或与其它电源复用引脚 图1-5 引脚排列图 RST/VPD,ALE/PROG,PSEN和EA/Vpp。 ① RST/VPD 当振荡器运行时,在 此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位,在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。 ② ALE/PROG 正常操作时为ALE功能(允许地址锁存)提供把地址的 - 11 - 低字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的

16)周期性地

发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE 端可以驱动(吸收或输出电流)八个LSTTL电路。 对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲(PROG功能)。

③ PSEN 外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,PSEN在每个机器周期内两次有效。PSEN同样可以驱动八LSTTL输入。

④ EA/Vpp 、EA/Vpp为内部程序存储器和外部程序存储器选择端。当

EA/Vpp为高电平时,访问内部程序存储器,当EA/Vpp 为低电平时,则访问外对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编

部程序存储器。 程电源(Vpp)。

4、输入/输出引脚P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 ① P0口(P0.0 - P0.7)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。

② P1口(P1.0 - P1.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。

③ P2口(P2.0 - P2.7)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载。

④ P3口(P3.0 - P3.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。P3口还用于第二功能请参看表1-1。

2)复位和复位电路

MCS-51单片机的复位电路如图1-6所示。在RESET(图中表示为RST )输入端出现高电平时实现复位和初始化。

在振荡运行的情况下,要实现复位操作,必须使RES 引脚至少保持两个机器周期(24个振荡器周期)的高电平。CPU在第二个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RES端电平变低。复位期间不产生ALE及PSEN信号。内部复位操作使堆栈指针SP为07H,各端口都为1(P0-P3口的内容均匀0FFH),特殊功能寄存器都复位为0,但不影响RAM的状态。当RES引脚返回低电平以后,CPU从0地址开始执行程序。复位后,各内部寄存状态如表1-2:

- 12 -

表 1-2 寄存器状态 寄存器 PC ACC B PSW SP DPTR P0 -P3 IP IE 内容 0000H 00H 00H 00H 07H 0000H 0FFH ×××00000 0××00000 寄存器 TMOP TCON TH0 TL0 TH1 TL1 SCON PCON SBUF 内容 00H 00H 00H 00H 00H 00H 00H 0××××××× 不定 图1-6(a)为加电自动复位电路。加电瞬间,RES 端的电位与Vcc相同,随着RC 电路充电电流的减小RES的电位下降,只要RST 端保持10毫秒以上的 +5V+5VMCS--51MCS--5110uFREST8.2K按键10uFREST5.1K1K地 (a) 图1-6 复位电路 地(b) 高电平就能使MCS-51单片机有效地复位,复位电路中的RC 参数通常由实验调整。当振荡频率选用6MHz时,C选22uF,R选1K,便能可靠地实现加电自动复位,若采用RC电路接斯密特电路的输入端,斯密特电路输出端接MCS-51和外围电路的复位端,能使系统可靠地同步复位。图1-6(b)为人工复位电路。 复位电路在实际应用中很重要,不能可靠复位会导致系统不能正常工作,所以现在有专门的复位电路,如810系列,这种类型的器件不断有厂家推出更好的 - 13 - 产品,如将复位电路、电源监控电路、看门狗电路、串行E2ROM存储器全部集成在一起的电路,有的可分开单独使用,有的可只用部份功能,让使用者就具体实际情况灵活选用。

1.4 语音芯片(ISD1420)

信息储存器件ISD1400 ChipCorder? 系列是单片高质量短周期的录放音电路,采用CMOS工艺内部包含片上时钟麦克前置放大器自动增益控制,带通滤波器平滑滤波器和功率放大器。由ISD1400 组成的最小应用系统仅包含一个麦克喇叭几个阻容元件两个开关。电源录制的信息存放在内部不挥发单元中。断电后可以长久保存,这种独特的单片解决方案使用了ISD 的专利模拟存储技术,语音和音频信号不经过转换直接以原来状态存储到内部存储器,可以实现高质量的语音复制。

1.4.1 ISD1420主要具有一下特性

? 使用简单的单片录放音电路 ? 高保真语音/音频处理

? 开关接口放音可以是脉冲触发或电平触发 ? 录放周期为20 秒 ? 自动功率节约模式

— 当一个录音或放音周期结束后自动进入掉电状态 — 掉电状态的典型电流为0.5uA ? 零功率存储

— 不需要电池备份电路 ? 处理复杂信息可使用地址操作 ? 100 年信息保存典型 ? 片上时钟

? 不需要编程器和开发系统 ? +5V 供电

? 提供裸片DIP SOIC 封装

? 提供工业级别温度型号-40℃ 到85℃

1.4.2 功能描述

1)语音质量

- 14 -

ISD1400 系列提供6.4K 和8.0K 取样频率,用户可以根据语音质量加以选择取样的语音直接存储到片内的不挥发存储器内部,不需要数字化和压缩的其它手段直接模拟存储能提供真实自然的语音、音乐、声音。ISD1420 能提供20 秒的录放音时间。 2)EEPROM 存储 ISD 的ChipCorder 技术使用片上不挥发存储器断电后信息可以持续保存100 年器件可以重复录制10 万次。 3)基本操作 ISD1400 ChipCorder 系列由一个单录音信号REC 实现录音操作。两个放音信号实现放音操作:PLAYE 触发放音、PLAYL 电平放音。在录音或放音操作的结束ISD1400 将自动进入低功率等待模式消耗0 5uA 电流。ISD1400 提供了全地址的寻址功能。ISD142内部存储阵列有160 个可寻址的段能实现下面的功能参ISD1400 应用信息的地址表。 4) 操作模式 ISD1420具有两种模式:地址模式和操作模式。这里主要用了地址模式就不说操作模式了。 地址输入A0-A7根据最高两位地址位的数值地址输入有两种功能。当A7 A6 至少有一位为0 时,输入认为是地址输入,输入的地址被当作当前录音或放音的起始地址,这些地址管脚全部为输入管脚。与操作模式中能输出地址信息不同。地址输入在信号PLAYE、 PLAYL 或REC 的下降沿被锁存。 1.4.3 ISD1420的外部结构 ISD14201234567891011121314A0A1A2A3A4A5NCNCA6A7NCVssDVssASP+VccDRECXCLKRECLEDPLAYEPLAYLNCANA OUTANA INAGCMIC REFMICVccASP-2827262524232221201918171615语音芯片的外部结构及管脚结构 图1-7 ISD1420外部结构 如图1-7 3 1.4.4 ISD1420典型应用电路

ISD1420语音芯片的典型应用如图1-8。图中包括了,芯片的外围元器件的连接,及外围元件的数值。

4 - 15 -

VCC1D1C723A0A1A2A3A4A5A6A7PLAYLVccdVccaVssdVssaSP+SP-ANA in281612131415200.1uF21181719C6R2C3C20.1uFR11K100K100K1000100K4569102324272526S1S2RECLEDSPEAKER10KR3C1220uFC40.1uFMIC4.7uFC50.1uFR410KR6R7R8S3PLAYLANA outRECXCLKMIC REFMICAGCRECLED5.1KR91KISD1420R5470k 图1-8 ISD1420典型应用电路 下面介绍一下ISD1420的工作过程: 1 录制信息 将REC 电平变低,将从内部存储器空间的开始录制信息。如果REC 保持低电平,录音一直持续直到存储器空间录满,这时录音结束如果REC 变为高电平电路将自动进入掉电模式。 2 边缘启动放音 将PLAYE 变低将从存储器开始或选定的位置开始放音,PLAYE 的上升沿对操作没有影响。如果存储器内部全部录满信息,则可以播放内部全部的信息。如果到达结束标志EOM 电路将停止放音并自动进入掉电模式,一个新的PLAYE 下降沿将触发另外一个从起始地址的放音。 3 电平触发放音 将PLAYL 变低将从存储器开始或选定的位置开始放音,如果存储器内部全部录满信息则可以播放内部全部的信息,如果到达结束标志EOM 电路将停止放音,并23自动进入掉电模式。一个新的PLAYL 低电平将触发另外一个从起始地址的放音。 4注意这里的放音过程是在PLAYL保持低电平完成的,在放音过程中,如果PLAYL变为高电平,放音马上结束。

4 录音中断放音

REC 引起的录音操作优先与其它操作。任何时间REC 信号的变低,将引起一次新的录音操作地址从起始地址或指定的地址。不管当前是否进行其它操作。

5 录制信息只占用部分地址空间

- 16 -

如果录制的信息不能占满整个存储空间,可以在录制中将REC 变为高电平这将导致录音结束,并放置EOF 结束标志电路进入掉电模式。

6 播放录制的信息整个信息没占满整个空间

将PALYE 或PLAYL 变为低电平将启动一次放音当遇到结束标志EOF 时放音结束,电路进入掉电模式。

7 RECLED 操作

在录音操作时,RECLED 将输出低电平有效的信号可以驱动一个LED ,表明现在正在进行录音操作。如果整个存储器空间录满或REC 变为高电平结束录音,则RECLED将变为高电平。另外在放音过程中如果遇到一个EOF 标志RECLED 总是输出一个低电平脉冲。

1.5 解码芯片

本毕业设计采用CM8870 解码。集成了频带分离滤波器和数字解码器的双音多频接收器。CM8870 可以将接收到的DTMF 信号转换成8421 码。CM8870有DIP-18封装见图1-9。各引脚的定义参看表1-3。CM8870 输出的8421 码真值表见表1-4。典型连接电路如图1-10。

CM8870 的代替品有MT8870、HT9170 等。

表 1-3 引脚定义

管脚 1 2 3 4 5 6 7 8 9 10 11-14

名称 IN+ IN- GS Verf INH PWDN OSC1 OSC2 Vss Q1—Q4 功能 差分运算放大器同相输入端。 差分运算放大器反相输入端。 差放输出端,连接外部的反馈电阻。反馈电阻越大,负反馈越小,放大量越大。 基准电压输出。与IN+相连,提供VDD/2作为偏置电压。 得到高电平时,禁止检测音频码A,B,C 和D 。接地。 接地。 接晶振。 时钟脉冲(输出)。3.579545MHZ的晶振连接在引脚OSC1与OSC2之间接晶振 地,标准0伏 数据输出控制端。得到高电平时允许Q1-Q4输出。 三态数据(输出)。当TOE 得到高电平时,提供相应的代码- 17 -

给最后的有效的音频代码接收。当TOE得到低电平时,输出高阻抗。 15 StD 延时控制输出端。当MT8870 接收到有效的DTMF 信号时,该引脚输出高电平;接收的DTMF 信号消失后,该引脚输出低电平。该引脚输出的电平,可作为单片机的中断请求。 16 17 Est St/GT 初始控制输出端。(输出)。接收到有效的DTMF时,输出高电平。 控制输入端/时间监测输出端。当接收到有效的DTMF信号时,St的电平升高。若St的电平高于门限电压时,MT8870内部的8421码被更新,Std端输出由低电平变成高电平;若St的电平低于门限电压时,MT8870内部的8421码保持不变。 18 VDD typical--+5V电源

图1-9 CM8870管脚图

表1-4 8421码真值表

Flow 697 697 697 770 770 770 852 852

Fhigh 1209 1336 1477 1209 1336 1477 1209 1336 KEY 1 2 3 4 5 6 7 8 TOW H H H H H H H H Q4 0 0 0 0 0 0 0 1 Q3 0 0 0 1 1 1 1 0 Q2 0 1 1 0 0 1 1 0 Q1 1 0 1 0 1 0 1 0 - 18 -

852 941 941 941 697 770 852 941 - 1477 1209 1336 1477 1633 1633 1633 1633 - 9 0 . # A B C D ANY H H H H H H H H L 1 1 1 1 1 1 1 0 Z 0 0 0 1 1 1 1 0 Z 0 1 1 0 0 1 1 0 Z 1 0 1 0 1 0 1 0 Z

图 1-10 CM8870典型连接

注意:在这个连接电路中,电阻最大浮动±1%,电容的数值最大浮动±5%。

- 19 -

第2章 电路设计介绍 C 2.1 电源电路设计 电源电路主要用的两个主要器件LM317和LM7805。电路分整流---稳压---滤波三部分,如图2-1。输入的是交流15伏左右的电源。D8、D9、D10、D16构成了一个全波整流,C19和C20是滤波电容,将整流过来的馒头波变为平稳的波形,C20是个小电容来抵消C19大电容产生的电感作用。平稳的波形进入LM317经过计算可知输出的是12伏直流电。C23和C24同样是滤波电容。使输出的12伏电压更加平稳。输出的12伏电压一方面供继电器用,另一方面输入到LM7805,LM7805是一个输B出正5伏的专用芯片。输出同样有滤波电容C21和C22,得到正5伏电压供扳子上的芯片用。LED2是一个发光二极管,当有电源输入时,此发光二极管发光,相反没有电此灯熄灭。这就是板子的电源结构。 +12VD15+5VJ221D81D16VinU8LM317Vout31U7Vin7805Vout3GND交流15伏D10GNDR39240R381KD9C19C201000uF0.12C232C240.1C21C2210uF0.1LED2AR402.4K10uF 1图2-1 电源设计电路 23

2.2 铃流检测电路

铃流检测电路的作用就是检测电话线上的铃流信号,以便于为单片机提供电话铃响的次数。由于本文后面的论述要涉及到电话机和电话线的一些术语,因此很有必要介绍一。

铃流:简单的说,所谓铃流,就是电话机在铃响的时候电话线上的电流就是铃流。

- 20 -

待机状态:所谓待机状态,就是电话机的听筒没有从电话机底座上拿起来,也就是既没有打电话,而且电话机也没有响铃,此时电话机处于等待使用的状态,因此叫“待机状态”。

摘机和挂机:所谓摘机,就是将听筒从电话底座上拿起来。摘机后,电话机的叉簧接通,电话机主板接通线路上的48V 电源,线路上就有了电流通过;所谓挂机,就是将听筒放回到电话机的底座上,此时电话机的叉簧断开,线路上就没有了电流通过。挂机状态也叫待机状态,但是我们通常将听筒放回到底座上的瞬间叫做“挂机”,挂机以后的状态叫待机状态。相应的,拿起听筒的瞬间叫做摘机,摘机后或电话铃响时的状态叫占线状态。在待机状态下,线路上的48V 直流电压是由电话机房送来的,是供电话机线路板使用的工作电压。由于电话线是非常细的导线,电话线路的距离又很远,因此电话线的线路电阻通常都很大,从电话机房送出的48V 直流电压大部分都要降落在线路电阻上,只有少量的电压供给电话机线路板使用,因此实际上摘机后电话机两端的电压只有6—12V 左右。

铃流电压:电话机铃响时,是因为电话机房对电话机送来了高达100V左右的1交流电压,这个电压就是铃流电压,该电压只有在电话机铃响的时候才会存在,2摘机以后就没有了。铃流电压进入电话机后,直接通过电容耦合进入收铃电路,而没有经过叉簧,因此在没有摘机的情况下电话会响铃。 设计的流铃检测电路如图2-2。 铃流检测主要有C1、D1、R1、R2、G1组成,由于电容器C1不能通过直流电压,因D此在待机状态下收铃电路没有电流通过。当有人打来电话时,电话线路上就出现了100V的铃流电压,该铃流电压是交流电压,因此将通过C1、D1、G1内部的LED、R1 导通形成回路。G1是通用的光耦合器,型号为P521,其内部有一个发光二极管LED(左)和一个光敏三极管(右)组成,当光敏三极管接受LED 照射时,集电极和发射极立即导通,此时P3.5点电压降 为0V;当没有铃流信号 时,G1 内部的光敏三极管不导通,P3.5点电压为高电平VCC。 图2-2 流铃检测电路 C在交流电的两个半周中,其中有一个半周 经过二极管D1 导通,另一个半周通过G1内部的LED导通。由此可见,P3.5点的脉冲是随着铃 流信号的出现而出现的,因此只要检测到P3.5 点有低电平脉冲出现,就说明线路上有铃流信号了,而且P3.5 点在单位时间内出现的脉冲个数就代表了

- 21 - C10.22uF+5VD1R210k4148G1P3.5电话插座21R110k振铃时间的长短,因此通过累加P3.5点的脉冲个数就可以判断出振铃时间的长短和铃响次数的多少。A 点的电平状态连接到单片机89S51 的T1(计数器)口,即P3.5 端口,用来统计铃响的次数。另外图中还可以串联一个电阻(RZ),此电阻是一个脉冲高压吸收电阻,该电阻直接连接在电话线的入口处,平时该电阻是不导通的,阻值为无穷大,因此对电路没有任何影响,但是一旦线路上因雷电等因素出现瞬间的脉冲高压时,此时RZ立即导通,并出现永久性短路,将电话线路两端给短接起来,避免该电路板上的其他元件遭受雷击等高压脉冲影响,对电路板起到了很好的保护作用。因为老师那里没有此电阻,也没有买到,所以设计时没有安装此电阻。

12.3 模拟摘机挂机电路 2 如图2-3所示,摘机、挂机电路其实就是一个电子开关,它的作用是完成摘机、挂机的动作。电路板和电话线之间虽然是连接起来DD2D3R3100kR4D4D5R710k4.7kV25551R5350V1PNP的,但是中间还必须要有一个电子开关存在,平时这个开关应该处于断开的状态,以免造成电话线占线,当你打电话到家里来,希望控制家中的电器时,如果出现了若干次铃响而且没人接听,这时候就需要让电路板和电话线路接通,即完P1.4音频反馈线成摘机动作,也就是将电路板和电 图2-3 模拟摘机挂机电路 话线之间的开关打开,这样电路板 G1才能接收到线路上送来的各种控制指令,这个电子开关就是摘机挂机电路。摘机挂机电路位于试验板的最前端,是和电话线直接连接的。该电路由D2、D3、D4、D5、V1、V2等元件组成,图2-3 中的左边的两根线是和电话线连接的。D2、D3、D4、D5四个二极管组成的全波整流电路,其作用是将线路上不确定极性的电压转C换成确定的极性,也就是说,电话线的正负极是不确定的,因为电话线在接入电话机或者电路板的时候是不分正极和负极的,可以随便连接,但是到了电路板内部,就必须区分出来哪一个是正极、哪一个是负极,用全波整流电路即可将正负极给定下来,因为无论电话线是如何连接的,四个二极管出来以后,正极和负极总是固定的,因为和R3相连的一根线始终是正极,这样线路上48V的直流电压经二极管出来以后,其正负极就明确了。下面分析一下摘机、挂机电路的实现过程, - 22 - 即电路的工作原理。请看图2-3。右面两条线后面的电路暂且不用管它,首先看图中P1.4 这个点,该点是和单片机的P1.4 口相连接的。首先分析一下当P1.4 口的状态为低电平0 时的情况。当P1.4为低电平0时,P1.4相当于对地短路,这样三极管V2 由于没有基极偏置电压因此不能导通,即V2 的集电极没有电流通过,相当于开路,由于V2 的集电极是通过电阻R4和V1 基极连接的,当V2 集电极没有电流时,V1 的基极也就没有偏置电压和电流,因此V1 也不会导通,此时的V1 也处于开路状态。由以上分析可见:当单片机通过P1.4 口施加一个低电平信号0 时,开关管V1并不会导通,电话线路上也没有电流通过,相当于电话机的叉簧断开。接下来再分析分析一下当P1.4 口的状态为高电平1 时的情况,和上面的情况正好相反,当P1.4 为高电平1 时,P1.4 点有+5V 的高电平直流电压,该电压就是三极管V2的基极偏置电压,由于有了基极偏置电压,因此V2 导通了,V2 的集电极也有了电流通过,由于V2 的集电极是通过电阻R4 和V1 的基极连接的,当V2 集电极有电流时,V1 的基极也就有了偏置电流和电压,因此V1也就导通了,此时从四个二极管出来的正电压将通过V1的发射极和集电极后,再经过R5形成导通回路,并且将线路上的信号在R5两端产生电压降,此时R5相当于电话线路的负载电阻。由以上分析可见:当单片机通过P1.4口施加一个高电平信号1 时,开关管V1导通,试验板接通线路上的遥控信号,相当于电话机的叉簧接通,从而实现自动摘机。平时P1.4 为低电平0,因此V1 断开,相当于电路板与电话线之间断开了,起到了挂机的效果。以上的论述可以简单的归结为:当单片机P1.4口为高电平时,V1导通;当单片机的P1.4口为低电平0 时,V1 不导通,因此V1 就好像一个受P1.4 口控制的开关一样。实际上V1 就是一个电子开关,该开关的导通与否受到单片机P1.4 口的控制。摘机挂机电路是可以用继电器来完成的,如果用继电器设计的话电路要简单一些,发现继电器也有一些弱点,比如耗电大,5V的继电器吸合电流高达30多毫安,是89S51静态电流的近3倍,体积和重量也比较大,另外继电器也容易产生火花干扰,为解决这些问题。后来晶体管摘机、挂机电路了。更换后效果很好。

2.4 双音频解码电路

在讲述解码电路以前,首先要知道“双音频”的概念。所谓“双音频制式”,就是拨电话的时候,拨每一个号码,发出去的都是由两个不同频率的音频信号组合起来的双音频信号。比如拨0 的时候,发出去的两个音频信号分别是941HZ和1336HZ,拨9 的时候发出去的两个音频信号分别是952HZ 和1477HZ 等等(这些在上一章已经讲述过了)。我们用电话进行拨号时都能从听筒中听到一种按键的声音,这种声音其实就是由两个不同的频率组合成的复合音。每个号码都是由两

- 23 -

个音频信号组合起来的,因此叫“双音频”。

拨号的时候,需要将每一个号码都转换成一对双音频信号,这种转换就叫做编码,解码就是将接收到的双音频信号重新还原成数据信号。编码和解码都有专用的芯片,编、解码芯片的种类和型号很多,在电路板中由于只接收,不发送,因此只使用了一片供接收用的解码芯片,我选用的是CM8870型解码芯片。

根据上一章对CM8870芯片的讲述,搭建了下面的解码电路:如图2-5。 在图2-5中,双音频信号输入点与图2.3中三极管V1 集电极相连接,当V1 导23通时,从电话线路上送来的双音频信号音经过V1 后进入图2-5 的输入点,经过CM8870内部放大处理以后,从数据输出端Q1、Q2、Q3、Q4 输出解码后的状态数据。该数据输出端与单片机的P1.0、P1.1、P1.2、P1.3分别相连,从P1.0——P1.3口进入单片机进行数据采集、判断和处理。另外,从CM8870 的第15 脚出来的状态信号进入单片机的P1.5 端口,通知单片机读取数据。如果CM8870 接收到的是有效的DTMF 信号,便解调出对应的8421码并将该编码送 图2-5 解码电路 入锁存器锁存。当输出控制端 TOE 得到高电平时,被锁存的8421 码在Q1~Q4 端输出。同时Est 端变成高电平,经CM8870内部的积分电路使控制输入端st 电平升高,若ST端电平低于门限电平时CM8870 内部的8421 码保持不变,std 端输出低电平;若ST 端电平高于门限电平时,CM8870 内部的8421码被更新,std 端输出高电平;接收的DTMF 信号消失后,std端输出低电平(这些上章有所介绍)。 2.5 单片机AT89S51连接电路 单片机89S51 电路大家应该都不陌生,在此只作简单介绍,电路图如图2-6 所示:图2-6 中,第18、19 脚接12MHz石英晶体,在晶体两端各接一个30PF 的电容到地,接电容的目的有三个:一是加快上电后的起振速度,二是保证起振后能够持续平稳的振荡,不至于出现停振,三是可以通过改变两个电容的容量,微调振荡频率。第9 脚为复位端,在该脚接一个10K的电阻R12到地,以保证该脚在正 - 24 - P1.5Y13.58MC2+5VC30.1R8100kR9100k123456789ic1CM8870IN+VDDIN-ST/gtGSestVREFstdINHQ4PDWNQ3osc1osc2Q2Q1181716151413121110R10300k0.1输入P1.3P1.2P1.1P1.0VSSTOE常工作时为低电平0,同时,为了在加电时给该脚一个高电平的复位脉冲,因此用一个10uF的电解电容C4连接到电源Vcc,利用电容两端的电压不能突变的特性,加电后给第9脚施加一个短暂的高电平脉冲,该脉冲的宽度与电阻R12 的阻值、C4 的容量都有关,电阻R12越大,电容C4越大,加电后第9 脚的高电平脉冲就越宽;相反的,如果R12越小,电容C4越小,加电后9 脚的高电平脉冲宽度也就越窄。一般来说,当9脚的下拉电阻为10K,电容C4的容量不小于10uF 时,复位脉冲的宽度即可满足要求。另外,在电容C4 两端还接有一个手动复位按钮AN1,为了避免按压按钮时电容C4两端的电压通过按纽接点瞬间放电造成对按钮接点的大电流冲击,为此在按钮支路中串入了一个100欧姆的小电阻R48,这样电容通过R48 放电时,就不会出现瞬间的大电流放电脉冲,因此可有效的避免按钮接点氧化和接触不良的现象。单片机的第31 脚和电源Vcc连接,第40 脚接电源Vcc,第20 脚接地即可。单片机使用不到的端口悬空即可。

P1.0、P1.1、P1.2、P1.3四个口线接到CM8870的四个数据口上。 P3.0和P3.1口是为显示输入输出口。

P3.5为计数器1的计数输入端,与光电耦合器相连。

3P0.0、P0.1、P0.2、P0.3口作为数据输出口,根据4P0口的结构,外边要接上拉电阻才能正常工作。着四个口接到ISD1420的地线上,具体的连接方式看完整的原理图。 +5Vic2128870数据端P1.4P1.534567+5VS1C4R4810089P3.010P3.111121314151630PC512MC630PY217181920P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7restP3.0/RxDP3.1/TxDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1VSS89S51VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VPPALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0R24R21R22R2310k4039383736353433323130292827262524232221+5V10uFR12P2.7P2.6P2.5P2.4R47P2.0P2.1510C250.1铃流计数10k信号反馈线 图2-6 单片机连接 - 25 -

P2.7、P2.6、P2.5、P2.4各接一个按键,按键决定了两个开关的四种状态。 P2.0、P2.1控制两个继电器,它们的电平状态,决定了开关是闭合还是打开。 P2.2为单片机发出的信号反馈到听筒的输出端。 2.6 语音放大及监听电路 2音频放大电路的作用是放大语音芯片输出的语音信号。由集成块ic4完成,ic4为8脚封装LM386 功放芯片,该芯片使用非常简单,只需要按照如图所示的电路连接即可,下面对LM386 功放电路予以简单介绍。电ISD1420第十四脚(SP+)C140.1R3310k1234ic4GAIN-IN put+IN putGNDR34LM3861GAINBYPASSVsVoutC1687653+5VC15J312220uFR35100R36510扬声器0.1C17语音反馈0.1路图如图2-7所示。从 图2-7 音频放大电路 语音芯片ISD1420 输 出端14脚输出的语音信号经C14送给音量调整电位器R33进行音量调整,从R33 的中心抽头提取出音量调整以后的声音信号送给ic4 的第3 脚,从3 脚进入ic4 进行功率放大,经ic4 放大以后从第5 脚输出,从5 脚输出的信号又分为3 个支路:第一个支路经C15耦合给外接扬声器,当扬声器不使用时,由R35充当功放负载;第二路经C16和R34入地,由于C16 的容量和R34的阻值选的都很小,因此可以滤除掉叠加在语音信号中的高频哨叫声,而对频率相对较低的话音信号衰减很弱,起到了静噪效果;第三路经C17和R36以后耦合到图2-3 中三极管V1的集电极,以便于在V1导通时将语音信号耦合到电话线路上,以便让操作者听到提示音。 简单介绍一下提高CM8870的Std端的输出电平电路如图2-8: 图2-8 提高电压 - 26 - R1110kR101kQ3s9014P1.5Std+5V在这里R10接的是CM8870的Std端,当Std端来一个

正脉冲经R10使Q3的Ube电压达到导通电压0.7V三极管导通当三极管导通时Uce电压非常小,5V的电压几乎全部加到单片机的P1.5端,这样就有了当Std

端有正脉冲时单片机的P1.5断采集到几乎5V的电压。

电路结构简单介绍到这里,下面进入软件设计的介绍。

- 27 -

第3章 程序设计

对于一个完整的电路板来说,硬件可以说是它的“肉体”,而程序可以说是它的灵魂。可见硬件和软件是一个有机整体,谁也不能离开谁。只有硬件没有软件的支持,它什么也完成不了。只有软件没有硬件的支持,无论你程序编写的多么完美也是等于零。可见只有硬件是不行的。

下面小节介绍程序的设计。

3.1 程序流程图

在编写程序前要先画出程序流程图,它能给出你方向。程序流程图是解题步骤及其算法进一步具体化的重要环节,是程序设计的重要依据,它直观清晰地体现了程序的设计思路。

3.1.1 主程序流程图(图3-1)

开始特殊寄存器初始化管脚初始化单元初始化计数器初始化循环调显示查询管脚

图3-1 主程序流程图

- 28 -

主程序流程图说明:主程序完成了重要数值的初始化。和一些重要单元的赋初

值。这里有必要说明一下本程序所用到的单元见表3-1。真正属于用户可以自由使用的单元有80B。从30H到7FH。在这容易出现错误,在一次课程设计中我就没有把这点弄明白,在程序中竟用到了80H单元,侥幸的是在编写的初期被一位同学及时地发了使我早一点改正错误。

赋初值的寄存器有:模式控制寄存器TMOD赋值以后T1为计数模式2,T0为定

时模式1。中断循序控制寄存器IE,赋值后允许中断,允许串行中断,禁止外部中断,允许定时/计数中断。还要把定时/计数器赋初值。打开计数器T1。

表3-1 单元分配

存放用途 存放单元 35H 45H 4BH 55H 4FH 36H 37H 34H 44H 4AH 54H 4EH 38H 33H 43H 49H 53H 32H 42H 48H 52H 31H 41H 47H 51H 30H 40H 46H 50H 初始密码 验证密码/修改时第一次新密码 修改时第二次新密码 时间缓冲 定时存放 定时溢出次数 纪录单元 3.1.2

计数器T1中断服务程序

4DH 4CH 计数器T1中断服务程序在这次设计中至关重要,所有的功能都在中断中实现本设计的功能有:模拟摘机,模拟挂机,控制两个继电器开关,可以修改密码,

还可以定时。这些功能都在计数器T1的中断中得以实现。如图3-2。

- 29 -

开始保护现场模拟摘机N密码验证是否三次Y发出功能提示音是否为1Y打开开关1是否为2N是否为3N是否为4N是否为5N是否为6N其他数字N是否为7Y关闭开关1Y打开开关2Y关闭开关21Y修改密码Y输入定时值YY恢复现场,模拟挂机,打开计数器

图3-2 T1中断服务程序

- 30 -

3.1.3 定时器0中断服务程序

此中断服务程序用来计时。当开关1开启时,就开始计时,直到开关1关闭 计时才会停止。就是由于它是用来计时的,所以在小时上用的不是24进制,它可以超过24时,走到99时。

在中断中会有一次判断定时是否到,当定时到了。会自动关闭开关1。完成定时功能。 如图3-3。

开始保护现场再次赋定时初值N是否到一秒Y秒加一N是否60秒Y分钟加一Y定时是否到NN否到到60分Y小时加一关闭开关1停止走时恢复现场跳出中断图3-3 T0中断服务程序

- 31 -

第4章 调试中的问题及解决办法

可以说调试是非常重要的事情。在做产品之前首先进行理论分析,在理论上首先应该没有问题,但是理论能够完全分析的符合实际也是非常难的事。就如我,我已经分析出理论是没问题的,但是实际试验时就问题百出了。不能盲目去做板子,那样会浪费材料的,就如我这次的设计整整让我做了三块板子,才做到现在的成果。对于我来说可谓不易啊。

4.1 硬件的调试

在硬件调试中我遇到了很多问题:

第一、第一次我把原理图画出来,并认为他已经完美了没有任何问题了,就 开始做板子结果问题多多。发现电源不通。

经过检查发现LM317的管脚弄错了,我把它认为象LM7805一样的管脚功能,结果就可想而知了,根本没有电压输出的。通过上网查找LM317的资料,终于找到的他的真正管脚功能,这次的设计还真的要感谢网络,器件的资料几乎都是在网络上找到的。找到了LM317的真正管脚功能之后,我把第一次做的板子上错误的敷铜划断,用导线将其正确的连接,结果才算电源不分成功了,用万用表测量各个部分的电压也正常了。

下一步将测试光电耦合器部分的计数功能。当把电话线插上,拨打寝室电话时发现,根本就没有信号输出,经过仔细的察看,查阅多方资料,发现光电耦合器的管脚排列与我画的PCB管脚排列是不同的,错误在于光电耦合器的集电极与发射极的管脚搞错了,解决的方法与上面解决的方法相同,结果单片机可以完成了计数功能。耦合器可以正常的工作。值得注意的一点还有,光电耦合器上串接的电阻要适中,在试验中我用的电阻有点小,结果烧掉一个耦合器。当做到这个程度的时候我有认为应该没有问题了,就做了第二块板子。还有一点值的说一下的就是,在调试的时候用不到的地方最好不要先焊上。在我的设计中用到了数码管第一次做板子时我就把它们焊上了,结果没有用到就发现有错误,这就需要将它们拆下,拆下的时候就麻烦了,他们的管脚太多。这样做设计的时候就需要进行一部分一部分的调试很重要。

第二,第二次把板子焊好,再次检查板子,在电源部分和耦合器部分已经没有问题了,把程序写入单片机再次进行试验,果然单片机机可以正常计数了,并且能够完成正常的模拟摘机。进行下一步的测试,通过手机按键来控制单片机。

- 32 -

结果问题有出现了,单片机识别不了按键。首先我考虑是不是CM8870的连接有问题,但是从下载的CM8870的资料来看并没有接错,就想到了是不是程序有问题啊,就开始调试程序,调来调去问题还是照旧,没有任何变化,使我很惆怅,结果再反过来看是不是CM8870不能正常工作,试验开始了把电话线插到设计板上用手机拨打电话,模拟摘机后,按手机上的按键,这时用万用表测量CM8870的各个管脚输出的电压,发现它的译码是正确的,说明CM8870的工作是正常的。比如,按下2键CM8770可以译出正常的8421码0010。再按下另一键测量都是正常的。再测量CM8870的STD端是不是能够正常输出高电平,测量发现,STD端输出的是一个正脉冲,但是发现它的电平很低,单片机不能把它看成高电平的。原因终于算是找到了,这样我就把电路改进了一下,用一个三极管用共集电极的连接方法来提高当有按键按下单片机管脚P1.5的电平,将电路改进,用导线连接三极管,焊接到电路中,再次试验,终于发现,单片机能够正常识别按键了。再者,解码芯片周围的电阻和电容与典型应用上的数值应该差别非常小,不然会引起解码不正常,甚至不能解码。这些都应该注意的。把PCB图改正后就做了第三块板子。

4.2 软件的调试

软件的调试之前一定要保证硬件是完好的,这样就认真调试程序,不用操心硬件的问题,不能程序调试很长时间了,结果发现硬件有问题,那样就太浪费时间了,我在调试程序时并没有用我自己做的板子,而是用我们在学习期间老师发的实验板来调试程序的。

第一、软件的调试是一个复杂的过程,调试时首先发现的问题是发现,程序不能正常计数,因为以前用的多是定时计数器的定时功能很少用到它的计数功能,这次设计中用到了计数器的计数功能,所以出现了一些问题。设置中断允许控制寄存器IE时,设置错误不能正确计数,当时我做试验时也用了我做的板子,使我不知道是板子有问题还是程序的问题,让我很长时间都怀疑是板子的问题,浪费了很长时间,最后我才改用了老师发的板子,我相信那个板子是好的,而且确实那个板子是好的。最后我用发的班子上的按键完成了计数器的计数功能,当确认单片机确实可以计数时,在把单片机插到做的板子上,来试做的板子能否正确计数。其实调试软件和硬件的调试的是一起进行的。

第二、当由单片机识别密码的时候,我也遇到了问题,就是由手机输入密码的时候,每输入一个按键单片机就认为输入密码错误:

IN:MOV R0,#40H ;存放密码单元40H到45H。 MOV R2,#06H ;读入次数。

- 33 -

TO2:JNB P1.5,TO2 ;等待按键按下。 MOV A,P1 ;读入P1口的低四位。 ANL A,#0FH MOV @R0,A INC R0 DJNZ R2,TO2

我本来认为当有用信号输入时编码芯片STD端会输出一个很短的脉冲,单

片机读数就读一次。仔细一想原来不是这样的,每按下一次按键单片机就认为输入了六次。六次读入的都是一个数与我设置的初始密码不一样,就认为密码输入错误。我仔细想应该让它一个一个数字往里读,阻止它一读六次。将程序修改一下并每按一次并发出一次鸣笛,提示用户一次读入完毕:

IN:MOV R0,#40H MOV R2,#06H TO2:JNB P1.5,TO2 MOV A,P1 ANL A,#0FH MOV @R0,A INC R0

NN:JB P1.5,NN ;程序执行到这阻止单片机继续读,等待这次有效

信号的消失。

LCALL RING1 ;发出一次鸣笛,提示用户可以输入下一个数字了。 DJNZ R2,TO2 护的声音,更好控制。

第三、定时的时候也遇到了问题,当用手机给里输入定时数字时我就是定时就是不成功,起初我认为定时的数字输入不进去,仔细看程序也没有看出程序有问题,并且其他的地方都是用这样的读数方法 ,它们可以成功读入。我就用软件定时,结果定时成功了,说明定时的程序没有问题,就是单片机往里读数时错误。我想读数怎么会错,不可能的。为了看到效果早一点我定时就是三四分钟。比如定时五分钟,输入0、0、0、5。仔细想程序定时成功,而用手机定时就不成功。想了很久终于大悟过来了,手机输入的零不是十六进制的零,而是十六进制的十,原来的定时程序是这样:

MOV R2,#04H ;四位包括时两位 分两位。

MOV R1,#4FH ;定时用到的单元的最高位 SS:JNB P1.5,SS

- 34 -

程序经过这样的修改,问题就解决了,可以一个一个的输入,并且有提示拥

MOV A,P1

ANL A,#0FH ;这里无论是几都往里读。错误所在。

MOV @R1,A

DEC R1 HHH:JB P1.5,HHH LCALL RING1 DJNZ R2,SS

经过修改程序如下,问题就解决了:

MOV R2,#04H ;四位包括时 分

MOV R1,#4FH SS:JNB P1.5,SS MOV A,P1 ANL A,#0FH

MOV 38H,A ;首先把数字存放起来,等待判读。 XRL A,#0AH ;判断是不是按键上的零,即0AH.。 JNZ SSS ;如果不是就跳转到SSS。

MOV A,#00H ;如果是按键上的零(0AH),就把零给A。 SJMP HH ;跳转到HH。 SSS:MOV A,38H HH:MOV @R1,A DEC R1 HHH:JB P1.5,HHH LCALL RING1 DJNZ R2,SS

- 35 -

第5章 结束语/展望

这次的毕业设计,使我感受甚多。毕业设计可以说是在学校做的最后一件比

较重大事情了。同样也对自己的意义重大,通过本次设计我有了一下几点感受:

第一、认真对待毕业设计和毕业论文。毕业设计是总结检查学生在校期间的学习成果,作为评定毕业成绩的重要依据,同时也使我们巩固、扩大、加深已有知识,培养综合运用已知知识独立解决问题的能力。在毕业开始的初期老师也说了毕业设计的重要意义。老师说,以前你们学的知识都是在打基础,这次的设计才是你知识的飞跃,谁是鹰谁是鸡在这次设计中可以一目了然。毕业设计和毕业论文是大学阶段全部学习成果的总结,是走出校门前的总演习.认真对待毕业设计和毕业论文,必定能从中获益使其在日益激烈的竞争中更易脱颖而出。

第二、学会学习、学以致用。虽然毕业设计和毕业论文是建立在已学课程和已有知识之上,但作为总结性的作业就要求能针对课题,综合运用专业有关的理论和技术解决实际问题,故会遇到和用上不少的未知和未学知识。这时,就要发挥主观能动性和树立学会学习的态度:主动学习相关的新知识,把学到的知识用到设计中论文中边做边学,学以致用。比如我在这次的设计中我用到了一个双音频解码芯片CM8870,在做这次设计之前,可以说对这个芯片一无所知,这就要求你必须去认识它,了解它,达到应用它的程度。

第三、加强检索资料和阅读翻译外文资料的能力。不具备相关基础,没有相关元件资料和不知道元件实际情况,这都需要通过网络,图书馆等检索资料。在设计中我可以说下载了很多芯片资料,但是大部分都是英文的,对于自己以前熟悉的芯片那还好说,但是遇到自己不熟悉的芯片就麻烦了,比如设计中用到的ISD1420和CM8870这两个是比较陌生的,我的英语能力不是太强所以只能认识到马马虎虎的程度。 就因为这些资料在网上还是书上的原始资料都是英语的,所以把英语学习好是非常重要的。

第四、元件来源。在做设计之前考虑考虑元件的供应也是很有必要的。实际用到的元件,可能课堂上课本上经常出现。但本地不一定有卖的,不要等什么都设计好了,等去找元件时却四处找不到。所以保障元件货源是关键,不要描绘好宏伟的蓝图才发现千金难求一元件!

结论: 用电话控制开关的关键是DTMF 解码。利用固定电话这种通讯方式具有不占用无线电资源,网络功能完善和覆盖范围广,入网初期投资低等优势来实现控制甚至远程控制,不但在理论上行得通,而且在实际生活和工作中也是有很大的需求的。

- 36 -

致 谢

感谢我的指导老师董蕴华,她严谨细致、一丝不苟。在设计中得到了她的悉心指导,为我解决了很多我解决不了的问题,解除了我的困难使我顺利的完成毕业设计,在这里我表示由心的感谢。

本设计从得到题目,到了解题目,制作思路的明确,还有一步一步的设计。也都得到了我的老师杨其峰热心指导,在这里我表示衷心的感谢。

感谢我的室友们,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。给了我一个安静的学习环境,也给了我很多帮助。从开始进入课题到论文的顺利完成,还有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

- 37 -

参考文献

[1] 梅丽凤 王艳秋等主编《单片机原理及接口技术》清华大学出版社,2004 [2] 陈颖主编《电子材料与元器件》电子工业出版社,2004 [3] 廖芳主编《电子产品生产工艺与管理》电子工业出版社,2006 [4] 傅扬烈主编《单片机原理与应用教程》电子工业出版社 [5] 朱宇光主编《单片机应用新技术教程》电子工业出版社 [6] 郝波主编《数字电路基础》电子工业出版社

[7] 王福瑞等主编《单片机微机测控系统设计》 北京航空航天大学出版社 [8] 李华主编《MCS-51系列单片机实用接口技术》北京航空航天大学出版社 [9] 李朝青主编《单片机学习指导》北京航空航天大学出版社 [10] 阎石主编《数字电子技术基础》高等教育出版社

- 38 -

+5V+5VC30.1123456P1.4R12C10.22uFD110k4148G1+5VR1010kR2+5V100k3.58MVSSTOE5551osc2Q1891110+5VR310kV2osc1Q2Y1712PDWNQ3INH13Q4VREFstd14300kP1.4P1.5GS15estIN-16R18ST/gtIN+17VDD1812345678S1C159P3.010P3.1111210uFR410kC21131415161730PQ35551C2012M18Y2192030PP1.5R1110kP2.7P2.6P2.5P2.4P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7restP3.0/RxDP3.1/TxDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1VSS89S51S4S5S6S7R14100kR15100kic1CM88700.1ic2VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VPPALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0R21R19R5R2010k4039383736353433323130292827262524232221+5V+5VV1PNPR13D21座插话电D2110kD3D54.7kR1350Rz1RES2R16R17100kD4C28765R24C16S8R61kR25100010kR71k10kLED112341234567891011P2.7P2.6P2.5P2.4C8P2.0P2.1C90.1R2610k12340.1121314ic3ISD1420A0VccD28A1REC27S2 123456- 39 - D13D14D15DA2XCLK26A3RECLED25C18A4PLAYE24S3A5PLAYLNCNC2322220uFNCANA OUT21R225.1kR8R9A6A7ANA INAGC204.7uFC1710k10kNCMIC REF1918C40.1R23C5470kC7VssDMIC17C6VssAVccA160.10.1SP+SP-150.1mic1ic4GAIN-IN putGAINBYPASS8+5V7附录一 原理图 +IN putVs6GNDVout5C19J1CR27LM386220uFR291C112100C1器声扬0.1C10R280.11流交21+12V+5V510D16+12V888888cdpcdp+5Vgaabfbvccgcdecddpedpfgaabfbvccgcdecddpedpfgaabfbvccgcdecddpedpf2kR331KR321KQ1PNPfdp2KQ45551211010101010101器电用R341K1K1311105431213111054312131110543121311105431213111054312131110543122器电用21764219576421957642195764219576421956666667642195BPNPR35Q55551gabcdegabcdefdpP2.1R30P2.0R31Q2gaabfbvccgcdecddpedpfbvccbvccDPYDPYffeeD6K1+5VD7K2B1B2B3B4B5B6DPYDPYDPYDPYaaggddBLCKLCKLCKLCKLCKLCK+12VD12+5VQhQfQeQcQbQaQgQdU1QhQfQeQcQbQaQgQdQhQfQeQcQbQaQgQdQhQfQeQcQbQaQgQdQhQfQeQcQbQaQgQdBABABABABA821821821821821821BAQhQfQeQcQbQaQgQdU2U3U4U5U6P3.0J22115伏流交D8D11D91VinU7LM317Vout31U8Vin7805Vout3P3.1GNDGNDR38240D10C22C121000uF0.110uFR372.4KR361K22C23C130.1C24C1410uF0.1LED2AATitleSizeNumberRevision BDate:17-Jun-2007Sheet of

File:1234.ddb关开控遥话\\电业D:\\Protel 99se 作Drawn By:56

附录二 PCB图

- 40 -

本文来源:https://www.bwwdw.com/article/w1n6.html

Top