1、I基于单片机实现电话远程控制家用电器学生:XX 指导老师:XX内容摘要:目前,越来越多的住宅向着智能化、人性化的方向发展。其中家用电器的远程控制正被逐渐推广。本着低能耗、无污染、使用简单方便的原则,本文设计的是一种基于 AT89S51 单片机的远程电话控制系统。该系统是以AT89S51 为核心、通过现在的个人通信手段,实现基于 PLMN(陆基移动通信网)和 PSTN(公用电话交换网)的电话远程控制系统。根据 CCITT 及我国标准共同规定的电话远程控制系统,以公共交换电话网络 PSTN ( Public Switched Telephone Network )与公共陆地移动网络 PLMN(Pu
2、blic Land Mobile Network)通信网作为传输介质,以部分标准程控交换信令(DTMF(Dual Tone Multi Frequency)双音多频信号、振铃信号、回铃音信号等 )作为系统控制命令,使用户实现在远端通过移动电话或者固定电话发送 DTMF 双音多频信号对近端电器设备进行远程控制。本次设计的电话远程控制系统不需要再进行专门的布线,不占用无线电频率资源,从而可避免电磁污染。用户只有输入正确的密码才能控制家电,从而提高了安全性。该系统设计实用,功能灵活多样,可靠性高,操作方便,可以广泛地应用于家庭或者其它场所的智能控制。关键词:AT89S51 远程电话控制 DTMF 智
3、能家电IIThe Telephone Remote Control System for Household Electronic Appliance Base on The MicrocontrollerAbstract:Currently, more and more residential develop to the intelligence and humanity. Among them, the remote control of home appliances is being promoted. Research follows the principles of Low e
4、nergy consumption, pollution-free, easy to use. The article designed the remote telephone control system which based on microcontroller AT89S51. Basing on the PLMN and PSTN, the system which uses the core controller Single-chip microcomputer AT89S51 realizes long-distance control household appliance
5、s. The telephone control system (ITRCS) which uses the telephone net convert and voice information receives DTMF code from the telephone net, and interpret the code, the core controller controls the state of household appliances responded to the interpretation. Long distance control of telephone doe
6、s not require special wires distribution and does not take up wireless frequency resources. Electro magnetic pollution can thus be avoided. The designing of a system of longdistance control based on sound processing technology and DTMF decoding technology is presented in this paper. Only through inp
7、utting the correct password to control them, the users can control the condition of household electrical equipment, so the system security can be improved. The system is practical, and the function is flexible, and the operation is convenient with high reliability, which can be used extensive in var
8、ious kinds of control equipment to home and others field.IIIKeywords:AT89S51 Telephone remote control DTMF Household appliancIV目 录前言 11 系统设计可行性分析 31.1 总体设计分析 31.1.1 系统总体设计分析 31.2 总体方案 42 硬件单元电路设计 82.1 硬件模块 82.1.1 振铃检测电路 82.1.2 模拟摘挂机电路 102.1.3 双音解码电路 112.1.4 单片机外围电路 .153 软件设计 163.1 软件模块 163.1.1 信号音检测
9、 163.1.2 密码检测 163.2 软件设计 163.2.1 系统完整程序 174 系统应用 215 技术经济分析 236 结束语 23参考文献 25VVI1基于单片机实现电话远程控制家用电器前言二十一世纪是信息时代,各种电信新技术促进了人类文明的进步。自从1876年,Alexander Graham Bell(贝尔)发明了电话以来,世界各国的电话网络取得了长足的发展。过去十年,中国的固定电话业务也取得了举世瞩目的发展。1997年8月中国的电话交换机总容量超过1亿门,网络规模也已经位居世界第二。2004年7月,固定电话用户总数超过2.00亿户。随着通信业的发展,电话机已经走进千家万户,随着
10、现代科学技术的发展,电话远程控制的技术也越来越多的在生活中使用。电话传输线与交换机共同构成了现代电话网络,它的性能也取得了极大的进步,并且可靠性很高。遥控技术是指:在一定的距离通过一定的手段对物体实施控制,通常包含红外线遥控、超声波遥控、有线遥控和无线电遥控等。无线电遥控是指通过无线电信号对被控物体实施远距离控制。因此,无线电遥控必定会占用一部分的无线电频率资源,从而造成电磁污染;常规的有线遥控则需要专门的布线,这不可避免的会加大投资;而超声波遥控和红外线遥控则会受到距离的限制。现有的遥控方式,还有通过载波通信控制和无线寻呼实现遥控。载波方式也即是利用电力网络线传递信息,但是这种方式只能应用于
11、同一变压器、同一变电所所能覆盖的范围内。因此,也有距离问题,应用范围也是有限的。利用无线寻呼这种方式则使用已有的寻呼频率资源,所以不会占用其他的频谱。并且,限制寻呼网已经实现了全国联网,其遥控的距离基本不受限制。但该方式的被控方动作会滞后于控制方的操作,不具备实时性,而且可靠性并不是很高。本文将会介绍一种基于单片机的电话远程控制技术。本系统用于具有单片机控制的家用电器的电话遥控,用户可以通过固定电话或者手机对自己家中安装的报警器、热水器、空调等电器进行开机、停机等操作。控制示意图如图 1 所示:交换网 电话家用电器2图 1 系统控制示意图2008 年 4 月 17 日举行的中国国际家电展上,海
12、尔集团展出了自主研发的智能家电系统。有了该系统以后,你可以在下班回家的路上,用手机给家中的空调发个短信,设定温度,到家就能享受舒适的室温;给家中的电热水器发个短信,到家后就能洗上热水澡;给洗衣机发个指令,它就自动将衣物洗涤干净,到家后就能直接晾晒人们过去幻想的场景,现在已经变成了现实。但是,现在绝大多数的家庭使用的仍然是传统的家用电器,本文主要的设计就是一种可以通过电话实现远程控制传统家用电器的系统。智能家电控制系统的功能主要在于家庭的安全报警、红外集中遥控、自动抄表控制等等方面。现有的组网方式有以下两大类:无线组网和有线组网。无线组网的主要技术是家庭射频技术(HomeRF)、蓝牙技术(Blu
13、etooth)和家庭电话线网络联盟技术(HomePAN)等。而有线组网则主要利用家中的电话线、单独布置通信控制线路或者电力线载波通信进行组网。电话遥控与常规的遥控方式相比,具有一定的优越性,它不需要进行专门的布线,也不占用无线电频率资源,而且还避免了电磁污染。除此以外,因为电话线路各地都联网,可以充分的利用现有的电话网,因而遥控距离不受限制,可跨省市,甚至跨国家实现控制。电话是一种半双工通信方式。因此,它可以大大的反映出电话远程控制的优越性。操作人员可通过提示音随时随地的了解受控对象的工作状态,从而实现自己需要实现的控制。电话遥控这一课题已经有了很多的研究者,但是到目前为止,都还只是局限于实验
14、阶段,距离实际应用于日常生活中还有一定的距离,尚不能完全体现出电话遥控方式的半双工通信的特点。针对这一特点,本文进行了较大的改进,采用单片机实现智能控制,通过不同的提示音使操作者对于受控对象的工作状态的信息了如指掌,以指示操作者对受控对象进行所需操作,从而使得产品达到交互式与智能化。本作品的各项标准以及各种电器的借口都严格遵循国家有关标准,为将来的产品化提供良好的基础。电话远程控制系统接收操作方发送的 DTMF 信号,通过解码芯片对其进行解码,中央处理单元采集解码后的信号进行处理,因为电话远程控制系统通常工3作在无人的环境中,所以应该具有自动摘机、自动挂机以及复位等功能;为了满足智能化需求,该
15、系统采用 AT89S51作为中央处理器。另外,该系统的正常工作离不开电源供电电路、驱动电路等辅助电路。通过分析可知,系统主要由振铃检测电路、自动摘挂机电路、DTMF 双音频解码电路、中央处理单元AT89S51、电器控制驱动电路等组成。1 系统设计可行性分析1.1 总体设计分析电话远程控制系统使用单片机构成主要控制部分,主要的信息处理,接收各种形式的操作指令,并对各种信息进行记录均由其完成;接口电路则提供单片机与电话之间的外部接口。包括铃音检测、摘挂机控制、忙音检测、双音频DTMF 识别等。 本系统的振铃检测、模拟摘挂机、双音频解码等接口电路都具有很强的实用性。通过最简单的、最可靠的电路芯片实现
16、完善的功能。此外,系统还可以扩展增加很多功能,因此具有很好的市场前景。系统并联在电话机的两端,所以不会影响到电话的正常使用。用户使用异地电话拨通与系统并联的电话机,通过市局交换机向电话发出振铃信号,此时,振铃检测电路将会检测到振铃信号,并将该信号送给系统的中央控制单元,当装置检测到四次振铃,也就是在四次响铃后无人接电话,模拟自动摘机,进入密码检测,如果密码错误,模拟自动挂机,只有在输入正确的密码后才能选择被控制的电器,然后对电器进行开或者关的控制。用户按键产生的信号经双音多频 DTMF(Dual Tone Multi-Frequency)解码电路解码后,送入中央控制单元,中央控制单元根据解码的
17、结果通过驱动电路进行相应的动作,完成操作后返回,这是自动方式。1.1.1 系统总体设计分析通过电话网对异地的电器实现控制(开/关);控制器可以实现自动模拟摘挂机;控制器设置密码校验;自动摘挂机;4振铃音检测、计数;双音频信号解码;密码校验;控制电器开关输入信息分析;根据电话机和交换机发出的不同信号指令以及电话线各种状态的不同要求,结合实际情况对具体的单元功能模块作出软件或硬件上的不同分工,具体如下:后可输出一个方波,单片机可检测信号音在一秒内的脉冲次数,这样脉冲频率就可以计算出来,如此便可识别出信号音,从程序的结构设计上和系统的可靠性分析,最后决定选用硬件来解决双音频信号解码和振铃音检测这两个
18、功能模块。必须使用具体的硬件电路来实现自动摘挂机和电器的控制。使用软件编程方式完成密码比对、振铃音计数、输入信息分析等功能模块要比硬件电路完成来得简单,实现也很容易,所以通过编程实现。综上所述,本设计的振铃信号检测、控制电器、双音频解码、自动摘挂机等功能模块采用硬件电路实现。而振铃音计数、信息分析、密码校验等功能模块则采用软件编程完成。1.2 总体方案为完成设计要求,实现控制系统的功能,本文采用模块化设计。以AT89S51 单片机为核心,由电话通过网络经由 DTMF 解码后把控制信息送到单片机,控制相应动作,从而实现它的电话远程控制功能。它由话路系统和控制系统两大部分构成。其中,话路系统包括所
19、有的提供电话接续任务的终端和交换设备,尽量选择市场上已经有的成熟的集成电路芯片。而控制系统的作用是在需要的时候接通话路,提供语音信号传送的通路。系统框图如图 1.2-1 所示。单片机:主要工作是进行密码校对、控制摘挂机、接收控制数据和输出控制。DTMF 解码电路:专门将控制机发送的 DTMF 信号进行译码工作,将控制机发出的控制信号译为对应的 9、*、#、A、B、C、D 等二进制数。5电话接口电路:作为与电话网络连接的端口,包含振铃电路等,将控制机传来的音频信号传给解码电路,并可以将控制器提示音反馈至控制机。输出电路:作为控制输出及电话摘机。密码存储器:失电保护用户密码。控制电话机:作为控制操
20、作的平台,通过电话的数字按键输入数据经程控交换机传送至控制器。图 1.2-1 系统框图本系统选择了由 Atmel 公司生产的 AT89S51 单片机作为核心控制芯片,它的引脚如图 1.2-2 所示:AT89S51 单片机引脚功能介绍:单片机共有 40 个引脚,它们可以大致分为 4 类:电源、时钟、控制以及 I/O 引脚。电源:VCC-芯片电源,接+5V;GND-接地端;时钟:XTAL1、XTAL2 晶体振荡电路反相输入端和输出端。控制线:共有 4 根控制线:键盘单 片 机控制电路DTMF 解码电路电话接口电路输出电路密码存储器LED 显示受控电路控制电话机6ALE/PROG:地址锁存允许/片内
21、 EPROM 编程脉冲;ALE 功能:用来锁存 P0 口送出的低 8 位地;PROG 功能:片内有 EPROM 的芯片,在 EPROM 编程期间,此引脚输入编程脉冲。PSEN:外 ROM 读选通信号;RST/VPD:复位/备用电源;RST(Reset)功能:复位信号输入端;VPD 功能:在 Vcc 掉电情况下,接备用电源。EA/Vpp:内外 ROM 选择/片内 EPROM 编程电源;EA 功能:内外 ROM 选择端;Vpp 功能:片内有 EPROM 的芯片,在 EPROM 编程期间,施加编程电源 Vpp。I/O 线:AT89S51 单片机中,共有 4 个 8 位并行 I/O 端口:P0、P1、
22、P2、P3 口,共 32 个引脚。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每个引脚都可以吸收 8TTL 产生的门电流。当 P1 口的引脚第一次写 1 时,被定义为高阻输入。P0 能够作为外部程序数据存储器使用,它还可以被定义为地址/数据的第八位。在 FLASH 编程时,P0 口作为原码输入口,当 FLASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于
23、内部上拉的缘故。在 FLASH编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉7优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号
24、和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的原因。 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(外部数据存储器读选通) P3 口同时为编程校验和闪烁编程接收部
25、分控制信号。 作为输入口时 I/O 口有两种工作方式,也就是我们所说的读引脚与读端口。实际上在读端口时并不从外部读入数据,而是读入端口锁存器的内容,然后输入到内部总线,经过一系列的变换或者运算后,再被写回到端口锁存器。只有宰读端口的时候才真正地把外部的数据读入到内部总线。上面图中的两个三角形表示的就是输入缓冲器 CPU 将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1 然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置 1 端口锁存器原来的状态有可能为 0Q 端为 0Q为 1 加到场效应管栅极的信号为 1,该场效应管就
26、导通对地呈现低阻抗,此时即使引脚上输入的信号为 1,也会因端口的低阻抗而使信号变低使得外加的 1 信号读入后不一定是 1。若先执行置1 操作,则可以将场效应管截止引脚信号直接加到三态缓冲器中,以实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类 I/O 口被称为准双向口。89C51 的 P0/P1/P2/P3 口作为输入时都是准双向口。接下来让我们8再看另一个问题,从图中可以看出这四个端口还有一个差别,除了 P1 口外P0P2P3 口都还有其他的功能。 RST:复位输入。当振荡器器件复位的时候,RST 脚两个机器周期的高电平时间要得以保持。 ALE/PROG:当访问外部存储器时,
27、地址锁存允许的输出电平用于锁存地址的低位字节。在 FLASH 编程的时候,这个管脚用于输入编程脉冲。在平时,ALE端以恒定的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在
28、访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 EA/VPP:在 EA 管脚保持低电平时,在此期间外部程序存储器(0000H-FFFFH),不管内部是否有程序存储器。注意加密方式 1 时,EA 将内部锁定为RESET;当 EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。 XTAL1:内部时钟工作电路的输入及反向振荡放大器的输入。 XTAL2:来自反向振荡器的输出。9图 1.2-2 AT89S51 引脚图2 硬件单元电路设计2.1 硬件模块本作品中,为了完成部分功能模块,使用了大量的硬件电路,目的就是充分利用硬件电路
29、的可靠性、稳定性,从而保证整体电路的稳定性,而且还使用了大量的抗干扰元器件,例如:光耦合器,去耦电容等,以此提高系统的抗干扰能力。2.1.1 振铃检测电路当电话机处在静默状态时,交换机为电话线路提供约 48V 的直流电压。但是当用户被呼叫时,电话交换机会发来一个铃流信号。这个铃流信号为 253伏的正弦波,它的谐铃失真不超过 10%,电压有效值 9015V。振铃的周期为 5秒,即 1 秒送,4 秒断。在振铃电路检测到振铃信号时,以四次铃响为准,即四次振铃后无人摘机,便由单片机控制自动模拟摘机,振铃检测电路设计如2.1.1-1 所示。原理说明:C4、D1 和 R4 共同组成振铃信号变换电路,它们使
30、输入电压和电流不会太大,对后面的光电耦合器起保护作用。来电时,电话振铃信号通过电容 C4 隔直、D1 稳压二极管、R4 限流电阻输入至光电耦合器 4N25 的输入端,光电耦合器 4N25 的主要作用是隔离作用,光电耦合器是一种电信号的耦合器件,它一般是将发光二极管和光敏三极管的光路耦合在一起,输入和输出之间不可共地,输入电信号加于发光二极管上,输出信号由光敏三极管取出。在实际中,电话静默时,LED6 持续发光,但是电话来电时,LED6 会持续闪烁,但是 LED6 接地使得电压的变动范围缩小,P3.4 的电平在 0-2.1V 之间变动,导致 T0 口不能准确的计数,所以在调试中不得不去掉该指示灯
31、。本单元元器件列表:C4 为隔直电容,因为是过滤直流,滤出低频信号,而且振铃信号的电压还比较高,因此选取 10F 耐压 100V 的瓷片电容;R4 是 4N25 的限流电阻,取 33 k;10D1 为稳压二极管,选取 1N4001;U3 选取光电耦合器 4N25;R3 取 10 K;LED6 为振铃指示灯,选取黄色 5mm 发光二极管;反向器由 74LS04 中的二组反向器组成,起整流作用;图 2.1.1-1 振铃检测电路2.1.2 模拟摘挂机电路设计主要思路:国家对电话机的摘机有着明确的标准:不管是什么电话机,摘机状态的直流电阻都应该300,有“R”键的电子电话机的摘机状态直流电阻应350。
32、在挂机状态下,其漏电流5A。当用户摘机时,通过叉簧为电话机接上约 200 的负载,以使得电话线回路流过大约 30mA 的电流。当交换机检测到该 30mA 电流后就会停止发送铃流,并将线路电压变为 8-12V 的直流电压,完成接续。根据有关技术指标,模拟摘挂机电路设计如图 2.1.2-1 所示,模拟摘挂机电路主要由一个光电耦合器开关电路控制继电器的开关,继电器串联一个200 电阻,并接入电话线两端。当对振铃技术满 4 次时,单片机把 P3.1 口变为低电平,使得三极管基极电压改变,从而导通三极管,此时,继电器两端加上 5V 电压,继电器导通,200 电阻并联在电话机两端,使得回路电流变大,完成电
33、话线路的接通,整个电路实现了模拟摘机,其中 D2 二极管起反向保护的作用,在继电器断开的时候不会被反向电流烧坏。LED7 为摘机指示灯。本单元元器件列表:11R5 是摘机指示灯限流保护电阻,取 200,LED7 是摘机指示灯,取 5mm 绿色发光二极管;R7 是三极管限流电阻,取 1k;D2 二极管是起继电器反向保护的作用,取 4001;J1 是继电器控制开关,取 JRC 4001F(DC5V);R6 是摘机电阻,取 200;PNP 三极管取 2N3906;图 2.1.2-1 模拟摘挂机电路2.1.3 双音解码电路利用声音频率的不同音调来传送按键信号以取代直接拨号脉冲的方法叫做DTMF 技术。
34、DTMF 由两组频率信号叠加构成:低频组(697Hz941Hz)和高频组(1209Hz1633Hz)。设 v(t)为 DTMF 信号, vi(t)和 vh(t)分别代表选自低频组和高频组的两个信号,它们之间的关系满足:12(2.1.3-1)twBtAtvtv hihi sns低频组和高频组中都有并且只有 4 个独立的音调,这 4 个音调是依据它们之间的谐波不相关来选择的,它们的互调制信号对主信令的影响最小。DTMF 信号共有 16(2 4)种组合,其中 6 种组合(#、*、A、B、C、D)用做特别的信令,剩余 10 种组合则分别代表数字 0 到 9。电话键盘按键与 DTMF 信号的对应关系在
35、CCITT 和我国国家标准中都有明确规定,如表 2.1.3-1 所示。表 2.1.3-1 电话键盘按键与 DTMF 信号的对应关系高频组(Hz)电话键盘按键1209 1336 1477 1633697 1 2 3 A770 4 5 6 B852 7 8 9 C低频组(Hz)941 * 0 # D解码电路是整个设计的关键,它的工作情况直接决定了系统的可靠性只有在解码电路可靠的情况下,用户输入的控制指令才能被单片机识别并完成相关控制。在翻阅了大量的文献资料后,发现比较经常使用的一种解码方法是采用电话专用的双音频解码芯片完成输入双音频信号的解码。通过专门使用的集成电路的解码以后(使用集成电路不但可靠
36、性强,而且外围电路简单),信号即可转换为相应的码制信号,这样,单片机就可以直接读取。普遍使用的电话双音频解码芯片有 MT8888、MT8880、MT8870 等,在反复的论证比较以后,最后决定采用双音频解码集成芯片 MT8870 来完成此功能模块。如图 2.1.3-1 是 MT8870 音调译码器(Tone Decoder),它由 MITEL 公司开发生产,是一颗常用复频译码 IC,图中是一个完整的 DTMF 接收器,这个电路可以准确的接收 DTMF 信号。它接收了 DTMF 信号之后,内部将信号分成高频带和低频带,并把分析后的信号送至数字译码器,然后将信号输到数字译码器中,以解出按键值,接下
37、来将解出的按键值通过四条线(Q1、Q2、Q3、Q4)以二进制的方式输出到外部共享 Bus 上,其 MT8870 接脚说明如表 2.1.1-2,内部13结构如图 2.1.3-1。需要注意的是,当 MT8870 芯片 解出一个按键值并输出到外部时,它的 CID 接脚会从低态升为高态,经过一段时间以后再降为低态,因此,我们可以利用 CID 脚电平变化的特点,当侦测到此脚有讯号时便马上将Q1-Q4 接脚所产生的值读入 CPU,然后进行控制。图 2.1.3-1 MT8870 音调译码器MT8870 的输出代码(Q8Q4Q2Q1)与电话键盘上按键的对应关系如表3.1.3-2 所示:表 2.1.3-2 MT
38、8870 输出代码与键盘对应关系输出代码 输出代码 输出代码 输出代码按键 Q8Q4Q2Q1按键 Q8Q4Q2Q1按键 Q8Q4Q2Q1按键 Q8Q4Q2Q11 0 0 0 1 5 0 1 0 1 9 1 0 0 1 A 1 1 0 12 0 0 1 0 6 0 1 1 0 0 1 0 1 0 B 1 1 1 03 0 0 1 1 7 0 1 1 1 1 0 1 1 C 1 1 1 14 0 1 0 0 8 1 0 0 0 1 1 0 0 D 0 0 0 0用户在远端按键以后,系统接收到的 DTMF 信号将经过耦合电容隔直、滤波,此后 MT8870 会接收并对其进行硬件译码,输出的四位二进制数
39、据通过Q1/Q2/Q3/Q4 四个口连接到 AT89S51 单片机的 P1.0P1.3 口上, MT8870 接收到有效的 DTMF 信号,在解出正确的 BCD 数据以后,CID 端会升为高电平,CPU收到此信号后即可取走数据。CPU 把 P1 口数据读入,然后屏蔽掉高四位,并把14读入的数据保存在内部寄存器 R7 单元中,之后对读入的数据进行分析判断,从而得到远程用户输入的命令。原理简介:电路采用 MT8870 芯片作为双音多频 DTMF 信号解码芯片。MT8870 的连线如图 2.1.32 所示,其中,接在电源处的电容的作用是抗干扰。在 MT8870 的实际应用中,存在这样一个问题:MT8
40、870 的使能控制端不允许中断时,将关闭 MT8870 的 CID 端中断。有效的解决方法是,把 CID 端接入非门的一端输入,非门的另一输入端则接到不定电平端 P 即可。对 CID 的有效控制(即中断开放)为,EN=1 则 P3.2/INT0 中断允许;EN=0 时则 P3.2/INT0 中断关闭。把 IN+与 Vref 相连,通过 IN-管脚接收电话机发送过来的双音多频脉冲信号,双音多频信号先经过内部的拨号新滤波器,在滤除了拨号音信号后,经过前置放大电路的放大处理以后送入到双音频滤波器中,先把双音频信号按低音频信号、高音频信号分开,然后再经幅度检测器、高低群滤波器送至译码电路输出,经过一些
41、列的数学运算后,把解码后相对应的 8421 码通过输出端(1114 脚)输出数据。MT8870 芯片的输出数据端 Q1Q4 连接到 AT89S51 芯片的 P1 口的 P1.0P1.3,单片机 P1 口的 P1.4P1.7 已经与 0 处理,所以解码芯片输出的 4 位代码有效并且能被单片机识别。MT8870 输出代码与键盘对应关系如表 3.1.3-2,其中,A,B,C,D 4 个按键常被当作R/P,REDIAL,HOLD,HANDSFREE 等功能使用。需要特别注意的是,对于“0”号码,MT8870 输出的 8421 码是“1010”,而并非是“0000”;另外,按键“#”、“*”,在 MT8
42、870 中输出的 8421 码分别为“1100”和“1011”。MT8870 的 CID 有效端经施密特反相器后接 AT89S51 的 INT0 引脚,以确保单片机 AT89S51 可以获取有效的数据。当 MT8870 获取有效双音多频信号后,CID 引脚的电平由低变高,再反相为低,INT0 引脚检测到以后,启动外部中断,指示P1 口接收有效二进制代码。而电话线路杂音、人们的语音信号等无效的双音频信号是不会引起 MT8870 的 CID 端变化的。本单元元器件列表:IC1 是双音频解码芯片,选取 MT8870;变压器选择 1:1 音频变压器15R10 和 C6 组成滤波电路,R10 和 R9
43、组成放大电路,其中电容 C6、C7 均选择 0.1u,R9 取 220K,R10 取 33K;芯片外部晶振 Y2 选择 3.579MHz;C5 选取 0.1F;R8 是输出平衡电阻,选取 100K;反向器选取 74LS04 的一组反向器;图 2.1.3-2 双音多频解码电路2.1.4 单片机外围电路电源:单片机使用的电源是+5V 电源,其中正极接 Vcc(40 引脚),负极(地)接 GND(20 引脚)。振荡电路:一般采用外接晶振的方法为时序电路单片机提供脉冲信号,使得单片机能够正常工作。外接晶振接入 XTALI、XTALZ(18、19 脚)。有三点问题需要说明: (1)两个瓷片电容 C2 和
44、 C3 在 20 至 3OuF,与石英振荡器 Xl 组成时钟电路,为单片机提供一个频率为 12M 的稳定时钟;(2)晶振频率可以选用12MHz、11MHz、6MHz,在本设计中采用了 12MHz 的金属外壳石英晶体振荡器;(3)起振后第 18 个引脚会产生一个约为 3V 的正弦波。复位电路:任何单片机都需要有个复位的过程,然后才能正常工作,复位需要两个机器周期(约 5ms)的时间。复位电路如图 2.1.4-1(图中电容 C1 的两端并联开关,实现手动复位)。图中电阻和电容 Cl 组成按键复位电路,在按下键的时候,会有一个大于两个机器周期的复位信号产生,为单片机提供一个高电16平复位信号至 RS
45、T 引脚,使单片机复位。电阻 R2 选取 l00K。电容 Cl 选用 1u的电解电容。EA 引脚(片内程序存储器选用端):当机器复位后,PC 指针可能指向片外ROM 的 0000H 单元或者片内 ROM 的 0000H 单元,这取决于 EA 引脚是接低电平(访问外部 ROM)还是高电平(访问内部 ROM)。EA 引脚需要接到电源正极。图 2.1.4-1 单片机外围电路原理图3 软件设计3.1 软件模块经过分析比较,决定选用 AT89S51 作为控制的单片机芯片。系统软件主要功能如下:系统身份认证:这个功能的设定,是为了保证只有合法用户才能够操作系统,电话远程控制系统开始工作以后,远程用户必须先
46、输入密码,只有系统确认密码正确后才具有操作权限并对系统进行操作。3.1.1 信号音检测本单元可以使用 AT89S51 的两个计数器的外部中断方式来实现对不同信号音的计数。3.1.2 密码检测17本单元可以在系统初始化的时候,把密码放在在单片机内部存储器的一块空间内。再用户输入密码的过程中,单片机把接收到的密码写到另外的一块空间内,然后利用减法运算循环比较密码是否正确,这样就可以实现密码检测的功能了。3.2 软件设计本系统的软件设计主要分为以下几块:系统初始化、振铃检测计数、控制摘挂机、双音频信号分析处理、密码比对、控制电器等部分组成。每个功能模块对于整体设计都是非常重要的,单片机 AT89S5
47、1 通过软件程序才能很好的对外部的信息进行采集、分析、决策和执行。下面就整体设计以及每个单元功能模块分别进行说明。整体流程图如 3.21 图所示:NO YESNO YESNO YES图 3.2-1 系统流程图开始初始化是否有铃音计数器计数是否满 4次自动摘机输入密码密码是否正确?选择并控制电器挂机183.2.1 系统完整程序ORG 0000H ;从 0000H 执行主程序LJMP MAIN ;跳转到主程序ORG 0003H ;INT0 中断入口为 0003HLJMP TT1 ;有中断则跳转到 TT1ORG 000BH ;T0 中断入口为 000BHLJMP TT0 ;T0 有中断则跳转到 TT
48、0ORG 001BH ;T1 中断入口为 001BHLJMP ITIME1 ;T1 有中断则跳转到 ITIME1ORG 0100H ;从 0100H 执行主程序MAIN: ANL P1,#0FH ;将 P1 口高 4 为清 0MOV R4,#00H ;将 R4 设为标志,初始标志为 0MOV R5,#05H ;密码设置为 5 位MOV TMOD,#06H ;T0 计数器模式,方式 2MOV TH0,#09BH ;计数为 100 次MOV TL0,#09BH ;计数为 100 次MOV IE,#83H ;开 T0 和 INT0 中断SETB TR0 ;启动 T0 计数SETB IT0 ;INT0
49、 为负边沿触发LOOP: SJMP $ ;等待中断TT0: CLR P3.1 ;振铃 4 次后自动摘机MOV r3, #0c8h ;MOV TMOd,#016h ;T1 设置为计数器模式,工作方式 1,T0 为计数器模式,工作方式 2MOV TH1,#3CH ;设置 TH1 为 03CHMOV TL1,#0B0H ;设置 TL1 为 0B0H19SETB ET1 ;开 T1 中断SETB TR1 ;启动计数器 T1RETITT1:CLR EA ;关闭所有中断PUSH PSW ;PUSH ACC ;CJNE R4,#01H,PASSWORD ;标志如果不是 1,跳转到 PASSWORD 比对密码ANL P1,#0FH ;标志为 1,将 P1 口高 4 为清 0MOV A,P1 ;将按键键值写入 A 中CJNE A,#01H,LOOP1;键值若不是 1,跳转到 LOOP1 比较CPL P2.2 ;键值为 1,将 1 电器开或者关JMP QUITLOOP1:CJNE A,#02H,LOOP2;键值若不是 2,跳转到 LOOP2 比较CPL P2.3 ;键值为 2,将 2 电器开或者关JMP QUITLOOP2: CJNE A,#03h,QUIT ;