家电远程控制系统 doc

发布时间:2019-12-30 20:18:17

1 绪论

1.1 家电远程控制系统的需求

随着时代的进步,电话的使用越来越普遍,电话网络几乎遍及每一个角落,利用现有电话线路实现远端控制是一种极为方便、投资最省、开发周期最短的方案,同时又具有很高的可靠性以及线路免维护等优点,目前人们对家电的选择和使用,己经从只关心家电的单项功能转向追求家电品位和控制的便捷性,信息技术和网络化技术的发展,为家用电器的远程控制提供了可能。将信息技术与家电控制技术相融合,在更大程度上实现家庭生活的信息化和自动化,满足人们舒适、高节奏的生活需要[1]

另外,中国现在已经成为世界上家电生产和出口的大国,国内传统家电市场日趋饱和,对外出口家电急需升级换代中国主要的家电生产商在传统家电降价“大比拼”的同时,开始了数字化家电研究开发的角逐。然而,目前信息家电的发展并不乐观。首先是价格问题。信息家电必须迈过价格这道门槛,才能为更多的家庭所接受。其次是是否实用。消费者不会在意你用的是什么样的技术,而只会在意你的产品是否有用,是否好用[2]

正是基于对这两点的考虑,家电远程控制系统应该是一套低成本、人性化、通用化的设备

1.2 发展现状

近几年,随着经济日益腾飞,人们对生活水平的要求也越来越高,“智能家居”这个概念也逐渐被大众接受。一些对科技发展动向和市场趋势敏感的科研机构和有实力的公司,已经看到这个市场的广阔前景,意识到这是一个难得的机遇,开始或已经研究和开发相关系统和产品,并作了先期的部署和规划。家电远程控制系统是智能家居系统的重要组成和支持部分,代表家庭智能化的发展方向。

1.3 本文所要实现的内容

本文介绍了一种基于AT89S51单片机的家用电器电话遥控装置,该装置使用现有电话线来传送遥控命令,利用普通电话机作为遥控命令生成和发送装置我们只要装置接收端的电路,把它接在现有的电话线路中,那么就可以在任何地方,任何一部电话机上实施对该受控装置的遥控操作,从而实现对家用电器的远程控制

该系统主要实现以下一些功能:

1.铃流检测

2.自动摘机

3.密码验证

4.语音提示

5.信号解码

6.控制家电

2 总体设计方案

2.1 系统总体结构框图

1 系统总体结构框图

电话远程控制系统首先检测电话线上的铃流信号,确定电话无人接听后自动摘机,接收远端发送来的信号,并对其进行解码,解码后的信号由中央处理单元采集处理,根据要求控制相应的电器。为了方便用户使用,系统设计了密码保护和语音提示功能。家电远程控制系统一般工作于无人值守的环境,为了智能化,采用单片机作为中央处理器。整个系统的硬件部分包括电源电路、单片机系统、ISP下载线电路振铃检测电路、电子开关、双音频DTMF解码电路等[3]

2.2 硬件模块

2.2.1 自动摘机

摘机电路可以通过继电器来完成,使用继电器电路电路会简单一些,但继电器也有一些弱点,如耗电大,重量和体积比较大,另外继电器很容易产生火花干扰,为了解决这些问题,本文采用了控制三极管通断的方式来组成自动摘机电路,这样也比较经济实用。

2.2.2 振铃检测

当系统处于待机状态时,即没有振铃信号时,线路上的供电电压为48V。若用户被呼叫,电信局交换机向该用户送来振铃信号,振铃信号253伏的正弦波,谐铃失真不大于10%,电压有效值9015。振铃以5秒为周期,即1秒送,4秒断[4]。据此可使用电容进行耦合然后用两个反向二极管交替导通,通过光电耦合器中光敏三极管的通与断输出脉冲信号,脉冲信号直接输出至单片机的中断计数器,完成振铃检测和计数的过程。

2.2.3 双音频DTMF解码

此部分是整个电路的关键,它的工作情况直接决定了电路的可靠性。解码电是将用户所拨电话的信号解码后送入单片机,然后由单片机实现对家用电器的远程控制本解码电路采用的是加拿大公司生产的一种集成度高应用普遍的通信类集成电路芯MT8870, 该芯片外围电路简单、功耗小、抗干扰能力强,在解码方面有着无可比拟的优势。

2.2.4 控制部分电路

本单元电路主要由指示灯电路和继电器控制电路组成。8个发光二极管来代表家用电器指示电路工作为了防止发光二极管被烧坏,在二极管与电源之间接了1k的电阻。通过单片机控制多路继电器的开关,进而达到控制家用电器的目的。

2.3 软件模块

2.3.1 振铃信号计数

通过AT89S51的外部中断实现此功能。

2.3.2 密码检测

在单片机中开辟一块内存空间存放预置密码,然后每输入一次密码,进行一次比较操作,直到输入密码与预置密码完全一致,才进行下步操作[5]

2.3.3 语音提示

此部分通过单片机的计数器控制其引脚电平的高低来实现。

2.3.4 控制部分

通过向单片机指定单口写入高低电平来控制指示灯的亮与灭和继电器的开与关。

3 硬件电路设计

3.1 电源电路

2 电源电路图

如图2所示电路为输出电压+5V、输出电流1.5A的稳压电源。它由电源变压器B桥式整流电路VD1VD4电容C1C2C3C4和一只固定式三端稳压器(LM7805)极为简捷方便地搭成的。C2C4的作用是滤除掉线路上的高频脉冲干扰,由于电解电容对高频电脉冲滤波效果较差,因此在电解电容C1C3两端各并联了一个0.luF的瓷片电容,瓷片电容的高频滤波性能要比电解电容好得多,因此可弥补电解电容高频滤波较差的不足三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。LM7805稳压器输入、输出端电压差通常取3V-7V之间比较合适,如果输入、输出电压差过大,当电源电流较大时容易发热,因此使用时要加装散热片。220V交流市电通过电源变压器变换成交流低压,再经过桥式整流电路VD1VD4和滤波电容C1的整流和滤波,在固定式三端稳压器LM7805VinGND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过LM7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定性好的直流输出电压。本稳压电源可作为TTL电路或单片机电路的电源。

3.2 单片机89S51电路

单片机电路图如图3所示[6]

3 单片机电路图

本设计使用AT89S51单片机,第9脚为复位端,在该脚接一个10K的电阻R12到地,以保证该脚在正常工作时为低电平O,同时,为了在加电时给该脚一个高电平的复位脉冲,用一个10uF的电解电容C4连接到电源Vcc,利用电容两端的电压不能突变的特性,加电后给第9脚施加一个短暂的高电平脉冲,该脉冲的宽度与电阻R12的阻值、C4的容量都有关,电阻R12越大,电容C4越大,加电后第9脚的高电平脉冲就越宽;相反的,如果R12越小,电容C4越小,加电后9脚的高电平脉冲宽度也就越窄[7]

在电容C4两端还接有一个手动复位按钮ANI,为了避免按压按钮时电容C4两端的电压通过按钮接点瞬间放电造成对按钮接点的大电流冲击,为此在按钮支路中串入了一个100欧姆的小电阻Rll,这样电容通过Rll放电时,就不会出现瞬间的大电流放电脉冲,因此可有效的避免按钮接点氧化和接触不良的现象。

1819脚接12MHz石英晶体,在晶体两端各接一个3OPF的电容到地[8],接电容的目的有三个:一是加快上电后的起振速度;二是保证起振后能够持续平稳的振荡,不至于出现停振;三是可以通过改变两个电容的容量,微调振荡频率。

单片机的第31脚和第40脚接电源Vcc,第20接地。单片机使用不到的端口悬空。

3.3 下载线电路

3.3.1 ISP介绍

ISP(In-System programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程,ISP技术是未来发展方向。ISP下载线可对单片机进行烧写程序,为单片机的应用提供了方便。

3.3.2 ISP下载线电路

下载线及接口电路如图4所示,在此选用的是并行下载线方案,使用的主要器件是74HC373用免费共享的单片机编程器Easy51Prov2.0宇宙版”下载线专用软件,向电路板中的89S51单片机烧录程序。下载线电路图如图4所示。

4 下载线及接口电路

3.4 振铃检测电路

5 振铃检测电路

振铃检测电路的作用就是检测电话线上有无铃流信号,并将铃流信号状态传输给单片机,使单片机能够有效得实施家电远程控制。

由于该系统并联于电话机的两端,并且不能影响电话的正常使用,所以要求系统在接到铃流信号后不能马上动作,只有在达到设定铃响次数以后,默认家里无人,允许电路摘机应答。

铃流信号未到达前,电话线路上存在大约48V的直流电压当有振铃信号时,电话线上的铃流信号为(75±15)V25 Hz的交流信号。其中直流电压为48 V左右,交流电压为(25±15)V25 Hz的正弦信号。

铃流信号进入振铃检测电路后,首先用高压电容C1进行隔直,电阻R1起限流作用。IC5光电耦合器4N25由砷化镓红外发光二极管和硅光电晶体管检测器光耦合构成,是一种发光二极管与光电晶体管面对面封装的单回路,入电信号加于发光二极管上,输出信号由光敏三极管取出。当没有铃流信号时,IC5内部的光敏三极管不导通,A点电压为高电平VCC当铃流信号到来时,信号有半周使二极管D导通形成回路,另半周使光电耦合器的一侧发光二极管导通,因而有光照射二次侧光敏三级管,A点为低电平。适当选取R1C1的值可以使光电耦合器一次侧导通电流足够大,则二次侧受光较强能够充分导通。Vcc经过R2与二次侧三极管集电极相连。

综上可知A点的脉冲是随着铃流信号的出现而出现的,因此只要检测到A点有

低电平脉冲出现,就说明线路上有铃流信号了,而且A点在单位时间内出现的脉冲个

数就代表了振铃时间的长短,因此通过累加A点的脉冲个数就可以判断出振铃时间的

长短和铃响次数的多少[9]

3.5 模拟摘机电路

6 模拟摘机电路

电路板和电话线之间有一个电子开关存在,平时这个开关应该处于断开的状态,以免造成电话线占线。当希望远程遥控家中的电器时,若干次铃响后无人接听电子开关将电话线和实验板连接,使实验板能够实施控制功能。

电子开关由QD1V1V2等元件组成,图中的LlL2两个点是和电话线连接的。模拟摘机电路主要由单片机控制三极管的开关来完成。L1L2上的信号经QD1整流后,TP4这一点始终是正极。图中TP3这个点与单片机的 Pl.4连接。当Pl.4为低电平O时,三极管V2由于没有基极偏置电压因此不能导通,即V2的集电极没有电流通过,相当于开路,当V2集电极没有电流时,V1的基极也就没有偏置电压和电流,因此Vl也不会导通,此时的V1也处于开路状态。

P1.4为高电平时,TP3点有高电平直流电压,该电压就是三极管V2的基极偏置电压,由于有了基极偏置电压,因此V2导通了,当V2集电极有电流时,V1的基极也就有了偏置电流和电压,V1也就导通了,此时从QD1出来的正电压通过Vl的发射极和集电极后,再经过R5形成导通回路,并且将线路上的信号在R5两端产生电压降,此时R5相当于电话线路的负载电阻。

由以上分析可见:当单片机通过P1.4口给TP3点施加一个高电平信号时,开关管V1导通,电路板接通线路上的遥控信号,相当于电话机接通,从而实现自动摘机。平时P1.4为低电平,因此V1断开,相当于电路板与电话线之间断开了,起到了挂机的效果。

3.6 DTMF解码电路

3.6.1 DTMF介绍

双音多频 DTMFDual Tone Multi Frequency),由高频群和低频群组成,高低频群各包含4个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF信令有16个编码。双音多频的拨号键盘是4×4的矩阵,每一行代表一个低频,每一列代表一个高频。每按一个键就发送一个高频和低频的正弦信号组合,比如'1'相当于697 Hz1209Hz。交换机可以解码这些频率组合并确定所对应的按键DTMF编解码器在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的DTMF信号中检测击键或数字信息的存在性。一个DTMF信号由两个频率的音频信号叠加构成。这两个音频信号的频率来自两组预分配的频率组:行频组、列频组。每一对这样的音频信号唯一表示一个数字或符号。电话机中通常有16个按键,其中有10个数字键096个功能键*#ABCD国际上采用的多种频率为697Hz770Hz852Hz941Hz1209Hz1336Hz1477Hz1633Hz8[10]。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合见表1

1 电话按键与频率对应表

3.6.2 双音多频译码器MT8870

在这个电路中使用了一片供接收用的MT8870型解码芯片。MT8870MITEL公司生产的DTMF接收器,是一种大规模CMOS集成电路,主要由滤波器、译码器和控制电路三部分组成[11]。其内部逻辑框图和引脚排列见图7

7 MT8870内部逻辑框图与引脚排列

外部输入的DTMF信号从-IN端进入运算放大器放大后,进入双音滤波器,双音滤波器是由26级开关电容构成的高低通滤波器,它能有效地将DTMF信号中的高频群和低频群区分开来,被区分开的高、低频群,再经过各自的滤波器及整形电路后送入译码电路[12]。译码电路由数字检测、编码转换和三态输出电路等几部分组成,数字检测电路采用对输入音频信号进行数字计数的方式以确定DTMF信号的频率并检查是否与标准的DTMF信号相一致,在此过程中,采用了一套复杂的算法,对DTMF信号的频率偏差提供一定的容差范围以提高抗干扰能力。输入的DTMF信号被检测到后,经编码转换电路进行8-4-2-1编码后送入锁存器锁存。当输出控制端TOE为高电平时,DTMF信号所对应的8-4-2-1编码即出现在Q4-Q1端。MT8870内有一系列的控制电路,对接收的工作经行控制和协调。

该芯片的主要特点为:功耗低;采用外接3.58MHZ晶振、外围元件少;音频接收持续时间典型值为40ms;接收信号增益可调;STD端输出信号指示Q1-Q4端数据已就绪,因而可作为中断申请或采样控制信号;输入阻抗高。

下面是厂家推荐的MT8870的典型应用电路,电路图如图8所示

8 MT8870典型应用电路

MT8870的应用资料可以看出,该芯片共有18个引脚,只需要按照图中选用元件,并正确连接即可。图8中右下角的方框内是生产厂家推荐的外围元件参数。

输入的DTMF信号经过C1R1输入到-IN端,该端是运算放大器的反向输入端,该放大器的增益取决于反馈电阻R2R1比值。放大器的同相输入端+INVRef媏相连,由VRef提供VDD/2的参考电压作为偏置电压,C2R3组成外部定时电路以确定芯片对输入信号的反应时间。TOE端接VDD,表示数据可以输出到Q4-Q1端。STD端在芯片收到DTMF信号并经识别后,在Q1-Q4送出2进制码的时候变为高电平,因此该端信号可以作为“输出就绪”的指示信息。

2 电话按键与译码输出对应表

3.6.3 本文的DTMF解码电路

本文设计的DTMF解码电路如图9所示。

9中,双音频信号输入点与图6中三极管V1集电极相连接,当电子开关接通时,电话线路上的双音频信号经过V1后进入图9的输入点,经过MT8870内部处理以后,从Q1Q2Q3Q4输出解码后的状态数据。

数据输出端Q1Q2Q3Q4与单片机的Pl.0P1.lPl.2P1.3相连,单片机进行数据采集、判断和处理,最终实现对家电的远程控制功能

另外,从MT8870STD出来的状态信号进入单片机的P3.3端口,通知单片数据的读取状态

9 DTMF解码电路图

3.7 控制电器和指示灯

通过单片机对特定端口写‘0’或‘1’控制多路继电器的开关和指示灯的亮灭状态

3.8 控制接口

该电路的外接接口包括:

J1: 外接电话线接口,与电话机并联

J2: 输出端,可实现对8路外接电器进行控制操作

CZ1:并口插座,用于和电脑的并口相连,以实现下载线的功能。

3.9 调试

线路连接好后,拨打电话,用数字万用表测量A点的电压,A点的电压应随铃流信号的到来呈现高低起伏的变化。

连接线路,当TP3上为低电平时,用数字万用表测得R5上电压为0V;TP35V电源时,电子开关接通,用数字万用表测得R5两端电压约为6V-12V

直接使用电话机作为DTMF信令发生器,把系统并连于电话机两端,提起话筒,在听到忙音信号以后,按动电话机的按键以发出DTMF信号,这时若DTMF译码电路正常工作,则在MT8870STD端应有正脉冲输出,可使用万用表进行监视。按住一个键并保持,万用表指示高电平并保持,松开键,万用表指示约为0V。为保证系统的稳定性和准确性,每一个键均应试过[13]

按动电话机的按键,能够正确的控制继电器的开关和指示灯的亮灭。

4 系统软件设计

系统的程序的主要工作是对电话信号进行检测以及接收用户指令控制家用电器的工作。为了保证系统的可靠运行,必须有良好的软件配合,且要有友好的人机对话功能。下简单阐述本系统程序流程及软件应具备的功能模块,并介绍一种ISP下载线软件Easy51ProV2.0

4.1 程序的设计

该家用电器电话远程控制的主程序主要完成系统初始化、模拟摘机、语音提示、密码验证和控制电器及指示灯等功能。其中密码的位数可以根据个人需求设定不同的位数[14]。程序流程图如图10所示。

10 系统软件流程图

程序启动后,系统检测有无振铃信号,没有继续等待,有的话就对振铃进行记数。若振铃次数小于设定次数该控制器不动作,若振铃次数达到设定次数表示要进行控制,系统自动摘机,语音提示,输入密码并验证,若密码输入错误则重新输入,若密码输入正确,则系统语音提示操作成功,系统根据DTMF信号控制电器[15]

4.2 振铃检测中断服务程序

当电话线上没有铃流信号时,A点为高电平,当铃流信号到来时,A点出现低电平,此时会有下降沿出现,引起单片机中断,利用中断计数控制响铃的时间,实现在一定时间内若电话无人接听系统自动摘机的功能。

4.3 检测MT8870有无DTMF信号输出功能的中断服务程序

MT8870接收到有效的双音频信号时,STD脚就变为高电平1,接收的双音频信号消失后,该脚即刻变为低电平0。因此单片机可以通过判断该脚的状态,来确定线路上的信号音是否为有效的双音频拨号音

4.4 语音提示中断服务程序

由于对家电实施的是远程控制,这就要求系统拥有人机对话界面功能,为此本系统设计了语音提示功能。本文是通过单片机T0中断对其端口的电平高低进行有效的控制来实现语音提示功能的,也可以使用流行音乐芯片和具有录放功能的语音芯片来实现此功能。

4.5 ISp在线编程软件

完成程序输入、编译、连接、运行等工作后,得到了HEX格式的目标文件,通过下载线及相应的下载线专用软件可将程序写入单片机。首先安装ISP下载线专用软件。ISP下载线软件种类很多,这里使用网上免费共享Easy51ProV2.O版下载线专用软件。主界面如图11所示。

11 Easy 51pro V2.0主界面

软件使用方法

1.启动EasyslProV2.O软件,出现主界面。

2.在主界面的左上角下拉菜单中找到“AT89S52”,点击“检测器件”,如

果出现图12所示画面,就说明该试验板己经检测到AT89S52芯片了。

12 检测器件

3.点击窗口中的“自动打开文件”。

4.在弹出的窗口中,点击文件类型中的*.hex文件

5.找到目标文件“xx.hex”。

6.在软件窗口中,点击“自动写器件。当出现“编程器写器件完成”的界面时,就说明己经将目标文件写入单片机了。

本论文采用双音频解码芯片MT8870设计出一款适用的家电远程控制系统,具有振铃检测、自动摘机、密码验证、语音提示和控制家电等功能。该系统与常规的遥控方式相比,显示出一定的优越性,不需进行专门的布线,不占用无线电频率资源,避免了电磁污染。同时,电话线路各地联网,可以充分利用现有的电话网,进行远距离控制。

经过几个月的努力工作,本系统现已通过调试,完成了课题设计的要求,能够实现密码验证、语音提示和家电远程控制等功能。另外,系统功能还可以进一步完善。例如,将系统中的语音控制部分用带有录放功能的语音芯片来替代,作品将会更人性化;若将系统中MT8870更换成MT8880,那么电路只需做少量改动,就能够实现自动拨号、灾情报警等功能。

首先,衷心感谢我的指导老师尤连荣教授和葛明涛老师。本次毕业设计过程中,他们给予我精心的指导,并为我提供了丰富的材料和宝贵的意见,使我的毕业设计得以顺利的完成。他们严谨的治学作风、渊博的学识敏锐的思维和平易近人的性格,深深地感染和激励着我,让我由衷的敬佩,使我在学习和做人方面都有很大的收获。在此,谨向他们表示崇高的敬意和衷心的感谢!

其次,感谢郑州大学西亚斯国际学院为我提供了难得的学习机会和优越的学习环境;感谢在校期间各位老师的谆谆教诲以及同学们对我的支持。

最后,我要向自己的父母表示深深的感谢,在求学的道路上,他们一直给予我最大的支持和鼓励,给了我克服困难的勇气

参考文献

[1] 吴永忠,韩江洪.信息家电发展概况及前景展望[J].网络家电技术,200210

[2] 禾青.智能家电和信息家电的Internet[J].电子产品世界,20018

[3] 刘彦华. 家电远程控制系统. 九江职业技术学院学报,2005(3)19-20.

[4] 夏栋,薛鸿贵.电话机原理使用与检修[M].北京人民邮电出版社,1992

[5] 张志武,智能家居系统中家电的远程控制[D]. 大庆石油学院,2009.

[6] K.J.Astrom.Where is the intelligence in intelligent control[J].IEEE Control,May1991

[7] Bennett C L, Ross G F; Time-domain E electromagnetic and Its Applications [M]. Proceedings of the IEEE, 1978

[8] 王幸之,钟爱琴,王雷等.AT89系列单片机原理与接口技术.北京航空航天大学出版社[S],2004,5

[9] 陈正义,侯振鹏.单片机控制实习.北京:人民邮电出版社,2006206-207.

[10] 李晓广,贾占岭. 基于电力线载波通讯技术的家电远程控制系统的设计.现代电子技术,2008(6)47-49.

[11] 刘彦华. 家电远程控制系统. 九江职业技术学院学报,2005(3)19-20.

[12] 谭宝成,王鹏. 基于DTMF的智能电话控制器. 单片机与嵌入式系统应用,2002(5),59-61.

[13] 何书森.实用遥控电路原理与设计速成.福建:福建科学技术出版社,200295-96.

[14] 姜凤武. 基于AT89C51单片机的家用电器电话遥控装置.自动化技术与应用,20068):94-97.

[15] 何书森,何华斌.实用数字电路原理与设计速成.福建:福建科学技术出版社,2002320-321.

附录1 硬件电路原理图

附录2 系统源程序

#include

unsigned char t5hz;//定义提示音标号

unsigned char t7hz,getdate=0;

unsigned int tcnt;

bit stop;

bit flag;

bit flag_int0=0;

unsigned char count_int1;

bit flag_int1;

unsigned char secret_code[6]={0x08,0x04,0x0c,0x02,0x0a,0x06};//定义DTMF输出代码

unsigned char flag_secret_bit=0;//定义密码位

//===============INT1========//DTMF译码电路 Have number input

void service_int0 (void) interrupt 2 using 2

{

flag_int0=1;//检测到译码电路有DTMF码输出

}

void main(void)

{

EA=1;//系统初始化

EX1=1;

IT1=1;

TMOD=0x12;

TH1=15636/256;

TL1=15636%256;

TH0=0x06;

TL0=0x06;

ET1=1;

TR1=1;

ET0=1;

P1=0xff;

P2=0xff;

while(1)

{

if(flag_int1==1)//铃完成,标志位为1,摘机

{

flag_int1=0;

P1_4=1;//模拟摘机电路工作,摘机

t5hz=0;

t7hz=0;

tcnt=0;

flag=0;

stop=0;

TR0=1;//发提示音

}

if(flag_secret_bit==0&&flag_int0==1)//输入第一个密码

{ flag_int0=0;

getdate=P1;

getdate=getdate&0x0f;

if(getdate==secret_code[flag_secret_bit])

{flag_secret_bit=1;//第一个密码正确

t5hz=0;

t7hz=0;

tcnt=0;

flag=0;

stop=0;

TR0=1;//启动计数器,发提示音

}

else flag_secret_bit=0;//第一个密码不正确

}

if(flag_secret_bit==1&&flag_int0==1)//输入第二个密码

{ flag_int0=0;

getdate=P1;

getdate=getdate&0x0f;

if(getdate==secret_code[flag_secret_bit])

{ flag_secret_bit=2;//第二个密码正确

t5hz=0;

t7hz=0;

tcnt=0;

flag=0;

stop=0;

TR0=1;//启动计数器,发提示音

}

else flag_secret_bit=0;//第而2个密码不正确

}

if(flag_secret_bit==2&&flag_int0==1)//输入第三个密码

{ flag_int0=0;

getdate=P1;

getdate=getdate&0x0f;

if(getdate==secret_code[flag_secret_bit])

{ flag_secret_bit=3;//第三个密码正确

t5hz=0;

t7hz=0;

tcnt=0;

flag=0;

stop=0;

TR0=1;//启动计数器,发提示音

}

else flag_secret_bit=0;//第三个密码不正确

}

if(flag_secret_bit>=3&&flag_int0==1)

{ flag_int0=0;

getdate=P1;

getdate=getdate&0x0f;

switch(getdate)//译码DTMF二进制代码控制继电器

{

case 0x08:P2=0xfe;break;//从手机输入1,继电器1动作

case 0x04:P2=0xfd;break;//从手机输入2,继电器2动作

case 0x0c:P2=0xfb;break;//从手机输入3,继电器3动作

case 0x02:P2=0xf7;break;//从手机输入4,继电器4动作

case 0x0a:P2=0xef;break;//从手机输入5,继电器5动作

case 0x06:P2=0xdf;break;//从手机输入6,继电器6动作

case 0x0e:P2=0xbf;break;//从手机输入7,继电器7动作

case 0x01:P2=0x7f;break;//从手机输入8,继电器8动作

case 0x09:P2=0xff;break;//从手机输入9,继电器关闭

default :break ;

}

}

}

}

void t0(void) interrupt 1 using 0//T0中断服务函数,发提示音

{

tcnt++;

if(tcnt==2000)

{

tcnt=0;

if(flag==0)

{

flag=~flag;

}

else

{

stop=1;

TR0=0;

}

}

if(flag==0)

{

t7hz++;

if(t7hz==3)

{

t7hz=0;

P1_6=~P1_6;//操作提示电路

}

}

else

{

t5hz++;

if(t5hz==4)

{

t5hz=0;

P1_6=~P1_6;//操作提示电路

}

}

}

//********T1**************//铃检测电路

void timer1 (void) interrupt 1

{TH1=15636/256;

TL1=15636%256;

count_int1++;

if(count_int1==4)

{

count_int1=0;

flag_int1=1;//设定振铃次数完成,置标志为1,让CPU发摘机信号

}

}

家电远程控制系统 doc

相关推荐