简易家用电器远程遥控器的设计_第1页
简易家用电器远程遥控器的设计_第2页
简易家用电器远程遥控器的设计_第3页
简易家用电器远程遥控器的设计_第4页
简易家用电器远程遥控器的设计_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

简易家用电器远程遥控器的设计(附电路图及源程序)简易家用电器远程遥控器的设计(附电路图及源程序)2011届毕业生毕业论文题目:简易家用电器远程遥控器的设计院系名称:信息科学与工程学院专业班级:电子信息科学与技术级班学生姓名:学号:指导教师:教师职称:20年6月3日摘要随着社会的发展和科技的进步,越来越多的家用电器进入了人们的生活,这些家用电器给人们的生活带来了很多的方便和享受,同时随着电话在家庭的普及,电话机的功能将进一步得到开发和利用。利用电话实现家用电器遥控是家电未来的发展方向之一。本文设计的是一种基于AT89C51单片机的远程电话控制系统。控制系统是以单片机AT89C51为核心、基于电话网络开发的家用智能电话控制电器。利用电话网传输数字和语音信息,远程控制部分接收电话网发送来的DTMF信号,对其进行解码,解码后由中央处理器AT89C51根据解码信息控制家用电器;本系统设计实用,功能灵活多样,可靠性高,操作方便,可以广泛地应用于家庭或者其它场所的智能控制。该系统通过嵌入式的智能语音提示,突出的语音提示功能和密控制系统,可使操作者根据各种提示音及时了解受控对象的有关信息。系统可实现通过发出语音命令用电话远程控制多个家电,用户可以查询家电状态,提供密码功能,只有输入正确的密码才能控制家电,从而提高了安全性。SummaryofhouseholdappliancesremotecontroltothedesignofthetextAbstractWiththedevelopmentofscientifictechnology,anincreasingnumberofhomeapplianceshavecomeintopeople'sdailylives.Thesehomeapplianceshavebroughtinmuchconvenienceandenjoymenttopeople'slife.Thefunctionoftelephoneswillbefurtherutilizedanddevelopedalongwiththepopularizationoftelephones.Homeapplianceswillprobablybecontrolledbythetelephoneusingtheremotecontroltechniqueinthefuture.ThearticledesignedtheremotetelephonecontrolsystemwhichbasedonmicrocontrollerAT89C51.Basingonthetelephonenet,thesystemwhichusesthecorecontrollerSingle-chipmicrocomputerAT89C51realizeslong-distancecontrolhouseholdappliances.Thetelephonecontrolsystem,whichusesthetelephonenetconvertandvoiceinformationreceivesDTMFcodefromthetelephonenet,andinterpretthecode,thecorecontrollerAT89C51controlsthestateofhouseholdappliancesrespondedtotheinterpretation.Thissystemispractical,andthefunctionisflexible,andtheoperationisconvenientwithhighreliability,whichcanbeusedextensiveinvariouskindsofcontrolequipmenttohomeandothersfield.Thedesigningofasystemoflong-distancecontrolbasedonsoundprocessingtechnologyandDTMFdecodingtechnologyispresentedinthispaper.Byusingsoundcommandsofsoundrecognitiontechnology,thissystemrealizesitscontrolofhouseholdelectricalappliancesthroughtelephonenetworksandsorealizestheintelligentlycontroloftheminresidence.Theembeddedandintelligentsoundindication,itsoutstandingsoundfunctionofpromptanditscodecontrolsystemenabletheoperatorstotimelyobtaintherelativeinformationofthecontrolledobjectsthroughindicatedsounds.Thesystemcanusetelephonetocontrolmanyhouseholdelectricalappliancesinlongdistancethroughutteringsoundcommandsandprovidesthecodesafeguardfunction.Onlythroughinputtingthecorrectpasswordtocontrolthem,theuserscancontroltheconditionofhouseholdelectricalequipment,Sothesystemsecuritycanbeimproved.Keywords:MCUTelephoneRemotecontrolDTMF目录摘要IAbstractII绪论11.1课题背景11.2本设计的任务21.3系统总体设计2系统方案和主要芯片的选择52.1系统整体方案52.2主要芯片选择5系统硬件设计133.1振铃检测和模拟摘机133.2声音监听和语音提示电路143.3单片机控制和密码存储电路153.4DTMF检测电路163.5继电器控制电路174.系统软件设计194.1系统软件设计基本思路194.2定时中断子程序204.3MT8870中断子程序215.系统的调试235.1整体系统调试235.2硬件及软件调试23总结24致谢25参考文献26附录一:元器件清单27附录二:电话远程控制器原理图28附录三:电话远程控制器PCB图29附录四:电话远程控制器程序30绪论1.1课题背景20世纪90年代初,美国、欧洲等经济比较发达的国家先后提出了“智能住宅”的概念[1]。基本思想是:将家庭中各种与信息相关的通信设备家用电器和家庭保安装置通过家庭总线技术连接到一个家庭智能化系统上,以进行集中的或异地的监视控制和家庭事物性管理,并保持这些家庭设备与住宅环境的和谐及协调口。因此,住宅智能化即是通过家庭总线这个通信网络,把住宅的安全防范系统,能源管理系统,公共服务系统,信息系统集成起来。且通讯线路高速发展,所以利用现有的通讯线路对家中的设备或电器进行控制,已成为未来家居自动化发展的趋势。远程电话控制有其优越性,利用电话进行远程控制不需要专门布线,不占用无线电频率资源,不受距离和环境影响,可跨省市、甚至跨越国家进行远程控制[]。所以设计一种远距离电话控制的电路,必然给人们的生活带来诸多方便。用手机远距离控制家用电器智能化家庭信息中心平台已成为国家“八六三”计划重点课题口。目前家庭的网络化是住宅的热点[]。国外的同类产品的性能虽然很好,但是其价格很难让中国百姓所接受,而国内的系统开发商、房地产开发商只青睐于新建住宅,而对旧有住宅的网络化需求关注不够。问题的症结在于住宅内部及其与外界信息交换的通信网络。电力线载波和无线通信可做为住宅内部通信手段,但电力线载波通信的可靠性较差,无线通信的价格偏高,故应用较少,目前主流产品均采用单独布线的通信方式,但对已建住宅,不免会使重新布线困难重重。由于DTMF双音多频编码通信技术的发展,使得借助低压电力线进行数据通信成为可能[]。电话远程控制器主要接收电话线上传来的控制家电的信息,译码后经并行通信向智能控制器发控制家电指令;接收由智能控制器传来的报警或求援信息(经并行通信),自动拨号(可由键盘预先设置)后,以语音形式将信息传送给用户或直接报警。都是在线调试,已经在宿舍连接电话经过真正的交换机实验并且成功。本的各种电器接口、各项标准都严格遵循国家有关标准,为以后的产品化提供了良好的基础。家庭网络系统主要由电话远程控制器、智能控制器、一些功能模块组成。电话远程控制器主要接收电话线上传来的控制家电的信息,译码后经并行通信向智能控制器发控制家电指令;接收由智能控制器传来的报警或求援信息(经并行通信),自动拨号(可由键盘预先设置)后,以语音形式将信息传送给用户或直接报警。电话远程智能遥控系统的具体设计要求:频DTMF图1.1系统总体框图系统主要由AT89C51单片机、DTMF解码芯片MT8870和语音芯片ISD2560组成。AT89C51单片机完成电话机振铃信号次数的检测、控制和加密。此系统具有以下单元功能模块:由于采用PLC技术和Web服务器实现家电控制价格昂贵一般人承受不了,且用电话实现家电控制解决了电力线载波通信的可靠性较差,无线通信的价格偏高以及布线困难的问题,使得借助低压电力线进行数据通信成为可能,而且开发周期短。所以我选择利用电话实现家电控制。该系统利用遍及千家万户的电话线来传输信息,这是目前可以实现住宅内与住宅外信息交换最有效的方法。主要应用于电话遥控控制的家用电器,用户在户外可通过任意一部双音多频电话包括手机、电话分机,根据语音提示可以对各种电器(如电饭锅、微波炉等电器)进行远程控制,使人们的生活更加便捷与享受。该系统可以使用单片机配合新型的DTMF解码芯片和语音电路来实现了电话对家用电器的远程控制。在使用时只需先将电话线的进线插入本装置,用户使用本装置时只要拨打家中的电话,装置检测到有铃流可以设定30S以后还有铃流,装置发出模拟摘机信号,并控制语音处理电路提示用户输入密码预先设定,用户听到这一提示音后就在自己所使用的双音频电话机或手机上按下密码所对应的数字键即可,密码所对应的双音频信号经电话线传给双音频接收发送电路,检测译码,传给主控单元,识别正确后,语音芯片再提示用户进行控制家用电器的操作,最后,主控单元把控制家电的信息译码,经并行通信传给智能控制器,由控制器执行控制家电的操作。电话智能遥控器由单片机构成主控部分,进行主要的信息处理,接收外部操作指令形成各种控制信号,并完成对于各种信息的记录;接口电路提供单片机与电话外线的接口。其中包括铃流检测、摘挂机控制、忙音检测、双音频DTMF识别,及语音提示电路。单片机就是在一块芯片上集成了CPU、RAM、ROMEPROM或EEPROM、时钟、定时/计数器、多种功能的串行和并行I/O口。如Intel公司的8031系列等。除了以上基本功能外,有的还集成有A/D、D/A,如Intel公司的8098系列。概括起来说,单片机具有如下特点:具有位处理能力,强调控制和事务处理功能价格低廉。如低档单片机价格只有人民币几元钱。开发环境完备,开发工具齐全,应用资料众多。后备人才充足。国内大多数高校都开设了单片机课程和单片机实验。本系统我们采用美国ATMEL公司生产的AT89C51。AT89C51的介绍AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的Flash只读程序内存和128bytes的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置用8位中央处理器和Flash存储单元,功能强大的AT89C51单片机可以提供许多高性价比的应用场合,可灵活应用各种控制领域。其引脚如图2.1所示。AT89C51主要性能参数:1、 与MCS-51产品指令系统完全兼容;2、 4K字节可反复擦写Flash闪速内存;3、 1000次擦写周期;4、 全静态操作:0Hz,24Hz;5、 三级加密程序内存;6、 128X8字节内部RAM;7、 32个可编程I/O口线;8、 2个16位定时、计数器;9、 6个中断源;10、 低功耗空闲和掉电模式。AT89C51是标准的40引脚双列直插式集成电路芯片。它具有32个外部双向输入/输出(I/O)端口,2个外部中断口,2个16位可编程定时计数器,1个全双工串行通信口。按其功能可分为电源、时钟、控制和I/O接口四大部分:VCC:芯片主电源,外接+5V。GND:电源地线。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。ALE/:地址锁存控制信号。当访问外部内存时,地址锁存允许输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。:外部程序内存读选信号。在由外部程序内存取指期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。/VPP:访问程序内存控制信号。当信号为低电平时,只访问片外程序内存;而当为高电平时,则对ROM的读操作是从内部程序内存开始,并可延续至外部程序内存。RST/VPD:复位/掉电保护信号输入。当输入的复位信号延续2个机器周期以上高电平即为有效,用以完成单片机的复位操作。4、I/O引脚P0口(P0.0,P0.7):8位双向并行I/O接口。扩展片外内存或I/O口时,作为低8位地址和8位数据总线的分时复用接口,它为双向三态。P0口可带8个TTL负载电流。P0口作为I/O输出口使用时,由于P0口为开漏输出,必须外接上拉电阻才能有高电平输出。P1口(P1.0,P1.7):8位准双向并行I/O接口。P1口每一位都可以独立设置成输入输出位,P1口可以驱动4个TTL电路。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口(P2.0,P2.7):8位准双向并行I/O接口。扩展外部数据、程序内存时,作为高8位地址输出端口。P2口可以驱动4个TTL电路。P3口(P3.0,P3.7):8位准双向接口并行I/O。除了与P1口有一样的I/O功能外,每一个引脚还兼有第二功能。如表2-1所示。P3口的第二功能信号都是单片机的重要控制信号,因此,在实际使用时,先按需要选用第二功能信号,剩下的才以第一功能的身份作为数据位的I/O使用。P1、P2、P3口片内均含有固定的上拉电阻,故称为准双向并行I/O接口。P0口片内无固定的上拉电阻,由两个MOS管串接,既可开路输出,又可处于高阻的“悬空”状态,故称为双向三态并行I/O接口。表2.1P3P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXDRXDT0T12.2.2DTMF芯片概述8870芯片它集成了陷波滤波器和数字解码功能。在滤波器部分,使用了开关电容技术;解码部分,用数字计数的方法检测所有16种DTMF音频对,并将它们编成4bits的码。通过在芯片上放置差分输入放大器,时钟晶振和可锁存的三态输出,可以使外围元器件最少。本系统的解码芯片我们采用MT8870OMT8870是一个完整的DTMF接收解码电路。和其它电路,如LCD驱动电路一起,可实现CALLERID功能。它集成了陷波滤波器和数字解码功能。在滤波器部分,使用了开关电容技术;解码部分,用数字计数的方法检测所有16种DTMF音频对,并将它们编成4bits的码。通过在芯片上放置差分输入放大器,时钟晶振和可锁存的三态输出,可以使外围元上件最少。信号经过输入放大,过滤掉噪声,再被由6阶高频组带通滤波器和8阶低频组带通滤波器组成的陷波滤波器滤出DTMF信号,然后经过平滑滤波,再由过零检测器将模拟信号转换成数字信号,进入数字部分。信号在数字部分分为两路,一路直接送到频率检测部分,分别对信号进行高频和低频检测。如果输入信号频率在预先设置的范围内,则将检测结果送到编码部分进行编码,并等待D触发器的同步输出信号;如果输入信号频率不在预先设置的范围内,检测结果维持为0不变。另一路则送到频率平均算法部分,分别经过4,8分频,以初步检测信号的持续时间,将诸如噪声之类的干扰消除掉;同时,进一步设置更为严格的频率检测范围。如果信号通过了检测,就使ESt端输出高电平,通过外围RC回路对St端充电R,C的值可以根据不同的工业标准进行选择,如果ESt端高电平持续时间足够长,使充电后VcVtst2(35V,这是通过比较器比较,这就意味着所检测的信号满足DTMF的工作标准,则使引导逻辑部分的输出同步脉冲到编码部分,使4位编码输出,经过延迟单元,锁存进三态输出单元,输出正确的码;同时,引导逻辑部分产生StD端高电平信号,同时使GT维持儿高电下。如果充电时间不够长,这就是说即使被检测信号的频率在DTMF频率范围内,但它的持续时间不足以满足DTMF的工业标准,输出同步脉冲保持为0,编码结果不输出。本系统采用的是美国ISD公司的2500芯片,按录放时间60秒。ISD2500系列和1400系列语音电路一样,具有抗断电、音质好,使用方便等优点。它的最大特点在于片内E2PROM容量为480K1400系列为128K,所以录放时间长;有10个地址输入端1400系列仅为8个,寻址能力可达1024位;最多能分600段;设有OVF(溢出)端,便于多个器件级联。对于存储芯片的选择,我们选择AT24C02ATMEL公司的低功耗CMOS串行EEPROM°256X8位存储空间,(2.55.5V)(10000次)(10ms)AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89C51试验开发板上它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C51试验开发板上和单片机的P3.5连接。第6脚SCL为串行时钟输入线,在AT89C51试验开发板上和单片机的P3.6连接。SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。第7脚需要接地。24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。1(I2C总线的基本结构采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。2(双向传输的接口特性传统的单片机串行接口的发送和接收一般都各用一条线,如MCS51系列的TXD和RXD,而I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。当某个器件向总线上发送信息时,它就是发送器也叫主器件,而当其从总线上接收信息时,又成为接收器也叫从器件。主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件°I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。在总线上,既没有中心机,也没有优先机。总线上主和从即发送和接收的关系不是一成不变的,而是取决于此时数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能°I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。3(I2C总线上的时钟信号在I2C总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。4(数据的传送在数据传送过程中,必须确认数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号;当SCL线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。I2C总线的数据传送格式是:在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位R/W。方向位为“0”表示发送,即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读信息。开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收信息还是发送信息则由第8位R/W确定。在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。送过程如每次都是先传最高位,通常从器件在接收到每个字节后都会作出响应,即释放SCL线返回高电平,准备接收下一个数据字节,主器件可继续传送。如果从器件正在处理一个实时事件而不能接收数据时,(例如正在处理一个内部中断,在这个中断处理完之前就不能接收I2C总线上的数据字节)可以使时钟SCL线保持低电平,从器件必须使SDA保持高电平,此时主器件产生1个结束信号,使传送异常结束,迫使主器件处于等待状态。当从器件处理完毕时将释放SCL线,主器件继续传送。当主器件发送完一个字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,在此时钟内主器件释放SDA线,一个字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。I2C总线还具有广播呼叫地址用于寻址总线上所有器件的功能。若一个器件不需要广播呼叫寻址中所提供的任何数据,则可以忽略该地址不作响应。如果该器件需要广播呼叫寻址中提供的数据,则应对地址作出响应,其表现为一个接收器。5(总线竞争的仲裁总线上可能挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况。例如,多单片机系统中,可能在某一时刻有两个单片机要同时向总线发送数据,这种情况叫做总线竞争°I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性。由于是利用I2C总线上的信息进行仲裁,因此不会造成信息的丢失。6.I2C总线接口器件目前在视频处理、移动通信等领域采用I2C总线接口器件已经比较普遍。另外,通用的I2C总线接口器件,如带I2C总线的单片机、RAM、ROM、A/D、D/A、LCD驱动器等器件,也越来越多地应用于计算机及自动控制系统。系统硬件设计本系统使用了大量的硬件电路完成部分功能模块,其目的就是充分利用硬件电路的可靠性、稳定性,使整体电路达到比较高的稳定性。此电路主要包括电话线路摘机检测和线路振铃信号的检测电路,语音提示电路,单片机控制和密码存储电路,DTMF检测电路及电器驱动电路。振铃检测的功能是检测有无铃流,当用户被呼叫时,电话交换机发来铃流信号。振铃为25?3HZ的正弦波,谐铃失真不大于10%,电压有效值90?15V。振铃信号以5秒为周期,即1秒送,4秒断。振铃检测电路如图3.1所示。P3.7是振铃信号检测端,根据振铃信号电压比较高的特点,可以先使用高压稳压二极管进行降压,然后输入至光电耦合器。经过RC回路进行滤波,输入给光电耦合器的波形,经过光电耦合器的隔离转换输出很标准的方波。方波信号就可以直接输出至单片机的端口,完成整个振铃音检测和计数的过程。模拟摘机电路的功能是当电话振铃到一定时间后接通电话,其电路如图3.1所示。如果电话线路上出现了振铃信号,90VPP的振铃电压使得光电耦合器U2输出端按振铃频率导通和截止,单片机在每次振铃信号结束后进行振铃次数计数,并将单片机振铃次数计数器中的数据与已经设定的振铃摘机数据比较,两者相等P3.1下拉,光电耦合器U1导通,则Q1和Q2也导通,从而实现模拟摘机。图3.1振铃检测与模拟摘机电路监测电路是为了监测电话机是否模拟摘机,电路如图3.1所示。电路中的DW1、R2、R13、C6、Q3组成电话线路摘机检测,平时电话线路电压使得DW1击穿,使Q3的基极电位为高,三极管导通,P3.0脚被下拉成低电平,此时单片机主要任务是监测P3.0脚的电压升高变化。当该系统接收到振铃信号,且达到规定的振铃次数后模拟摘机,电话线路上电压均由原来的48V下降到7-8V,此时DW1截止,P3.0被本身的上拉电阻上拉成高电平。单片机测试到P3.0脚的高电平后,开启外部中断0,单片机随时接收MT8870发出的选通信号,单片机根据选通信号的到来及时接收MT8870数据端11-14脚上的双音多频信号数据。语音提示电路是此系统的重要组成部分,能提供给用户直观的的反馈信息,为了使系统更加人性化,语音提示直接采用了语音芯片,将一些操作规则事先存于芯片中,根据不同的DTMF信号产生不同的提示信息,从而来完成控制整个系统的目的,由于需要存储的信息容量比较大,电路采用了ISD2560,此芯片可录一分钟的语音信息,对本系统以足够使用,电路如图3.2所示。声音监听和语音提示都由P3.6控制,声音信号是由MIC话筒产生的,而语音信号是由ISD2560语音芯片输出的。当P3.6为高电平时,三极管Q6截止,因此对声音信号和语音信号没有放大功能;当P3.6为低电平时,三极管Q6导通,对信号有放大作用,此时可以监听声音或者自动语音提示。语音提示电路包括语音芯片及外围电路,语音放大反馈回路,反馈信息由单片机控制,2500系列最多可分为600段,只要在分段录/放音操作前不少于300纳秒,给地址A0~A9赋值,录音及放音功能均从设定的起始地址开始,录音结束由停止键操作决定,芯片内部自动在该段的结束位置插入结束标志(EOM);而放音时芯片遇到EOM标志即自动停止放音。使用操作模式时需要注意两点:1、 所有操作模式下的操作都是从0地址开始,以后的操作根据模式的不同,而从相应的地址开始工作。当电路中录音转放音或进入省电状态时,地址计数器复位为0。2、 操作模式位不加锁定,可以在MSB(A8、A9)地址位为高电平时,CE电平变低的任何时间执行操作模式操作。如果下一片选周期MSB(A8、A9)地址位中有一个或两个变为低电平,则执行信息地址,即从该地址录音或放音,原来设定的操作模式状态丢失。本电路单片机采用了AT89C51作为控制芯片,并采用EEPROM作为密码的存储。为了减小电路的体积及单片机I/O口,存储器采用了24C02,有2K的存储空间,当系统掉电后密码也不会丢失。密码存储电路如图3.3所示。DTMF检测电路此部分是整个系统的关键,它的工作情况直接决定了系统的可靠性。DTMF编、解码方式在电话拨号系统中应用非常广泛,其突出的优点是抗干扰能力很强。经过翻阅大量的文献资料,发现使用电话专用的双音频编解码芯片进行输入双音频信号的解码,是比较常用的一种方法。使用集成电路不但外围电路简单,而且可靠性强。经过专用集成电路的解码,信号转换成为不同的码制信号,可以直接被单片机读取。一般常用的电话双音频编解码集成电路有8870、8880、8888等,经过反复论证比较,决定使用双音频解码集成片MT8870来完成此功能模块。DTMF检测电路如图3.4所图3.4DTMF检测电路P3.2为单片机的中断引脚,当MT8870接收来自电话线的双音多频信号并准备好输出时,产生中断信号。MT8870的2、3脚接收来自电话机的双音多频脉冲信号,该双音多频信号先经其内部的拨号音滤波器,滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高、低音频信号分开,再经高、低群滤波器,幅度检测器送入输出译码电路,经过数字运算后,在其数据输出端(11-14脚)输出相对应的8421码。MT8870的数据输出端Q1-Q4连到AT89C51的P1口的P1.0-P1.3,CPU经P1口识别4位代码。电话按键与相应译码(Q4-Q1)输出见表3-1。其中,A,B,C,D4个按键常被当作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.1所示。表3.1DTMF数据输出表低通(HZ高通(HZ数字OED4D3D2D169712091HLLLH69713362HLLHL69714773HLLHH77012094HLHLL77013365HLHLH77014776HLHHL852TOC\o"1-5"\h\z12097HL H H H 852 13368H H L L L85214779 H H L L H 9411336 0 H H L HL9411209* H H L H H 9411477 # H H H LL6971633 A H H H L H7701633 B H H HHL8521633CHHHHH9411633DHLLLL--ANYLZZZZ3.5继电器控制电路电器控制可采用继电器,可控硅等来控制强电的通与断,为了达到电话机能控制家用电器的开关作用,此设计采用了继电器,一共设定了两路继电器开关,电器控制电路如图3.5所示。图3.5电器控制电路继电器的开关由单片机控制,并可设定延时开延时关的功能。在系统中还设置了三个当地按键,其中两个控制两路继电器的开和关,另一个用于复位初始密码的,当用户忘记自己设定的密码时,可以用此按键进行密码的复位,初始密码为123456。系统软件设计4.1系统软件设计基本思路本系统反应软件主要完成各种状态的检测以及数据的发送和接收工作,程序的基本流程如图4.1所示。图4.1系统软件流程图为提高控制系统的可靠性、可维护性和编程的效率性,控制系统的软件采用模块化结构,用C语言编写,简洁、明了。在硬件的基础上,智能型电话遥控器的所有功能都是由软件实行的,通过软件编程可以控制电器的开关、延时开关、声音监听、密码修改和语音提示等等。因此,电路的设计中,软件编程也起到了关键性的作用。软件设计包括振铃检测、模拟摘机、语音提示、密码存储、各功能操作、8870中断作这些模块。在图4.1系统软件流程图中,功能操作包括了很多的功能,如图4.2所示。图4.2系统功能图4.2定时中断子程序在软件编程中,需要考虑到电路中中断的使用。智能型电话遥控器系统里用到了一个定时中断。定时中断是用于两路电器延时开和关时间的计时,50ms中断一次,电器的延时时间最小单位是分,延时开和关都有计数值,当计数值减为0时,对电voidtimer0interrupt1using1TL00xb0;TH00x3c;dlycount1--;ifdlycount10dlycount11200;ifopencount1!0opencount1--;ifopencount10p240;ifopencount2!0opencount2--;ifopencount20p250;ifclosecount1!0closecountl--;ifclosecountl0p241;ifclosecount2!0closecount2--;ifclosecount20p251;if!opencount1|opencount2|closecount1|closecount2TR00;4.3MT8870中断子程序在软件编程中还用到一个外中断,外中断是用于MT8870DTMF解码芯片的,当DTMF信号解码成功后,解码芯片会产生一个高电平,提示单片机已经解码成功。voidint0interrupt0using1uchari,j,k;k0;datP1;datdat&0x0f;ifallow1function;ifallow0count1++;ifcount17ifdat10data1[count1-1]0;elsedata1[count1-1]dat;elseifdat0x0cfori0;i6;i++ifpassward[i]data1[i]k++;_nop_;ifk6allow1;count10;i0;j0;k0;//密码输入正确play5;elseallow0;j++;i0;k0;count10;ifj1play1;ifj2p311;j0;//密码输入错误两次则挂机系统的调试本装置的调试主要分为硬件调试、软件调试和联机调试等三大部分。经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,我是首先完成单元功能模块的调试,然后进行系统调试,整体上与硬件调试的方法差不多。联机调试是最重要的一部分,同时也是本装置成功的关键。有许多新问题都不是很容易解决的。V直流电源一个数字万用表一个电话线?两根SmartPROX5编程器一个PC机一台5.2硬件及软件调试由于采用单片机程序控制,所以硬件调试工作量不大,只要保证硬件电路的电源和时钟、复位能正常就行。首先完成DTMF双音多频信号解码和振铃信号检测电路的调试。第一步:检查实验电路的焊接是否正确,用万用表检查是否有短路和断路的地方。第二步:连接好电源,静态检查MT8870芯片和AT89C51芯片的电源是否正常。AT89C51芯片的时钟和复位是否正常,振铃电路能否检测到振铃信号。第三步:用SmartPROX5编程器将目标下载到AT89C51单片机中,然后利用手机(或电话机)发送的DTMF信号,看是否能成功的解码。不断的检查硬件和程序,找出原因,解决问题。从课题的选择到项目的最终完成,老师都始终给予我细心的指导和不懈的支持师文庆张智勇陈用(基于DTMF与单片机的电话远程和红外近程测控系统[J](测控技术与仪器仪表(2007吕仁礼,周金和,李茂详(电话DTMF数据收发模块的设计[J](电子技术应用(1998,4:46,48。李艳雄,汪鲁才(电话报警及远程控制系统的设计[J](现代电子技术2005,13:70-73。[4]姜凤武(基于AT89C51单片机的家用电器电话遥控装置[J](自动化技术与应用(2006,(08):94,97。张建辉(基于单片机的家电远程控制系统设计[J](苏州科技学院学报工程技术版(2006,(02):14,17。曹建平(利用电话的“有线+无线”远程控制系统[J](南京工业职业技术学院学报(2002,(01):13,16。李雪梅,李秋红(AT85C51单片机在电话远程控制器中的应用[J](现代电子技术(2006,20(4):36,41。谢孝良(用AT89C2051实现电话远程控制家用电器[J](单片机与嵌入式系统应用(2003,(01):24,27。杨为理(现代通讯集成电路应用技术手册[M](电子工业出版社,2002,1:25,28。李广地,朱月秀,王秀山(单片机基础[M](北京航空航天大学出版社,2005,(02):23,27。张志柏(基于单片机的家用电器远程电话控制系统的实现[J](常州信息职业技术学院学报(2006,(01):30,32。李华(MCS-51系列单片机实用接口技术[M](北京航空航天大学出版社。李传南(单片机与DTMF信号收发芯片MT8870的直接接口设计[J](电子与自动化(2002.2:30-35。张大明(单片机控制实训[M](机械工业出版社2007,234,258Austin(DTMF-RD(.silabs。AtmelCorporation(AT89C518-bitMCUwith2KBytesFlash。like。Neaman(SemiconductorandDevices:BasicPrinciples[M](3rdEd(McGrawHillInc2004:449-522。附录三:电话远程控制器PCB图附录四:电话远程控制器程序/**********************************************用户头文件************************************************/#include#include#include/**********************************************宏定义************************************************/#defineucharunsignedchar#defineuintunsignedint#defineI2CReadAdr0xA1//AT24C02写地址,格式为:命令1010+器件3位地址+读/写。#defineI2CWriteAdr0xA0//AT24C02读地址/**********************************************管脚定义************************************************/sbitI2CSCKP1"6;//24C02时钟信号sbitI2CSDAP「7;//24C02数据信号sbitHoldTestP3”0;〃模拟摘机检测端,为1时处于摘机状态sbitHoldOnP3”1;〃模拟摘机控制端,为0时摘机sbitControllP2”4;//继电器控制端sbitControl2P2"5;//继电器控制端sbitRingIntP3"7;//振铃信号检测端sbitISDPRP2"6;//语音录/放控制端0为录,1为放sbitISDPDP0"7;//芯片低功耗状态控制1为低功耗sbitKEY1P2"0;//当地操作按键1sbitKEY2P2"1;//当地操作按键2sbitKEY3P2"2;//当地操作按键3sbitISDEOMP2"7;//录放音结束信号输出sbitISDCEP0"6;//芯片片选sbitVoiceEnP3"6;//监听控制端/**********************************************全局变量************************************************/ucharGRingCount;//振铃次数计数ucharallow;uchardat;uchardat1;ucharopen;ucharclose;uchara;uintdlycount;uintdlyGRingCount;uintopenGRingCount;uintopencount2;uintcloseGRingCount;uintclosecount2;〃延时计数值ucharucGPassward[6]0x00,0x00,0x00,0x00,0x00,0x00;//初始密码为123456,存储在24C02中uchardata1[6]0x00,0x00,0x00,0x00,0x00,0x00;//输入密码暂存ucharcodeucGISDAddr[9]//代码,存储于FLASH中,语音芯片录音段其始地址0x40,〃录音第一段0x40:请输入密码;0x49,〃录音第二段0x49:密码错误,请重新输入;0x50,〃录音第三段0x50:1开;0x54,〃录音第四段0x54:1关;0x58,〃录音第五段0x58:2开;0x5c,〃录音第六段0x5c:开电器1请按1,关电器1请按2,开电器2请按3,关电器2请按4,延时开请按5,延时关请按6,开监听请按7,关监听请按8,修改密码请按9,状态查询请按0,挂机请按*键;0x61,〃录音第七段0x61:密码修改成功;0x68,〃录音第八段0x68:2关;0x6d;//录音第九段0x6d:设置成功。/**********************************************************************Functionname:延时函数,共三个**Descriptions:延时函数,定时不准**Input:延时时间长度**Output:无********************************************************************/voidDelaylms/*1ms定时*/uinti0;fori150;i0;i--;voidDelay20ms/*延时20ms*/uchari0;ucharj0;fori50;i0;i--forj200;j0;j--;voidDelayNsucharucdly/*延时1s*/uchari0;ucharj0;uchark0;for;ucdly0;ucdly--fori10;i0;i--forj200;j0;j--fork250;k0;k--;/**********************************************************************Functionname:I2C读写子程序**Descriptions:**Input:**Output:无********************************************************************/voidI2CStartvoid/*******************I2C起********************/I2CSDA1;//SCK为高电平时,SDA由高电平向低电平跳变,开始传送数据I2CSCK1;_nop_;〃时序要求600ns,保证正确起始_nop_;I2CSDA0;I2CSCK0;voidI2CStopvoid/*******************I2C停止********************/I2CSCK0;//SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据I2CSDA0;I2CSCK1;I2CSDA1;/*******************从24C02读数据********************/ucharI2CReadvoiduchari0;ucharucReadDat0;fori8;i0;i--//8位,先读最高位I2CSCK1;//获得总线操作ucReadDatucReadDat1;//数据左移,空出最低位,用于接收数据ucReadDatucReadDat|ucharI2CSDA;//保存低位数据,采用按位或的方式I2CSCK0;〃释放总线returnucReadDat;//返回获得的数据/*******************写数据到24C02********************/bitI2CWriteucharucWriteDatuchari;bitbACK;〃应答fori8;i0;i--//8位,先读最高位ifucWriteDat&0x80//发送数据到数据总线上I2CSDA1;elseI2CSDA0;I2CSCK1;//获得总线操作_nop_;〃适当延时,等待对方接收完毕_nop_;I2CSCK0;//释放总线ucWriteDatucWriteDat1;//数据左移,继续传送下一位I2CSDA1;//接收应答信号_nop_;_nop_;I2CSCK1;//获得总线操作,等待从器件将数据线信号拉低_nop_;_nop_;bACKI2CSDA;//读取应答信号I2CSCK0;returnbACK;//返回/**************在指定地址addr处写入数据write_data********/voidI2CByteWriteucharucAdr,ucharucDataI2CStart;//发送开始信号I2CWriteI2CWriteAdr;//发送器件写地址I2CWriteucAdr;//发送指定片内字节地址I2CWriteucData;〃发送数据I2CStop;〃结束/***************在指定地址读取************/ucharI2CByteReaducharucAdrucharucData;I2CStart;//发送开始信号I2CWriteI2CWriteAdr;//发送器件写地址I2CWriteucAdr;//发送指定片内字节地址I2CStart;//重新发送开始信号,进行数据传送I2CWriteI2CReadAdr;〃发送器件读地址ucDataI2CRead;//接收数据I2CStop;〃结束returnucData;〃返回接收到的数据/************放音程序**************/voidISDPlayucharucAdrP0ucGISDAddr[ucAdr];VoiceEn0;DelayNs1;ISDCE0;DelayNs1whileISDEOM0;ISDPD1;VoiceEn1;ISDCE1;/************各键功能*************/voidfunctionuchari,fun,delayopen,delayclose,laws,flag;ifdat10dat10;elsedat1dat;ifdelayopeni++;ifi1ifdat1open1;elseifdat2open2;elsedelayopen0;ifi1&&i4dlycountdlycount*10+dat1;elsedlycountdlycount*10+datl;//输入三位数后延时开计时ifopen1openGRingCountdlycount;dlycount0;elseopencount2dlycount;dlycount0;TR01;i0;delayopen0;open0;ISDPlay8;ifdelayclosei++;ifi1ifdat1close1;elseifdat2close2;elsedelayclose0;ifi1&&i4dlycountdlycount*10+datl;elseifi4dlycountdlycount*10+datl//输入三位数后延时关计时ifclose1closeGRingCountdlycount;dlycount0;elseclosecount2dlycount;dlycount0;TR01;i0;delayclose0;close0;ISDPlay8;iflawsi++;ifi7data1[i-1]dat1;elseifdat0x0cTR00;fora0;a6;a++I2CStart;I2CWriteI2CWriteAdrI2CWritea;I2CWritedata1[a];I2CStop;Delaylms;TR01;EX01;ISDPlay6;i0;laws0;elselaws0;i0;iffun0switchdat1case0x01:ifControl11Control10;ISDPlay8;break;Controll1;ISDPlay8;break;case0x03:ifControl21Control20;ISDPlay8;break;case0x04:ifControl20Control21;ISDPlay8;break;case0x05:delayopen1;break;case0x06:delayclose1;break;case0x07:VoiceEn0;break;Delay20ms;break;case0x09:laws1;break;case0x00:ifControl10ISDPlay

温馨提示

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

评论

0/150

提交评论