电话远程智能遥控系统设计_第1页
电话远程智能遥控系统设计_第2页
电话远程智能遥控系统设计_第3页
电话远程智能遥控系统设计_第4页
电话远程智能遥控系统设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计毕业论文 题目:电话远程智能遥控系统设计 摘要本文主要介绍了一种以单片机AT89C51和双音多频解码集成电路MT8870为核心,通过电话线路遥控的远程多路智能控制器。该系统实用、功能灵活多样,可以对被遥控对象的状态进行查询以及控制,可以广泛的应用于家用电器或者其它场所的各种控制设备。关键词:电话遥控、双音频编解码、远程多路智能控制器AbstractThis paper presents a AT89C51 to SCM and DTMF decoding IC MT8870 as the core, through the telephone lines of long-range m

2、ulti-channel remote intelligent controller. The system practical, flexible and diverse functions, remote control can be targeted for state control and can be widely used in household appliances or other places of control equipment. Key words: telephone remote control, dual-audio codecs, long-range m

3、ulti-channel intelligent controller 目 录第一章 绪论1第二章 总体设计2第三章 系统设计可行性分析33.1 总体设计分析33.2 硬件模块63.2.1 自动摘挂机63.2.2 振铃音的检测63.2.3 控制电器63.2.4 双音频解码73.3 软件模块73.3.1 信号音计数73.3.2 密码检测73.3.3 信号分析处理7第四章 硬件单元电路设计84.1 振铃检测电路84.2 模拟摘挂机电路94.3 双音频解码104.4 信号音提示电路114.5 电器控制电路13第五章 软件设计145.1 信号音发声部分145.2 密码检测部分185.3 密码修改部分1

4、95.4 控制电器部分215.5 振铃计数部分23第六章 系统调试236.1 整体调试236.2 硬件单元电路246.2.1 5V稳压电源246.2.2 振铃音检测246.2.3 模拟摘挂机256.2.4 控制电器266.2.5 双音频检测276.3 软件程序调试276.3.1 软件系统设置276.3.2 提示音信号286.3.3 密码检测306.4 联机在线调试32第七章 系统使用说明33结 论35参考文献36致 谢37第一章 绪论21世纪是信息时代,各种电信新技术推动了人类文明的进步。自从1876年,Alexander Graham Bell(贝尔)发明电话以来,世界各国的电话网络发展非常

5、迅速。 进十年来,中国的固定电话业务呈现出举世瞩目的快速增长。1997年8月局用电话交换机总容量突破1亿门,网络规模跃居世界第二位,1999年7月固定电话用户总数突破1亿户。 现代电话网络是由交换机和电话传输线共同组成,它的性能已经有了很大的进展,而且可靠性非常高。 遥控技术是通过一定的手段对被控物体实施一定距离的控制,常用的方式有无线电遥控、有线遥控、红外线和超声波遥控等。无线电遥控既是利用无线电信号对被控物体实施远距离控制。无线电遥控不可避免的须占用一定的无线电频率资源,造成电磁污染;常规的有线遥控需进行专门的布线,增加了投入;而红外线、超声波遥控则受距离所限。现有的遥控方式中,还有载波通

6、信控制手段和基于无线寻呼的遥控方式。载波方式即通过电力线传递信息,该方式只能局限于同一变电所、同一变压器所辖范围内。因此也存在距离问题,应用范围有限。基于无线寻呼的遥控方式利用了现有的寻呼频率资源,不需占用额外的频谱。而且,随着寻呼网的全国联网,其遥控的距离基本不受限制。但该方式的受控方动作滞后于控制方的操作,不具备实时性,而且不具备很高的可靠性。 电话遥控作为一较新的课题与常规的遥控方式相比,显示出一定的优越性,不需进行专门的布线,不占用无线电频率资源,避免了电磁污染。同时,由于电话线路各地联网,可以充分利用现有的电话网,因此遥控距离可跨省市,甚至跨越国家。基于电话遥控的诸多优点,本文对其进

7、行更为详细的讲解及介绍,并设计出了实用的成品。第二章 总体设计电话智能遥控器由单片机构成主控部分,进行主要的信息处理,接收外部操作指令形成各种控制信号,并完成对于各种信息的记录;接口电路提供单片机与电话外线的接口。其中包括铃流检测、摘挂机控制、忙音检测、双音频DTMF识别,及语音提示电路。系统原理框图如图2.1所示 图2.1系统原理框图 语音提示电路是该作品重要组成部分。为了降低本装置的造价,作品的提示音使用程序产生。语音提示电路受单片机的控制产生相应的提示音提示,并通过反馈电路反馈至电话外线。从而使操作者对电器的操作达到交互式,并能即时了解有关的信息;显示电路用于状态设置时的显示;控制部分即

8、受控的终端,如前所述,可通过接驳不同的终端并对电话进行必要的改动从而达到功能的扩展。这一点,可使产品达到系列化。 本系统的每一个接口电路(振铃检测、模拟摘挂机、语音反馈、双音频解码等)都已经经过实际的交换机在线实验,具有很强的实用性。本系统使用最简单的电路、最便宜的电路芯片实现了完善的功能。本系统还有许多可以添加的功能,具有很强的市场前景。 本装置并联于电话机的两端,不会影响到电话机的正常使用。用户通过异地的电话机拨通本装置所连接外线的电话号码,通过市局交换机向电话机发出振铃信号。本装置如果检测到振铃五次,即五次响铃后无人接,自动摘机,进入密码检测,输入正确后选择被控制电器,然后输入开或关进行

9、遥控电器,完成后返回。第三章 系统设计可行性分析3.1 总体设计分析根据电话远程智能遥控系统的具体设计要求: 通过电话网对异地的电器实现控制(开/关); 控制器可以实现自动模拟摘挂机; 控制器设置密码校验; 我设计此系统必须具有以下单元功能模块: 铃音检测、计数; 自动摘挂机; 密码校验; 在线修改密码; 双音频信号解码; 输入信息分析; 控制电器开关; 电器状态查询; 忙音检测;根据电话机和交换机发出的不同信号音以及电话线各种状态的不同要求,我结合实际情况对具体的单元功能模块作出软件或硬件上的不同分工,具体如下。理论上交换机所发出的各种信号音都可以通过软件编程而识别,即通过单片机发出的脉冲信

10、号来检测信号音单位时间内的脉冲个数计算出其频率,从而完成信号音识别。但是从系统的可靠性和程序的结构设计上分析,我选择了硬件来解决振铃音检测、忙音检测、双音频信号解码等功能模块。自动摘挂机和电器的控制必须使用具体硬件电路来实现。振铃音计数、忙音计数、密码校验、在线修改密码、输入信息分析、电器状态查询等功能模块使用软件编程方式要比硬件电路简单的多,实现也很容易。综上所述,我设计信号音检测、自动摘挂机、控制电器、双音频解码等功能模块使用硬件电路实现。而信号音计数、密码校验、在线修改密码、信息分析、电器状态查询等功能模块用软件编程完成。 下面就硬件以及软件实现的电路分别进行具体分析,电路图如下图3-1

11、:图3-1总原理电路图3.2 硬件模块本作品使用了大量的硬件电路完成部分功能模块,其目的就是充分利用硬件电路的可靠性、稳定性,使整体电路达到比较高的稳定性。3.2.1 自动摘挂机因为程控电话交换机对电话摘机的响应是电话线回路电流突然变大为约30mA的电流,交换机检测到回路电流变大就认为电话机已经摘机。自动摘挂机电路可以通过单片机控制一个继电器的开关,继电器的控制端连接一个大约300的电阻接入电话线两端,从而完成模拟摘挂机。3.2.2 振铃音的检测当用户被呼叫时,电话交换机发来铃流信号。振铃为253伏的正弦波,谐铃失真不大于10%,电压有效值9015V。振铃以5秒为周期,即1秒送,4秒断。根据振

12、铃信号电压比较高的特点,可以先使用高压稳压二极管进行降压,然后输入至光电耦合器。经过光耦的隔离转换,从光电耦合器输出的波形是时通时断的正弦波,经过RC回路进行滤波输出很标准的方波。方波信号就可以直接输出至单片机的中断计数器输入口,完成整个振铃音检测和计数的过程。3.2.3 控制电器此部分比较简单,通过单片机控制多路继电器的开关即可,常用的电路已经很成熟,在此就不累述了。3.2.4 双音频解码此部分是整个系统的关键,它的工作情况直接决定了系统的可靠性。经过翻阅大量的文献资料,我发现使用电话专用的双音频编解码芯片进行输入双音频信号的解码,是比较常用的一种方法。使用集成电路不但外围电路简单,而且可靠

13、性强。经过专用集成电路的解码,信号转换成为不同的码制信号,可以直接被单片机读取。一般常用的电话双音频编解码集成电路有8870、8880、8888等,经过反复论证比较,我决定使用双音频解码集成片MT8870来完成此功能模块。3.3 软件模块经过比较,我决定使用AT89C51作为控制的单片机芯片。3.3.1 信号音计数本单元可以使用AT89C51的两个计数器的外部中断方式来实现对不同信号音的计数。3.3.2 密码检测本单元可以在系统初始化的时候,在单片机内部的存储器的内部开辟一块空间放置密码。当用户输入密码的时候,单片机把输入的密码写入另外的一块空间,然后利用减法运算比较两者是否相等。这样就可以实

14、现密码检测的功能。3.3.3 信号分析处理 本单元可以利用查表方式,也可以用简单的语句,稍微长一点的语句实现,例如CASE语句等。经过翻阅大量的技术资料,对具体要求实现的功能进行完整的系统分析,我认为我的电话遥控系统设计基本符合实际情况,可以完成设计任务所要求实现的基本功能。第四章 硬件单元电路设计4.1 振铃检测电路在电话线路未来铃流前,电话线路由电话交换机提供大约48V的直流电压。当用户被呼叫时,电话交换机发来铃流信号。振铃信号为253伏的正弦波,谐铃失真不大于10%,电压有效值9015V。振铃以5秒为周期,即1秒送,4秒断。 在本电路检测铃流信号时,以五次铃响为准,即五次振铃后无人摘机,

15、便由单片机控制自动模拟摘机。原理说明: 电话振铃信号通过电容C1隔直、D1稳压二极管、R1限流电阻输入至光电耦合器4N25的输入端1口,C1、D1和R1共同组成振铃信号变换电路,它们使输入电压和电流不会太大,对后面的光电耦合器起保护作用。光电耦合器4N25起的是隔离作用,光电耦合器是一种电信号的耦合器件,它一般是将发光二极管和光敏三极管的光路耦合在一起,输入和输出之间不可共地,输入电信号加于发光二极管上,输出信号由光敏三极管取出。 光电耦合器以光电转换原理传输信息,它不仅使信息发出端(一次侧)与信息接收并输出端(二次侧)是绝缘的,从而对地电位差干扰有很强的抑制能力,而且有很强的抑制电磁干扰能力

16、。速度高、价格低、接口简单。 振铃信号通过光耦4N25的4脚输出振铃正弦波,R2和C2共同组成滤波电路,信号到了开关三极管T1的基极就变成了方波。经过三个反向器的整形输出到单片机AT89C51的T0/P3.4口,中断方式采用外部中断,计数5次产生T0中断,控制继电器模拟摘机,完成振铃音检测。 原器件选取: 1、C1隔直电容,因为是过滤直流,滤出低频信号,而且振铃信号的电压还比较高,因此选取1F耐压100V的瓷片电容(由于条件限制,用两个2F耐压60V的电解电容负极相连代替之); 2、D1为稳压二极管,选取36V的稳压二极管; 3、R1是4N25的限流电阻,取33 k; 4、IC1选取光电耦合器

17、4N25; 5、R2和C2共同组成振铃信号音滤波电路,根据电话振铃的技术指标:频率25Hz的正弦波,1秒通,4秒断,=RC可以推出0.024(S)。为了使振铃信号音输出很好的方波波形,计算后选取R2=10k,C2=100F,=1s; 6、R3和D3共同组成振铃指示灯,R3=100,D3为黄色5mm发光二极管;7、T1和R4组成模拟开关电路,T1选取9013,根据分压原理和74LS04的低电平有效值,R4取2.9 k; 8、反向器由74LS04中的三组反向器组成,起整流作用;4.2 模拟摘挂机电路 设计主要思路:根据国家有关标准规定:不论任何电话机,摘机状态的直流电阻应300,有“R”键的电子电

18、话机的摘机状态直流电阻应350。在挂机状态下,其漏电流5A。当用户摘机时,电话机通过叉簧接上约300的负载,使整个电话线回路流过约30mA的电流。交换机检测到该电流后便停止铃流发送,并将线路电压变为十几伏的直流,完成接续。模拟摘挂机电路主要由一个三极管开关电路控制继电器的开关,继电器控制接入电话线两端的200电阻。摘挂机信令由单片机通过使TXD/P3.1口变为高电平实现。经过两个反向器驱动发光二极管D1指示摘机,同时改变三极管T1的基极电压,使T1处于导通状态,从而开启继电器J1,J1使电阻R3接入电话线两端。因为R3的电阻为200,使回路电流变大,控制电路向交换机发出模拟摘机的信号,交换机响

19、应摘机信号,完成电话线路接通。整个电路完成自动模拟摘机过程。根据设计原理,原器件选取如下:1、 反向器取74LS04中的两组反向器;2、 R1是摘机指示灯限流保护电阻,取220;3、 D1是摘机指示灯,取5mm绿色发光二极管;4、 R2是三极管限流电阻,取2k;5、 T1三极管是起模拟开关控制继电器的作用,取9013;6、 D2二极管是起继电器反向保护的作用,取4001;7、 J1是继电器控制开关,取JRC 4001F(DC5V);8、 R3是摘机电阻,取200;4.3 双音频解码原理简介:双音多频DTMF信号解码电路由MT8870主要承担。MT8870的2、3脚接收来自电话机的双音多频脉冲信

20、号该双音多频信号先经其内部的拨号音滤波器,滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高,低音频信号分开,再经高,低群滤波器,幅度检测器送入输出译码电路,经过数字运算后,在其数据输出端(1114脚)输出相对应的8421码。MT8870的数据输出端Q4 Q1连到AT89C51的P1口的P1.4 P1.7,CPU经P1口识别4位代码。注意,需要特别指出的是,对于“0”号码,MT8870输出的8421码并非是“0000”,而是“1010”;另外,“*”,“#”字号码,MT8870输出的8421码分别为“1011”和“1100”。有些技术资料会出现错误,包括比较权威的手册,所以我是

21、在实验中,记录下测量的每一组数据后,才把这些数据应用于程序当中。为了使单片机AT89C51获取有效数据,MT8870的STD有效端经反相后接CPU的/INT0引脚。当MT8870获取有效双音多频信号后,STD电平由低变高,再反相为低,CPU检测后,指示P1口接收有效二进制代码。而无效的双音频信号(电话线路杂音、人们的语音信号等)是不会引起MT8870的STD端变化的。其中,接在电源处的电容对抗干扰有一定的作用。在实际应用中,存在这样一个问题:MT8870的使能控制端不允许中断时,将使MT8870的STD端中断关闭。其解决办法是,将STD端接与非门的一输入,与非门的另一输入端接一不定电平端P。当

22、STD有效(即中断开放)时,P = 1则/INT0中断关闭;P = 0时则/INT0中断允许。 本单元元器件列表: 1、 D1、D2、D3、D4共同组成整流电路,选取4001; 2、 R1和R2是输入平衡电阻,取100K,C1隔直电容,取0.1F; 3、 芯片外部晶振选择3.579MHz; 4、 IC1是双音频解码芯片,选取MT8870; 5、 C2选取0.1F; 6、 R3是输出平衡电阻,选取100K; 7、 反向器选取74LS04的一组反向器;4.4 信号音提示电路原理说明:首先我规定了信号音的规范以及其对应含义: 1、 响1声,频率为500Hz:请输入密码; 2、 响2声,频率为500H

23、z:请输入需要控制的电器号; 3、 响3声,频率为500Hz:请输入控制开/关; 4、 响1声,频率为1000Hz:完成操作; 5、 响3声,频率为1000Hz:密码错误;信号音从单片机89C51的RXD/P3.0口输出,先经过一组反向器进行整流、隔离,从反向器输出的是频率一定,时通时断的方波,提示信号经过隔直电容C1输入到音频放大集成电路LM386N-1的输入端。经过LM386N-1的放大,信号音经耦合电容C5至变压器T1,它是音频输出专用的耦合变压器,正好符合阻抗匹配的要求。本电路比较难点在于耦合变压器T1的选取。因为电话线中直流电压比较高,而且还有各种信号音,这些都会影响到语音信号加载到

24、电话线上,因此本装置使用一个耦合变压器作为隔离器件。这个耦合变压器的阻抗匹配问题是设计的难点,设计初我查阅有关资料并没发现具体参数。后来看到可以邮购这种电话语音专用耦合变压器,其具体性能都很优秀,但是价格太高,不符合我的设计原则(元器件便宜),因此弃置不用。到了毕业设计的后期,本装置的基本功能已经完成,音反馈的问题又重新提到议事日程上来了。经过我不懈的努力,终于在电子市场上发现了体积很小的电话专用耦合变压器,价格只有2元。这种耦合变压器分两种,一种是输入,一种是输出,经过实验表明输入用的耦合变压器反馈语音性能比较好,其体积大约是10mm10mm8mm。 音频放大集成电路LM386的连接比较简单

25、,本装置的使用是LM386放大增益为50dB的连接方式。原器件选取: 1、 反向器选取74LS04中的一组反向器; 2、 C1的是对音频信号起隔直耦合的作用,所以取100F的电解电容,耐压性能无特殊要求; 3、 IC1、R1、R2、C2、C3、 C4和C5共同组成音频放大电路,IC1选取LM386N-1,R1取1k,C2取10F的电解电容,C3取10F的电解电容,R2取1k, C4取10F的电解电容,C5取100F的电解电容; 4、 T1是音频输出专用变压器;4.5 电器控制电路原理说明:本单元电路主要是由译码扩展电路、反向电路、D触发器和继电器控制电路组成。首先,单片机AT89C51从P1口

26、的低四位输出四位控制信号。P1.0、P1.1、P1.2作为三位数据线,P1.3作为使能控制信号,一同加在3-8线译码器的输入端。当使能端有效时,三位数据线经过译码器数扩展为八位数据线。这八位数据连接八个反向器进行整流隔离,然后连接D触发器进行数据锁存。每个D触发器的输出端都控制一路继电器,而每一路继电器也控制一路电器的开关。二极管指示灯并联在开关三极管两段作为电器开关指示。这样就可以完成单片机对多路电器的控制。也可以把P1口的八位都用作控制电器,数据输入口改在P2口。元器件选取:1、3-8线译码器选取74LS138P; 2、反向器选取两片74LS04(每一片内有六个反向器)中的九个反向器; 3

27、、触发器选取四片4013(每一片内有两个D触发器); 4、三极管选取八个9013; 5、二极管起保护作用,选取八个4001; 6、指示灯选取八个红色5mm发光二极管; 7、指示灯限流电阻选取八个1k的电阻; 8、三极管的限流电阻选取八个2k的电阻; 9、继电器选取八个JRC-4100F DC5V继电器;第五章 软件设计本系统的软件设计主要分为系统初始化、振铃检测计数、控制摘挂机、双音频信号分析处理、控制电器、信号音提示等部分。每个功能模块对于整体设计都是非常重要的,单片机T89C51通过软件程序才能很好的对外部的信息进行采集、分析和决策。下面,就整体设计以及每个单元功能模块分别进行说明。5.1

28、 信号音发声部分本功能模块主要是产生信号提示音,方便不同的使用者。根据普通人耳的反应频率为20Hz至20KHz的范围,和CCITT规定的电话话音信号的频率范围是300Hz至3400Hz,我在本功能单元的发声频率定为500Hz和1000Hz两种。 主要分为五种提示音: 1、 低音,表示装置已经摘机,请输入密码,其参数:频率f=500Hz,延时t=0.5秒/声; 2、两声低音,表示密码已经通过,请选择电器,其参数:频率f=500Hz,延时t=0.5秒/声; 3、三声低音,表示电器已经选定,请控制(开/关),其参数:频率f=500Hz,延时t=0.5秒/声; 4、三声高音,表示密码输入错误,其参数:

29、频率f=1000Hz,延时t=0.3秒/声; 5、一声高音,表示控制已经完成,其参数:频率f=1000Hz,延时t=0.3秒/声; 提示音发生是使用有限循环,反复使单片机的RXD口的电平反转,从而形成方波信号。 子程序代码:ORG 1100HRING10:MOV R6,#20 ;input passwordRING11:MOV R7,#20 ;800HzRING12:LCALL DL10 ;sound=1CPL P3.0 ;delay=0.5sDJNZ R7,RING12DJNZ R6,RING11CLR P3.0RET ORG 1150HRING20:MOV R3,#03RING21:MOV

30、 R6,#20 ;password wrongRING22:MOV R7,#20 ;1600HzRING23:LCALL DL20 ;sound=3CPL P3.0 ;delay=0.25sDJNZ R7,RING23DJNZ R6,RING22CLR P3.0MOV R7,#200RING24:LCALL DL10DJNZ R7,RING24DJNZ R3,RING21CLR P3.0RETORG 1200HRING30:MOV R3,#02RING31:MOV R6,#20 ;selectRING32:MOV R7,#20 ;800HzRING33:LCALL DL10 ;sound=2C

31、PL P3.0 ;delay=0.5sDJNZ R7,RING33DJNZ R6,RING32CLR P3.0MOV R7,#200RING34:LCALL DL10DJNZ R7,RING34DJNZ R3,RING31CLR P3.0RETORG 1250HRING40:MOV R3,#03RING41:MOV R6,#20 ;controlRING42:MOV R7,#20 ;800HzRING43:LCALL DL10 ;sound=3CPL P3.0 ;delay=0.5sDJNZ R7,RING43DJNZ R6,RING42CLR P3.0MOV R7,#100RING44:LC

32、ALL DL10DJNZ R7,RING44DJNZ R3,RING41CLR P3.0RETORG 1300HRING50:MOV R6,#40 ;finishRING51:MOV R7,#20 ;1600HzRING52:LCALL DL20 ;sound=1CPL P3.0 ;delay=0.15sDJNZ R7,RING52DJNZ R6,RING51CLR P3.0RETORG 1500HDL10:MOV R5,#25 ;delay1.25ms,f=800HZ,fosc=12MHz,DL12:MOV R4,#25DL11:DJNZ R4,DL11DJNZ R5,DL12RETORG

33、1600HDL20:MOV R5,#12 ;delay0.625ms,f=1600HZ,fosc=12MHz,DL22:MOV R4,#25DL21:DJNZ R4,DL21DJNZ R5,DL22RETORG 1650HDL30:MOV R5,#50 ;delay20msDL32:MOV R4,#200DL31:DJNZ R4,DL31DJNZ R5,DL32RET5.2 密码检测部分本系统密码校验的基本原理是:在系统初始化的时候把原始密码写入地址为30H开始的存储空间内,密码的位数“5”赋给R7。当系统摘机时,要求输入密码,单片机把解码后的数据(使用者输入的密码)存储在38H开始的存储空间

34、内。然后单片机对进行两个存储地址的内容逐位进行比较,直到完全相等才能转到下一进程,有一位不同,程序就转到出错程序。子程序代码:ORG 0150HHOKE: CLR 7DHSETB P3.1 ;open telephoneCLR TR0 ;close T0MOV R2,#03H ;password wrong 3LCALL RING10 ;input passwordIN: CLR 7EH ;7EH=0DTMF: MOV R7,#5H ;PASSWORD:5 R7MOV R1,#38H ;signSETB P1.4SETB P1.5SETB P1.6SETB P1.7WAIT: JBC 7EH,

35、CC ;wait INT0LJMP WAITCC: MOV R7,#5H ;password 5*MOV R0,#30H ;password topMOV R1,#38H ;signCMP: MOV A,R1MOV R4,ACLR CMOV A,R1SUBB A,R0 ;testINC R0INC R1JZ AAA ;OK,pass oneLJMP QQAAA: DJNZ R7,CMP ;R7-1!=0LJMP LL ;passQQ: DJNZ R2,IN1 ;password wrong&R2!=0LCALL RING20LJMP STOPIN1:LCALL RING20 ;password

36、 wrong,try!LJMP IN5.3 密码修改部分本系统是通过在线输入密码而改变特定存储器中的密码值的。 程序代码:ORG 1700HKEYIN: SETB RS1 ;当前工作寄存器第二工作区CLR RS0ANL A,#00H ;清零A寄存器MOV B,#05HLCALL RING10 ;发提示音:输入密码*MOV R7,#5HMOV R1,#38HWPIN: JBC 7EH,READ ;等待INT0中断LJMP WPINREAD: MOV R1,#38HMOV R0,#40HMOV R7,#05HREAD1: MOV A,R1MOV R0,AINC R0INC R1DJNZ R7,RE

37、AD1 ;判断输入密码是否为5位,否跳转READ1LCALL RING10 ;满5位,发提示音:再输入新密码MOV R7,#5HMOV R1,#38HWRE: JBC 7EH,KEYCMP ;等待中断INT1LJMP WREKEYCMP:MOV R6,#05HMOV R0,#40HMOV R1,#38HKEYCP:MOV A,R0CLR CSUBB A,R1 ;A减(R1)INC R1INC R0JZ BBB ;A的内容如果为0,则跳转BBBLJMP LLBBB: DJNZ R6,KEYCP ;R6减1不为0,则跳转KEYCP,即循环比较密码的五位MOV R1,#38HMOV R0,#30HM

38、OV R6,#5HKEYREIN:MOV A,R1MOV R0,AINC R1INC R0DJNZ R6,KEYREIN ;R6减1不为0,则跳转,即循环比较密码的五位LCALL RING50 ;发提示音:新密码已经设置LJMP STOPRET5.4 控制电器部分本系统首先通过外围双音频解码电路解码的信息(选择电器)判断所选择的电器,然后跳转到每一个子程序,通过单片机向P1口的低四位发送数据,这些控制信息表示对不同的电器进行控制的控制字。为了简单表示,在这里只写出了电器“一”的控制子程序,其它子程序很相似。程序代码:LL: LCALL RING30 ;sound:input controlMO

39、V R7,#1H ;*MOV R1,#38HCLR 7EHWAIT0: JBC 7EH,DD ;wait INT0LJMP WAIT0DD: MOV R1,#38HMOV A,R1RR ARR ARR ARR AMOV R4,ARL AADD A,R4MOV DPTR,#TABJMP A+DPTRTAB: LJMP ZEROLJMP EIGHT;8LJMP FOUR ;4LJMP STOP ;#LJMP TWO ;2LJMP ZERO ;0LJMP SIX ;6LJMP LL ;*LJMP ONE ;1LJMP LL ;9,*LJMP FIVE ;5LJMP LL ;A,*LJMP THREE

40、;3LJMP LL ;*,*LJMP SEVEN;7LJMP LL ;C,*ORG 0250HZERO: LJMP LLONE: LCALL RING40 ;发提示音:请操作电器OO1: MOV R7,#01HCLR 7EHWAIT1: JBC 7EH,WW1 ;wait INT0LJMP WAIT1WW1:MOV R1,#38H ;检查信号首位MOV A,R1CJNE A,#50H,BB1 ;(38)不等于0AH(0),则跳转BB1LJMP ZZ1 ;(38)等于0AH(0),则跳转ZZ1BB1: CJNE A,#80H,QUIT1 ;(38)不等于01H(1),则跳转QUIT1SETB P

41、1.3 ;open 1CLR P1.2CLR P1.1CLR P1.0LJMP QUIT1ZZ1: CLR P1.3 ;close allCLR P1.2CLR P1.1CLR P1.0LCALL RING50 ;finshQUIT1: LJMP LL5.5 振铃计数部分本单元是通过计数器T0的外部中断方式来计数的。程序代码:ORG 0090HTT0: SETB 7DHRETI第六章 系统调试6.1 整体调试整体调试所使用的测试仪器仪表和工具:1、IBM-PC/XT兼容机一台,主频:50Hz,有软驱和25针串行接口; 2、ME-5103单片机仿真机一个; 3、MF116万用表一个; 4、计算机

42、5V稳压电源一个; 5、SR8双踪示波器; 6、Manley In-Circuit Emulator Debugger(MBUG)开发软件;本装置的调试主要分为硬件调试、软件调试和联机调试等三大部分。 经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,我是首先完成单元功能模块的调试,然后进行系统调试,整体上与硬件调试的方法差不多。联机调试是最重要的一部分,同时也是本装置成功的关键。有许多新问题都不是很容易解决的。6.2 硬件单元电路 6.2.1 5V稳

43、压电源本装置使用单5V稳压电源供电,要求交流成分小。经过示波器测量5V稳压电源输出端,其交流部分电压的峰-峰值为6mV,符合本装置的电源要求,稳压电源调试完毕。6.2.2 振铃音检测在本单元电路制作前期,实验室中无模拟交换机,无法产生振铃信号,我只好在完成此部分的焊接后回寝室中完成其测试。将本装置的电话线两端并联在电话机两端,摘机拨打“190”,然后挂机,市交换机会回送连续的测试振铃音。经过测量,这种测试振铃音和正常的振铃信号的频率、振幅等特性都一样,只是正常的振铃信号是1秒通4秒断,而这种测试振铃音是连续的。当送测试振铃音时,用万用表的直流档测量光电耦合器4N25的输出端,有明显的电压,这说

44、明可以形成中断响应信号。后接振铃指示灯,发现在送铃流信号时,指示灯亮,但是灯在闪烁。分析得光耦输出端所接的滤波电容C2太小,于是把原来的1F换成现在的100F,问题得到解决。因为单片机T0所响应的外部中断信号是低电平有效,所以在光耦输出端接了一个开关三极管T1控制指示灯,在三极管的输出端接了三个反向器。经过三极管T1的开关作用和三个反向器的反向作用,输出应该为低电平。但是在测量反向器输出端时发现:振铃指示灯亮,但反向器输出端为高电平。说明振铃信号可以通过三极管,但无法通过反向器。分析原因可能是反向器74LS04坏了,换之,再测,还是老问题。经过细心测量三极管的发射极电压发现:有振铃时Ve=1.

45、1V,这时反向器74LS04认为是低电平,当无振铃脉冲信号时,还是认为是低电平,所以振铃信号无法通过反向器。解决方法很简单,把三极管的发射极端的下拉电阻R4从原来的20k改成5.1k,提升三极管的发射极电压。在毕业设计的后期,实验室有了模拟小交换机,经测试,本单元电路完全正常,振铃检测部分调试完毕。6.2.3 模拟摘挂机此部分的调试较为容易,电路接好后,用5V高电平测试之,指示灯亮,继电器吸合正常。接入模拟小交换机,控制摘机时,交换机的端口指示灯亮,反之挂机时,指示灯灭。说明此部分完全正常。接入仿真机测试时发现:单片机的TXD端不能控制模拟摘挂机部分的摘挂机。分析得出结论:可能是接口的电平不相

46、符合。解决方法:加上一个三极管模拟开关,加上一个反向器(74LS04)进行控制隔离作用。经过接入仿真机测试表明反向器的作用很明显,于是在后面的电路设计当中,我在许多的接口上大多使用了反向器。至此,模拟摘挂机部分调试完毕。6.2.4 控制电器控制电器这部分的外围硬件电路很容易,在调试过程中很顺利完成。在接仿真机时,使用的是P2口控制电器,实验结果表明P2口无法正常控制每个电器,翻阅资料发现单片机89C51的P2口没有数据锁存功能,不能保持上一个状态的数据。解决方法:把P2口控制电器改为P1口的低四位控制电器,改线之后控制正常,但是新的问题出现了,原来要求控制八路的端口,现在只能控制四个电器。经过

47、市场实际分析,一般的控制电器只要求34路即可,为了实验单片机扩展控制功能,提高本遥控装置的潜在功能,我决定实验使用3-8线译码器74LS138对P1口的低四位输出数据进行译码扩展。具体电路详见前面。在成功的扩展了控制电器的个数后,我又发现了一个新的问题:遥控器不能同时使两路以及两路以上的电器开,即在同一时刻,遥控器只能使一路电器开启。经过仔细分析,我发现了问题原因之所在,那就是译码器的原理问题。通常情况下我们认为的译码器可以扩展所能控制的电器,其实译码器只能扩展位数,而不能使状态发生变化。例如:三位二进制000111可以控制表示三个电器、八种状态,而经过3-8线译码器译码后,可以控制八个电器,

48、但是其状态也只有八种,如下表所示。A2 A1 A0 输出D0D70 0 0 0 1 1 1 1 1 1 10 0 1 1 0 1 1 1 1 1 10 1 0 1 1 0 1 1 1 1 10 1 1 1 1 1 0 1 1 1 11 0 0 1 1 1 1 0 1 1 11 0 1 1 1 1 1 1 0 1 11 1 0 1 1 1 1 1 1 0 11 1 1 1 1 1 1 1 1 1 0其解决方法是:使用D触发器使继电器保持上一个状态,这样才能使八路电器可以控制28=256个状态。6.2.5 双音频检测双音频检测是整体电路一个比较重要的过程,它的调试主要围绕着双音多频解码芯片8870

49、展开的。在此部分的制作的前期,我采用的芯片是CM8870CPI。开始连接电路调试时,整体电路工作很正常,后来这块芯片使用大约一个星期左右的时间,解码电路经常会出现解码出错的情况。经过仔细检查电路,仿真机单步执行进行调试,确认硬件电路无误,诊断为CM8870CPI的问题。根据我的初步分析认定可能是芯片老化的原因,后更换为MT8870DE发现本装置工作很正常,而且换上MT8870DE工作了将近一个月,整体电路没有发生任何解码误码情况,MT8870DE在最后的联机调试过程中也没有出现任何问题。6.3 软件程序调试6.3.1 软件系统设置对于本系统而言,软件程序所实现的功能比较多,所以软件程序的调试显

50、得相当的烦琐。整个程序是使用汇编语言,在MBUG下编写调试完成的。首先我使用的是我自己的计算机联接MCS-51仿真机,计算机的主频为333MHz,但是出现了许多的问题。第一个问题就是:我所使用的MCS-51仿真机型号是ME-5103,联入计算机的25针串行口来进行程序的读入,但是我的计算机没有25针串行口。观察计算机的后面,主板上只有一个25针并行口,是用来连接打印机的;除了这个25针串行口外,还有两个9针串行口。 我只有把MCS-51仿真机的25针接口变成9针串行接口,才能连接计算机。后来我找到一个25针-9针的转换口,可以通过他使MCS-51仿真机和我的计算机联接。 我使用的是Manley

51、 In-Circuit Emulator Debugger(MBUG)开发软件,使用时发现此系统可以进行正常的Assemble(汇编),但是不能正常的进行Load Program,执行时会出现divide overflow error的错误,然后就退出此编译系统,这就使得无法进行仿真机模拟实验。 经过实验室多组同学的八台计算机的尝试,我们终于发现了问题之所在。实验结果表明:主频高于233MHz的计算机都不能正常联接MCS-51仿真机,而主频低于100MHz的计算机(有25针串行接口)均可以进行仿真实验。后来经过查阅有关技术资料,型号为ME-5103的MCS-51仿真机只能工作在IBM PC/X

52、T/AT 286/386/486的环境下。 由于实验室的低档计算机(能联接MCS-51仿真机)的不太多,所以我们只有把仅有的几台计算机进行优化重组,以便合理利用有限的计算机资源。我的汇编语言程序相对来说还是比较多的,调试起来可能费时,所以我先在自己的计算机上对程序的语法错误(syntax error)进行调试修改,然后又对地址覆盖(org address is less)的错误进行修改,既对每个子程序的开始地址进行仔细的调整。到此为止整个软件程序调试环境就已经配好了。6.3.2 提示音信号在本单元的调试过程中,我认为此部分的结构比较简单,因此在整体程序中直接调试。首先Ctrl+F5单步执行,发

53、现此部分的RING1子程序正常,而其它的子程序在执行时却发生死循环。我把这几个子程序单独切出来进行分析,却发现执行正常,于是我推测并不是子程序本身的结构问题。然后使用Ctrl+F8对整个程序单步执行(两种单步执行的区别在于F5直接执行子程序,即不单步执行子程序,而F8对于整个程序都是单步执行,包括子程序),发现RING2中的R5寄存器已经在主程序中用作判断标志位,程序已经在外部完成对其赋值。这样就导致重复赋值,因此无法跳出循环子程序,直接导致死循环。程序代码:ORG 1150HRING20:MOV R3,#03RING21:MOV R6,#20 ;password wrongRING22:MO

54、V R5,#20 ;1600HzRING23:LCALL DL20 ;sound=3CPL P3.0 ;delay=0.25sDJNZ R5,RING23DJNZ R6,RING22CLR P3.0MOV R5,#200RING24:LCALL DL10DJNZ R5,RING24DJNZ R3,RING21CLR P3.0RET 后来我将子程序中的R5寄存器换成R7寄存器,子程序就正常了。6.3.3 密码检测本部分的调试比较艰难,我是先调试一位密码,然后再调试五位密码。我先设定R5为一位,即先设定一位密码作为测试。首先单步执行,发现信号音无法正常输入到单片机的38H地址处的存储空间。现象:计算机联机单步执行,接收振铃信号,三次自动摘机,当程序执行到等待INT0中断(一个小的循环程序)时,既等待输入密码时,我按下“7”(事先设定的一位密码),单片机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论