[通讯设备安装调试]实习报告
课 程 设 计
课 程
题 目
专 业
班 级
学 号
姓 名
指导老师
2013年6月21号
目录
一、课题名称·······································3 二、实践目的·······································3 三、实践原理·······································3 四、实践内容和要求·································3 五、设计方案·······································4 六、整体电路原理图·································7 七、系统功能扩展···································7 八、设计过程遇到的问题、思考及解决方法·············8 九、心得···········································8 十、参考文献·······································8 附录 ··············································10 原理图·············································10 PCB 图·············································10 程序 ··············································11
一、课题名称
通讯设备安装与调试
二、实践目的
1、了解通信系统的构成;
2、学习用所学的理论知识分析和设计简易的通讯设备;
3、学习系统方案分析,培养学生的设备调试和故障检测能力;
4、掌握系统设计开发流程,学会自己独立分析问题、解决问题,具有一定的创新能力。
三、实践原理
本文设计的是一种基于STC89C51单片机的远程电话控制系统。该系统是以STC89C51为核心、利用现有的个人通信终端, 实现基于PLMN(陆基移动通信网) 和PSTN(公用电话交换网) 的电话远程控制系统。电话远程控制系统(ITRCS),以CCITT (国际电报电话咨询委员会)及我国标准共同规定的部分标准程控交换信令(DTMF双音多频信号, 振铃信号, 回铃音信号等) 作为系统控制命令, 以PLMN 与PSTN 通信网作为传输介质, 使用者可以在远端利用固定电话或移动电话发送DTMF 双音多频信号, 实现对近端电器设备的实时远程控制。该电话远程控制系统不需进行专门的布线, 不占用无线电频率资源, 从而可避免电磁污染;且通过嵌入式的智能语音提示, 突出的语音提示功能和密码控制系统, 可使操作者根据各种提示音及时了解受控对象的有关信息。还可通过发出语音命令用电话远程控制多个受控对象, 用户可以查询其状态, 提供密码处理功能, 只有输入正确的密码才能控制家电, 从而提高了安全性。该系统设计实用,功能灵活多样,可靠性高,操作方便,可以广泛地应用于家庭或者其它场所的智能控制。
四、实践内容和要求
根据电话远程智能遥控系统的具体设计要求: 1、 通过电话网对异地的电器实现控制(开/关); 2、 控制器可以实现自动模拟摘挂机; 3、 控制器设置密码校验;
设计的此系统必须具有以下单元功能模块: 1、 铃音检测、计数; 2、 自动摘挂机; 3、 密码校验; 4、 在线修改密码 5、 双音频信号解码; 6、 输入信息分析; 7、 控制电器开关; 8、 电器状态查询; 9、 忙音检测;
根据电话机和交换机发出的不同信号音以及电话线各种状态的不同要求,结合实际情况对具体
的单元功能模块作出软件或硬件上的不同分工,具体如下:
1、理论上交换机所发出的各种信号音都可以通过软件编程而识别,即通过单片机发出的脉冲信号来检测信号音单位时间内的脉冲个数计算出其频率,从而完成信号音识别。但是从系统的可靠性和程序的结构设计上分析,选择了硬件来解决振铃音检测、忙音检测、双音频信号解码等功能模块。
2、自动摘挂机和电器的控制必须使用具体硬件电路来实现。
3、振铃音计数、忙音计数、密码校验、在线修改密码、输入信息分析、电器状态查询等功能模块使用软件编程方式要比硬件电路简单的多,实现也很容易。
综上所述,本设计的信号音检测、自动摘挂机、控制电器、双音频解码等功能模块使用硬件电路实现。而信号音计数、密码校验、在线修改密码、信息分析、电器状态查询等功能模块使用软件编程完成。
五、设计方案
{ EMBED PBrush
|
图1 模拟通信系统
图2 数字通信系统
图3 系统总体框架
(1)振铃的检查
当用户被呼叫时,电话交换机发来铃流信号。振铃为25±3伏的正弦波,谐铃失真不大于10%,电压有效值90±15V 。振铃以5秒为周期,即1秒送,4秒断。根据振铃信号电压比较高的特点,可以先使用高压稳压二极管进行降压,然后输入至光电耦合器。经过光电耦合器的隔离转换,从光电耦合器输出的波形是时通时断的正弦波,经过RC 回路进行滤波输出很标准的方波。方波信号就可以直接输出至单片机的中断计数器输入口,完成整个振铃音检测和计数的过程。
该电路的R5起到限流的作用,起到保护光电耦合器的作用。由于电话线上具有48V 的电压,所以采用10K 的电阻就能够起到保护的作用。
该电路的C3起到隔直流的作用。由于电话线上有双音频的正弦信号和直流信号。所以接C3起到滤除直流成分,避免干扰。
该电路中的LED9当通过正信号时会发亮,当遇到副信号的时候会熄灭。从而达到观测信号的目的。
该电路的R6起到限流的作用,由于光电耦合器的3和4管脚要接高电平所以通过R6实现保护的功能。
(2)摘挂机控制电路
该电路将电话线信号通过整流桥将电话信号引
出,
通过单片机的控制实现电话的模拟摘挂机的功能。 具体控制是:
当(1)电路经过单片机计数打满5次振铃的时候P1.4端口的电位从低电平变为高电平,从而使R10的电阻接到电话线路中。
由于电话信号的电压经过整流桥电路后,电压已经降低到8V 左右,在经过三极管后降压到7V 左右。所以选用330V 的电阻,就能满足电路摘机的状态。
该电路中的R7,R8实现三极管的偏压的作用是的在高电平的时候,Q2三极管能够正常工作。
该电路中的C7电容是实现耦合的作用,改善电路的性能。
(3)DPTM 解码电路
该电路是由一块MT8870芯片控制实现DPTM 的解码的的。MT8870芯片是MT8870是双音多频接
收芯片,可用来完成DTMF 信号的接收、分离和译码;能输出由相应16和DTMF 频率组合4位并行二进制码。
MT8870的10脚EN 与15脚DV 接在一起,当一个有效双音频信号被接收后,DV 输出记电平。在脚EN 为高电平时允许数据输出,同时经T1反相后以低电平送给AT89C51中断输入口INT1,以执行中断程序并接收码处理。经过解码的信号通过Q1,Q2,Q3,Q4进行输出到AT89C51中实现解码的控制。
通过该解码电路,即可以实现密码的信号的解码,使得单片机能够识别的功能。
(4)单片机控制电路
该电路是整块板的核心部分,它将处理(1)送来的信号经过T0口接受,然后经过程序的定时器计数,当达到一定的五次振铃的时候,将P1.4端口由低电平设置为高电平。从而实现模拟摘挂机的功能。
当由AT8870电路送来的Q1,Q2,Q3,Q4的电话信号,通过P1.0,P1.2,P1.3,P1.4进入单片机使得单片机判断送来的电话信号是否是正确的密码,达到避免恶意干扰的目的。从而提高系统的安全性。
当密码输入正确的情况下,即可以由AT89C51设置P2端口的电平情况实现灯的亮灭情况,若扩展的话,可以控制不同家用电器的开关情况,或者各种的控制。
具体电路部分的分析:
1:RESET 端口接出来的开关电路
是实现整块单片机的复位的功能。由于单片机在运行一次后会保存运行后的数据。所以当需要重新开始的时候。该电路模块就能实现电路的复位的功能。由于单片机中的RESET 是高电平有效。所以通过一个下拉电阻即可以实现当按键按下的时候高电平,使得单片机复位的效果。
2:X1,X2端口接出来的晶振电路
是为单片机提供12M 的时钟频率。从而使单片机正常的运行。 3:P2口的LED 灯电路
是为了模拟家用电器。从而能将单片机控制的情况更形象的表现出来。各电阻是限流电阻,起到保护的作用。该LED 灯是共阳的,所以是低电平有效。
六、整体电路原理图
七、系统功能扩展
本系统由于个人能力的限制,只能作到现有的程度。这里对本系统还可以的扩展功能做一下简单的介绍:
使用MT8888芯片还可以进一步扩展其功能,而且使本装置的体积大大减小,在这里就MT8888集成电路作一个简单的介绍。
利用3-8译码器的STA 、STB 和STC 还可以进行级联扩展为24线译码器,若外接一个反向器还
可以级联扩展成为32线译码器, 从而实现对更多的外部受控设备进行有效控制的可能。
使用LM567锁相环可以对电话信号音中的忙音进行识别,使实际使用更加方便,而且能够提高本装置的稳定性。
八、设计过程遇到的问题、思考及解决方法
焊接时把地线和电源短路掉,使得电源指示灯没有亮,后来,经过用万用表一个个焊点排查,才得以完成。
九、心得
经过一周的学习,终于成功完成了此次课程设计,让我使学到的知识能够走出课本,应用到实际生活当中。在这次课设中我受益匪浅,学到了很多东西。
首先,这次的课程设计的难度远远超出我们最初的想象。尽管电路板是直接提供的,但从开始构想、查找搜集资料到方案选定、各个模块的实现、细化,直到趋于完善,其中我们遇到了重重困难。我们逐渐意识到所谓设计,并不是书本知识的生搬硬套,而是知识的灵活应用,理论与实际的密切结合。使我在一定程度上让我明白了学习不仅仅是来应对考试的,还可以用来解决实际问题。其次,通过动脑、动手和独立思考解决实际问题,巩固和运用所学的理论知识和实验技能,增强了理论联系实际的能力,对一些简单的电路设计有了一定的了解,有利于对课本知识的理解。再次,是自己独立思考的能力有了一定的提高,使自己的动手能力也有所加强,也使自己能够充分的利用所学的知识和所拥有的资源。所以我很珍惜这样的机会。
经过这次课程设计,我们学到了知识,积累了经验,对于通信原理和单片机的课程有了更深的理解,同时也发现了自身存在的很多不足。在设计过程中,我们深切地感受到科学的广袤无垠和独特魅力,尤其是我们正在学习的电子信息领域。书山有路勤为径,学海无涯苦作舟,在科学的道路上我们还有很长的路要走,但我们争取一步一个脚印,把每一步都迈得漂亮
另外非常感谢此次课程设计中老师同学的帮助,让这次课设取得了成功,谢谢! 十、参考资料
[1]薛钧义、张彦斌,MCS-51/96系列单片微型计算机及其应用,西安交通大学出版社,1997.2 [2]阎石,数字电子技术基础,高等教育出版社,1998 [3]刘大茂,智能仪器,机械工业出版社,1998
[4]刘大茂,电子系统设计,福州大学信息学院,2003.3
[5]陆坤、奚大顺等,电子设计技术,电子科技大学出版社,1998.10 [6]李哲英、余文龙等,实用电子电路设计,电子工业出版社,1997.1 [7]郭天祥 新概念51单片机C 语言教程. 电子工业出版社.2009.3
附录
原理图
PCB 图
程序
#include
#include
typedef unsigned int uint;
typedef unsigned char uchar;
#define error 0
#define true 1
const unsigned char table[6]={0x08,0x04,0x0c,0x02,0x0a,0x06};
unsigned char temp[7]=0;
unsigned char tem[7]=0;
unsigned char flag=0,flag1,moshi,mima,bijiao,date=0;
void guaji();
void init();
char sym=0;
sbit P1_4=P1^4;
void jiance();
void delay(uint x)//4MHZ 1MS
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void T0init()
{
IE=0x82;//总中断开,T0中断开
IP=0X02;//T0中断优先级最高;
TMOD=0X05;//软件控制计数启停,第1种工作模式;
TCON=0;
TH0=0xff;
TL0=0xfb;//计数5个脉冲后中断
TR0=1;//启动T0计数;
}
/*读入的数据与密码比较*/
unsigned char compare()
{
unsigned char t;
for(t=0;t
{
if(temp[t]==table[t]){mima=2;continue; }
else return 0;
}
return 1;
}
//密码 123456
/*INT中断函数0*/
void int0(void)interrupt 0
{
uchar a,i;
IE0=0;
temp[flag]=P1&0x0f;
bijiao=temp[flag];
if(moshi==0)
{ if(temp[flag]==0x05) P2=0xff; // 0
else if(temp[flag]==0x08) P2=0xef; // 1
else if(temp[flag]==0x04) P2=0xdf; // 2
else if(temp[flag]==0x0c) P2=0xcf; //3
else if(temp[flag]==0x02) P2=0xbf; // 4
else if(temp[flag]==0x0a) P2=0xaf; //5
else if(temp[flag]==0x06) P2=0x9f; // 6
else if(temp[flag]==0x0e) P2=0x8f; //7
else if(temp[flag]==0x01) P2=0x7f; // 8
else if(temp[flag]==0x09) P2=0x6f; // 9
else if(temp[flag]==0x03) P2=0x5f; // #号 确定 12
else if(temp[flag]==0x0d) { for(i=0;i
}
else if(moshi==1)
{
if(temp[flag]==0x05){ for(i=0;i
else if(temp[flag]==0x04) P2=0xdf; // 2
else if(temp[flag]==0x0c) P2=0xcf; //3
else if(temp[flag]==0x02) P2=0xbf; // 4
else if(temp[flag]==0x0a) P2=0xaf; //5
else if(temp[flag]==0x06) P2=0x9f; // 6
else if(temp[flag]==0x0e) P2=0x8f; //7
else if(temp[flag]==0x01) P2=0x7f; // 8
else if(temp[flag]==0x09) P2=0x6f; // 9
else if(temp[flag]==0x03) P2=0x5f; // #号 确定 12
else if(temp[flag]==0x0d) {date=1;
} // *号 挂机
for(i=0;i
temp[i]=0;
}
{
if(flag
else
{
flag=0;
}
}
return;
}
/*T0计数中断函数*/
void count_T0(void)interrupt 1
{
IE=0;
TF0=0;
TR0=0;
sym=1;
P2=0xf7;
P1_4=1;//模拟摘机
}
void guaji(){
moshi=0;
flag1=0; P1_4=0; //挂机
IE=0;T0init();TR0=1;flag=0;P2=0xfe; // goto loop; }
void init()
{
unsigned char i,value;
P1_4=0;
delay(10);
T0init();
TR0=1;
P2=0xfe; //振铃检测指示,第一盏灯亮
while(1){
if(sym){
sym=0;
IE=0x81;//总中断;INT0中断
IP=0x01; //INT0中断优先级最高
TCON=0x01;//边沿触发方式 }
if(temp[6]==0x03) //#键确认
{
value=compare();
if(value)
{
value=0;
flag1=0;
P2=0xfd; //密码正确指示, 第二盏灯亮
flag=0;//同错误时的一致 for(i=0;i
moshi=1;
}else
{
flag1++;
}
}
if(date==1)
{
}
}
} if(flag1
goto loop1; goto loop1; goto loop1;
void main() {
while(1) { init(); } }