《基于单片机的家居电器的远程控制毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的家居电器的远程控制毕业论文.doc(27页珍藏版)》请在三一办公上搜索。
1、家居电器的远程控制作者 林妹婷 指导老师 龙世瑜高级助理实验师湛江师范学院信息科学与技术学院摘要:本设计主要是应用于在控制异地家用电器工作,系统由振铃检测电路、自动摘挂机电路、密码检测电路、单片机主控电路、语音提示电路、开关控制电路、电源电路七部份组成采用AT89C51单片机,配合DTMF解码芯片CM8870和语音芯片ISD400,充分利用硬件电路的稳定性,可靠性,成功实现了用电话对家居电器的远程控制关键词:远程控制;AT89C51;DTMF解码芯片CM8870;语音芯片ISD400The Remote control of Household Electrical AppliancesLin
2、 meitingInformation Science and Technology School Zhanjiang Normal University,zhanjiang524048,ChinaAbstract: This design is mainly used in the work of the remote control system of household appliances, the system is consist of ringing detection circuit, automatic extraction hang up circuit, password
3、 detection circuit, the single-chip microcomputer control circuit, circuit voice prompt, switch control circuits, power Circuit seven parts. MCU using AT89C51 with DTMF decoder chip CM8870 and voice chip ISD400 make full use of hardware circuit stability, reliability and success of the phones on the
4、 control of household appliances.Keywords: remote control;AT89C51;DTMF decoder chip CM8870; voice chip ISD400引言 远程控制是通过一定的手段对异地的电器实施控制,目前研究开发的主要是电话远程控制和Internet远程控制。但基于我国现有的Internet分布和价格情况的分析要利用Internet该方式只能局限于在发达地区,因此存在应用范围问题。所以要利用网络来实现家居电器的远程控制是不现实的。电话远程控制作为一较新的课题与常规的遥控方式相比,显示出一定的优越性,不需进行专门的布线,不占用
5、无线电频率资源,避免了电磁污染。同时,由于电话线路各地联网,可以充分利用现有的电话网,因此控制距离可跨省市,甚至跨越国家,相对于Internet来说价格更低实现范围更广,更容易。电话属双工通信手段。因此,可以体现出利用电话进行远程控制的更大优越性。操作者可以通过各种提示音即时了解受控对象的有关信息,从而进行进一步的操作。本作品正是针对这一点进行了较大改进,采取单片机智能控制,利用不同的提示音达到对于不同操作的提示及对受控方状态的信息反馈,从而使操作者能够及时了解受控方信息,使产品达到交互式与智能化1。1、系统总体设计单 片 机开关控制密码检测振铃检测自动摘机语音提示电源电 话 线 接 口电话远
6、程控制系统是由AT89C51单片机构成主控部分,进行主要的信息处理,接收外部操作指令形成各种控制信号,并完成对各种信息的记录;利用CM8870双音频DTMF解码芯片及ISD4004语音芯片进行信号的传输。接口电路振铃检测、摘挂机控制、开关控制电路提供单片机与电话外线及家居电器的连接。该系统使用时可并联在电话外线即可。系统原理框图如图1所示。图1系统框图本系统并联于电话机的两端,不会影响到电话机的正常使用。当用户通过电话机拨通本系统所连接外线的电话号码,本装置如果检测到振铃五次,即五次响铃后无人接,自动摘机,单片机启动语音提示,判断是否进入家电控制模式,摘机电路自动摘机进入控制状态并将摘机信号输
7、入到单片机中,单片机接收到摘机信号后,启动语音提示电路发出提示音,提示作者输入密码。输入的密码经CM8870转换成二进制数并与事先存储在单片机中的密码比较,如果不合,则语音提示密码错误,可重新输入,若三次密码错误则发出提示音并自动挂机,如果输入正确密码,则语音提示选择被控制电器,按“1”键表示开灯,按“2”键表示关灯,按“3”键表示开空调,按“4”键表示关空调,按“5”键表退出家电控制模式,按下所要执行的电器的按键则能进行远程控制电器的开或关,完成后返回。2、各系统电路及工作原理本设计分为AT89C51单片机、振铃检测、摘挂机控制、开关控制、密码检测、语音电路、电源电路几个模块。充分利用硬件电
8、路的可靠性、稳定性和芯片的方便性,使整体电路达到比较高的稳定性。2.1 AT89C51单片机 AT89C51在本设计中作为主控部分,完成对各中段赋初值、方式字、密码初始化、密码检测、电器开关控制、振铃计数初值等工作。其外形及引脚排列如图2所示2.1.1 AT89C51的主要特性1)与MCS-51 兼容 ;2)4K字节可编程闪烁存储器 ;3)可1000次写/擦循环;4)数据保留10年;5)全静态工作:0Hz-24Hz;6)三级程序存储器锁定;7)1288位内部RAM;8)32可编程I/O线;9)两个16位定时器/计数器;10)5个中断源 ;11)可编程串行通道;12)低功耗的闲置和掉电模式;13
9、)片内振荡器和时钟电路。AT89C51的外形及引脚排列如图2所示: 图2 AT89C51 外形及引脚排列2.1.2 AT89C51的主要引脚P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高,即是要接上拉电阻。P1、P2、P3口都是内部提供上拉电阻的8位双向I/O口,能接收输出4TTL门电流。当各自管脚写入1后,内部上拉为高,都可用作输入。在FLASH编程和校验时,P
10、1口作为第八位地址接收;P2口接收高八位地址信号和控制信号。P3口可作为AT89C51的一些特殊功能口。RST是复位信号引脚。/EA/VPP是程序存储器的读选通信号端。当/EA保持低电平时,对ROM的读操作限定在外部程序存储器;当/EA端保持高电平时,对ROM的读操作从内部程序存储器开始。XTAL1(19脚)是反向振荡放大器的输入及内部时钟工作电路的输入端。XTAL2(18脚)是来自反向振荡器的输出端2。2.1.3上电复位在图3电路中C4和R1组成单片机的复位电路,连接到单片机的第9脚,它是施密特触发输入,当振荡器起振后,单片机上电瞬间,RC电路充电,RST引脚端出现正脉冲, RST高电平单片
11、机保持复位状态。此时,ALE、/PSEN、P0、P1、P2、P3口都输出高电平,RST变成低电平后,进入工作状态。复位操作不影响片内RAM的内容。2.1.4 时钟电路在图3电路中Y1、C5、C6组成了单片机的时钟电路,这种是内部时钟方式,采用了外接晶体和电容组成的并联谐振电路,晶振可以在1.2-12HMz之间任选,电容可以在20-60pF之间选择。在本部分晶振选12HMz,电容选30pF3。 2.1.5 中断口P3.3(/INTR1) 在本系统中P3.3(/INTR1)作为中断口,控制整个AT89C51单片机主控电路工作。当单片机上电复位时,P3.3(/INTR1)输出高电平,由于P3.3口外
12、接振铃检测电路,当有振铃到来时,铃流就会以方波信号的形式从振铃检测电路的光耦输出送到中断口P3.3(/INTR1),该中断口检测到该方波信号由高电平跳变到低电平时中断口有效,即在下降沿有效。此时单片机工作,控制各部分电路工作。如果没有振铃输入,则该中断口保持高电平,等待信号的到来。在本设计中P0.0-P0.4口用于接收CM8870输出的8421码。P1.0-P1.6口用于输出用户输入的控制开关的命令。P2.0-P2.4口用作与语音芯片连接的接口。P0.7外接自动摘机电路。P3.3口外接振铃检测电路。第9脚用于复位输入。第18、19脚外接12MHz的石英晶体和振荡电容。AT89C51单片机主控电
13、路如图3所示图3 AT89C51单片机主控电路2.2振铃检测电路原理图及工作原理在电话线路没有振铃信号前,电话线路由电话交换机提供60v的直流电压。当用户被呼叫时,电话交换机发来振铃信号。振铃信号为253伏的正弦波,谐铃失真不大于10%,电压有效值9015V。振铃以5秒为周期,即1秒通,4秒断。振铃检测电路如图4所示 电话线输出振铃信号图4振铃检测电路本部份电路的设计采用光耦EL817作为主要元件,利用振铃的周期检测振铃。当电话来电时,为正弦波振铃信号通过电阻R20限流、电容C11隔直,二极管D8进行27V稳压又经R19限流再从光耦的1脚输入,光耦EL817导通工作,将交流的振铃信号转换成方波
14、信号,该方波信号再通过光耦4脚接输出,该方波接入AT89C51的外中断INT1(P3.3)口,P3.3端口低电平有效,当计数5次产生INT1中断,则单片机发出信号控制继电器自动摘机,完成振铃检测。2.3 自动摘挂机电路原理图及工作原理由于程控电话交换机对电话摘机的响应是电话线回路电流突然变大为约30mA的电流,交换机检测到回路电流变大就认为电话机已经摘机。自动摘挂机电路如图5所示 电话线 输入单片机控制信号图5自动摘挂机电路在本设计中直接采用硬件电路控制自动摘挂机。在单片机上电复位时P0.7口输出高电平,当有铃流来时中断口检测到低电平,此时P0.7口置低电平,则三极管Q2的B极为低电平,又因三
15、极管Q2的C极接+5V,Q2导通,由于的C极通过继电器K4接+12V,则Q3导通,继电器K4工作,K4被吸合,使电阻R20导通接入电话线两端。由于R20是250较小,电路电流变大,控制电路向交换机发出模拟摘机的信号,交换机响应摘机信号,完成电话线接通,则完成自动摘挂机过程。程序则转入语音提示、密码检测部分。如果没有铃流到来,则P0.7口保持高电平,Q2截止, Q3导通。在此D9是保护三极管9013,D10为是摘机指示灯。2.4语音提示电路2.4.1 ISD4004简介ISD4004是一种采用ChipCorder专利技术的语音芯片。该芯片内含振荡器、抗混叠滤波器、平滑滤波器、音频放大器、自动静噪
16、及高密度多电平闪烁存贮陈列。ISD4004采用多电平直接模拟量存储技术,每个采样值直接存贮在片内闪烁存贮器中,因此能非常真实、自然地再现语音、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”4 2.4.2 ISD4004的主要特性此芯片无须A/D转换和压缩就可以直接储存,没有A/D转换误差,在一个记录位可存储250级声音信号,相当于通常的A/D记录的8倍。ISD4004系列录放时间为816分钟。采样频率可为4.0、5.3、6.4、8.0kHz,频率越低,录放时间越长,音质则有所下降, 片内信息存于闪烁存贮器中,可在断电情况下保存100年,反复录音10万次。ISD400
17、4的外形及引脚排列如图6所示。图6 ISD4004的外形及引脚排列2.4.3 ISD4004的主要引脚:VCCA,VCCD是电源;VSSA,VSSD是地线;ANA IN+是录音信号的同相输入端。ANA IN-是录音信号的反相输入端。AUD OUT提供音频输出,可驱动5k的负载。SS为片选端。此端为低,即向该ISD4004芯片发送指令,两条指令之间为高电平。MOSI为串行输入端;MISO为ISD的串行输出端。ISD未选中时,本端呈高阻态。SCLK为ISD的时钟输入端;中断INT为漏极开路输出5。2.4.4 ISD404录音电路 在把语音该芯片安装前必须要把语音通过录放系统从该芯片的第16脚(IN
18、-)录进语音芯片内,后才可以安装到工作电路吧板上。MIC是驻极体电容式话筒,即是语音信号的输入端,声音经声电转换输出的模拟信号通过由9014三极管组成的放大电路加到ISD4004语音芯片的输入端(16脚),并以模拟信号的形式保存在芯片内的模拟存储器单元。录音信号输出经滤波器、输出放大器送到AUOUT端输出经电容耦合到电话线,从而完成话音的重放。当然要完成该芯片的录音必须要该系统的录音程序配合才能成功。电路中9014选择=100,集电极的电流是1mA;由于话筒的输入灵敏度为10mv,输出音频信号的电压为1v则电压放大倍数为100。具体的录音程序看附录。图7为该芯片的录音系统。 图7 ISD400
19、4录音电路2.4.5语音提示电路工作过程: 单片机AT89C51的P2.0输出置高电平,则当ISD4004的/SS(第1脚)检测为低电平,则从单片机AT89C51的P2.2口(第23脚)向ISD4004芯片发送控制指令,控制指令从ISD4004芯片的MOSI端口(第2脚)送进该芯片,并在SCLK为上升沿时被锁存到芯片内,且在SCLK为下降沿时移出ISD4004芯片从MISO端口(第3脚)输出返回信号给单片机AT89C51的P2.3口(第24脚)说明控制指令发送成功,且启动语音电路ISD4004,从该芯片的AUDOUT端口(第13脚)发出语音提示:“进入家电控制模式请按1键”并通过C15耦合到电
20、话线上,用户就可以通过听筒接听到提示音,进一步进行下一步控制。在完成一个读取周期,后一个周期开始INT中断状态开始清除,/INT端口(第25脚)就会向单片机发出中断指令。在电路中,C16用1uF的电容,能消除噪音,使语音提示更清晰。语音提示电路原理图如图8所示。 电话线接收单片机 控制信号 图8语音提示电路原理图2.5密码检测电路 2.5.1CM8870简介CM8870是用于双音频接收的专用芯片,主要包括输入端运算放大器、频带分割滤波器、数字解码器和输出控制单元等4个部分。在输入端,运算放大器部分对输入信号进行必要的增益处理,输出的信号通过基于开关电容技术的频带分割滤波器进行滤波和频带分割,提
21、取高频信号和低频组信号,再将高频信号和低频组信号进行特征提取,最后确定出组成按键的两个频率。将这两个频率值送到相应的输出口进行解码,输出相应的按键代码,这样就完成了一个按键的检测。6其外形及引脚排列如图9所示图9 CM8870外形及引脚排列2.5.2 密码检测电路的工作过程在用户听到提示音后,按照提示音的要求输入密码或者控制家用电器开关的命令,该密码或命令通过电话线以双音频DIMF信号的形式从CM8870的IN+和IN-两端输入经内部的拨号音频滤波器滤除拨号音频信号,然后经前置放大后送入双音频滤波器,将双音频信号按高低音频信号分开,再经高低音频滤波器,幅度检测器送入输入译码电路,经过数字运算后
22、从CM8870的Q1-Q4端(第11-14脚)输出对应的8421码。当单片机AT89C51的P0.4口(第35脚)检测到CM8870的STD端口(第15脚)电平由低变高,再反相为低时,则单片机AT89C51的P0.0-P0.3口就开始接收从CM8870的Q1-Q4端(第11-14脚)输出的有效二进制码。同时CM8870的第15脚最后输出高电平,说明输出数据有效,此信号通常作为后级电路的片选或使能信号。当单片机接收到从CM8870的Q1-Q4端(第11-14脚)输出的有效二进制码后则会把此有效的二进制码存储到单片机内部的RAM里,并将其与原先存储在单片机内部的二进制密码或命令相比较,如果完全相符
23、则单片机启动语音提示用户的下一步工作;如果不相符则语音提示用户重新输入或退出系统。密码检测电路如图10 电话线 接+5V输出解码数据图10密码检测电路2.5.3 CM8870的外围电路CM8870的第7、8脚接3.579MHz晶体谐振器,为芯片提供标准时钟。第3脚(GS)为增益选择端,外接的电路通过R14-R18几个电阻控制输入信号的增益,并与第4脚(VREF)输出的参照电压相比较。第5、6、9脚接地。第16、17脚接由R7、C7组成的RC振荡电路。密码检测电路如图10所示。2.6开关控制电路2.6.1 ULN2003简介ULN2003是由七个硅NPN达林顿管组成,专门用来驱动继电器的芯片,甚
24、至在芯片内部做了一个消线圈反电动势的二极管。在5V的工作电压下它能与TTL和CMOS电路直接相连, ULN2003的输出端允许通过IC 电流200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可以直接驱动继电器或固体继电器(SSR)等外接控制器件,也可直接驱动低压灯泡7。其外形引脚排列及内部结构如图11、图12所示:图11ULN2003的内部结构 图12 ULN2003的形引脚排列 2.6.2开关控制电路的工作原理本单元电路主要是由反向电路、继电器控制电路组成。在本装置中ULN2003的第8脚接地,第9脚
25、接电源,第1-7脚作为控制信号的输入,第10-16脚作为控制信号的输出端。 开关控制电路图如图13所示 电器控制命令输入 图13开关控制电路 本电路工作时,当单片机送“1”使驱动器三极管导通,单片机送“0”使驱动器三极管截止。本电路上的输出驱动器件ULN2003中内部带有吸收二极管,可有效地吸收感性负载启动时产生的达600mA的峰值电流。所有的开关量输出信号均带有锁存功能。当CPU对设定的一个IO地址执行一次写操作,就送出了一组输出信号。7例如当单片机设定对的IN1(第1脚)进行写操作,即当ULN2003检测到第1脚为高电平时,则通过ULN2003内部反相,从OUT1(第16脚)输出低电平,继
26、电器K1吸合,外部家用电器工作。通过ULN2003电路将外部电器电路与单片机电路隔离,有效地保护的单片机。ULN2003可以驱动7个继电器该系统可控制七路电器,在此只用了三路开关控制。2.7 电源电路电源电路部分的电路经过变压整流变成12V, +12V电压为继电器提供电源,+12V经限流电阻到三端稳压管7805产生+5V的直流电压为振铃检测电路,自动摘挂机电路,密码检测电路,单片机主控电路,语音提示电路几部分提供电压。图14 三端稳压管78057805为正5V稳压管,将它有印刷字母的一面面对自己,右边脚为输出,左边脚为输入,中间脚接地。如图14所示根据7805的输入电压要求,要高于所需输出电压
27、2V以上8。电源电路图如图15所示:图15 电源电路图本电源设计是由市电经过12V变压器变压后,再经过D1-D4组成的桥式整流器流变成12V直流电压后经C1、C2滤波输出再供继电器工作,再经7805三端稳压后得到5V直流电源,最后经过C3滤波输出。3 软件设计本设计的软件部分是运用在keil开发软件下的汇编语言来进行编程, 在设计中软件的模块起着重要的作用,也是比较困难的部分。经过比较,采用了AT89C51作为控制的单片机芯片。本系统主要程序模块包括AT89C51主控程序、振铃检测计数、控制摘挂机、双音频信号分析处理、控制电器、语音提示几部分。每个功能模块对于整体设计都是非常重要,单片机AT8
28、9C51通过软件程序才能很好的对外部的信息进行采集、分析和决策1。3.1主程序框图如图16所示:图16主程序框图3.2语音提示部分本功能模块主要是重放提示音,为了方便用户,直接使用预先录制在ISD4004语音芯片内的提示音。所以必须要先把所需的声音通过录音程序录进语音芯片内。因此有必要先介绍ISD4004语音芯片的SPI传输协议。3.2.1串行外围接口SPISPI协议是一个同步串行数据传输协议,该协议假定微控制器的SPI移位寄存器在SCLK的下降沿工作。对ISD4004而言,在时钟上升沿将锁存MOSI引脚的数据,而在下降沿则将数据送至MISO引脚。SPI端口及其相关控制位的示意图如图17所示图
29、17 SPI端口及其相关控制位的示意图SPI控制寄存器用于各个器件功能的控制,这些控制包括放音、录音、报文插入、上电和掉电、启动和停止操作以及忽略地址指针等。在控制这些功能时,特别在编写录音、放音程序中必须要严格按照SPI接口指令定义9。 SPI接口指令如表1表1 SPI的接口指令在本系统中的提示音主要有:1、询问是否进入家电控制模式:“进入家电控制模式请按 “1”键”录在ISD4004开始地址为01H;“请输入密码,以#字结束” 录在ISD4004开始地址为03H;“密码错误,请重新输入,以#字结束” 录在ISD4004开始地址05H。2、电器开关控制:“请选择操作电器,按“1”键开灯,按“
30、2”键关灯,按“3”键开空调,按“4”键关空调,按“5”键退出家电控制模式” 录在ISD4004开始地址07H; “本次处理完毕” 录在ISD4004开始地址09H。 这些提示音使用是有限循环,要把这些提示音录进芯片或从芯片中放出可看具体子程序代码。如附录1。3.3 密码检测部分 本系统的设计是利用CM8870的多音频解码功能把用户输入的信息解码成所需的二进制码再与预先写进单片机内部的密码比较来实现。3.3.1 CM8870的数据传输的时序图如图18图18 CM8870的数据传输的时序图3.3.2密码检测部分的流程图本系统密码校验的基本原理是:在系统初始化的时候把原始密码写入地址为31H开始的
31、存储空间内,密码的位数“5”赋给R7。当系统摘机时,要求输入密码,单片机把用户解码后的数据(使用者输入的密码)存储在38H开始的存储空间内。然后单片机对进行两个存储地址的内容逐位进行比较,直到完全相等才能转到下一进程,有一位不同,程序就转到出错程序。流程图如图19所示,子程序代码看附录。图19 密码检测流程图 3.4控制电器部分本系统首先通过外围双音频解码电路解码的信息(选择电器)判断所选择的电器,然后跳转到每一个子程序,通过单片机向P0口的低四位发送数据,这些控制信息表示对不同的电器进行控制的控制字。子程序代码看附录。4 结束语本设计能实现电话对异地的家用电器进行远程控制开或关,在本设计中原
32、可控制7路电器的开或关,但在本装置只设定控制三种家用电器的工作,通过改进是可以控制7路以上的电器,本装置还可以实现电话言,或远程报警器等功能。本系统由于采用了双音多频解码器,在芯片内实现了DTMF信号的检测与产生,从而大大简化了系统的结构,节约系统的成本。并且配合了语音提示芯片,实现了人机交换,增强了该系统的智能化。通过该次毕业设计发现自己所学知识很缺乏,特别是有关单片机编程方面。同时让我对以前所学过的理论知识回顾了一遍,并进一步巩固,自己的实践能力的到进一步的提高。5致谢在此,我要感谢我的导师龙世瑜老师,谢谢他一直以来给我的帮助。还感谢在毕业设计期间所有给予我帮助的老师和同学。参考文献:1
33、王宇.智能型电话远程遥控器.2 顾滨,赵伟军,王泰,鲍可进,李铁香.单片微计算机原理、开发及应用M.北京:高等教育出版社,2000.15-35.。3 李玉梅.基于MC5-51系列单片机原理的应用设计M.北京:国防工业出版社,2006.20-21.。4 张常年等.ISD4004语音芯片的工作原理及智能控制系统中的应用C.国外电子元器件,2006.1-6。.5 ISD4004手册,1-17.。6 CM8870手册,1-8.。7ULN2003手册,2003.2-3.。87805应用电路图.电子技术资料网站. 9 窦振中.单片机外围器件实用手册输出通道器件分册M.北京:北京航空航天大学出版社,2002
34、.467-479.。10 刘建清,鲁金,王春生.从零开始学单片机技术M.北京:国防工业出版社,2006.28-31.。11 吴亮亮,程已阳,宫仁敏.家用电器电话远程控制装置J.电子报,2007-10-21.第015版.1-2.。12 谢孝良.用AT89C2051实现电话远程控制家用电器J.单片机与嵌入系统应用,2003-1.56-57.。校对人:龙世瑜附录1程序录音程序:JB P3.5,$ ;单片机上电复位MOV A,#20H ;ISD上电ACALL DELAY1 ;上电延时25MSRECORD1:MOV R3,#01H ;从该地址开始录音MOV A,#0B0H ;送录音命令SETB P1.0
35、 ;/SS脚有效,开始送数ACALL DELAY2 ;延时30S对麦克风发音录字DJNE R3,RECORD2;录满结束判断RECORD2:MOV A,#70H ;送停止录音命令RETDELAY1:MOV R5,#25 ;延时25MS子程序DJNE R5,DELAY1DELAY2:MOV R3,#300 ;延时30S子程序DJNE R3,DELAY2 RET END放音子程序:PLAY:MOV A,#20H ;ISD上电ACALL DELAY1 ;上电延时25MSCLR P2.0 ;选中ISD4004 MOV R3,#01H ;从该地址开始放音MOV A,PLAY0 ;送放音地址低8位ACAL
36、L SEND ;调用送地址子程序MOV A,PLAY1 ;送放音地址高8位ACALL SEND MOV A,#0F0H ;送放音命令ACALL SENDSETB P2.0CLR P2.0 ;/SS脚有效,开始送数ACALL DELAY2 ;DJNE R3,PLAY2;检测是否放完PLAY2:MOV A,#70H ;送停止放音命令RETSEND: CLR MOSI ;向ISD4004送指令,地址等的子程序CLR P2.1MOV R1,#8 密码检测子程序:ORG0150HHOKE:CLR 7DHCLR TR1 ;检测到有铃流 CLR P0.7 ;电话自动摘机eMOV36H,#03H ;3次密码错
37、误LCALL RING10;调用语音提示输入密码IN: CLR 7EH ;7EH=0DTMF:MOV R7,#5H;把密码的位数放在R7 MOV R1,#38H ;把密码信息放进38H开始的存储空间SETB P0.0SETB P0.1SETB P0.2SETB P0.3WAIT:JBC 7EH,CC ;STD端口电平由低变高,再反相为低时单片机开始接收密码数据 LJMP WAITCC:MOV R7,#5H ; 把密码的位数放在R7 MOV R0,#31H ;将预先存储在31H的密码取出 MOV R1,#38H ; 将存储在38H的密码取出CMP:MOV A,R1; 输入的密码与预存的进行逐位比
38、较程序MOV R4,ACLR CMOV A,R1SUBB A,R0 ;testINC R0INC R1JZ AAA;第一位密码正确,则检测下一位密码LJMP QQ;错误则转到出错子程序AAA:DJNZ R7,CMP ;R7-1!=0LJMP LL ;密码完全正确则转移到电器控制子程序QQ: DJNZ R2,IN1 ;password wrong&R2!=0LCALL RING20;调用语音提示输入密码错误LJMP STOPIN1:LCALL RING20 ; 语音提示输入密码错误LJMP INRING10:MOV R6,#03H;RING20:MOV R3,#05H;电器控制子程序:LL:LC
39、ALL RING40 ;语音提示选择所要控制的电器MOV R7,#1H;选择开灯控制MOV R1,#38H;将所选择的电器信息放进R1 CLR 7EHWAIT0:JBC P0.3,DD;等待中断信号 LJMP WAIT0DD: MOV R1,#38H MOV A,R1 RR A RR A RR A RR A MOV R4,A RL A ADD A,R4 MOV DPTR,#TAB JMP A+DPTRTAB:LJMP ZERO LJMP LL;8 LJMP FOUR;4 LJMP STOP ;# LJMP TWO ;2 LJMP ZERO ;0 LJMP LL;6 LJMP LL ;* LJM
40、P ONE ;1 LJMP LL ;9,* LJMP FIVE ;5 LJMP LL ;A,* LJMP THREE ;3 LJMP LL ;*,* LJMP LL;7 LJMP LL ;C,* ORG 0250HZERO: LJMP LLONE: LCALL RING40 ;发提示音:请操作电器 MOV R7,#01H CLR 7EHWAIT1: JBC 7EH,WW1 ;wait INT0 LJMP WAIT1WW1: MOV R1,#38H ;检查信号首位 MOV A,R1 CJNE A,#35H,BB1 ;(38)不等于5,则跳转BB1 LJMP ZZ1 ;(38)等于5,则跳转ZZ1
41、执行退出程序BB1: CJNE A,#31H,QUIT1 ;(38)不等于1,则跳转QUIT1 SETB P1.3 ;控制电器 CLR P1.0 CLR P1.1LJMP QUIT1 ZZ1: CLR P1.3 ;close all CLR P1.0 CLR P1.1 LCALL RING50 ;语音提示“本次处理完成”QUIT1: LJMP LLRING40:MOV R3,#07HRING50:MOV R6,#09H振铃计数部分本单元是通过计数器T1的外部中断方式来计数的,程序代码: ORG 0090H TT1: SETB 7DH RETI附录2电路图系统整体电路原理图:1112 录音系统电路原理图: