电子毕业论文-智能型电话远程遥控器_第1页
电子毕业论文-智能型电话远程遥控器_第2页
电子毕业论文-智能型电话远程遥控器_第3页
电子毕业论文-智能型电话远程遥控器_第4页
电子毕业论文-智能型电话远程遥控器_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

2013 届本科毕业设计(论文)绪 论 21 世纪是信息时代,各种电信新技术推动了人类文明的进步。自从 1876 年,Alexander Graham Bell(贝尔)发明电话以来,世界各国的电话网络发展非常迅速。进十年来,中国的固定电话业务呈现出举世瞩目的快速增长。1997 年 8 月局用电话交换机总容量突破 1 亿门,网络规模跃居世界第二位,1999 年 7 月固定电话用户总数突破 1 亿户。现代电话网络是由交换机和电话传输线共同组成,它的性能已经有了很大的进展,而且可靠性非常高。遥控技术是通过一定的手段对被控物体实施一定距离的控制,常用的方式有无线电遥控、有线遥控、红外线和超声波遥控等。无线电遥控既是利用无线电信号对被控物体实施远距离控制。无线电遥控不可避免的须占用一定的无线电频率资源,造成电磁污染;常规的有线遥控需进行专门的布线,增加了投入;而红外线、超声波遥控则受距离所限。现有的遥控方式中,还有载波通信控制手段和基于无线寻呼的遥控方式。载波方式即通过电力线传递信息,该方式只能局限于同一变电所、同一变压器所辖范围内。因此也存在距离问题,应用范围有限。基于无线寻呼的遥控方式利用了现有的寻呼频率资源,不需占用额外的频谱。而且,随着寻呼网的全国联网,其遥控的距离基本不受限制。但该方式的受控方动作滞后于控制方的操作,不具备实时性,而且不具备很高的可靠性。电话遥控作为一较新的课题与常规的遥控方式相比,显示出一定的优越性,不需进行专门的布线,不占用无线电频率资源,避免了电磁污染。同时,由于电话线路各地联网,可以充分利用现有的电话网,因此遥控距离可跨省市,甚至跨越国家。电话属双工通信手段。因此,这可以大大体现出利用电话进行遥控的更大优越性。操作者可以通过各种提示音即时了解受控对象的有关信息,从而进行进一步的操作。电话遥控这一课题目前已有涉足者,但是只是还只限于实验室阶段,因而距离实际应用,尤其是对于日常生活尚有一定的差距,并不能完全体现出电话遥控方式的双工通信特点。本作品正是针对这一点进行了较大改进,采取单片机智能控制,利用不同的提示音达到对于不同操作的提示及对受控方状态的信息反馈,从而使操作者能够及时了解受控方信息,使产品达到交互式与智能化。而且本作品的调试都是在线调试,已经在宿舍连接电话经过真正的交换机实验并且成功。本作品的各种电器接口、各项标准都严格遵循国家有关标准,为以后的产品化提供了良好的基础。本作品为突出电话遥控的信息反馈功能,并使产品达到2013 届本科毕业设计(论文)非常高性价比。故未对电话装置的其他功能进行进一步的扩展,而且所有使用的集成电路和其它元器件都尽量选择廉价的。在该作品的基础上进行了功能扩展是很方便的。譬如:使用语音芯片作为信号音反馈,提高了本作品的实用性,加上留言电路,主人不在家时客人留言。利用遥控方式可使主人很方便地在异地提取留言信息;在各路终端上接上传感器即可实现对环境声响的监听;接上自动拨码电路可定时将预定信息转至主人传呼机或特定电话,从而达到定时提醒主人的目的。本作品还可以应用于工厂企业的自动化控制等领域。 2013 届本科毕业设计(论文)第一章 总体设计电话智能遥控器由单片机构成主控部分,进行主要的信息处理,接收外部操作指令形成各种控制信号,并完成对于各种信息的记录;接口电路提供单片机与电话外线的接口。其中包括铃流检测、摘挂机控制、忙音检测、双音频 DTMF识别,及语音提示电路。系统原理框图如图 1.1 所示音频放大电路语音电路振铃检测电路自动摘机、挂机电路DTMF 解码电路单片机电话接口图 1.1 系统原理框图语音提示电路是该作品重要组成部分。为了降低本装置的造价,作品的提示音使用程序产生。语音提示电路受单片机的控制产生相应的提示音提示,并通过反馈电路反馈至电话外线。从而使操作者对电器的操作达到交互式,并能即时了解有关的信息;显示电路用于状态设置时的显示;控制部分即受控的终端,如前所述,可通过接驳不同的终端并对电话进行必要的改动从而达到功能的扩展。这一点,可使产品达到系列化。本系统的每一个接口电路(振铃检测、模拟摘挂机、语音反馈、双音频解码等)都已经经过实际的交换机在线实验,具有很强的实用性。本系统使用最简单的电路、最便宜的电路芯片实现了完善的功能。本系统还有许多可以添加的功能,具有很强的市场前景。 本装置并联于电话机的两端,不会影响到电话机的正常使用。用户通过异地的电话机拨通本装置所连接外线的电话号码,通过市局交换机向电话机发出振铃信号。本装置如果检测到振铃五次,即五次响铃后无人接,自动摘机,进入密码检测,输入正确后选择被控制电器,然后输入开或关进行遥控电器,完成后返回。2013 届本科毕业设计(论文)第二章 系统设计可行性分析2.1 总体设计分析根据电话远程智能遥控系统的具体设计要求: 通过电话网对异地的电器实现控制(开/关); 控制器可以实现自动模拟摘挂机; 控制器设置密码校验;我设计此系统必须具有以下单元功能模块: 振铃音的检测; 自动摘挂机; 双音频解码; 语音提示电路; 输入信息分析 控制电器开关; 电器状态查询 忙音检测;根据电话机和交换机发出的不同信号音以及电话线各种状态的不同要求,我结合实际情况对具体的单元功能模块作出软件或硬件上的不同分工,具体如下。理论上交换机所发出的各种信号音都可以通过软件编程而识别,即通过单片机发出的脉冲信号来检测信号音单位时间内的脉冲个数计算出其频率,从而完成信号音识别。但是从系统的可靠性和程序的结构设计上分析,我选择了硬件来解决振铃音检测、忙音检测、双音频信号解码等功能模块。自动摘挂机和电器的控制必须使用具体硬件电路来实现。振铃音计数、忙音计数、密码校验、在线修改密码、输入信息分析、电器状态查询等功能模块使用软件编程方式要比硬件电路简单的多,实现也很容易。综上所述,我设计信号音检测、自动摘挂机、双音频解码等功能模块使用硬件电路实现。而信号音计数、密码校验、在线修改密码、信息分析、电器状态查询等功能模块使用软件编程完成。下面就硬件以及软件实现的单元电路分别进行具体分析。2013 届本科毕业设计(论文)2.2 硬件模块本作品使用了大量的硬件电路完成部分功能模块,其目的就是充分利用硬件电路的可靠性、稳定性,使整体电路达到比较高的稳定性。2.2.1 振铃音的检测当用户被呼叫时,电话交换机发来铃流信号。振铃为 253 伏的正弦波,谐铃失真不大于 10%,电压有效值 9015V。振铃以 5 秒为周期,即 1 秒送,4 秒断。根据振铃信号电压比较高的特点,可以先使用高压稳压二极管进行降压,然后输入至光电耦合器。经过光耦的隔离转换,从光电耦合器输出的波形是时通时断的正弦波,经过 RC 回路进行滤波输出很标准的方波。方波信号就可以直接输出至单片机的中断计数器输入口,完成整个振铃音检测和计数的过程。2.2.2 自动摘挂机因为程控电话交换机对电话摘机的响应是电话线回路电流突然变大为约 30mA的电流,交换机检测到回路电流变大就认为电话机已经摘机。自动摘挂机电路可以通过单片机控制一个继电器的开关,继电器的控制端连接一个大约 300 的电阻接入电话线两端,从而完成模拟摘挂机。2.2.3 双音频解码此部分是整个系统的关键,它的工作情况直接决定了系统的可靠性。经过翻阅大量的文献资料,我发现使用电话专用的双音频编解码芯片进行输入双音频信号的解码,是比较常用的一种方法。使用集成电路不但外围电路简单,而且可靠性强。经过专用集成电路的解码,信号转换成为不同的码制信号,可以直接被单片机读取。一般常用的电话双音频编解码集成电路有 8870、8880、8888 等,经过反复论证比较,我决定使用双音频解码集成片 MT8870 来完成此功能模块。有关 MT8870 的详细介绍请参阅本报告的附录部分。2.3 软件模块2013 届本科毕业设计(论文)经过比较,我决定使用 AT89C51 作为控制的单片机芯片,具体有关 AT89C51的介绍不在这里累述,其详细资料请参阅本报告的附录部分。2.3.1 信号音计数本单元可以使用 AT89C51 的两个计数器的外部中断方式来实现对不同信号音的计数。2.3.2 密码检测本单元可以在系统初始化的时候,在单片机内部的存储器的内部开辟一块空间放置密码。当用户输入密码的时候,单片机把输入的密码写入另外的一块空间,然后利用减法运算比较两者是否相等。这样就可以实现密码检测的功能。2.3.3 信号分析处理本单元可以利用查表方式,也可以用简单的语句,稍微长一点的语句实现,例如 CASE 语句等。经过翻阅大量的技术资料,对具体要求实现的功能进行完整的系统分析,我认为我的电话遥控系统设计基本符合实际情况,可以完成设计任务所要求实现的基本功能。 2013 届本科毕业设计(论文)第三章 硬件单元电路设计3.1 振铃检测电路在电话线路未来铃流前,电话线路由电话交换机提供大约 48V 的直流电压。当用户被呼叫时,电话交换机发来铃流信号。振铃信号为 253 伏的正弦波,谐铃失真不大于 10%,电压有效值 9015V。振铃以 5 秒为周期,即 1 秒送,4 秒断。在本电路检测铃流信号时,以五次铃响为准,即五次振铃后无人摘机,便由单片机控制自动模拟摘机。振铃检测电路如图 3.1 所示图 3.1 振铃检测电路图原理说明:电话振铃信号通过电容 C1 隔直、D1 稳压二极管、R1 限流电阻输入至光电耦合器4N25 的输入端 1 口,C1、D1 和 R1 共同组成振铃信号变换电路,它们使输入电压和电流不会太大,对后面的光电耦合器起保护作用。光电耦合器 4N25 起的是隔1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSizeBDate: 10-Apr-2007 Sheet of File: E:PROTEL入入DESIGN EXPLORER 99EXAMPLES入入入入入入.ddbDrawn By:R3R133KR4R210KC11UC3C2100U1234B1BRIDGE1D1DIODE SCHOTTKYC3ELECTRO1P1NPNVCCB17OPTOISO12013 届本科毕业设计(论文)离作用,光电耦合器是一种电信号的耦合器件,它一般是将发光二极管和光敏三极管的光路耦合在一起,输入和输出之间不可共地,输入电信号加于发光二极管上,输出信号由光敏三极管取出。光电耦合器以光电转换原理传输信息,它不仅使信息发出端(一次侧)与信息接收并输出端(二次侧)是绝缘的,从而对地电位差干扰有很强的抑制能力,而且有很强的抑制电磁干扰能力。速度高、价格低、接口简单。 振铃信号通过光耦 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 选取光电耦合器 4N25;5、R2 和 C2 共同组成振铃信号音滤波电路,根据电话振铃的技术指标:频率25Hz 的正弦波,1 秒通,4 秒断,=RC 可以推出 0.024(S)。为了使振铃信号音输出很好的方波波形,如图 3.2 所示,计算后选取R2=10k,C2=100F,=1s;3.2 模拟摘挂机电路设计主要思路: 根据国家有关标准规定:不论任何电话机,摘机状态的直流电阻应300,有“R”键的电子电话机的摘机状态直流电阻应350。在挂机状态下,其漏电流5A。当用户摘机时,电话机通过叉簧接上约 300 的负载,使整个电话线回路流过约 30mA 的电流。交换机检测到该电流后便停止铃流发送,并将线路电压变为十几伏的直流,完成接续。2013 届本科毕业设计(论文)根据有关技术指标,模拟摘挂机电路设计如图 3.2 所示图 3.2 模拟摘挂机电路模拟摘挂机电路主要由一个三极管开关电路控制继电器的开关,继电器控制接入电话线两端的 200 电阻。摘挂机信令由单片机通过使 TXD/P3.1 口变为高电平实现。经过两个反向器驱动发光二极管 D1 指示摘机,同时改变三极管 T1 的基极电压,使 T1 处于导通状态,从而开启继电器 J1,J1 使电阻 R3 接入电话线两端。因为 R3 的电阻为 200,使回路电流变大,控制电路向交换机发出模拟摘机的信号,交换机响应摘机信号,完成电话线路接通。根据设计原理,原器件选取如下:1、R1 是摘机指示灯限流保护电阻,取 200;2、D1 是摘机指示灯,取 5mm 绿色发光二极管;3、R2 是三极管限流电阻,取 2K;4、T1 三极管是起模拟开关的作用,取 9013;5、R3 是摘机电阻,取 200。3.3 双音频解码电路1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSizeBDate: 10-Apr-2007 Sheet of File: E:PROTEL入入DESIGN EXPLORER 99EXAMPLES入入入入入入.ddbDrawn By:C11UC3C2100UR1200R22KR32001234B17BRIDGE1T2NPNT1NPNACCD1LEDB17OPTOISO12013 届本科毕业设计(论文)图 3.3 双音频解码电路原理简介:双音多频 DTMF 信号解码电路由 MT8870 主要承担。MT8870 的连线如图 3.3 所示,它的 2、3 脚接收来自电话机的双音多频脉冲信号该双音多频信号先经其内部的拨号音滤波器,滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高,低音频信号分开,再经高,低群滤波器,幅度检测器送入输出译码电路,经过数字运算后,在其数据输出端(1114 脚)输出相对应的 8421 码。MT8870 的数据输出端 Q4 Q1 连到 AT89C51 的 P1 口的 P1.4 P1.7,CPU 经 P1口识别 4 位代码。电话按键与相应译码(Q4Q1)输出见附录。其中,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 接收器的外围电路如图 3.4 所示。其中,接在电源处的电容对抗干扰有一定的作用。在实际应用中,存在这样一个问题:MT8870 的使能控制端不允许中断时,将使 MT8870的 STD 端中断关闭。其解决办法是,将 STD 端接与非门的一输入,与非门的另一1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSizeBDate: 16-Apr-2007 Sheet of File: E:PROTEL入入DESIGN EXPLORER 99EXAMPLES入入入入入入.ddbDrawn By:IN-2GS3INH5PDWN6OSC17OSC28GND9Q1 11Q2 12Q3 13Q4 14STD 15EST 16ST/GT 17VDD 18TOE 10VREF4IN+1MT8870IC1C20.1UC10.1U R1100KR2100KR3 100KJT3.579MHzVCC入入P1.0P1.1P1.2P1.3P3.32013 届本科毕业设计(论文)输入端接一不定电平端 P。当 STD 有效(即中断开放)时,P = 1 则/INT0 中断关闭;P = 0 时则/INT0 中断允许。本单元元器件列表:1、 R1 和 R2 是输入平衡电阻,取 100K,C1 隔直电容,取 0.1F;2、 芯片外部晶振选择 3.579MHz;3、 IC1 是双音频解码芯片,选取 MT8870;4、 C2 选取 0.1F;5、 R3 是输出平衡电阻,选取 100K;3.4 语音提示电路当有电话打入并且电话远程控制器摘记后,控制着偏会在语音提示电路的提示下输入密码、设定各种数值、执行开机、挂机等操作。语音提示电路采用美国公司的语音录放芯片。此芯片能够非常真实、自然地再现语音、音乐、音调和效果音,并且储存的信息在段电的情况下百年不会丢失。将需要提示的语音信息按段录入芯片后,在的控制下将录入的信息按顺序由音频输出端输出,然后经音频功率放大器放大后送到电话线路上。电路图如图所示1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSizeBDate: 14-Apr-2007 Sheet of File: E:PROTEL入入DESIGN EXPLORER 99EXAMPLES入入入入入入.ddbDrawn By:R3100R2100R11KR7R8R6R41KC4C5C6C2100UC1100U C7LEDA01 A12A23 A34A45 A56NC7 NC8A69 A710NC11 VSSD12VSSA13SP+14SP+14 SP-15VCCA 16MIC 17REF18AGC 19IN 20OUI21NC 22PLAYL 23PLAYE24XCLK 25REC 26REC27VCCD 28ISD1420C8VCCR5C32013 届本科毕业设计(论文)图 3.4 语音提示电路第四章 软件设计本系统的软 件设计主要分为系统初始化、振铃检测计数、控制摘挂机、双音频信号分析处理、控制电器、信号音提示等部分。下面,就整体设计以及每个单元功能模块分别进行说明。整体流程图:NYNY开始操作完成、挂挂机初始化关机操作语音提示输入密码摘机开机操作等待应答设置密码语音提示输入功能操作有振铃密码正确操作成功与否2013 届本科毕业设计(论文)图 4.1 整体流程图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 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 R6,#20 ;password wrongRING22:MOV R7,#20 ;1600HzRING23:LCALL DL20 ;sound=3CPL P3.0 ;delay=0.25sDJNZ R7,RING23DJNZ R6,RING222013 届本科毕业设计(论文)CLR 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=2CPL P3.0 ;delay=0.5sDJNZ R7,RING33DJNZ R6,RING32CLR P3.0MOV R7,#200RING34:LCALL DL10DJNZ R7,RING34DJNZ R3,RING31CLR P3.0RET ORG 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:LCALL DL10DJNZ R7,RING44DJNZ R3,RING412013 届本科毕业设计(论文)CLR 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 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,DL32RET4.2 密码检测部分本系统密码校验的基本原理是:在系统初始化的时候把原始密码写入地址为30H 开始的存储空间内,密码的位数“5”赋给 R7。当系统摘机时,要求输入密码,单片机把解码后的数据(使用者输入的密码)存储在 38H 开始的存储空间内。2013 届本科毕业设计(论文)然后单片机对进行两个存储地址的内容逐位进行比较,直到完全相等才能转到下一进程,有一位不同,程序就转到出错程序。 子程序代码: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,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 STOP2013 届本科毕业设计(论文)IN1:LCALL RING20 ;password wrong,try!LJMP IN4.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,READ1 ;判断输入密码是否为 5 位,否跳转 READ1LCALL RING10 ;满 5 位,发提示音:再输入新密码MOV R7,#5HMOV R1,#38HWRE: JBC 7EH,KEYCMP ;等待中断 INT1LJMP WREKEYCMP:MOV R6,#05HMOV R0,#40HMOV R1,#38HKEYCP:MOV A,R0CLR C2013 届本科毕业设计(论文)SUBB A,R1 ;A 减(R1)INC R1INC R0JZ BBB ;A 的内容如果为 0,则跳转 BBBLJMP LLBBB: DJNZ R6,KEYCP ;R6 减 1 不为 0,则跳转 KEYCP,即循环比较密码的五位MOV R1,#38HMOV R0,#30HMOV R6,#5HKEYREIN:MOV A,R1MOV R0,AINC R1INC R0DJNZ R6,KEYREIN ;R6 减 1 不为 0,则跳转,即循环比较密码的五位LCALL RING50 ;发提示音:新密码已经设置LJMP STOPRET4.4 控制电器部分本系统首先通过外围双音频解码电路解码的信息(选择电器)判断所选择的电器,然后跳转到每一个子程序,通过单片机向 P1 口的低四位发送数据,这些控制信息表示对不同的电器进行控制的控制字。为了简单表示,在这里只写出了电器“一”的控制子程序,其它子程序很相似,详见附录。程序代码:LL: LCALL RING30 ;sound:input controlMOV R7,#1H ;*MOV R1,#38HCLR 7EHWAIT0: JBC 7EH,DD ;wait INT0LJMP WAIT0DD: MOV R1,#38HMOV A,R1RR ARR A2013 届本科毕业设计(论文)RR 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;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),则跳转 QUIT12013 届本科毕业设计(论文)SETB P1.3 ;open 1CLR P1.2CLR P1.1CLR P1.0LJMP QUIT1ZZ1: CLR P1.3 ;close allCLR P1.2CLR P1.1CLR P1.0LCALL RING50 ;finshQUIT1: LJMP LL 4.5 振铃计数部分本单元是通过计数器 T0 的外部中断方式来计数的,程序代码:ORG 0090HTT0: SETB 7DHRETI2013 届本科毕业设计(论文)第五章 系统调试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 振铃音检测2013 届本科毕业设计(论文)在本单元电路制作前期,实验室中无模拟交换机,无法产生振铃信号,我只好在完成此部分的焊接后回寝室中完成其测试。将本装置的电话线两端并联在电话机两端,摘机拨打“190”,然后挂机,市交换机会回送连续的测试振铃音。经过测量,这种测试振铃音和正常的振铃信号的频率、振幅等特性都一样,只是正常的振铃信号是 1 秒通 4 秒断,而这种测试振铃音是连续的。当送测试振铃音时,用万用表的直流档测量光电耦合器 4N25 的输出端,有明显的电压,这说明可以形成中断响应信号。后接振铃指示灯,发现在送铃流 图 5.1 信号时,指示灯亮,但是灯在闪烁。分析得光耦输出端所接的滤波电容 C2 太小,于是把原来的 1F 换成现在的 100F,如右图 5.1 所示,问题得到解决。因为单片机 T0 所响应的外部中断信号是低电平有效,所以在光耦输出端接了一个开关三极管 T1 控制指示灯,在三极管的输出端接了三个反向器。经过三极管T1 的开关作用和三个反向器的反向作用,输出应该为低电平。但是在测量反向器输出端时发现:振铃指示灯亮,但反向器输出端为高电平。说明振铃信号可以通过三极管,但无法通过反向器。分析原因可能是反向器 74LS04 坏了,换之,再测,还是老问题。经过细心测量三极管的发射极电压发现:有振铃时 Ve=1.1V,这时反向器 74LS04 认为是低电平,当无振铃脉冲信号时,还是认为是低电平,所以振铃信号无法通过反向器。解决方法很简单,把三极管的发射极端的下拉电阻 R4 从原来的 20k 改成 5.1k,提升三极管的发射极电压。在毕业设计的后期,实验室有了模拟小交换机,经测试,本单元电路完全正常,振铃检测部分调试完毕。5.2.3 模拟摘挂机此部分的调试较为容易,电路接好后,用 5V 高电平测试之,指示灯亮,继电器吸合正常。接入模拟小交换机,控制摘机时,交换机的端口指示灯亮,反之挂机时,指示灯灭。说明此部分完全正常。接入仿真机测试时发现:单片机的 TXD端不能控制模拟摘挂机部分的摘挂机。分析得出结论:可能是接口的电平不相符合。解决方法:加上一个三极管模拟开关,加上一个反向器(74LS04)进行控制隔离作用。经过接入仿真机测试表明反向器的作用很明显,于是在后面的电路设计当中,我在许多的接口上大多使用了反向器。至此,模拟摘挂机部分调试完毕。5.2.4 控制电器2013 届本科毕业设计(论文)控制电器这部分的外围硬件电路很容易,在调试过程中很顺利完成。在接仿真机时,使用的是 P2 口控制电器,实验结果表明 P2 口无法正常控制每个电器,翻阅资料发现单片机 89C51 的 P2 口没有数据锁存功能,不能保持上一个状态的数据。解决方法:把 P2 口控制电器改为 P1 口的低四位控制电器,改线之后控制正常,但是新的问题出现了,原来要求控制八路的端口,现在只能控制四个电器。经过市场实际分析,一般的控制电器只要求 34 路即可,为了实验单片机扩展控制功能,提高本遥控装置的潜在功能,我决定实验使用 3-8 线译码器74LS138 对 P1 口的低四位输出数据进行译码扩展。具体电路详见前面。在成功的扩展了控制电器的个数后,我又发现了一个新的问题:遥控器不能同时使两路以及两路以上的电器开,即在同一时刻,遥控器只能使一路电器开启。经过仔细分析,我发现了问题原因之所在,那就是译码器的原理问题。通常情况下我们认为的译码器可以扩展所能控制的电器,其实译码器只能扩展位数,而不能使状态发生变化。例如:三位二进制 000111 可以控制表示三个电器、八种状态,而经过 3-8 线译码器译码后,可以控制八个电器,但是其状态也只有八种。如下表所示。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 个状态。5.2.5 双音频检测 双音频检测是整体电路一个比较重要的过程,它的调试主要围绕着双音多频解码芯片 8870 展开的。在此部分的制作的前期,我采用的芯片是 CM8870CPI。开始连接电路调试时,整体电路工作很正常,后来这块芯片使用大约一个星期左右的时间,解码电路经常会出现解码出错的情况。经过仔细检查电路,仿真机单步执行进行调试,确认硬件电路无误,诊断为 CM8870CPI 的问题。根据我的初步分2013 届本科毕业设计(论文)析认定可能是芯片老化的原因,后更换为 MT8870DE 发现本装置工作很正常,而且换上 MT8870DE 工作了将近一个月,整体电路没有发生任何解码误码情况,MT8870DE 在最后的联机调试过程中也没有出现任何问题。5.3 软件程序调试5.3.1 软件系统设置对于本系统而言,软件程序所实现的功能比较多,所以软件程序的调试显得相当的烦琐。整个程序是使用汇编语言,在 MBUG 下编写调试完成的。首先我使用的是我自己的计算机联接 MCS-51 仿真机,计算机的主频为 333MHz,但是出现了许多的问题。第一个问题就是:我所使用的 MCS-51 仿真机型号是 ME-5103,联入计算机的 25 针串行口来进行程序的读入,但是我的计算机没有 25 针串行口。观察计算机的后面,主板上只有一个 25 针并行口,是用来连接打印机的;除了这个 25 针串行口外,还有两个 9 针串行口。我只有把 MCS-51 仿真机的 25 针接口变成 9 针串行接口,才能连接计算机。后来我找到一个 25 针-9 针的转换口,可以通过他使 MCS-51 仿真机和我的计算机联接。我使用的是 Manley In-Circuit Emulator Debugger(MBUG)开发软件,使用时发现此系统可以进行正常的 Assemble(汇编),但是不能正常的进行 Load Program,执行时会出现 divide overflow error 的错误,然后就退出此编译系统,这就使得无法进行仿真机模拟实验。经过实验室多组同学的八台计算机的尝试,我们终于发现了问题之所在。实验结果表明:主频高于 233MHz 的计算机都不能正常联接 MCS-51 仿真机,而主频低于 100MHz 的计算机(有 25 针串行接口)均可以进行仿真实验。后来经过查阅有关技术资料,型号为 ME-5103 的 MCS-51 仿真机只能工作在 IBM PC/XT/AT 286/386/486 的环境下。由于实验室的低档计算机(能联接 MCS-51 仿真机)的不太多,所以我们只有把仅有的几台计算机进行优化重组,以便合理利用有限的计算机资源。我的汇编语言程序相对来说还是比较多的,调试起来可能费时,所以我先在自己的计算机上对程序的语法错误(syntax error)进行调试修改,然后又对地址覆盖(org address is less)的错误进行修改,既对每个子程序的开始地址进行仔细的调整。到此为止整个软件程序调试环境就已经配好了。2013 届本科毕业设计(论文)5.3.2 提示音信号在本单元的调试过程中,我认为此部分的结构比较简单,因此在整体程序中直接调试。首先 Ctrl+F5 单步执行,发现此部分的 RING1 子程序正常,而其它的子程序在执行时却发生死循环。我把这几个子程序单独切出来进行分析,却发现执行正常,于是我推测并不是子程序本身的结构问题。然后使用 Ctrl+F8 对整个程序单步执行(两种单步执行的区别在于 F5 直接执行子程序,即不单步执行子程序,而 F8 对于整个程序都是单步执行,包括子程序),发现 RING2 中的 R5 寄存器已经在主程序中用作判断标志位,程序已经在外部完成对其赋值。这样就导致重复赋值,因此无法跳出循环子程序,直接导致死循环。程序代码:ORG 1150HRING20:MOV R3,#03RING21:MOV R6,#20 ;password wrongRING22:MOV 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 寄存器,子程序就正常了。5.3.3 密码检测本部分的调试比较艰难,我是先调试一位密码,然后再调试五位密码。我先设定R5 为一位,即先设定一位密码作为测试。首先单步执行,发现信号音无法正常输入到单片机的 38H 地址处的存储空间。现象:计算机联机单步执行,接收振铃信号,三次自动摘机,当程序执行到等待 INT0 中断(一个小的循环程序)时,既等待输入密码时,我按下“7”(事先设定的一位密码),单片机能够正常的响2013 届本科毕业设计(论文)应中断信号,跳出循环程序,执行中断处理程序,单片机在比较比较密码时,总是出错。 在程序单步执行时,我仔细观察了每个寄存器和存储器的内容。地址为 38H的存储空间内容始终为 FFH,并没有变化,而且无论输入什么密码,寄存器 A 的内容总是恒定不变的。因为地址为 38H 的存储空间内放的是用户输入的密码,累加器 A 放的是30H 减去38H 的值,即输入密码正确时应该为 0,所以我认为单片机并没有把数据写入地址为 38H 的存储空间。经过反复调试我也没有发现问题之所在,于是我抱着尝试的想法用 F9 全部执行一次。结果很惊人,程序居然能通过密码检测部分。我仔细的思考了单步执行的每一个状态,终于发现了失败的原因。 程序单步执行到等待 INT0 中断,即要求输入密码时,按下电话机的一个按键,程序就跳出循环程序,跳到中断处理程序处处理双音频信号的输入。因为单步执行是一步一步的执行,其执行速度比较慢,等到把单片机的 P1 口高四位的双音频解码信号写入地址为 38H 的存储空间时,信号早已过去,P1 口高四位也恢复高电平,写入 P1 口高四位的数据当然是 FFH。而 F9 全程执行速度非常快,不是外部信号等待单片机的处理,而是单片机等待外部信号的输入,当然不会漏掉数据。原因找到了,解决方法也很简单:在程序单步执行时,到了等待 INT0 中断时,我按下“7”键的时间特别长,直到看见程序执行到写入地址为 38H 的存储空间后才松手。这样数据就能正确写入寄存器,当然能够通过密码检测。程序代码:HOKE1: LJMP HOKEORG 0090HTT0: SETB 7DHRETIORG 0150HHOKE: CLR 7DHSETB P3.1 ;open telephoneCLR TR0 ;close T0MOV R2,#03H ;password wrong 3LCALL RING10 ;input passwordIN: CLR 7EH ;7EH=0DTMF: MOV R7,#1H ;PASSWORD:5 R7MOV R1,#38H ;signSETB P1.42013 届本科毕业设计(论文)SETB P1.5SETB P1.6SETB P1.7WAIT: JBC 7EH,CC ;wait INT0LJMP WAITCC: MOV R7,#1H ;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 wrong,try!LJMP IN5.4 联机在线调试经过前一阶段硬件、软件的分别调试,本装置的制作也到了最后的冲刺阶段,那就是联机在线调试。联机在线调试所用到的设备:1、 MCS-51 仿真机一台;2、 T

温馨提示

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

评论

0/150

提交评论