📄 用at89c2051实现电话远程控制家用电器-c51之家.htm
字号:
<TR vAlign=top>
<TD height=1></TD></TR>
<TR vAlign=top>
<TD width=776 height=211>
<TABLE cellSpacing=1 cellPadding=1 width="95%" align=center border=0>
<TBODY>
<TR bgColor=#ffffff>
<TD vAlign=top align=middle width="88%" bgColor=#ffffff><FONT
size=3><STRONG>用AT89C2051实现电话远程控制家用电器</STRONG></FONT>
<HR SIZE=1>
作者:-
<SCRIPT
src="用AT89C2051实现电话远程控制家用电器-C51之家.files/articlehits.htm"></SCRIPT>
</TD></TR>
<TR bgColor=#ffffff>
<TD style="LINE-HEIGHT: 1.5" vAlign=top
bgColor=#ffffff>随着电话和家用电器的普及,越来越多的人希望能用电话来控制家电。本文采用AT89C2051单片机,配合新型的DTMF解码芯片和语音电路,成功实现了电话对家用电器的控制。</FONT>
<TABLE height=0 width=0 align=left></TR></TD></TD></TR>
<TBODY></TBODY></TABLE>
<P> <B>关键词</B>:AT89C2051 MC145436 ISD33060 电话遥控</FONT></P>
<P> <B>1 主要芯片简介</B></FONT></P>
<P> (1)AT89C2051</FONT></P>
<P> AT89C2051是Atmel公司生产的与MCS-51系列兼容的单片机。内含:2K字节Flash
EEPROM、128字节RAM、15根I/O引线、2个16位定时器/计数器、1个五向量两级中断结构,1个全双工串行口、1个精密模拟比较器等,其引脚如图1所示。<BR>
<DIV align=center>
<TABLE width=10>
<TBODY>
<TR>
<TD align=middle><A
href="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171349747.gif"
target=_blank><IMG title=点击在新窗口查看原始图片
src="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171349747.gif"
onload="java_script_:if(this.width>300)this.width=300"
border=0></A></TD></TR>
<TR>
<TD
align=middle></TD></TR></TBODY></TABLE></DIV><BR> (2)MC15436</FONT>
<P></P>
<P> MC145436是Motorola公司生产的DTMF(双音多频)解码器,负责将DTMF信号转变为二进制数字信号,其引脚如图2所示。7脚(AIN)为信号输入端;2、1、14、13脚D1、D2、D3、D4为解码输出端;12脚(DV)为输出数据有效端,当输入的DTMF信号经IC解码成功后该脚转变为高电平;3脚(EN)为解码输出控制端;6脚(XEN)为CLK信号控制端。<BR>
<DIV align=center>
<TABLE width=10>
<TBODY>
<TR>
<TD align=middle><A
href="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350592.gif"
target=_blank><IMG title=点击在新窗口查看原始图片
src="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350592.gif"
onload="java_script_:if(this.width>300)this.width=300"
border=0></A></TD></TR>
<TR>
<TD
align=middle></TD></TR></TBODY></TABLE></DIV><BR> (3)ISD33060</FONT>
<P></P>
<P> ISD33060是ISD公司的第3代3V的单片语音IC,其引脚如图3所示。<BR></P>
<DIV style="FLOAT: right">
<TABLE width=10>
<TBODY>
<TR>
<TD align=middle><A
href="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350506.gif"
target=_blank><IMG title=点击在新窗口查看原始图片
src="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350506.gif"
onload="java_script_:if(this.width>300)this.width=300"
border=0></A></TD></TR>
<TR>
<TD
align=middle></TD></TR></TBODY></TABLE></DIV><BR> 该芯片总存储时间达60s,其与外部微处理器的接口采用SPI(Serial
Peripheral Interface)串行外设接口或MSI(Mircowire Serial
Interface)微传输线串行接口,ISD33060的录放音时间可任意进行分段,每段最短长度为150ms。</FONT>
<P></P>
<P> 使用SPI接口协议时,主要用到5条控制线:</FONT></P>
<P> ①1脚(SS)--芯片选择输入端,低电平有效;</FONT></P>
<P> ②2脚(MOSI)--串行数据输入端,ISD芯片从该脚接收来自单片机的控制命令数据;</FONT></P>
<P> ③3脚(MISO)--串行数据输出端,单片机从该脚获得ISO的返回数据;</FONT></P>
<P> ④28脚(SCLk)--SPI接口串行时钟输入,用于同步数据的传送;</FONT></P>
<P> ⑤25脚(INT)--当语音放结束或录放音溢出时,该脚变低电平,在下一个SPI周期开始时,该信号被清除并返回高电平。</FONT></P>
<P> <B>2 硬件原理图</B></FONT></P>
<P> 硬件原理如图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切断线路。每次可进行多个电器的控制。<BR>
<DIV align=center>
<TABLE width=10>
<TBODY>
<TR>
<TD align=middle><A
href="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350394.gif"
target=_blank><IMG title=点击在新窗口查看原始图片
src="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350394.gif"
onload="java_script_:if(this.width>300)this.width=300"
border=0></A></TD></TR>
<TR>
<TD align=middle></TD></TR></TBODY></TABLE></DIV></FONT>
<P></P>
<P> <B>3 软件设计</B></FONT></P>
<P> 主程序框图如图5所示。<BR>
<DIV align=center>
<TABLE width=10>
<TBODY>
<TR>
<TD align=middle><A
href="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350113.gif"
target=_blank><IMG title=点击在新窗口查看原始图片
src="用AT89C2051实现电话远程控制家用电器-C51之家.files/2005122171350113.gif"
onload="java_script_:if(this.width>300)this.width=300"
border=0></A></TD></TR>
<TR>
<TD align=middle></TD></TR></TBODY></TABLE></DIV></FONT>
<P></P>
<P> <B>4 结束语</B></FONT></P>
<P> 本装置只控制3种电器,通过改进完全可以控制更多电器;还可用来遥控开锁,或作为远程报警器</P></TD></TR>
<TR bgColor=#ffffff>
<TD vAlign=top bgColor=#ffffff> </TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="95%" align=center border=0>
<TBODY>
<TR>
<TD width="41%">上传时间:2006-09-12 17:08:30</TD>
<TD width="2%"> </TD>
<TD align=right width="57%"><A
href="http://w2340.2008red.com/pinglun.php?workid=58227&articleid=10157"
target=_blank>【评论】</A> 【<A
href="javascript:window.close()">关闭</A>】</TD></TR></TBODY></TABLE>
<P> </P></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=776 align=center border=0>
<TBODY>
<TR vAlign=top>
<TD width=776 colSpan=2 height=1></TD></TR>
<TR vAlign=top>
<TD class=shouyemenu vAlign=center colSpan=2 height=22>
<DIV align=center></DIV></TD></TR>
<TR vAlign=center>
<TD style="LINE-HEIGHT: 1.5" colSpan=2>
<DIV align=center></DIV></TD></TR>
<TR vAlign=center>
<TD style="LINE-HEIGHT: 1.5" colSpan=2>
<DIV align=center></DIV></TD></TR>
<TR vAlign=center>
<TD style="LINE-HEIGHT: 1.5" colSpan=2>
<DIV align=center><A href="http://w2340.2008red.com/">C51之家</A> 版权所有 <A
href="http://www.2008red.com/">红榜网</A> 技术支持</DIV></TD></TR>
<TR style="DISPLAY: none" vAlign=center>
<TD colSpan=2><PRE><TABLE style="DISPLAY: none" cellSpacing=0 cellPadding=0 width="85%" border=0><TBODY><TR><TD><SCRIPT language=javascript src="用AT89C2051实现电话远程控制家用电器-C51之家.files/click.htm"></SCRIPT></TD></TR></TBODY></TABLE></PRE></TD></TR>
<TR vAlign=center>
<TD colSpan=2 height=3><FONT
color=#ffffff></FONT></TD></TR></TBODY></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -