资源描述
挑战杯设计远程智能家电控制系统周群威 刘再乐 吕小娟指导老师:王彦(南华大学 电气工程学院 湖南 衡阳 421001)摘 要:本系统以单片机AT89S52为控制核心,采用双音多频解码芯片MT8870和高保真语音录放集成芯片ISD4003,利用个人通信终端(电话、手机等)实现对电器设备的远程控制。配合多路红外遥控技术,实现对电器设备的近距离遥控,并辅助使用单总线数字温度传感器DS18B20及高精度时钟日历芯片PCF8560显示时钟日历及温度。该系统由单片机构成主控部分,进行主要的信息处理,接收外部操作指令形成各种控制信号。在远程控制方面,使用不同的语音提示实现对不同电器的操作和对受控电器状态的反馈,从而使操作者能够及时了解被控电器的信息,使产品达到交互式与智能化,由电话机组成的自动拨号报警功能,使得本系统的功能大大地增强,使居家生活更加趋于智能化。将该系统与PC机相连,可直接由PC机控制家电,也可用遥控器控制PC机,该系统具有控制灵活、可操作性强、可扩展性强、发展潜力大等优点,是实现智能化家居、智能化寓所的智能电器控制系统,具有十分广阔的市场前景和非常良好的应用价值。关键词:单片机 电话远程控制 红外遥控 智能控制Abstract:The system uses the AT89S52 MCU as its control center, adopts the double-tone multiple frequency code-interpret IC MT8870 and atheringchip ISD4003-6M,make useofindividualcorrespondence term- inal (telephone、mobile phone etc.)to realize long-distance control of the electronic equipment. Match with the infrared ray long-distance technology, it realizes near-distance control and uses the single-total line digital temperature Spread the feeling machine DS18B20 and high accuracy clock calendar chip PCF8560 to manifest the clock 、the calendar and the temperate. The main control part of this system is made up with the MCU, it does the main massage handles, receives exterior operation instruction and forms various control signal. In the aspects of long-distance controlling , using differentvoice to hint different operation and give a state feedback of the be-controlled ,thus it can let the writer know the information of the be-controlled, let the production to be change over with each other type and intellectualized。The auto dialing alarming function made up with the phone improves the usage of this system highly, makes the family life more intellectu- alized.Connecting this system with the PC and using the appliated program, it can control the household appliance by the PC machine directly. The PC machine can be hand-controlled and also can be controlled by the infrared ray remote control. It has many superiority on it. For example, agile controllment, powerful maneuverability and expansibility, and great potentiality .There are expansive foreground and very good application worth on this PLC wirings intellectualized managed system.Keywords: MCU Phone remote controlInfrared ray remote control Intellectualized Management目 录一、引言 4二、系统总体设计62.1系统总体设计方框图62.2系统总体设计流程图7三、系统设计可行性分析9四、电路模块设计12 4.1电话远程遥控电路模块12 4.1.1 MT8870双音频解码电路12 4.1.2 振铃检测电路14 4.1.3 模拟摘挂机电路15 4.1.4 电器控制电路16 4.1.5 电源电路17 4.2红外遥控电路18 4.2.1红外遥控发射部分18 4.2.2 红外遥控接收部分19 4.3单片机及扩展电路204.3.1单片机控制核心模块204.3.2 壁上按键开关电路214.3.3 显示电路21 4.4语音提示电路22 4.5 串口通信电路23五、软件设计23 5.1电话远程控制软件设计23 5.1.1信号音发声部分25 5.1.2 密码检测部分28 5.1.3 密码修改部分29 5.1.4 控制电器部分30 5.2红外遥控解码软件设计 35 5.3 PC机应用程序设计 36六、系统主要芯片介绍 386.1双音频解码芯片MT8870386.2语音芯片ISD4003-6M54七、测试部分60八、结论62参考文献:63附录:641.使用说明 2.总电路图 3.元器件清单 一、引言当今的时代是一个信息的时代,各种电信新技术推动了人类社会的向前发展。自从有了电话以来,各国的电话网络发展非常迅速。近几年来,中国的固定电话业务快速增长,到1997年网络规模跃居世界第二位,电话用户总数突破1亿户。随着通讯产业的发展,电话机已经走进了了千家万户,随着现代科学技术的发展,利用电话机进行远程控制的技术也日益用于生活中。随着生活水平的不断提高,人们希望有一种自动化、智能化程度高的控制系统对所有的家用电器能实施远程控制。遥控技术是通过一定的手段对被控物体实施一定距离的控制,常用的方式有无线电遥控、有线遥控、红外线和超声波遥控等。红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空调机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。但红外遥控技术受距离所限,适合于近距离控制。无线电遥控既是利用无线电信号对被控物体实施远距离控制。无线电遥控不可避免的须占用一定的无线电频率资源,造成电磁污染;常规的有线遥控需进行专门的布线,增加了投入;而红外线、超声波遥控则受距离所限。现有的遥控方式中,还有载波通信控制手段和基于无线寻呼的遥控方式。载波方式即通过电力线传递信息,该方式只能局限于同一变电所、同一变压器所辖范围内。因此也存在距离问题,应用范围有限。基于无线寻呼的遥控方式利用了现有的寻呼频率资源,不需占用额外的频谱。而且,随着寻呼网的全国联网,其遥控的距离基本不受限制。但该方式的受控方动作滞后于控制方的操作,不具备实时性,而且不具备很高的可靠性。电话遥控作为一较新的课题与常规的遥控方式相比,显示出一定的优越性,不需进行专门的布线,不占用无线电频率资源,避免了电磁污染。同时,由于电话线路各地联网,可以充分利用现有的电话网,因此遥控距离可跨省市,甚至跨越国家。 现代电话网络是由交换机和电话传输线共同组成,它的性能已经有了很大的进展,而且可靠性非常高。电话遥控作为一较新的课题与常规的遥控方式相比,显示出一定的优越性,随着人们居住条件的改变,使得人们对家中的电器,如空调、锅炉、电暖气、喷淋、洗衣机等进行远程控制有了更加迫切的需求。如果到家前能提前打开家中的电器,如空调或暖气,一到家立刻就能享受到舒适的温度,同时达到节能的目的。而离家后若发现自己忘了关上家中的电器设备,也可远程控制关机。电话作为一种经济实用的手段,不受条件限制,能最方便的实现上述远程控制。电话属双工通信手段。因此,这可以大大体现出利用电话进行遥控的更大优越性。操作者可以通过各种提示音及时了解受控对象的有关信息,从而进行进一步的操作。电话遥控这一课题目前已有涉足者,但是距离实际应用,尤其是对于日常生活尚有一定的差距,并不能完全体现出电话遥控方式的双工通信特点。本系统正是针对这一点进行了较大改进,采取单片机智能控制,利用不同的提示音达到对于不同操作的提示及对受控方状态的信息反馈,从而使操作者能够及时了解受控方信息,使产品达到交互式与智能化。二、系统总体设计21系统总体设计方框图电话线LED数码管动态显示温度传咸器时钟日历芯片MCU控制中心防盗检测按键红外输入控制器输出闹铃输出PC机IO扩展电路双音频解码电话机语音芯片自动拨号电路遥控器RS232图21 系统总体设计方框图-系统总体设计如图21系统说明如下:(1)红外线遥控器发送过来的信号经红外接收头接收后送单片机解码,然后控制相应的输出电路作相应的动作。(2)远程电话线送来的音频按键信号经双音频解码芯片解码后,送单片机处理,识别按键后控制语音芯片报告状态信息并控制输出电路作相应的动作.(3)从PC机送来的控制信号经RS232送单片机串号后,单片机识别控制命令,控制相应的输出,若为时间校准命令,则调整时间日历数据。(4)若有防盗报警信号,单片机控制自动拨号电路自动拨出预设的电话号码,并控制语音芯片报告盗情。(5)从按键输入的控制命令由单片机转换成相应的控制命令控制相应的的电路动作。(6)LED动态显示由8279产生扫描脉冲,驱动数码管显示当前时间及温度。(7)温度传感器和时钟日历芯片实时产生温度和日历数据送单片机,由单片机处理后送8279显示。若设定了定时闹铃,则当时间到时产生闹铃信号驱动闹铃电路产生闹铃。22系统总体软件设计流程图221系统总体软件设计流程图,如图2.2.1。该部分包括软件主循环部分和红外遥控部分NYYNYN初始化读按键输入有键按下?按键处理读防盗检测器有 盗?拨出预设的手机或电话号码,语音报告盗情定时器0中断 读时钟日历数据读温度传感器更新LCD的显示内容闹铃时间到?闹铃返回主程序红外遥控输入(外中断0)解码按键控制输出电路作相应的动作返回主程序主循环时钟日历闹铃程序红外遥控流程图2.2.1 系统总体软件设计流程图222系统总体软件设计流程图,如图2.2.2该部分包括电话远程控制软件流程图和PC机软件流程图NNYNYYNY电话远程控制输入(外中断1)5秒无人应答答进入语音电话状态,控制语音芯片发出“你好,主人现在不在家,有事请留言。进入录音状态挂机?记录来电信息自动摘机有键按下?输入密码正确?进入电话远程控制状态,控制语音芯片拨报电器状态,接受命令。控制输出电路作相应的动作返回主程序PC机送来命令控制输出电路作机应的输出返回主程序语音电话及电话远程控制流程PC机控制流程通话状态图 2.2.2 系统总体软件设计流程图三、系统设计可行性分析本系统采用单片机为控制核心,进行主要的信息处理,接受外部操作指令形成控制信号,这样可使软件的设计趋于简单化。本系统主要用到的技术有电话远程遥控技术、红外遥控技术、通信技术、单片机技术、传感器技术等,其中电话远程遥控技术是本设计的重点和难点,其它的技术都已比较成熟,易于实现。根据电话远程遥控的要求:通过电话网对异地电器实现控制(开/关)、控制器可以实现自动模拟摘挂机、控制器设置密码校验。这个系统必须具有以下单元功能模块: 忙音检测; 密码校验; 自动摘挂机; 控制电器开关; 输入信息分析; 电器状态查询; 在线修改密码; 铃音检测、计数; 双音频信号解码;根据电话机和交换机发出的信号音以及电话工作状态的不同,实际情况对具体的单元功能模块作出软件或硬件上的不同分工,具体如下:理论上交换机所发出的各种信号音都可以通过软件编程而识别,即通过单片机发出的脉冲信号来检测信号音单位时间内的脉冲个数计算出其频率,从而完成信号音识别。但是从系统的可靠性和程序的结构设计上分析,选择了硬件来解决振铃音检测、忙音检测、双音频信号解码等功能模块。自动摘挂机和电器的控制必须使用具体硬件电路来实现。振铃音计数、忙音计数、密码校验、在线修改密码、输入信息分析、电器状态查询等功能模块使用软件编程方式要比硬件电路简单的多,实现也很容易。综上所述,在设计信号音检测、自动摘挂机、控制电器、双音频解码等功能模块使用硬件电路实现。而信号音计数、密码校验、在线修改密码、信息分析、电器状态查询等功能模块使用软件编程完成。有些部分是由硬件和软件共同完成,下面就该部分硬件以及软件实现的单元电路分别进行具体分析。3. 1硬件模块部分该部分使用了大量的硬件电路完成部分功能模块,其目的就是充分利用硬件电路的可靠性、稳定性,使整体电路达到比较高的稳定性。3.1.1模拟自动摘挂机因为程控电话交换机对电话摘机的响应是电话线回路电流突然变大为约30mA的电流,交换机检测到回路电流变大就认为电话机已经摘机。自动摘挂机电路可以通过单片机控制一个继电器的开关,继电器的控制端连接一个大约300的电阻接入电话线两端,从而完成模拟摘挂机。3.1.2振铃检测当电话振铃信号到来时,电话交换机发来铃流信号。当用户被呼叫时,电话交换机发来铃流信号。振铃为253伏的正弦波,谐铃失真不大于10%,电压有效值9015V。振铃以5秒为周期,即1秒送,4秒断。根据振铃信号电压比较高的特点,可以先使用高压稳压二极管进行降压,然后输入至光电耦合器。经过光耦的隔离转换,从光电耦合器输出的波形是时通时断的正弦波,经过RC回路进行滤波输出很标准的方波。方波信号就可以输出至单片机的中断计数器输入口,完成整个振铃音检测和计数的过程。3.1.3电器控制此部分比较简单,通过单片机控制多路SSR(无源固态继电器)的开关即可,常用的电路已经很成熟,在此就不累述了。3.1.4 双音频解码此部分是整个系统的关键,它的工作情况直接决定了系统的可靠性。经过翻阅大量的文献资料,发现使用电话专用的双音频编解码芯片进行输入双音频信号的解码,是比较常用的一种方法。使用集成电路不但外围电路简单,而且可靠性强。经过专用集成电路的解码,信号转换成为不同的码制信号,可以直接被单片机读取。一般常用的电话双音频解码集成电路有8870、8880、8888等,经过反复论证比较,该部分决定使用双音频解码集成片MT8870来完成此功能模块。3.2 软件模块部分 3.2.1信号音计数本单元可以使用AT89S52的两个计数器的外部中断方式来实现对不同信号音的计数。3.2.2密码检测 本单元使用一块EEPROM(电可擦写只读存储器)记录密码,并用简单的私密加密算法,防止密码被盗,同时当断电时,由于EEPROM的存储特性,密码不会由于掉电而丢失,增强了系统的安全性。3.2.3 信号分析处理本单元可以利用查表方式,也可以用简单的语句,稍长一点的语句实现,例如CASE语句等。经过翻阅大量的技术资料,对具体要求实现的功能进行完整的系统分析,远程智能家电控制系统设计符合实际情况,可以完成设计所要求实现的基本功能。故本系统的设计方案是可行的。四、电路模块组成41电话远程遥控电路模块411 MT8870双音频解码电路DTMF(Dual Tone Multi Frequency)双音多频信号解码电路是目前在按键电话(固定电话、移动电话)、程控交换机及无线通信设备中广泛应用的集成电路。它包括DTMF发送器与DTMF接受器,前者主要应用于按键电话作双音频信号发送器,发送一组双音多频信号,从而实现音频拨号。双音多频信号是一组由高频信号与低频信号叠加而成的组合信号,CCITT和我国国家标准都规定了电话键盘按键与双音多频信号的对应关系如表4.1所示。表4.1 电话拨号数字对应的高低频率组合关系数字键盘高频组/Hz1209133614771633低频组/Hz697123A770456B852789C941D电话远程控制系统采用MITEL公司生产的MT8870 (下面章节有详细介绍)DTMF接受器作为DTMF信号的解码核心器件。MT8870主要用于程控交换机、遥控、无线通信及通播系统,实现DTMF信号的分离滤波和译码功能,输出相应16种频率组合的四位并行二进制码。MT8870具有拨号音抑制和模拟信号输入可调功能,所以在设计MT8870 DTMF解码电路时,只需外加一些阻容元件即可。原理简介:双音多频DTMF信号解码电路由MT8870主要承担。MT8870的连线如图4.1.1所示,它的2、3脚接收来自电话机的双音多频脉冲信号该双音多频信号先经其内部的拨号音滤波器,滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高,低音频信号分开,再经高,低通滤波器,幅度检测器送入输出译码电路,经过数字运算后,在其数据输出端(11-14脚)输出相对应的8421码。MT8870的数据输出端Q4-Q1连到AT89C51的P1口的P1.4 -P1.7,CPU经P1口识别4位代码。电话按键与相应译码(Q4-Q1)输出如下表。其中,A,B,C,D 4个按键常被当作R/P,REDIAL,HOLD,HANDSFREE等功能使用。注意,需要特别指出的是,对于“0”号码,MT8870输出的8421码并非是“0000”,而是“1010”;另外,“*”,“#”字号码,MT8870输出的8421码分别为“1011”和“1100”。由于有些技术资料会出现错误,包括比较权威的手册,所以在实验中,记录下测量的每一组数据后,才把这些数据应用于程序当中。如表4.2所示表4.2 码值与电话按键的对应关系FLOWFHIGHDIGITD3D2D1D069712091000169713362001069714773001177012094010077013365010177014776011108521209701118521336810008521477910019411336010109411209*10119411477#11006971633A11017701633B11108521633C11119411633D0000 为了使单片机AT89S52获取有效数据,MT8870的STD有效端经反相后接CPU的/INT0引脚。当MT8870获取有效双音多频信号后,STD电平由低变高,再反相为低,CPU检测后,指示P1口接收有效二进制代码。而无效的双音频信号(电话线路杂音、人们的语音信号等)是不会引起MT8870的STD端变化的。DTMF接收器的外围电路如图3.4所示. 其中,接在电源处的电容对抗干扰有一定的作用。在实际应用中,存在这样一个问题:MT8870的使能控制端不允许中断时,将使MT8870的STD端中断关闭。其解决办法是,将STD端接与非门的一输入,与非门的另一输入端接一不定电平端P。当STD有效(即中断开放)时,P = 1则/INT0中断关闭;P = 0时则/INT0中断允许。图4.1.1 MT8870音频解码电路412振铃检测电路在电话线路未来铃流前,电话线路由电话交换机提供大约48V的直流电压。当用户被呼叫时,电话交换机发来铃流信号。振铃信号为253伏的正弦波,谐铃失真不大于10%,电压有效值9015V。振铃以5秒为周期,即1秒送,4秒断。在本电路检测铃流信号时,以五次铃响为准,即五次振铃后无人摘机,便由单片机控制自动模拟摘机。电路图如图4.1.2:图4.1.2 振铃检测电路电话振铃信号先通过电容隔直,经整流器整流,R1限流电阻,D1稳压二极管,输入至光电耦合器817,和R3、D1共同组成振铃信号变换电路,它们使输入电压和电流不会太大,对后面的光电耦合器起保护作用。光电耦合器817起的是隔离作用,光电耦合器是一种电信号的耦合器件,它一般是将发光二极管和光敏三极管的光路耦合在一起,输入和输出之间不可共地,输入电信号加于发光二极管上,输出信号由光敏三极管取出。光电耦合器以光电转换原理传输信息,它不仅使信息发出端(一次侧)与信息接收并输出端(二次侧)是绝缘的,从而对地电位差干扰有很强的抑制能力,而且有很强的抑制电磁干扰能力。速度高、价格低、接口简单。振铃信号通过光耦817的4脚输出振铃正弦波,信号到了开关三极管T1的基极就变成了方波。输出到单片机AT89C51的T0/P3.4口,中断方式采用外部中断,计数5次产生T0中断,控制继电器模拟摘机,完成振铃音检测。413模拟摘挂机电路设计主要思路:根据国家有关标准规定:不论任何电话机,摘机状态的直流电阻应300,有“R”键的电子电话机的摘机状态直流电阻应350。在挂机状态下,其漏电流5A。当用户摘机时,电话机通过叉簧接上约300的负载,使整个电话线回路流过约30mA的电流。交换机检测到该电流后便停止铃流发送,并将线路电压变为十几伏的直流,完成接续。根据有关技术指标,模拟摘挂机电路设计如图4.1.3所示:图4.1.3 模拟摘挂机电路414电器控制电路原理说明:本单元电路主要是由整流桥、光电耦合器、SSR,(无源固态继电器)组成,电路图如图4.1.4所示:图4.1.4 电器控制电路由单片机I/O口送来的控制信号控制相应的光电藕合器发光与否,经光电变换后,控制可控硅的的开关与否,从而实现光电隔离。当光电藕合发光时,可控硅关断,当光电藕合器不发光时,可控硅打开。当控制信号消失后,可控硅在交流电的过零点关断,从而避免了普通继电器开关时产生的火花和对电源的干扰,增长了使用寿命。且当系统出故障时,光电藕合器由于得不到电能而不发光,从而所有的电灯都处于打开的状态,不会由于故障而导致电灯全部关闭的情况发生。415电源电路本系统要求使用5V的稳压电源,要求交流成分小,我们将家用220V的交流电通过整流变换,经LM7805后变成稳定的直流5V输出,电路图如图4.1.5所示:图4.1.5 电源电路42红外遥控电路模块通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图4.2.1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。图4.2.1 红外遥控系统框图421红外遥控发射部分遥控发射器专用芯片很多,根据编码格式可以分成脉冲宽度调制和脉冲相位调制两大类,这里我们以运用比较广泛,解码比较容易的脉冲宽度调制来加以说明,以LC7461组成发射电路说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。上述“0”和“1”组成的42位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,7461产生的遥控编码是连续的42位二进制码组,其中前26位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码用于核对数据是否接收准确。当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右即可。 根据红外编码的格式,程序应该等待9ms的起始码和4.5ms的结果码完成后才能读码。422红外遥控接收部分LT0038是塑封一体化红外线接收器,它是一种集红外线接收、放大、整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平,收到红外信号时为低电平,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。 其外型电路如图4.2.2所示:图4.2.2 红外接收外型电路43单片机及扩展电路模块431单片机控制核心模块该系统以单片机为控制核心,进行主要的信息处理,接收外部操作指令形成各种控制信号。由AT89S52单片机最小系统构成控制中心,通过数据总线和控制总线控制并口扩展芯片实现I/O端口的扩展,以达到对众多电器的控制,同时总线上挂接8279可编程通用键盘显示控制芯片,实现时间温度信息的动态显示。该部分电路图如图4.3.1所示: 图4.3.1 单片机核心控制模块432壁上按键开关电路该系统还设计了手动操作方式,可以通过按装在墙上的开关直接控制本系统,它的电路原理图,如图4.3.2所示:图4.3.2 按键开关电路433显示电路该的系统的控制面板上,可显示时间、日历、温度,这一部分的控制电路如图4.3.3所示:图4.3.3 显示电路44语音提示电路该控制电路主要应用于电话机自动答录部分。当电路接通后,单片机的P1.3、P1.2、P1.1、P3.0和P3.1脚发出配合信号,启动语音电路,ISD4003-6M从MOSI脚接收AT89S52输入的控制命令数据,AT89C52从MISO脚获得ISD4003-6M的返回数据。通过13脚的AUD OUT端发出语音提示:“请输入密码,以#字结束”。用户听到提示后,通过电话发出DTMF密码信号,单片机检测密码正确与否,如密码错误,提示:“密码错,请重新输入,以#字结束”。如输入密码正确,则提示:“请选择要控制对象:1电器一(如空调),2电器二(如电饭煲),3电器三(如热水器),等八个电器. 0修改密码, * 挂机”。用户按照语音提示作出操作,控制电器作相应的动作。语音提示电路如图4.4所示:图4.4 语音提示电路45串口通信电路该系统通过串行口与PC机相连,启用配套的应用程序,可通过PC机控制家电,该部分串口通信电路如图4.5所示:图4.5 串口通信电路五、软件设计5.1电话远程控制软件设计本部分的软件设计主要分为系统初始化、振铃检测计数、控制摘挂机、双音频信号分析处理、控制电器、信号音提示等部分。每个功能模块对于整体设计都是非常重要的,单片机AT89S51通过软件程序才能很好的对外部的信息进行采集、分析和决策。下面,就整体设计以及每个单元功能模块分别进行说明。程序流程图5.1如下所示:YNYNYN开始初始化有振铃?摘机提示输入密码密码正确?提示输入功能操作设置密码开机操作关机操作等待应答操作成功?操作完成,挂机挂机图5.1 电话远程控制软件设计总流程图*主程序*ORG 0000HMAIN: CLR T1SETB T0MOV IE ,#81HMOV P1 ,#00HJB INT1 $;等待振铃信号的输入COUNT:MOV R6 ,#06;设置振铃检测次数DELAY:MOV R7,#05LCALL DELAY;延迟5秒DJNZ R7,DELAYDJNZ R6 ,JJ;R7不为0跳转到JMP,否则跳转到PICKLJMP PICKJJ:JNB T0 ,COUNTLJMP MAIN;当T0为0的时候跳转到COUNT,当为1的时候跳转到MAINPICK:SETB T1;模拟摘机LCALL INT;调用密码检测部分LCALL SELECT;调用控制部分END5.1.1 信号音发声部分 本部分主要由语音芯片构成,由单片机控制语音芯片播放预先录制好的语音,如:“你好,请输入密码;当前灯一的状态是 打开”等。人性化地向用户返回状态信息。*摘机提示音*ORG 1100HRING10:MOV R6,#20 ; 输入密码RING11:MOV R7,#20 ; 400HzRING12:LCALL DL10 ; sound=1CPL P3.0 ; 延迟0.5sDJNZ R7,RING12DJNZ R6,RING11CLR P3.0RET *选择电器提示音*ORG 1200HRING30:MOV R3,#02RING31:MOV R6,#20 ; 选择电器RING32: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 ; 控制开关RING42:MOV R7,#20 ; 800HzRING43:LCALL DL10 ; sound=3CPL P3.0 ; 延迟0.5sDJNZ R7,RING43DJNZ R6,RING42CLR P3.0MOV R7,#100RING44:LCALL DL10DJNZ R7,RING44DJNZ R3,RING41CLR P3.0RET*密码输入错误提示音*ORG 1150HRING20:MOV R3,#03RING21:MOV R6,#20 ; 提示输入密码错误RING22:MOV R7,#20 ; 1600HzRING23:LCALL DL20 ; sound=3CPL P3.0 ; 延迟0.25sDJNZ R7,RING23DJNZ R6,RING22CLR P3.0MOV R7,#200RING24:LCALL DL10DJNZ R7,RING24DJNZ R3,RING21CLR P3.0RET*控制完成提示音*ORG 1300HRING50:MOV R6,#40 ; 控制完成RING51:MOV R7,#20 ; 1600HzRING52:LCALL DL20 ; sound=1CPL P3.0 ; 延迟0.15sDJNZ R7,RING52DJNZ R6,RING51CLR P3.0RET*延时程序*ORG 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,DL32RET5.1.2 密码检测部分本部分密码校验的基本原理是:在系统初始化的时候把原始密码写入EEPROM 30H存储空间内,密码的位数“5”。当系统摘机时,要求输入密码,单片机把解码后的数据(使用者输入的密码)存储在EEPROM 38H开始的存储空间内。然后单片机对进行两个存储地址的内容逐位进行比较,直到完全相等才能转到下一进程,有一位不同,程序跳转回去重新输入密码,连续三次输入错误,系统自动挂机。*密码检测*ORG #0050HINT: MOV R2 ,#03H;设置密码错误时重新输入密码的次数IN:LCALL RING10MOV R1 ,#38HBB:ORL P1,#0FH;将P1口的低四位置1JB INT0 $SETB INT0MOV R1 ,P1MOV R6,#05H;设置密码的位数,在这我把密码固定为5位INC R1DJNZ R6 ,BBMOV R6 ,#05H;密码位数MOV R0 ,#30HMOV R1 ,#38HCMP:CLR C;清0进位位MOV A ,R1SUBB A ,R0INC R0INC R1JZ AAA;但A为0跳转到AAA,不为0时跳转到QQLJMP QQAAA:DJNZ ,R6 CMP;R6不为0继续比较,为0跳转到SELECTLJMP SELECT;QQ:DJNZ R2 ,IN;当密码不一致且R2不为0时跳转到IN,否则跳转到MAINLJMP MAIN5.1.3 密码修改部分本部分把要求操作者第一次输入的新密码写入#38H,再把要求操作者输入的确定密码写入#40H,然后用减法运算比较两者是否相等,相等则把此密码写入系统初始化时的#30H,从而实现在线修改密码的功能。*密码修改*KE:LCALL RING10IN1:ORL P1,#0FHJB INT0 $SETB INT0MOV R1 ,#38HMOV R1 ,P1MOV R6 ,#05HINC R1DJNZ R6 ,IN1;储存新的密码到#38HLCALL RING10IN2:ORL P1,#0FHJB INT0 $SETB INT0MOV R1,#40HMOV R1 ,P1MOV R6 ,#05HINC R1DJNZ R6 ,IN2;储存第二次输入的密码到#40HMOV R6 ,#05H;比较两次输入密码,相等则储存到#40H为首地址MOV R0 ,#38H;空间MOV R1 ,#40HCMP1:CLR CMOV A ,R1SUBB A ,R0INC R0INC R1JZ EELJMP KE;不相等跳转到KEEE:DJNZ R6 ,CMP1RR:MOV R6 ,#05HMOV R0 ,#38HMOV R1 ,#30HMOV A ,R0MOV R1 ,AINC R0INC R1DJNZ R6 ,RRLJMP MAIN5.1.4 控制电器部分本部分首先通过外围双音频解码电路解码的信息(选择电器)判断所选择的电器,然后跳转到每一个子程序,子程序通过单片机向P0.0P0.3口上的引脚发送高低电平控制电器开关,下面是控制电器的程序.*控制电器*ORG 0100HSELECT:LCALL RING30ORL P1,#0FH JB INT0 $SETB INT0MOV P0 ,#0FFHMOV R1 ,#38HMOV R1 ,P1;储存选择操作的二进制代码到#38HMOV A ,R1 RL AMOV DPTR ,#TABJMP A+DPTR;查表TAB : LJMP SELECTLJMP ONELJMP TWOLJMP THREELJMP FOURLJMP FIVELJMP SIXLJMP SEVENLJMP EIGHTLJMP NINELJMP SELECTLJMP CLOSELJMP SELECTLJMP SELECTLJMP SELECTLJMP SELECTLJMP SELECTORG:1000HONE :MOV P0,A;把操作通道的二进制代码写入P0口 LCALL RING40 ORL P1,#0FH JB INT0 $;等待INT0中断 SETB INT0 MOV R1,#38H MOV A,R1 CJNE A,#00H CC;如果控制数不为0跳转到CC SETB P0.3;为0致P0.3位,开启电器LCALL RING50LJMP SELECTCC: CJNE A ,#01H,ONE;不过控制数不为1,跳转到ONE CLR P0.3;P0.3清零,关闭电器 LCALL RING50 LJMP SELECTTWO :MOV P0,A LCALL RING40 ORL P1,#0FH JB INT0 $ SETB INT0 MOV R1,#38H MOV A,R1 CJNE A,#00H CC SETB P0.3LCALL RING50LJMP SELECTCC: CJNE A #01H,TWO CLR P0.3 LCALL RING50 LJMP SELECTTHREE :MOV P0,A LCALL RING40 ORL P1,#0FH JB INT0 $ SETB INT0 MOV R1,#38H MOV A,R1 CJNE A,#00H CC SETB P0.3LCALL RING50LJMP SELECTCC: CJNE A #01H ,THREE CLR P0.3 LCALL RING50 LJMP SELECTFOUR :MOV P0,A LCALL RING40 ORL P1,#0FH JB INT0 $ SETB INT0 MOV R1,#38H MOV A,R1 CJNE A,#00H CC SETB P0.3LCALL RING50LJMP SELECTCC: CJNE A #01H,FOUR CLR P0.3 LCALL RING50 LJMP SELECTFIVE :MOV P0,A LCALL RING40 ORL P1,#0FH JB INT0 $ SETB INT0 MOV R1,#38H MOV A,R1 CJNE A,#00H CC SETB P0.3LCALL RING50LJMP SELECTCC: CJNE A #01H,FIVE CLR P0.3 LCALL RING50 LJMP SELECTSIX :MOV P0,A LCALL RING40 ORL P1,#0FH JB INT0 $ SETB INT0 MOV R1,#38H MOV A,R1 CJNE A,#00H CC SETB P0.3LCALL RING50LJMP SELECTCC: CJNE A #01H,SIX CLR
展开阅读全文