摘要:随着电话和家用电器的普及,越来越多的人希望能用电话来控制家电。本文采用AT89C2051单片机,配合新型的DTMF解码芯片和语音电路,成功实现了电话对家用电器的控制。
关键词:AT89C2051 MC145436 ISD33060 电话遥控
1 主要芯片简介
(1)AT89C2051
AT89C2051是Atmel公司生产的与MCS-51系列兼容的单片机。内含:2K字节Flash EEPROM、128字节RAM、15根I/O引线、2个16位定时器/计数器、1个五向量两级中断结构,1个全双工串行口、1个精密模拟比较器等,其引脚如图1所示。
(2)MC15436
MC145436是Motorola公司生产的DTMF(双音多频)解码器,负责将DTMF信号转变为二进制数字信号,其引脚如图2所示。7脚(AIN)为信号输入端;2、1、14、13脚D1、D2、D3、D4为解码输出端;12脚(DV)为输出数据有效端,当输入的DTMF信号经IC解码成功后该脚转变为高电平;3脚(EN)为解码输出控制端;6脚(XEN)为CLK信号控制端。
(3)ISD33060
ISD33060是ISD公司的第3代3V的单片语音IC,其引脚如图3所示。
该芯片总存储时间达60s,其与外部微处理器的接口采用SPI(Serial Peripheral Interface)串行外设接口或MSI(Mircowire Serial Interface)微传输线串行接口,ISD33060的录放音时间可任意进行分段,每段最短长度为150ms。
使用SPI接口协议时,主要用到5条控制线:
①1脚(SS)--芯片选择输入端,低电平有效;
②2脚(MOSI)--串行数据输入端,ISD芯片从该脚接收来自单片机的控制命令数据;
③3脚(MISO)--串行数据输出端,单片机从该脚获得ISO的返回数据;
④28脚(SCLk)--SPI接口串行时钟输入,用于同步数据的传送;
⑤25脚(INT)--当语音放结束或录放音溢出时,该脚变低电平,在下一个SPI周期开始时,该信号被清除并返回高电平。
2 硬件原理图
硬件原理如图4所示。上电后单片机在不断查询P1.4脚。无来电时,P1.4呈高电平,当有铃流来到时,光电耦合器PC817导通,P1.4呈现低电平。单片机检测到P1.4的低电平后,为了防止正常来电话本装置过快动作,先延时一段时间(这里初定为7s),然后再查询有无铃流存在,如没有,继续进入查询状态;如还有,则P3.7输出高电平,驱动9012导通,继电器J动作,接通线路。这时P1.5、P1.6、P1.7、P3.0、P3.1发出配合信号,启动语音电路ISD33060,通过13脚AUDOUT端发出语音提示:"请输入密码,以#字结束"。用户听到提示后,通过电话发出DTMF密码信号,此信号通过C1进入MC145436的AIN脚,经内部解码得到4位二进制信号从D1~D4脚输出;同时DV端输出高电平,单片机不断查询P3.2脚,将密码信号从P1.0~P1.3端输入,检测到"#"字信号即0CH后说明已输入完密码,然后判断密码是否正确。不正确,可输入3次,3次再不正确就结束。如正确,则ISD33060再发语音提示:"请选择:1开灯,2关灯,3开空调,4关空调,5开总闸,6关总闸,7改密码,8退出"(这里初定只对灯具、空调和总闸进行控制,也可改为控制其它电器)。单片机再通过MC145436接收控制选择,如想开空调,则用户发出信号3,单片机P3.4送出高电平,控制固态继电器SSR2动态,使空调运转;如想退出,则用户通过电话按8,单片机P3.7送出低电平,9012截止,J切断线路。每次可进行多个电器的控制。
3 软件设计
主程序框图如图5所示。
4 结束语
本装置只控制3种电器,通过改进完全可以控制更多电器;还可用来遥控开锁,或作为远程报警器。