基于单片机的智能电话控制系统软件设计

2017-05-18 12:58冯若愚
漯河职业技术学院学报 2017年2期
关键词:子程序中断电器

赵 璐, 冯若愚

(漯河职业技术学院, 河南 漯河 462002)

基于单片机的智能电话控制系统软件设计

赵 璐, 冯若愚

(漯河职业技术学院, 河南 漯河 462002)

本设计基于STC89C52单片机控制单元,通过通信、遥控方式,让用户只需通过电话机(固定电话或移动电话)输入简单命令就可以实现对家电的远程控制,操作简单便捷。

单片机;智能电话;控制系统;软件设计

1 研究背景

随着计算机技术和电信业的发展,通过电话线进行的远程通信得到了越来越多的应用。人们通常采用MODEM进行通信,但只是应用在通信数据量不大、对通信速率要求不高的场合,所以可以考虑采用DTMF通信方式,它具有接口简单、成本低廉、可靠性高的特点。目前,在电话控制器和受控家用电器之间的通讯链路主要有两种方式:一种是采用直观方式,由电话控制器通过一对双芯电缆直接与家用电器控制器相连进行信号传输。这种方式成本较低,但家庭安装比较麻烦,同时需要在墙上走明线,会破坏装修的整体效果。另一种方法是采用电力载波通讯技术,用家庭内现有的交流电源线作为通讯链路,安装较为方便,只要插入墙上的电源插座即可达到通讯控制的要求。另外,社会经济水平的不断提高促使家庭自动化的拓展,人们希望能够随时随地对家庭安全实行远程监控,对家电实行远程控制。由于电话线路是全国联网的,可以跨省市实现远距离遥控,因此该方法具有较高的实用价值。

笔者设计的电话远程控制系统,用于具有单片机控制的家用电器的电话遥控,用户可通过任意一部双音多频电话(包括手机、电话分机)对自己家庭所安装的各种电器(如电饭锅、微波炉、电视机等)进行开机、停机等遥控操作。

2 系统控制流程

所设计的智能电话控制系统是以STC89C52单片机为控制中心,主要由铃流检测电路、摘挂机控制开关电路、DTMF信号译码电路、语音提示电路、电器设备驱动电路等部分组成。因此,软件设计也分为系统初始化、振铃检测、模拟摘挂机、双音频信号分析处理、控制电器、语音提示等部分。采用汇编语言编程,采用HK-51系列仿真开发系统完成汇编语言的编译,再通过STC-ISP-V3.5调试将程序传送给单片机。系统的主程序流程如图1所示。

系统软件主要包括监控管理主程序和中断子程序,单片机响应用户操作和送出控制信号通过中断子程序来完成。遥控装置通电后,单片机主程序负责系统初始化,设置中断和计数器的值。当有铃流到来且连续振铃达到一定次数时,在振铃检测子程序中送出模拟摘机控制信号,装置实现模拟摘机,并语音提示用户输入密码,此时进入密码检验程序。用户在远端话机上输入密码,MT8870解码双音频信号,将用户按键的8421码送入单片机,单片机将用户输入和内置在AT24C02存储器中的密码作比较,如果用户输入的密码正确,则可以操作电器或者修改密码;如果用户连续三次输入的密码错误,系统则认为此用户无权对电器进行操作,于是通过外围电路实现挂机,并返回主程序重新初始化中断和计数器。

图1 系统主流程图

用户操作电器和修改密码是在控制电器部分完成的。如果用户操作电器,则单片机进入电器操作子程序,首先接受MT8870解调的码字,然后处理用户的操作,再通过P1.4端口连接的电源控制电路实现开关电器。密码修改与此程序相同,用户可在远端话机修改AT24C02芯片存储器中记录的密码。在用户操作过程中,单片机根据用户的操作不断给出ISD1420的地址信息和控制信息,将系统的工作状态反馈给用户。

3 系统各模块软件设计

3.1 密码检测部分

在系统初始化时把原始密码写入AT24C02存储芯片的存储空间内,密码的位数“5”赋给R7。当系统摘机时,语音提示输入密码,单片机把解码后的数据存储在38H开始的存储空间内。然后单片机对两个存储地址的内容逐位进行比较,直到完全相等时才能转到下一进程,若有某一位码不同,程序就转到出错程序。密码检测子程序如图2。

3.2 语音提示部分

本功能模块主要是产生信号提示音,方便不同的使用者。本功能模块主要是产生提示语音,给使用者以不同的操作提示。本设计分五段录音,分别为“请输入密码”、“请选择控制号”、“请输入新密码”、“请操作电器”、“操作成功”。根据语音芯片ISD1420的工作原理和本设计的功能要求,系统选择地址模式,即A6、A7至少有一个为低电平,并将芯片内部存储器分为五段:00H-20H、20H-40H、40H-60H、60H-80H,每段为32个存储单元,为4s长时间的录音。观察地址,发现低三位始终为“0”,因此将低三位直接接地,高五位与P2口的低五位相连接。由硬件的接法可知,可以将地址依次转化为0E0H、0E4H、0E2H、0E6H、0E1H。通过P2口将地址送给语音芯片,达到单片机控制语音芯片录放音的效果。

在放音之前先将提示音录制好,把所要提示的语音存放在每段地址里面,如果要放音的话,直接调用每一段语音子程序即可。录音和语音子程序的流程分别如图3和图4。

3.3 密码修改子程序

按下“*”键时,用户进入密码修改子程序,用户可以设定想要修改的密码。密码修改的基本原理如下:把第一次新输入的5位密码存到AT24C02芯片内以43H地址开始的单元中,然后在第二次输入新密码时,每输入一位与第一次输入的新密码校验一次,若5位都校验成功,则将43H开始的单元中的新密码依次传送给AT24C02芯片以30H开始的单元中,5位传送完毕后,提示“操作成功”,密码修改完毕。若第二次输入的新密码有其中一位和第一次输入的不同,则修改密码不成功,挂机返回。密码修改子程序流程如图5。

图2 密码检测流程

图3 录音流程

图4 语音流程

3.4 中断子程序部分

在系统的软件设计中,使用了中断源INT1。INT1连接MT8870的STD端,当MT8870获取有效双音多频信号后,STD电平由低变高,再反相为低,CPU检测后进入INT1中断,在中断子程序中消除键抖,并指示P1口接收有效二进制代码。消除键抖采用延时的方法。中断子程序的流程如图6。

4 调试

在软件初始化后,调用振铃检测子程序,判断是否有外来电话打入。当检测到有铃流时,在程序中设置T0工作方式为计数方式,累积次数达到6次时,系统自动摘机。这一单元的调试基本没什么问题,只要把T0的工作方式设置好就行了。密码检测单元调试比较艰难,先调试一位密码,然后再调试五位密码。先设定R5为一位,即先设定一位密码作测试。首先单步执行,到了等待INT1中断时,按下“7”键的时间延长,直到程序执行到写入地址为38H的存储空间后才松手。密码修改是在选择控制号阶段进行的,当用户按“*”键时就进入密码修改功能。

图5 密码修改流程

图6 中断子程序流程图

5 结语

本系统可以通过电话随时对异地的电器实现控制,用户首先把本装置的电话信号线并联在电话线的两端,插上电源线,打开电源开关,复位本装置,使其正常工作。当用户从异地打来电话时,本装置接收到电话振铃音,开始计数;当电话铃声计到六次时,装置自动摘机,回送提示音提示请输入密码;当用户输入正确的密码后,用户就可以对装置所连的电器进行选择,然后根据需要对其进行开关控制。 用户可以在一次“通话”中同时控制几个电器,也可以按“*”键进行密码修改,如果用户控制完毕,可以按“#”键让装置自动挂机,结束“通话”。已经开启的电器将保持其开启状态,直到下一次的“通话”控制使其关闭。

[1] 张建斌.智能DTMF编解码器[J].现代通信,1999(12):26-27.

[2] 刘沛.基于ISD1420的语言报警器设计[J].现代电子技术,2004(12):19-21.

[3] Alan Shalloway,James R Trott . Design Patterns Explained[M].Trans on Industry Applications,2002, 38(2):167-193.

[责任编辑 吴保奎]

2016-11-19

赵璐(1986-),女,河南漯河人,助教,主要从事自动化技术方面的教学及研究工作。

10.3969/j.issn.1671-7864.2017.02.006

TP311.52

A

1671-7864(2017)02-0020-04

猜你喜欢
子程序中断电器
家中电器要“焕”新 这波惠民操作别错过
奥田电器
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
电器创新设计两则
跟踪导练(二)(5)
千里移防,卫勤保障不中断
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序