2022年电话远程智能遥控系统 .pdf
目 录第 1 章 总体设计 . 1 第 2 章 系统设计可行性分析 . 2 2.1 总体设计分析 . 2 2.2 硬件模块 . 2 2.3 软件模块 . 3 第 3 章 硬件单元电路设计 . 5 3.1 振铃检测电路 . 5 3.2 模拟摘挂机电路 . 6 3.3 双音频解码 . 6 3.4 信号音提示电路 . 7 3.5 电器控制电路 . 8 第 4 章 软件设计 . 9 4.1 信号音发声部分 . 9 4.2 密码检测部分 . 12 4.3 密码修改部分 . 14 4.4 控制电器部分 . 15 4.5 振铃计数部分 . 17 第 5 章 系统调试 . 18 5.1 整体调试 . 18 5.2 硬件单元电路 . 18 5.3 软件程序调试 . 20 5.4 联机在线调试 . 24 第 6 章 系统使用说明 . 25 第 7 章 系统功能扩展 . 26 结论 . 27 附录 . 28 参考文献 . 31 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 32 页 - - - - - - - - - 1 第1章 总体设计电化智能遥控器由单片机构成主控部分,进行主要的信息处理, 接收外部操作指令形成各种控制信号, 并完成对于各种信息的记录; 接口电路提供单片机与电话外线的接口。其中包括铃流检测、摘挂机控制、忙音检测、双音频DTMF 识别,及语音提示电路。语音提示电路是该作品重要组成部分。为了降低本装置的造价, 作品的提示音使用程序产生。 语音提示电路受单片机的控制产生相应的提示音提示,并通过反馈电路反馈至电话外线。从而使操作者对电器的操作达到交互式,并能即时了解有关的信息;显示电路用于状态设置时的显示;控制部分即受控的终端, 如前所述, 可通过接驳不同的终端并对电话进行必要的改动从而达到功能的扩展。这一点,可使产品达到系列化。本系统的每一个接口电路(振铃检测、模拟摘挂机、语音反馈、双音频解码等)都具有很强的实用性。 本系统使用最简单的电路、 最便宜的电路芯片实现了完善的功能。本系统还有许多可以添加的功能,具有很强的市场前景。本装置并联于电话机的两端, 不会影响到电话机的正常使用。 用户通过异地的电话机拨通本装置所连接外线的电话号码,通过市局交换机向电话机发出振铃信号。本装置如果检测到振铃五次,即五次响铃后无人接,自动摘机,进入密码检测,输入正确后选择被控制电器,然后输入开或关进行遥控电器,完成后返回。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 32 页 - - - - - - - - - 2 第2章 系统设计可行性分析2.1 总体设计分析根据电话远程智能遥控系统的具体设计要求: 通过电话网对异地的电器实现控制(开/关); 控制器可以实现自动模拟摘挂机; 控制器设置密码校验;我设计此系统必须具有以下单元功能模块: 铃音检测、计数; 自动摘挂机; 密码校验; 在线修改密码; 双音频信号解码; 输入信息分析; 控制电器开关; 电器状态查询; 忙音检测;根据电话机和交换机发出的不同信号音以及电话线各种状态的不同要求,我结合实际情况对具体的单元功能模块作出软件或硬件上的不同分工,具体如下:理论上交换机所发出的各种信号音都可以通过软件编程而识别,即通过单片机发出的脉冲信号来检测信号音单位时间内的脉冲个数计算出其频率,从而完成信号音识别。 但是从系统的可靠性和程序的结构设计上分析,我选择了硬件来解决振铃音检测、忙音检测、双音频信号解码等功能模块。自动摘挂机和电器的控制必须使用具体硬件电路来实现。振铃音计数、忙音计数、密码校验、在线修改密码、输入信息分析、电器状态查询等功能模块使用软件编程方式要比硬件电路简单的多,实现也很容易。综上所述,我设计信号音检测、自动摘挂机、控制电器、双音频解码等功能模块使用硬件电路实现。而信号音计数、密码校验、在线修改密码、信息分析、电器状态查询等功能模块使用软件编程完成。2.2 硬件模块本作品使用了大量的硬件电路完成部分功能模块,其目的就是充分利用硬件电路名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 32 页 - - - - - - - - - 3 的可靠性、稳定性,使整体电路达到比较高的稳定性。2.2.1 自动摘挂机因为程控电话交换机对电话摘机的响应是电话线回路电流突然变大为约30mA的电流,交换机检测到回路电流变大就认为电话机已经摘机。自动摘挂机电路可以通过单片机控制一个继电器的开关,继电器的控制端连接一个大约300的电阻接入电话线两端,从而完成模拟摘挂机。2.2.2 振铃音的检测当用户被呼叫时,电话交换机发来铃流信号。振铃为253伏的正弦波,谐铃失真不大于 10%,电压有效值 9015V。振铃以5秒为周期,即 1秒送,4秒断。根据振铃信号电压比较高的特点, 可以先使用高压稳压二极管进行降压,然后输入至光电耦合器。经过光耦的隔离转换,从光电耦合器输出的波形是时通时断的正弦波,经过RC回路进行滤波输出很标准的方波。 方波信号就可以直接输出至单片机的中断计数器输入口,完成整个振铃音检测和计数的过程。2.2.3 控制电器此部分比较简单,通过单片机控制多路继电器的开关即可。2.2.4 双音频解码此部分是整个系统的关键, 它的工作情况直接决定了系统的可靠性。经过翻阅资料,我发现使用电话专用的双音频编解码芯片进行输入双音频信号的解码,是比较常用的一种方法。 使用集成电路不但外围电路简单,而且可靠性强。 经过专用集成电路的解码,信号转换成为不同的码制信号,可以直接被单片机读取。 一般常用的电话双音频编解码集成电路有 8870、8880、8888等,经过反复论证比较,我决定使用双音频解码集成片 MT8870来完成此功能模块。2.3 软件模块经过比较,我决定使用 AT89C51作为控制的单片机芯片。2.3.1 信号音计数本单元可以使用 AT89C51的两个计数器的外部中断方式来实现对不同信号音的计数。2.3.2 密码检测本单元可以在系统初始化的时候, 在单片机内部的存储器的内部开辟一块空间放置密码。当用户输入密码的时候, 单片机把输入的密码写入另外的一块空间,然后利用减法运算比较两者是否相等。这样就可以实现密码检测的功能。2.3.3 信号分析处理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 32 页 - - - - - - - - - 4 本单元可以利用查表方式, 也可以用简单的语句, 稍微长一点的语句实现, 例如CASE语句等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 32 页 - - - - - - - - - 5 第3章 硬件单元电路设计3.1 振铃检测电路在电话线路未来铃流前,电话线路由电话交换机提供大约48V的直流电压。当用户被呼叫时,电话交换机发来铃流信号。振铃信号为253伏的正弦波,谐铃失真不大于10%,电压有效值 9015V。振铃以 5秒为周期,即 1秒送, 4秒断。在本电路检测铃流信号时, 以五次铃响为准,即五次振铃后无人摘机,便由单片机控制自动模拟摘机。原理说明:电话振铃信号通过电容 C1隔直、 D1稳压二极管、 R1限流电阻输入至光电耦合器4N25的输入端 1口,C1、D1和R1共同组成振铃信号变换电路,它们使输入电压和电流不会太大,对后面的光电耦合器起保护作用。光电耦合器4N25起的是隔离作用,光电耦合器是一种电信号的耦合器件,它一般是将发光二极管和光敏三极管的光路耦合在一起, 输入和输出之间不可共地, 输入电信号加于发光二极管上,输出信号由光敏三极管取出。光电耦合器以光电转换原理传输信息,它不仅使信息发出端 (一次侧) 与信息接收并输出端(二次侧)是绝缘的,从而对地电位差干扰有很强的抑制能力,而且有很强的抑制电磁干扰能力。速度高、价格低、接口简单。振铃信号通过光耦 4N25的4脚输出振铃正弦波, R2和C2共同组成滤波电路, 信号到了开关三极管 T1的基极就变成了方波。经过三个反向器的整形输出到单片机AT89C51的T0/P3.4口,中断方式采用外部中断,计数5次产生 T0中断,控制继电器模拟摘机,完成振铃音检测。原器件选取:1、C1隔直电容,因为是过滤直流,滤出低频信号,而且振铃信号的电压还比较高,因此选取 1 F耐压 100V的瓷片电容;2、D1为稳压二极管,选取 36V的稳压二极管;3、R1是4N25的限流电阻,取 33 k ;4、IC1选取光电耦合器 4N25;5、R2和C2共同组成振铃信号音滤波电路,根据电话振铃的技术指标: 频率25Hz的正弦波, 1秒通, 4秒断, =RC可以推出 0.024(S)。为了使振铃信号音输出很好的方波波形,计算后选取 R2=10k,C2=100 F, =1s;6、R3和D3共同组成振铃指示灯, R3=100,D3为黄色 5mm发光二极管;7、 T1和R4组成模拟开关电路, T1选取9013, 根据分压原理和 74LS04的低电平有效值,R4取2.9 k;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 32 页 - - - - - - - - - 6 8、反向器由 74LS04中的三组反向器组成,起整流作用;3.2 模拟摘挂机电路设计主要思路:根据国家有关标准规定: 不论任何电话机, 摘机状态的直流电阻应 300 ,有“R ”键的电子电话机的摘机状态直流电阻应350 。在挂机状态下,其漏电流5 A。当用户摘机时,电话机通过叉簧接上约300的负载,使整个电话线回路流过约30mA的电流。交换机检测到该电流后便停止铃流发送,并将线路电压变为十几伏的直流,完成接续。模拟摘挂机电路主要由一个三极管开关电路控制继电器的开关,继电器控制接入电话线两端的 200电阻。摘挂机信令由单片机通过使TXD/P3.1口变为高电平实现。经过两个反向器驱动发光二极管D1指示摘机,同时改变三极管T1的基极电压,使 T1处于导通状态,从而开启继电器J1,J1使电阻 R3接入电话线两端。因为 R3的电阻为200,使回路电流变大,控制电路向交换机发出模拟摘机的信号,交换机响应摘机信号,完成电话线路接通。整个电路完成自动模拟摘机过程。根据设计原理,原器件选取如下: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;3.3 双音频解码原理简介:双音多频 DTMF信号解码电路由 MT8870主要承担。它的 2、3脚接收来自电话机的双音多频脉冲信号该双音多频信号先经其内部的拨号音滤波器,滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高, 低音频信号分开, 再经高,低群滤波器,幅度检测器送入输出译码电路, 经过数字运算后,在其数据输出端(1114名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 32 页 - - - - - - - - - 7 脚)输出相对应的 8421码。MT8870的数据输出端 Q4 Q1连到AT89C51的P1口的P1.4 P1.7,CPU经P1口识别 4位代码。其中,A,B, C, D 4个按键常被当作 R/P,REDIAL ,HOLD,HANDSFREE等功能使用。 注意,需要特别指出的是, 对于“0”号码,MT8870输出的 8421码并非是 “0000”, 而是“1010”; 另外,“*”, “#”字号码,MT8870输出的 8421码分别为 “1011”和“1100”。有些技术资料会出现错误,包括比较权威的手册,所以我是在实验中, 记录下测量的每一组数据后, 才把这些数据应用于程序当中。为了使单片机AT89C51获取有效数据, MT8870的STD有效端经反相后接 CPU的/INT0 引脚。当MT8870获取有效双音多频信号后,STD电平由低变高,再反相为低,CPU检测后,指示P1口接收有效二进制代码。 而无效的双音频信号 (电话线路杂音、 人们的语音信号等)是不会引起 MT8870的STD端变化的。对于 DTMF接收器的外围电路,接在电源处的电容对抗干扰有一定的作用。在实际应用中,存在这样一个问题:MT8870的使能控制端不允许中断时,将使MT8870的STD端中断关闭。其解决办法是,将STD端接与非门的一输入,与非门的另一输入端接一不定电平端P。当STD有效(即中断开放)时, P = 1则/INT0 中断关闭; P = 0时则/INT0中断允许。本单元元器件列表:1、 D1、D2、D3、D4共同组成整流电路,选取 4001;2、 R1和R2是输入平衡电阻,取 100K,C1隔直电容,取 0.1 F;3、 芯片外部晶振选择 3.579MHz;4、 IC1是双音频解码芯片,选取MT8870;5、 C2选取0.1 F;6、 R3是输出平衡电阻,选取 100K;7、 反向器选取 74LS04的一组反向器;3.4 信号音提示电路原理说明:为了方便本系统的使用者, 本人设计了信号音提示音电路。 首先我规定了信号音的规范以及其对应含义:1、 响1声,频率为 500Hz:请输入密码;2、 响2声,频率为 500Hz:请输入需要控制的电器号;3、 响3声,频率为 500Hz:请输入控制开 /关;4、 响1声,频率为 1000Hz:完成操作;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 32 页 - - - - - - - - - 8 5、 响3声,频率为 1000Hz:密码错误;信号音从单片机 89C51的RXD/P3.0口输出,先经过一组反向器进行整流、隔离,从反向器输出的是频率一定,时通时断的方波,提示信号经过隔直电容C1输入到音频放大集成电路 LM386N-1 的输入端。经过 LM386N-1 的放大,信号音经耦合电容C5至变压器 T1,它是音频输出专用的耦合变压器,正好符合阻抗匹配的要求。音频放大集成电路 LM386的连接比较简单,本装置的使用是LM386放大增益为50dB的连接方式。原器件选取:1、 反向器选取 74LS04中的一组反向器;2、 C1的是对音频信号起隔直耦合的作用,所以取100 F的电解电容,耐压性能无特殊要求;3、 IC1、R1、R2、C2、C3、 C4和C5共同组成音频放大电路, IC1选取LM386N-1 ,R1取1k,C2取10 F的电解电容, C3取10 F的电解电容, R2取1k , C4取10 F的电解电容, C5取100 F的电解电容;4、 T1是音频输出专用变压器;3.5 电器控制电路原理说明:本单元电路主要是由译码扩展电路、反向电路、D触发器和继电器控制电路组成。首先,单片机 AT89C51从P1口的低四位输出四位控制信号。P1.0、P1.1、P1.2作为三位数据线, P1.3作为使能控制信号,一同加在3-8线译码器的输入端。当使能端有效时,三位数据线经过译码器数扩展为八位数据线。这八位数据连接八个反向器进行整流隔离,然后连接 D触发器进行数据锁存。 每个D触发器的输出端都控制一路继电器,而每一路继电器也控制一路电器的开关。二极管指示灯并联在开关三极管两段作为电器开关指示。这样就可以完成单片机对多路电器的控制。也可以把 P1口的八位都用作控制电器,数据输入口改在P2口。元器件选取:1、3-8线译码器选取 74LS138P;2、反向器选取两片 74LS04(每一片内有六个反向器)中的九个反向器;3、触发器选取四片 4013(每一片内有两个 D触发器);4、三极管选取八个 9013;5、二极管起保护作用,选取八个4001;6、指示灯选取八个红色 5mm发光二极管;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 32 页 - - - - - - - - - 9 7、指示灯限流电阻选取八个1k的电阻;8、三极管的限流电阻选取八个2k的电阻;9、继电器选取八个 JRC-4100F DC5V继电器;第4章 软件设计本系统的软件设计主要分为系统初始化、振铃检测计数、 控制摘挂机、 双音频信号分析处理、 控制电器、 信号音提示等部分。 每个功能模块对于整体设计都是非常重要的,单片机 T89C51通过软件程序才能很好的对外部的信息进行采集、分析和决策。下面,就整体设计以及每个单元功能模块分别进行说明。4.1 信号音发声部分本功能模块主要是产生信号提示音,方便不同的使用者。 根据普通人耳的反应频率为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、三声高音,表示密码输入错误,其参数:频率f=1000Hz,延时 t=0.3秒/声;5、一声高音,表示控制已经完成,其参数:频率f=1000Hz,延时 t=0.3秒/声;提示音发生是使用有限循环, 反复使单片机的 RXD口的电平反转, 从而形成方波信号。子程序代码:ORG 1100H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 32 页 - - - - - - - - - 10 RING10:MOV R6 ,#20 ;input password RING11:MOV R7 ,#20 ;800Hz RING12:LCALL DL10 ;sound=1 CPL P3.0 ;delay=0.5s DJNZ R7,RING12 DJNZ R6,RING11 CLR P3.0 RET ORG 1150H RING20:MOV R3 ,#03 RING21:MOV R6 ,#20 ;password wrong RING22:MOV R7 ,#20 ;1600Hz RING23:LCALL DL20 ;sound=3 CPL P3.0 ;delay=0.25s DJNZ R7,RING23 DJNZ R6,RING22 CLR P3.0 MOV R7 ,#200 RING24:LCALL DL10 DJNZ R7,RING24 DJNZ R3,RING21 CLR P3.0 RET ORG 1200H RING30:MOV R3 ,#02 RING31:MOV R6 ,#20 ;select RING32:MOV R7 ,#20 ;800Hz RING33:LCALL DL10 ;sound=2 CPL P3.0 ;delay=0.5s DJNZ R7,RING33 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 32 页 - - - - - - - - - 11 DJNZ R6,RING32 CLR P3.0 MOV R7 ,#200 RING34:LCALL DL10 DJNZ R7,RING34 DJNZ R3,RING31 CLR P3.0 RET ORG 1250H RING40:MOV R3 ,#03 RING41:MOV R6 ,#20 ;control RING42:MOV R7 ,#20 ;800Hz RING43:LCALL DL10 ;sound=3 CPL P3.0 ;delay=0.5s DJNZ R7,RING43 DJNZ R6,RING42 CLR P3.0 MOV R7 ,#100 RING44:LCALL DL10 DJNZ R7,RING44 DJNZ R3,RING41 CLR P3.0 RET ORG 1300H RING50:MOV R6 ,#40 ;finish RING51:MOV R7 ,#20 ;1600Hz RING52:LCALL DL20 ;sound=1 CPL P3.0 ;delay=0.15s DJNZ R7,RING52 DJNZ R6,RING51 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 32 页 - - - - - - - - - 12 CLR P3.0 RET ORG 1500H DL10:MOV R5 ,#25 ;delay1.25ms,f=800HZ,fosc=12MHz,DL12:MOV R4 ,#25 DL11:DJNZ R4,DL11 DJNZ R5,DL12 RET ORG 1600H DL20:MOV R5 ,#12 ;delay0.625ms ,f=1600HZ,fosc=12MHz,DL22:MOV R4 ,#25 DL21:DJNZ R4,DL21 DJNZ R5,DL22 RET ORG 1650H DL30:MOV R5 ,#50 ;delay20ms DL32:MOV R4 ,#200 DL31:DJNZ R4,DL31 DJNZ R5,DL32 RET 4.2 密码检测部分本系统密码校验的基本原理是:在系统初始化的时候把原始密码写入地址为30H开始的存储空间内,密码的位数“5”赋给R7。当系统摘机时,要求输入密码,单片机把解码后的数据(使用者输入的密码)存储在38H开始的存储空间内。然后单片机对进行两个存储地址的内容逐位进行比较,直到完全相等才能转到下一进程,有一位不同,程序就转到出错程序。子程序代码:ORG 0150H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 32 页 - - - - - - - - - 13 HOKE: CLR 7DH SETB P3.1 ;open telephone CLR TR0 ;close T0 MOV R2 ,#03H ;password wrong 3 LCALL RING10 ;input password IN: CLR 7EH ;7EH=0 DTMF: MOV R7 ,#5H ;PASSWORD:5 R7 MOV R1 ,#38H ;sign SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 WAIT: JBC 7EH ,CC ;wait INT0 LJMP WAIT CC: MOV R7,#5H ;password 5* MOV R0 ,#30H ;password top MOV R1 ,#38H ;sign CMP: MOV A ,R1 MOV R4 ,A CLR C MOV A ,R1 SUBB A,R0 ;test INC R0 INC R1 JZ AAA ;OK ,pass one LJMP QQ AAA: DJNZ R7 ,CMP ;R7-1!=0 LJMP LL ;pass QQ: DJNZ R2,IN1 ;password wrong&R2!=0 LCALL RING20 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 32 页 - - - - - - - - - 14 LJMP STOP IN1:LCALL RING20 ;password wrong ,try! LJMP IN 4.3 密码修改部分本系统是通过在线输入密码而改变特定存储器中的密码值的。程序代码:ORG 1700H KEYIN: SETB RS1 ; 当前工作寄存器第二工作区CLR RS0 ANL A,#00H ; 清零A寄存器MOV B,#05H LCALL RING10 ; 发提示音:输入密码 * MOV R7,#5H MOV R1,#38H WPIN: JBC 7EH,READ ; 等待INT0中断LJMP WPIN READ: MOV R1,#38H MOV R0,#40H MOV R7,#05H READ1: MOV A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,READ1 ;判断输入密码是否为 5位,否跳转 READ1 LCALL RING10 ; 满5位,发提示音:再输入新密码MOV R7,#5H MOV R1,#38H WRE: JBC 7EH,KEYCMP ; 等待中断 INT1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 32 页 - - - - - - - - - 15 LJMP WRE KEYCMP:MOV R6,#05H MOV R0,#40H MOV R1,#38H KEYCP:MOV A,R0 CLR C SUBB A,R1 ;A 减( R1)INC R1 INC R0 JZ BBB ;A 的内容如果为 0,则跳转 BBB LJMP LL BBB: DJNZ R6,KEYCP ;R6 减1不为0,则跳转 KEYCP,即循环比较密码的五位MOV R1,#38H MOV R0,#30H MOV R6,#5H KEYREIN:MOV A,R1 MOV R0,A INC R1 INC R0 DJNZ R6,KEYREIN ;R6 减1不为0,则跳转,即循环比较密码的五位LCALL RING50 ; 发提示音:新密码已经设置LJMP STOP RET 4.4 控制电器部分本系统首先通过外围双音频解码电路解码的信息(选择电器)判断所选择的电器,然后跳转到每一个子程序, 通过单片机向 P1口的低四位发送数据, 这些控制信息表示对不同的电器进行控制的控制字。为了简单表示, 在这里只写出了电器 “ 一” 的控制子程序,其它子程序很相似。程序代码:LL: LCALL RING30 ;sound:input control 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 32 页 - - - - - - - - - 16 MOV R7 ,#1H ;* MOV R1 ,#38H CLR 7EH WAIT0: JBC 7EH ,DD ;wait INT0 LJMP WAIT0 DD: MOV R1 ,#38H MOV A ,R1 RR A RR A RR A RR A MOV R4 ,A RL A ADD A ,R4 MOV DPTR ,#TAB JMP A+DPTR TAB: LJMP ZERO LJMP EIGHT;8 LJMP FOUR ;4 LJMP STOP ;# LJMP TWO ;2 LJMP ZERO ;0 LJMP SIX ;6 LJMP LL ;* LJMP ONE ;1 LJMP LL ;9 ,* LJMP FIVE ;5 LJMP LL ;A ,* LJMP THREE;3 LJMP LL ;* ,* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 32 页 - - - - - - - - - 17 LJMP SEVEN;7 LJMP LL ;C ,* ORG 0250H ZERO: LJMP LL ONE: LCALL RING40 ; 发提示音:请操作电器OO1: MOV R7,#01H CLR 7EH WAIT1: JBC 7EH ,WW1 ;wait INT0 LJMP WAIT1 WW1:MOV R1 ,#38H ;检查信号首位MOV A ,R1 CJNE A,#50H,BB1 ;(38)不等于 0AH(0),则跳转 BB1 LJMP ZZ1 ;(38)等于 0AH(0),则跳转 ZZ1 BB1: CJNE A,#80H,QUIT1 ;(38)不等于 01H(1),则跳转 QUIT1 SETB P1.3 ;open 1 CLR P1.2 CLR P1.1 CLR P1.0 LJMP QUIT1 ZZ1: CLR P1.3 ;close all CLR P1.2 CLR P1.1 CLR P1.0 LCALL RING50 ;finsh QUIT1: LJMP LL 4.5 振铃计数部分本单元是通过计数器 T0的外部中断方式来计数的程序代码:ORG 0090H TT0: SETB 7DH RETI名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 32 页 - - - - - - - - - 18 第5章 系统调试5.1 整体调试整体调试所使用的测试仪器仪表和工具:1、IBM-PC/XT 兼容机一台,主频: 50Hz,有软驱和 25针串行接口;2、ME-5103单片机仿真机一个;3、MF116万用表一个;4、计算机 5V稳压电源一个;5、SR8双踪示波器;6、Manley In-Circuit Emulator Debugger(MBUG) 开发软件;本装置的调试主要分为硬件调试、软件调试和联机调试等三大部分。经过初步的分析设计后, 在制作硬件电路的同时, 调试也在穿插进行。 这样有利于问题的分析和解决, 不会造成问题的积累, 而且不会因为一个小问题而进行整体电路的检查, 从而可以节约大量的调试时间。软件编程中, 我是首先完成单元功能模块的调试,然后进行系统调试, 整体上与硬件调试的方法差不多。联机调试是最重要的一部分,同时也是本装置成功的关键。有许多新问题都不是很容易解决的。5.2 硬件单元电路5.2.1 5V 稳压电源本装置使用单 5V稳压电源供电,要求交流成分小。经过示波器测量5V稳压电源输出端,其交流部分电压的峰-峰值为 6mV,符合本装置的电源要求,稳压电源调试完毕。5.2.2 振铃音检测在本单元电路制作前期, 实验室中无模拟交换机, 无法产生振铃信号, 我只好在完成此部分的焊接后回寝室中完成其测试。将本装置的电话线两端并联在电话机两端,摘机拨打 “190”,然后挂机,市交换机会回送连续的测试振铃音。经过测量,这种测试振铃音和正常的振铃信号的频率、振幅等特性都一样, 只是正常的振铃信号是1秒通4秒断,而这种测试振铃音是连续的。 当送测试振铃音时, 用万用表的直流档测量光电耦合器 4N25的输出端,有明显的电压,这说明可以形成中断响应信号。后接振铃指示灯,发现在送铃流信号时,指示灯亮,但是灯在闪烁。分析得光耦输出端所接的滤波电容 C2太小,于是把原来的 1 F换成现在的 100 F,因为单片机 T0所响应的外部中断信号是低电平有效,所以在光耦输出端接了一个开关三极管T1控制指示灯,在三极管的输出端接了三个反向器。 经过三极管 T1的开关作用和三个反向器的反向作名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 32 页 - - - - - - - - - 19 用,输出应该为低电平。但是在测量反向器输出端时发现:振铃指示灯亮,但反向器输出端为高电平。 说明振铃信号可以通过三极管,但无法通过反向器。 分析原因可能是反向器 74LS04坏了,换之,再测,还是老问题。经过细心测量三极管的发射极电压发现:有振铃时 Ve=1.1V,这时反向器 74LS04认为是低电平, 当无振铃脉冲信号时,还是认为是低电平, 所以振铃信号无法通过反向器。解决方法很简单, 把三极管的发射极端的下拉电阻 R4从原来的 20k改成5.1k,提升三极管的发射极电压。在毕业设计的后期,实验室有了模拟小交换机,经测试,本单元电路完全正常,振铃检测部分调试完毕。5.2.3 模拟摘挂机此部分的调试较为容易,电路接好后,用5V高电平测试之,指示灯亮,继电器吸合正常。接入模拟小交换机,控制摘机时,交换机的端口指示灯亮,反之挂机时,指示灯灭。说明此部分完全正常。 接入仿真机测试时发现: 单片机的 TXD 端不能控制模拟摘挂机部分的摘挂机。分析得出结论:可能是接口的电平不相符合。解决方法:加上一个三极管模拟开关,加上一个反向器(74LS04)进行控制隔离作用。经过接入仿真机测试表明反向器的作用很明显,于是在后面的电路设计当中, 我在许多的接口上大多使用了反向器。至此,模拟摘挂机部分调试完毕。5.2.4 控制电器控制电器这部分的外围硬件电路很容易,在调试过程中很顺利完成。 在接仿真机时,使用的是 P2口控制电器, 实验结果表明 P2口无法正常控制每个电器, 翻阅资料发现单片机 89C51的P2口没有数据锁存功能,不能保持上一个状态的数据。解决方法:把P2口控制电器改为 P1口的低四位控制电器, 改线之后控制正常, 但是新的问题出现了,原来要求控制八路的端口,现在只能控制四个电器。经过市场实际分析,一般的控制电器只要求34路即可,为了实验单片机扩展控制功能,提高本遥控装置的潜在功能, 我决定实验使用 3-8线译码器 74LS138对P1口的低四位输出数据进行译码扩展。具体电路详见前面。 在成功的扩展了控制电器的个数后,我又发现了一个新的问题: 遥控器不能同时使两路以及两路以上的电器开,即在同一时刻,遥控器只能使一路电器开启。经过仔细分析, 我发现了问题原因之所在, 那就是译码器的原理问题。 通常情况下我们认为的译码器可以扩展所能控制的电器,其实译码器只能扩展位数, 而不能使状态发生变化。例如:三位二进制000111可以控制表示三个电器、八种状态,而经过3-8线译码器译码后,可以控制八个电器,但是其状态也只有八种,如下表所示。A2 A1 A0 输出D0D7 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第