1、浙江师范大学数理与信息工程学院课程设计基于单片机实现远距离DTMF通讯 目录第1节 引 言11.1 概述11.2 设计任务21.3 系统主要功能2第2节 远程通讯硬件设计32.1 系统的硬件构成及功能32.2 AT89C2051单片机及其引脚说明42.3 实现DTMF信号原理5第3节 系统软件设计6 3.1 系统主程序设计63.2 数据通信程序设计63.3 发送电路程序设计73.4 接收电路程序设计8第4节 系统调试与测试结果分析9 4.1 使用的仪器仪表94.2 系统调试94.3 测试结果分析94.4 系统误差处理9第5节 结束语10参考文献 10附录 1122基于单片机实现远距离DTMF通
2、讯第1节 引 言随着计算机技术和电信业的发展,通过电话线进行的远程通信越来越常见。人们通常采用MODEM进行通信,但是在通信数据量不大,对通信速率要求不高的应用场合,我们可以考虑一种DTMF通信方式,它具有接口简单,成本低廉且可靠性高的特点。与相关软件配合还可实现双向呼叫通信,正确识别通话与通信等功能,可适用多种远程通信场合,具有较好的推广应用价值。DTMF( Dual Tone Multi-Frequency ),即双音多频信号,是邮电业务的通信信令,它有很强的抗干扰能力,因此被广泛用于远距离通讯,如电话拨号通信中。基于单片机实现远距离DTMF信号的方法可以有多种,如用D/A转换器实现(基于
3、PWM),也可用集DTMF信号的收发功能于一体的MT8880芯片等等。1.1 概述 DTMF( Dual Tone Multi-Frequency )是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。两个单音频的频率不同,代表的数字或实现的功能也不同。这种电话机中通常有16个按键,其中有10个数字键09和6个功能键*、#、A、B、C、D。由于按照组合原理,一般应有8种不同的单音频信号。因此可采用的频率也有8种,故称之为多频,又因它采用从8种频率中任意抽出2种进行组合来进行编码,所以又称之为“8中取2”的编码技术。根据CCITT的建议,国际上采用的多种频率为687Hz、770
4、Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合见表1。 表1 1.2 本设计任务虽然基于单片机实现DTMF远程通讯的技术已相当成熟,但依然有尚可完善的地方,本设计的主要任务是基于更低成本实现DTMF远程通讯。在实际应用中常用1 b的DM编码来实现AD和DA过程,其中AD过程可以在PC机上完成,用程序生成对应每一个 DTMF信号的DM编码表,DA过程在单片机上完成。1.3 系统主要功能DTMF ( Dual Tone Multi-Frequency ),在全世界范围内,逐渐
5、使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令。近年来 DTMF 也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行等。这也是 DTMF 为手机使用添辉的所在。手机在 DTMF 的功能下,就能自动根据对方系统提示恢复数字或者符号,从而实现自动拨叫功能,这在如今的电话银行、语音菜单、分机呼叫系统中使用尤其明显,可见 DTMF 逐步在手机上的使用使得手机给我们带来更多的便利和精彩。 第2节 远程通信硬件设计2.1 系统的硬件构成及功能通信接口电路如图1所示。话机与接口电路并联,通过光耦输出电平检测用户是否摘机。用户摘机后通过LINE1,LINE2直接
6、收码,降低了接口电路对拨号的影响。数据通信时MPU通过I/01控制继电器断开话机,同时I/04置高,电路模拟摘机,三极管组成恒流源维持摘机状态。通信中断开话机可减少干扰,恒流源设计可保证电路具有较小的直流阻抗(600),使电路具有较好的收发码特性。LINE1,LINE2间接接入压敏电阻或瞬态抑制二极管可达到抗雷击保护作用。I/02,I/03输出电平与相关软件配合可实现脉冲拨号接收和反术信号检测。图1TF1 OUT PF1 GND IN TIMC VCC TIMRLM56710uF12IN-201uFVCC34547KVCC20K20K01uF678电源部分:电源部分有二部分组成。一部分是由22
7、0V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由3V的电池供电,以保证停电时正常走时。正常情况下电池是不提供电能的,以保证电池的寿命。 22 AT89C2051单片机及其引脚说明AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器
8、件,减少了硬件开销,节省了成本,提高了系统的性价比。AT89C2051是一个有20个引脚的芯片,引脚配置如图2所示。与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。图2 AT89C2051引脚配置AT89C2051芯片的20个引脚功能为:VCC 电源电压。GND 接地。RST 复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P1口 8位双向I/O口。引脚P1.2P1.7提供内部上拉,当作为输入
9、并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,P1口也可接收编码数据。P3口 引脚P3.0P3.5与P3.7为7个带内部上拉的双向I/0引脚。P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,内部上拉,可用输入。P3口也可用作特殊功能口,其功能见表1。P3口同时也可为闪速存储器
10、编程和编程校验接收控制信号。23 实现DTMF信号原理因为了系统主要目的是为了降低成本,所以系统中没有采用现成的D/A芯片,而是自行设计了一新颖的型电阻网络D/A转换器和滤波网络。如图2所示。该D/A转换器的新颖之处在于其电阻网络。由于其基本单元(1位二进制)的电阻网络很像一个的形状,帮称型。众所周知,通常的位权电阻D/A网络,虽然电路简洁,只用了9个电阻,但最高位与最低位电阻阻值相差128倍,很难从系列电阻中选取,帮精度较差。典型的R-2R T 型D/A电阻网络,虽然电阻选取方便,精度较高,但需要18只电阻。现作者参考多方面资料给出的D/A电阻网络,集权电阻D/A网络电路简洁和T型D/A电阻
11、网络电阻选取方便,精度高之优点于一身,理论推算和实验均验证了该电路的合理性。当图2中的电阻R=10K时,不难求得其输出电压的交流分量表达式:式中的Vout为D0位至D7位输出高电平时的电压值。图3中的R1,R2,C1,C2和运放组成你通平滑滤波网络,参数的选取应使该网络具有最佳的阻率和最平坦响应的Butterworth滤波特性。由图可求是其传递函数为:图3 第3节 系统的软件设计本系统的软件系统主要可分为主程序、定时计数中断程序、基于PWM实现DTMF信号程序等。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。程序功能如下: l 通信中断开话要可减少干扰,提高通信可靠性。l
12、摘机后不能即拨号,要延时或检测到拨号音后再拨号。l 通信中不允许无限等待,可限时接收,超时应退出通信。l 判断是用户呼出摘机还是外线呼入用户接听摘机。l 判断是主机呼入还是他人呼入。l 判断是用户正常拨号还是用户完成功能设置。l 具有振铃检测和自动摘机功能。振铃4次无人接听电路即自动摘机。31 系统主程序设计退出通信断开话机 电路摘机延时待拨号音拨叫主机号码进入通信程序是否收到应答?等待时间到否?通信开始电路挂机,接上话机 图4 系统流程图32 数据通信程序设计程序功能如下:l 采用固定格式报文方式,方便接收。l 采用固定字节接收方式和简单异或校验方式即可实现可靠通信。l 出错重发一次可提高通
13、信成功率。从机发送通信发送报文数据发送校验码接收应答?时间到?置重发标志已重发退出通信重发请求?通信完成退出通信 图5 数据通信程序框图33 发送电路程序设计发送数据时,数据总线上D0D3四位二进制码被锁存在发送数据寄存器中,发送的DTMF信号频率由358 MHz的晶振分频产生。分频器首先从基准频率分离出8个不同频率的正弦波,行列计数器根据发送数据寄存器中的数据,以八取二方式分离出一个高频信号和一个低频信号,经开关电容做DA转换,在加法器中合成DTMF信号,并从TONE端输出。程序框图如图6所示。开始发送 图6 发送程序流程图50ms延时相应数据初始化 串口初始化 R1=1? 接收数据 R1清
14、“0”N Y 34 接收电路程序设计接收数据时,DTMF信号经由IN和IN输入,经过运算放大滤除信号中的拨号音频率,然后发送到双音频滤波器,分离出低频组和高频组信号,通过数字计数的方式检出DTMF信号的频率,并且通过译码器译成4位二进制码。4位二进制编码被锁存在接收数据寄存器中,此时状态寄存器中的延时控制识别位复位,状态寄存器中的接收数据寄存器满标识位置位,对外而言,当寄存器中的延时控制识别位复位时,IRQCP由高电平变为低电平。如果用IRQCP作为单片机的中断信号,IRQL由高电平变为低电平,向CPU发出中断请求,当CPU响应中断,读出寄存器中的数据后,IRQ返回高电 平。程序流程图如图7所
15、示。开始接收 相应数据初始化 串口初始化 N P1.2=1?Y 接收数据 N T1=1?Y 发送数据 T1清“0”图7 接收程序流程图第4节 系统调试与测试结果分析软硬件结合后,本系统也大致完成了,但还有一个重要的环节那就是调试和测试。4.1 使用的仪器仪表 数字万用表DT9203单片机仿真器WAVE6000烧写器 GF2100双踪稳压稳流电源DH1718E-5数字示波器 TDS10024.2 系统调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试等,最后将各模块组合后进行整体测试。4.3 测试
16、结果分析采用简单校验手段,发现DTMF通信中容易出现漏码,而重码、误码较少出现,所以采用固定字节接收方式和简单异或校验方式即可实现可靠通信。4.4 系统误差处理在DTMF双音多频通讯中,解芯片对DTMF信号的误差并不敏感,因此D/A转换的量化误差可以忽略。另外,DTMF信号的数据都是专家经过一系列复杂的,严密的计算而得,所以,这方面即使存在误差也不好消除。我们可以做的是增加采样数据。结 束 语本系统软硬件实现技术具有接口电路简单、可靠性高、成本低、灵活性强等优点。适用于数据通信量不大,速率要求不高的远程通信场合。可应用于远程分布式数据采集系统、家用自动防盗报警装置、远程室内监控系统以及公话集中
17、管理系统等。 通过本次课程设计的制作,我对DTMF技术有了更深刻的体会,进而对单片机也产生了更浓厚的兴趣。以前做实验时,有些东西不是特明白,通过这次的学习,我收获很多,我了解了DTMF技术的先进性,实用性,从而也明白学好单片机的重要性。由此也终于体会到老师的苦心了。我相信很多人还不知道DTMF是 Dual Tone Multi-Frequency 的缩小,至少我知道了。现在DTMF技术很流行,也很实用,正如在前面提到过的,除了取代传统转盘式电话机使用的拨号脉冲信令,也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行等。我明白自己现在对DTMF的了解还只是皮毛,不过,我会沿着这个兴趣,在以后
18、继续关注它的发展,并不断学习和掌握它。同时通过此次课程设计的制作,让我知道自学的重要性,以及它带来的乐趣。也正是这次的制作,让我对单片机更加“另眼相看”,原来单片机真的用途很广,作用好大,我要学的东西很多,从而也增加我对单片机学习的兴趣。参考文献1 张鑫 华臻 陈书谦,单片机原理及应用M,北京:电子工业出版社,2005.82 李朝青,PC机与单片机DSP数据通信技术选编2M,北京:北航出版社,20033 龚冬梅基于DTMF信号方式的数据传输接口软件设计J电脑开发与应用,2003,16(6):17附录部分源程序代码ORG0000HMAIN: MOVR0,#00HMOVR5,#0FFHLOOP:
19、MOVA,R0MOVDPTR,#TABHMOVA,A+DPTRMOVDPTR,#7FFFHMOVXDPTR,AINCR0DJNZR5,LOOPAJMPMAINTAB: DB 80H,83H,86H,89H 产生正弦波程序DB 8DH,90H,93H,96HDB 99H,9CH,9FH,A2HDB A5H,A8H,ABH,AEHDB B1H,B4H,B7H,BAHDB BCH,BFH,C2H,C5HDB C7H,CAH,CCH,CFHDB D1H,D4H,D6H,D8HDB DAH,DDH,DFH,E1HDB E3H,E5H,E7H,E9HDB EAH,ECH,EEH,EFHDB F1H,F2H
20、,F4H,F5HDB F6H,F7H,F8H,F9HDB FAH,FBH,FCH,FDHDB FDH,FEH,FFH,FFHDB FFH,FFH,FFH,FFHDB FFH,FFH,FFH,FFHDB FFH,FFH,FEH,FEHDB FDH,FCH,FBH,FAHDB F9H,F8H,F7H,F6HDB F5H,F4H,F2H,F1HDB EFH,EEH,ECH,EAHDB E9H,E7H,E5H,E3HDB E1H,DEH,DDH,DAHDB D8H,D6H,D4H,D1HDB CFH,CCH,CAH,C7HDB C5H,C2H,BFH,BCHDB BAH,B7H,B4H,B1HDB A
21、EH,ABH,A8H,A5HDB A2H,9FH,9CH,99HDB 96H,93H,90H,8DHDB 89H,86H,83H,80HDB 80H,7CH,79H,76HDB 72H,6FH,6CH,69HDB 66H,63H,60H,5DHDB 5AH,57H,55H,51HDB 4EH,4CH,48H,45HDB 43H,40H,3DH,3AHDB 38H,35H,33H,30HDB 2EH,2BH,29H,27HDB 25H,22H,20H,1EHDB 1CH.1AH,18H,16HDB 15H,13H,11H,10HDB 0EH,0DH,0BH,0AHDB 09H,08H,07H,0
22、6HDB 05H,04H,03H,02HDB 02H,01H,00H,00HDB 00H,00H,00H,00HDB 00H,00H,00H,00HDB 00H,00H,01H,02HDB 02H,03H,04H,05HDB 06H,07H,08H,09HDB 0AH,0BH,0DH,0EHDB 10H,11H,13H,15HDB 16H.18H,1AH,1CHDB 1EH,20H,22H,25HDB 27H,29H,2BH,2EHDB 30H,33H,35H,38HDB 3AH,3DH,40H,43HDB 45H,48H,4CH,4EHDB 51H,55H,57H,5AHDB 5DH,60H
23、,63H,66HDB 69H,6CH,6FH,72HDB 76H,79H,7CH,80HEND;产生DTMF信号 ORG 0000H LJMP STARTSTART:MOV R0,#30HMOV R1,#3BHMOV R2,#00HLOOP1:CJNE R0,#3BH,LOOP2MOV R0,#30HLOOP2:MOV A,R0ADD A,R1MOV DPTR,#7FFFHMOVX DPTR,ALCALL DELAYINC R0INC R1CJNE R1,#42H,LOOP1INC R2MOV R1,#3BHCJNE R2,#122,LOOP1LJMP STARTDELAY:MOV R7,#5
24、8LOOP:DJNZ R7,LOOPRETDB 47H,6DH,88H,8DHDB 7DH,5BH,33H,11HDB 07H,06H,20H,38HDB 63H,6FH,50H,20HDB 01H,0CH,00HEND;发送程序段 ORG 1000HSEND:MOV 30H,#08H ;赋初值给30H36H范围的地址单元 MOV 31H,#04H MOV 32H,#07H MOV 33H,#09H MOV 34H,#04H MOV 35H,#06H MOV 36H,#02H CLR P1.6 CLR P1.4 CLR P1.7 SETB P1.5 MOV P1,#0DH SETB P1.4
25、NOP NOP CLR P1.4 MOV P1,#00H SETB P1.4 NOP NOP CLR P1.4 SETB P1.6 CLR P1.6 CLR P1.4 CLR P1.5 CLR P1.7LOOP: MOV R0,30H MOV R1,7H MOV A,R0 MOV P1,A SETB P1.4 ACALL DELAY CLR P1.4 INC R0 DJNZ R1,LOOP SETB P1.6 ;接收程序段 ORG 1200HRECEIVE: MOV 30H,#00H ;赋初值给30H36H范围的地址单元MOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#00HMOV 35H,#00HMOV 36H,#00HMOV TMOD,#20 ;初始化定时器/计数器1作为波特率发生器MOV TL1,#0FDH ;装入初值MOV TH1,#OFDHCLR ET1SETB TR1MOV SCON,#40HMOV PCON,#00HCLR P1.4CLR P1.7CLR P1.6SETB P1.5MOV P1,#2DHSETB P1.4NOPNOPCLR P1.4MOV P1,#20HSETB P1.4NOPNOPCLR P1.4SETB P1.6NOPNOPMOV R0,30HMOV R1,#7H其它源程序可参照本文提到的参考文献。 .