基于单片机的信号合成毕业设计.docx
- 文档编号:17010641
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:49
- 大小:350.05KB
基于单片机的信号合成毕业设计.docx
《基于单片机的信号合成毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的信号合成毕业设计.docx(49页珍藏版)》请在冰点文库上搜索。
基于单片机的信号合成毕业设计
摘要…………………………………………………………………………1
引言…………………………………………………………………………2
1.DTMF信号介绍………………………………………………………3
1.1DTMF信号特性……………………………………………………………3
1.2DTMF信号的应用…………………………………………………………4
2.系统硬件设计…………………………………………………………5
2.1系统硬件的总体实现………………………………………………5
2.2中央控制器——AT89C51…………………………………………6
2.3数摸转换器——DAC0832…………………………………………8
2.4单片机与键盘的接口电路……………………………………………10
2.5AT89C51与DACO832的接口电路…………………………………10
2.6RC低通滤波器………………………………………………11
3.系统软件设计……………………………………………………………11
3.1系统程序设计………………………………………………………………12
3.2单片机与键盘接口程序设计………………………………………………12
3.3DTMF信号产生程序设计…………………………………………………14
3.4单片机与D/A接口程序设计……………………………………………18
4.系统有效性验证…………………………………………………………19
4.1DTMF信号频率误差分析……………………………………………………19
4.2DTMF信号接收系统的结构…………………………………………………20
4.2.1MT8870的介绍…………………………………………………………20
4.2.2DTMF信号接收系统的硬件结构……………………………………21
4.2.3接收系统的程序设计…………………………………………………22
5.结束语…………………………………………………………………22
6.附录………………………………………………………………………23
7.参考文献………………………………………………………………35
8.致谢语………………………………………………………………35
基于单片机的DTMF信号合成
摘要:
本课题最主要的特点在于用单片机来产生DTMF信号,而不是通过专用的DTMF产生芯片,具有实际应用的意义。
本文首先介绍了DTMF信号及其应用,然后详细介绍了基于单片机的DTMF信号合成的硬件及其软件系统,重点阐述了用单片机产生DTMF信号的算法,先通过计算得出1/4周期简单正弦函数的数据,然后制作一个表格,CPU按特定的时间间隔即采样周期查表得到对应的数据,经DAC转换后产生正弦波。
最后对单片机产生的DTMF信号的误差进行了分析,并介绍了有MT8870组成的DTMF解码系统的硬件和软件。
关键词:
DTMF;单片机;MT8870;正弦波;
Fomationofdtmfsignalbasedonmicrocontroller
Author:
ZhangJian
Tutor:
LiFangZhou
(PhysicsandelectronicimformationcollegeWenZhouuniversity,325027)
Abstract:
Themaincharacteristicofthesubjectisthatuseone-chipcomputertoproduceDTMFsignal,notthroughspecial-purposeDTMFchip.ThistextintroduceDTMFsignalandapplicationatfirst,thenintroduceDTMFhardwareandhissoftwaresystemwhichbasedonone-chipcomputerindetail,explainalgorithmofproduceDTMFespecially.Calculateout1/4cyclesimpledatumofSINfunctionfirst,thenmakeoneform,CPUaccordingtospecifictimeintervalnamelysamplingcyclegetsthecorrespondingdatathrougcheckform,producesinusoidalwaveafterDAC.FinallyanalyseerrorofDTMFsignalthatone-chipcomputerproduceandintroudceDTMFdecodesystematichardwarecomposedofMT8870andsoftware.
Keywords:
DTMF;Microcontroller;MT8870;sinusoidalwave;
引言
DTMF(DualToneMultiFrequency)信号是音频电话的拨号信号。
由美国AT&T贝尔实验室研制,双音多频信号编码技术易于识别,抗干扰能力强,发号速度快,且比用modem进行远程传输的方法更为经济实用,因此这种拨号方法取代了传统的脉冲拨号。
电话中的双音多频信号有两种用途:
一是用于双音多频信号的拨号,去控制交换机接通被叫的用户电话机;二是利用双音多频信号遥控电话机各种动作,如播放留言,语音信箱。
这些都离不开DTMF信号的产生。
目前,大多数的DTMF信号的产生都是采用专用芯片MT5087,MT8880等,这种方法信号编码产生速度快但有很大的局限性,如果音频信号频率的改变应用于别的系统时,专用芯片就发挥不了作用了,其次是要实现用户多路双音多频信号发送比较困难。
基于单片机的DTMF信号合成的系统可以克服硬件电路的缺点,容易实现多路DTMF信号,节约系统成本,使双音多频信号的应用领域更广泛。
用单片机来产生DTMF信号主要方法有通过脉宽调制、增量调制生成双音多频信号或先通过编写计算正弦函数的子程序,然后调用函数把计算得到的数据经DAC转换后产生DTMF信号。
本课题采用的方法是先通过计算得出1/4周期简单正弦函数的数据,然后制作一个表格,CPU按特定的时间间隔即采样周期查表得到对应的数据,经DAC转换后产生正弦波。
由于前者需要编写复杂的计算正弦波函数的程序,占用相当的程序存储空间,计算时间长,降低了CPU的效率,很难保证正弦波频率的精度。
查表程序非常简单,占用硬件资源也非常少,频率精度和谐波系数取决于采样周期和表格的大小。
只要采样周期足够小和表格足够大,就可保证正弦波的精度。
1.DTMF信号介绍
1.1DTMF信号的特性
DTMF是由组(fb)和高频组(fa)两组频率信号构成,每个数字信号由低频组和高频组的任意一个叠加而成。
根据CCITT的建议,DTMF的编译码定义如表1所示,
表1电话拨号数字对应的高低频率组
可用下式表示
f(t)=A_{a}sin(2f_{a}t)+A_{b}sin(2f_{b}t))
式中两项分别表示低、高音群的值,Ab和Aa分别表示低音群和高音群的样值量化基线,而且两者幅值比为K=Ab/Aa(0.7 同时规定,对应于表1中的标称频率在发送时,DTMF信号的频率偏差不应当超过1.5%,每位数字的信号极限时长应该大于40ms,而接收设备对2%的偏差应能可靠地接收,对30ms~40ms时长的信号可以正常地接收。 与单音编码不同,DTMF信号是采用8中取2的方式,从高低两个音组中各取一个音频复合而成来代表0-9十个号码和其他功能码,再加上这8个音频信号的各频率间不存在谐波关系,大大减少了虚假信号的干扰,因而DTMF信号工作可靠性特别是抗干扰能力很强。 1.2DTMF信号的应用 DTMF信号即双音多频信号,最先用于程控电话交换系统来代替号盘脉冲信号。 如图1: 主叫用户摘机按键拨号后,电话号码所对应的DTMF信号通过电话线传到程控交换机中的DTMF接受电路,交换机中的微机识别被叫电话号码后,接通主被叫用户实现双方通话。 DTMF信号还用于自动控制系统,如果把DTMF的发送电路用于主控系统,接受电路用于被控系统,就可以方便地组成有线或无线通信系统,如图2所示,其通道数视需要而定,16通道以内每通道只需编一位号码即可,若需要更多通道,则可象电话号码编号一样编为两位或两位以上的号码。 2.系统硬件设计 2.1系统硬件的总体实现 为使产生的DTMF信号频率误差尽可能小,我们对该系统的硬件电路作了精心设计。 图3是基于单片机的DTMF信号的合成的硬件图: 图3系统的硬件图 该系统的硬件设计按实现的功能来分,可分为以下3个部分。 单片机与键盘的接口电路,实现按键信号的产生的功能,AT89C51根据读进来的键码来实现相应的键功能向P0口发按键对应的DTMF信号,数摸转换器与单片机的接口电路主要来实现把P0口发出的数字信号转换为模拟信号,最后通过RC低通滤波器把信号中的高频成分滤去。 其中,AT89C51单片机是整个电路的核心,它控制其他模块来完成各种复杂的操作。 在本章下面几个小节中将根据图3的硬件设计电路,对各个模块电路进行详细的设计与分析。 2.2中央控制器——AT89C51 AT89C51是由美国Atmel公司生产的至今为止世界上最新型的高性能八位单片机之一。 2.2.1AT89C51的特点 AT89C51具有以下几个特点: ·AT89C51与MCS-51系列的单片机在指令系统和引脚上完全兼容; ·片内有4k字节在线可重复编程快擦写程序存储器; ·全静态工作,工作范围: 0Hz~24MHz; ·三级程序存储器加密; ·128×8位内部RAM; ·32位双向输入输出线; ·两个十六位定时器/计数器 ·五个中断源,两级中断优先级; ·一个全双工的异步串行口; ·间歇和掉电两种工作方式。 2.2.2AT89C51的功能描述 AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。 它与MCA-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。 AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。 只要程序长度小于4K,四个I/O口全部提供给用户。 可用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。 工作电压范围宽(2.7V~6V),全静态工作,工作频率宽在0Hz~24MHz之间,比8751/87C51等51系列的6MHz~12MHz更具有灵活性,系统能快能慢。 AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。 P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。 2.2.3AT89C51引脚功能 AT89C51单片机为40引脚芯片见附录1。 1.口线: P0、P1、P2、P3共四个八位口。 ▪P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。 P0口也用以输出外部存储器的低8位地址。 由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。 ▪P1口是专门供用户使用的I/O口,是准双向口。 ▪P2口是从系统扩展时作高8位地址线用。 不扩展外部存储器时,P2口也可以作为用户I/O口线使用,P2口也是准双向口。 ▪P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。 作为第一功能使用时操作同P1口。 P3口的第二功能如表2所示。 2.控制口线: PSEN(片外选取控制)、ALE(地址锁存控制)、EA(片外存储器选择)、RESET(复位控制); 3.电源及时钟: VCC、VSS、XTAL1、XTAL2 操作方法。 表2P3口的第二功能 2.2.4操作方法 1.程序存储器加密。 AT89C51芯片程序存储器有三级硬件加密,能够有效地保证系统不被仿制和软件不被复制,加密等级设置见附录2。 2.工作模式。 AT89C51有间歇和掉电两种工作模式。 间歇模式是由软件来设置的,当外围器件仍然处于工作状态时,CPU可根据工作情况适时地进入睡眠状态,内部RAM和所有特殊的寄存器值将保持不变。 这种状态可被任何一个中断所终止或通过硬件复位。 掉电模式是VCC电压低于电源下限,振荡器停止振动,CPU停止执行指令。 该芯片内RAM和特殊功能寄存器值保持不变,直到掉电模式被终止。 只有VCC电压恢复到正常工作范围而且在振荡器稳定振荡后,通过硬件复位掉电模式可被终止。 2.3数摸转换器——DAC0832 在电子技术的很多应用场合往往需要把数字量转换成模拟量,称为数/模转换器(D/A转换器,简称DAC)。 完成这种转换的线路有多种,特别是单片大规模集成D/A转换器问世,为实现上述的转换提供了极大的方便。 使用者可借助于手册提供的器件性能指标及典型应用电路,即可正确使用这些器件。 本系统将采用大规模集成电路DAC0832实现D/A转换。 DAC0832是采用CMOS工艺制成的单片电流输出型8位数/模转换器。 图4是DAC0832的逻辑框图及引脚排列。 图4DAC0832单片D/A转换器逻辑框图和引脚排列 器件的核心部分采用倒T型电阻网络的8位D/A转换器,它是由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四部分组成。 DAC0832各引脚含义如下: CS为片选信号,CS与ILE(输入寄存器允许信号)合起来可对写信号WR1是否起作用进行控制。 WR1写信号用以将8位数字量D7D6D5…输入并锁存于DAC0832内部的输入寄存器中,WR写信号与传送控制信号XFER同时有效,则将输入寄存器的数字量再传送到8位D/A寄存器锁存起来。 这时8位D/A转换器就开始工作。 IOUT1和IOUT2为输出电流,其中IOUT1是D/A寄存器内容为全1时输出电流为最大;当D/A寄存器内容为零时输出电流为0。 IOUT2为一常数与IOUT1之差,即IOUT1+IOUT2=常数。 AGND和DGND分别为模拟量地和数字量地,它们应共地。 VREF精度尽可能高一些。 V是电源电压,其值可在+5V到+15V。 R为反馈电阻,由于片内已具备反馈电阻,故可以与外接运算放大器的输出端短接。 DAC0832输出的是电流,要转换为电压,还必须经过一个外接的运算放大器,电路如图5所示。 图5电流转换为电压电路 图5中 、 、 接地为低电平,ILE为高电平,DAC0832处于直通的工作状态。 输入数字量(D0~D7)通过输入锁存器,数据寄存器直接传送到DAC,输出相应模拟量。 运放的输出电压为 … ) 由上式可见,输出电压VO与输入的数字量成正比,这就实现了从数字量到模拟量的转换。 2.4单片机与键盘的接口电路 图6是单片机与键盘的接口电路。 单片机的串行口在方式0下工作,作为同步移位寄存器使用,这时以RXD端作为数据移位的出口,而TXD端提供移位时钟脉冲。 在无键按下的情况下p1.0,p1.1读进来的是高电平,当有键按下时,p1.0或p1.1端将会变为低电平。 图6单片机与键盘的接口电路 2.5AT89C51与DACO832的接口电路 图7是AT89C51与DACO832的接口电路。 在这里P0口是做为输入口使用的,由于通路中已有输出锁存器,因此数据输出可以与外设直接相连,无需再加数据锁存器电路。 但是由于输出电路是漏极开路电路,必须外接上拉电阻才能有高电平输出。 DAC0832是处于直通状态,P3.6把第一写信号,第二写信号,数据传送信号拉为低电平。 图7AT89C51与DACO832的接口电路 2.6RC低通滤波器 由于从DAC0832出来的DTMF信号含有丰富的高频成分,信号波形是阶梯型的需要经过一个低通滤波器,使信号变得光滑与准确。 图8是简单的RC低通滤波器。 图8RC低通滤波器 由图8我们可以知道: ωc=1/(RC)称为截止角频率,相应地fc=ωc/(2π)=1/(2πRC)称为截止频率。 构成DTMF信号的8个音频的最高频率1633(由表1可知),因此,我选择了6.8k的电阻和0.01uf的电容,使截止频率为2341hz。 3.系统软件设计 系统的软件设计主要分为单片机与键盘接口程序,DTMF信号产生程序设计,单片机与D/A接口程序设计。 下面,就整体设计以及每个单元功能模块分别进行详细说明。 3.1系统程序设计 图9是系统的程序流程图。 图9系统的程序流程图 3.2单片机与键盘接口程序设计 图10单片机与键盘程序流程图 图10是键程序流程图,主要分为键扫描,去抖动,键码计算,等待键释放等。 3.2.1键扫描 如图11所示,键盘的行线一端经电阻接+5V电源,另一端接单片机的输入口线。 各列线的一端接单片机的输出口线,另一端悬空。 为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线的状态。 若行线状态皆为高电平,则表明无键按下;若行线状态中有低电平,则表明有键被按下。 接下来就要确定被按键的位置。 先使输出端口输出0FEH,然后输入行线状态,测试行线状态中是否有低电平的。 如果没有低电平,再输出0FDH,当出现行线有低电平时,则闭合键找到,此次扫描结束。 3.2.2去抖动 当扫描表明有键被按下之后,紧接着应进行去抖动处理。 因为常用键盘的键实际上就是一个机械开关结构,当被按下的时,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。 一般为5到10ms。 为保证键扫描的正确,需进行抖动处理。 在这里我采用了软件延时的方法,延时时间为10ms。 3.2.3键码计算 被按下来的键确定下来后,接下来的工作是计算闭合键的键码,因为有了键码,才好通过转移指令把程序执行转移到闭合键所对应的功能子程序中。 下面是计算键码的公式: 键码=行首号+列号 3.2.4等待键释放 等待键释放是为了保证键的一次闭合仅进行一次处理,这里我是通过等待来实现的。 3.3产生DTMF信号的程序设计 3.3.1函数y=C*sin(ωt)+C的数据表分析 正弦函数y=C*sin(ωt)的波形如图12。 CPU对不同时间所对应的相位进行计算得出相应的数据,经DAC转换后产生正弦波;也可先通过计算得出一个周期的数据,制作一个表格,CPU按特定的时间间隔即采样周期查表得到对应的数据,经DAC转换后产生正弦波。 但前者需要编写复杂的计算正弦波函数的程序,占用相当的程序存储空间,计算时间长,降低了CPU的效率,很难保证正弦波频率的精度。 查表程序非常简单,占用硬件资源也非常少,频率精度和谐波系数取决于采样周期和表格的大小。 查表方法产生正弦波先计算出正弦波一个周期的数据,作为产生波形的数据表。 采样周期足够小和表格足够大,就可保证正弦波的精度。 为了数据表足够大,尽量占用较小的程序存储空间,实际只需制作0°到90°的数据表格,经过简单的运算即可得到一个周期的数据,又可减少3/4数据表存储空间。 Y=C*sin(ωt)对应的电信号为交流信号,须经电平提升为直流电才能满足CPU的输出特性,函数Y=C*sin(ωt)+C符合要求。 对该函数经数学分析或图形观察,会得出以下结论: (1)相位为0°~90°时,计算出的数据分布为由0到C。 用0°到90°的数据表,经DA转换后可产生函数Y=C*sin(ωt)在0°到90°范围内的波形。 每次读出的数据加C,经DA转换后可产生函数Y=C*sin(ωt)+C在0°到90°范围内的波形。 图12y=63*sin(t)的波形 (2)相位为90°~180°时,于0°~90°的图形左右对称,通过相反的方向,即由后向前读0°到90°的数据表,每次读出的数据加C,经DA转换后可产生该函数在90°到180°范围内的波形。 (3)相位为180°~270°时,于0°~90°的图形上下对称,对应数据绝对值相等,符号相反。 读数据表的方向与0°~90°相同,每次读出的数据符号取反再加C,经DA转换后可产生该函数在180°到270°范围内的波形。 (4)相位为270°~360°时,于180°~270°的图形左右对称,通过相反的方向,即由后向前读0°到90°的数据表,每次读出的数据符号取反再加C,经DA转换后可产生该函数在270°到360°范围内的波形。 3.3.2函数Y=C*sin(ωt)+C的频率计算 Y=C*sin(ωt)+C的相位由0°起,每增加一个单位(即角度增量)计算出一个数据,如δ=1°,共可得到360个数据,由此制作一个大小为包含360个数据的数据表。 角度增量δ决定了数据表的大小,一个周期数据表的大小为360/δ。 实际只需制作0°到90°的数据表,大小为S=90/δ,由于起点也是一个数据,表格实际大小比S多1个单元。 CPU每隔恒定的时间间隔(即采样周期Tc),由数据表的第一个数据起,按特定的步长N,读下一个数据,送DA转换器。 N=1时每读一个数据,表格指针前进一步,即读出相邻的下一个数据,表格大小/步长=S/N=90步后,即可产生函数1/4周期的波形,4S/N=360步后,即可产生一个周期的波形。 如采样周期Tc=10μs,得: 周期=360Tc,频率=1/360Tc=278Hz。 CPU由第一个数据起,N=2时每读一个数据,表格指针前进两步,即间隔一个数据读一个数据,4S/N=360/2=180步后即可产生一个周期的波形周期=180Tc,频率=1/180Tc=556Hz。 同理,由第一个数据起,按不同的步长N读下一个数据,4S/N步后即可产生函数一个周期的波形,周期=4TcS/N,频率=N/4TcS。 表格大小S=90/δ、步长N和采样周期Tc决定了频率,即频率f=N/4TcS=Nδ/360Tc。 由指定的频率反过来推得步长N=360fTc/δ。 根据香侬定理,正弦波一个周期内的采样次数必须大于2,才可反应原函数的频率特性,一般要求采样次数要大于5。 对一个特定频率的正弦函数,合理选择步长N和采样周期Tc,很易满足这一条件。 3.3.3DTMF波形振幅的计算 函数Y=C*sin(ωt),振幅为C,对应交流电信号的峰峰值为2C。 为满足CPU的输出特性,电平提升为直流电后的函数为Y=C*sin(ωt)+C,最大值为2C,最小值为0。 DTMF信号是由两个频率不同、幅度相同的正弦波叠加而成,YDTMF=C*sin(ω1t)+C*sin(ω2t)+2C,它的最大值是4C,最小值为0。 而8位DA转换电路所能表达的最大值为28-1=255,n位转换电路所能表达的最大值为2n-1,DTMF信号的最大值4C不能超过2n-1。 所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 信号 合成 毕业设计