实践课题:通信设备安装与调试 实践题目:基于电话的远程遥控系统 专业:电子信息 班级: 学号: 姓名:
一、实践目的
1、了解通信系统的构成;
2、学习用所学的理论知识分析和设计简易的通讯设备;
3、学习系统的方案分析,培养学生的设备调试和故障检测能力; 4、掌握系统设计开发流程,学会自己独立分析问题、解决问题,具有一定的创新能力; 二、实践原理
基于电话的远程遥控系统主要是通过电话交换网络实现对远程电器设备的遥控。以MT8870、STC89C51为核心器件,前者负责对电话线中的音频信号进行分离、滤波、并对电话机的按键作出相应的解码;后者采集、处理、分析MT8870的解码信号,输出对应的控制信号,实现电话的远程控制。
系统原理框图
三、实践要求
利用所学的理论知识和所查的资料进行系统分析和设计。处于不同地点的两部固定电话机,利用电话机A拨打并联在该系统的电话机B,接
2
通后,通过电话机A的0~9和*、#按键实现对远程电器的控制,在实际调试时可以用LED灯进行模拟。整个系统能够满足一下条件: (一)硬件
(1)实现异地远程遥控,即操作者与受控对象的距离不受限制,二者通过电话网络建立联系;
(2)系统能够模拟电话的摘机和挂机;
(3)系统能够对异地的电器根据电话机的按键值实现相应控制,实际设计时可以利用LED灯进行模拟; (二)软件
(1)对铃音能够检测计数;
(2)满足响铃次数要求后,软件模拟摘机; (3)密码校验,防止恶意操作;
(4)对MT8870解码信号采集、处理、分析; (5)根据MT8870的解码信息作出相应的控制相应; 四、实践内容
根据系统要求,系统的设计框图如下:
3
(一)振铃检测电路
因为交换机线路上自身有很大的直流馈电电压(48V),叠加上交换机发送来的振铃信号(25V±3V正弦波),线路上的电压很大,因此来铃信号需经一个耐压较大的电容隔去直流分量;振铃信号周期为5S,1S送,4S断;考虑到单片机能够处理的为数字信号以及电磁兼容性问题,在将振铃信号送入STC89C51进行计数之前,经光电耦合器进行电气隔离,并将正弦波形式的振铃信号变成单片机能够识别的矩形波信号;因此此处的光电耦合器不仅起到电气隔离作用,也能够实现波形的变换。 实际应用时在回路中加了发光二极管作为指示作用。
振铃检测
(二)摘挂机控制电路
在呼叫过程中,若被呼方摘机了,导致交换机所在的回路的电阻和电流发生了变化,当交换机检测到回路的电阻或电流达到摘机的技术参数要求,则交换机判断已摘机,停止发送振铃信号,建立通信链路;根据这一原理,系统设计时可以通过拉大回路电流(≥13mA)或者降低回路电阻(≤300Ω)实现软件的模拟摘机。
4
摘挂机控制电路
程序通过控制P1.4电平的高低就可以实现模拟摘机,建立通信链路; 因为MT8870的交流电气特性要求双音信号中的每个信号幅值为27.5mv~869mV所以在摘机后交换机电路到双音频解码中需加一个整流电路实现幅值的变换。 (三)51单片机
51单片机采用STC89C51,利用该单片机T0的计数功能和P1.4(INT0)的中断功能实现对来铃信号的计数和对MT8870解码信息的采集;解码信号加在P1.0~P1.3。
5
程序流程图
(四)MT8870解码电路
MT8870为常用的电话双音频解码专用集成电路;远程用户通过电话按键发送的DTMF信号,经耦合电容的隔直、滤波后,由MT8870接收并进行硬件译码,输出的四位二进制数据直接与AT89C51单片机的P1.0~P1.3口连接, MT8870接收到有效的DTMF信号并解出正确的BCD数据时,会使STD端置高电平,通知CPU取走数据。CPU从P1口读入数据,去掉高四位后将数据保存于内部R7寄存器单元,并对读入的数值进行判断,从而得到远程控制者的输入命令。
按键 输出代码 按 输出代码 按 输出代码 按 输出代码 Q8Q4Q2Q 键 Q8Q4Q2Q 键 Q8Q4Q2Q 键 Q8Q4Q2Q 1 0 0 0 1 5 0 1 0 1 9 1 0 0 1 A 1 1 0 1 6
2 3 4 0 0 1 0 0 0 1 1 0 1 0 0 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 0 1 0 1 0 × 1 0 1 1 # 1 1 0 0 B 1 1 1 0 C 1 1 1 1 D 0 0 0 0 MT8870译码与电话机按键的对应关系 (五)电器模拟控制电路
由八个接到单片机P2口的LED灯进行模拟控制; 五、心得体会
经过本次的通信设备安装与调试,学习了51单片机及编程方法;认识掌握了电话机的通信原理以及双音频解码的过程;学了新的知识,掌握了新的技能 六、附录 (1)器件清单
器件名称 电阻 型号规格 100K 10K 4.7K 1K 390K 360Ω 100Ω 330Ω 3.3K排阻 电解电容 0.22u/250V耐压 1u 10u 普通电容 104 数量 4 4 1 8 1 1 1 1 1 1 1 2 2 7
101 30 LED 三极管 晶振 集成电路 (含配套插座) 整流堆 大按键 排针、跳线帽 导线 红或其他颜色 5551 5401 3.579545MHz 12MHz MT8870 STC89C51 1 2 8 1 1 1 1 1 1 1 1 若干 若干 (2)系统整体原理图
(3)程序代码
自己编写的程序代码,PROTEUS仿真通过,实际应用还没调试成功。
#include 8 #include const unsigned char cod[6]={0xa0,0x08,0xa0,0x01,0x03,0xa0}; //密码 080130 unsigned char temp[7]=0; unsigned char flag=0; bit sym=0; void t0count() { IE=0x82;//总中断开,T0中断开 IP=0X02;//T0中断优先级最高; TMOD=0X07;//软件控制计数启停,第四种工作模式; TCON=0; // TR0=1;//启动T0计数; TH0=0xff; TL0=0xfb;//计数5个脉冲后中断 } /*读入的数据与密码比较*/ unsigned char compare() { unsigned char t; for(t=0;t<6;t++) { if(temp[t]==cod[t])continue; else return error; } return true; } /*INT中断函数0*/ void int0(void)interrupt 0 { IE0=0; temp[flag]=P1&0x0f; if(flag<7)flag++; else flag=0; } /*T0计数中断函数*/ void count_T0(void)interrupt 1 { IE=0; TF0=0; IP=0; TR0=0; sym=1; P2=0xff; P1_4=1;//模拟摘机 } void main() { unsigned char value,i; t0count(); TR0=1; P2=0xfe; //振铃检测指示,第一盏灯亮 while(1) { while(sym) { 9 sym=0; P1=0; IE=0x81;//总中断;INT0中断 IP=0x01; //INT0中断优先级最高 TCON=0x01;//边沿触发方式 while(1) { if(temp[6]==0xc0) //#键确认 { value=compare(); if(!value) { P2=0xfd; //密码正确指示,第二盏灯亮 flag=0;//同错误时的一致 for(i=0;i<7;i++) temp[i]=0; while(!value) { while(!flag); switch(temp[flag-1]) { case 0x01:P2=0xef;break;//5led亮 1 case 0x02:P2=0xcf;break;//6led亮 2 case 0x03:P2=0x8f;break;//7led亮 3 case 0x04:P2=0x0f;break;//8led亮 4 case 0x05:P2=0x1f;break;//5led灭 5 case 0x06:P2=0x3f;break;//6led灭 6 case 0x07:P2=0x7f;break;//7led灭 7 case 0x08:P2=0xff;break;//8led灭 8 case 0x09:P2=0;break;//全亮 9 // case 0x00:value=1;t0count();P2=0xfe;break;// 模拟*键,重新等待振铃信号 case 0xa0:P2=0;break;//全亮 0 case 0xb0:value=1;IE=0;t0count();TR0=1;flag=0;P2=0xfe;break;//*键,重新等待振铃号 default:break; } } } else { P2=0xfb;//密码错误时,第三盏灯亮 temp[6]=0; flag=0;//密码错误时,重新开始记录读入的数据 } break; } } } } } 10 因篇幅问题不能全部显示,请点此查看更多更全内容