首页> 中国专利> 一种使用单片机产生DTMF按键提示音的方法

一种使用单片机产生DTMF按键提示音的方法

摘要

本发明提供一种使用单片机产生DTMF按键提示音的方法,所述的方法包括:根据需要的DTMF信号,分别确定高频频率fh和低频频率fl,建立数组A和数组B,并确定数组A数组B的元素个数及元素值,且两组元素值按正弦规律分布,当检测到有按键被触发时,启动单片机中的中断,在设定的叠加时间内将数组A和数组B的两组元素进行循环叠加,并利用叠加结果产生PWM信号输出;将输出的PWM信号经模拟滤波器后输送给驱动器,即可驱动发声设备得到所需的DTMF按键提示音;DTMF按键提示音发音完毕,关闭单片机中的中断。本发明的方法简单实用,使需要产生DTMF按键提示音的系统更易实现小型化,同时节省了成本。

著录项

  • 公开/公告号CN102387235A

    专利类型发明专利

  • 公开/公告日2012-03-21

    原文格式PDF

  • 申请/专利权人 华平信息技术股份有限公司;

    申请/专利号CN201110310475.7

  • 申请日2011-10-14

  • 分类号H04M1/50;

  • 代理机构上海光华专利事务所;

  • 代理人李仪萍

  • 地址 200433 上海市杨浦区国定路335号

  • 入库时间 2023-12-18 04:42:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-10-23

    授权

    授权

  • 2012-05-02

    实质审查的生效 IPC(主分类):H04M1/50 申请日:20111014

    实质审查的生效

  • 2012-03-21

    公开

    公开

说明书

技术领域

本发明涉及DTMF按键提示音技术领域,特别是涉及一种使用单片机产生DTMF按键提示 音的方法。

背景技术

双音多频DTMF(Dual Tone Multi Frequency)是一种在话音信道用音调来表示数字 的方法,它可以用来在模拟话音信道传输信令,因此在通信中有广泛的应用。双音多频 DTMF(Dual Tone Multi Frequency),由高频群和低频群组成,高低频群各包含4个频率, 如表一所示:

表一

一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字,例如将770Hz的 低频带与1336Hz的高频带组合代表数字5。因此,每个电话号码的数字具有唯一的低频带和 高频带的组合,从而形成DTMF信号。

在单片机系统中,按键是普遍使用的输入设备,当前DTMF按键提示音多是通过外接语音 芯片或预先存储声音数据的方式实现,除了需要软件进行控制外,它们均需要额外的语音芯 片或存储芯片等硬件资源。

发明内容

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种使用单片机产生DTMF按键 提示音的方法,用于解决现有技术中DTMF按键提示音只能通过外接语音芯片或预先存储声 音数据的方式实现的问题。

为实现上述目的及其他相关目的,本发明提供一种使用单片机产生DTMF按键提示音的方 法,所述的方法包括:

(1)根据需要的DTMF信号,分别确定高频频率fh和低频频率fl;

(2)在单片机程序中建立数组A和数组B,数组A元素个数为对采样率除以高频频率 fh的结果取整,数组B元素个数为对采样率除以低频频率fl的结果取整;数组A 各元素的取值为在一个周期为1/fh的正弦波形内的采样点值;数组B各元素的取 值为在一个周期为1/fl的正弦波形内的采样点值;将数组A和数组B存储在单片 机内部存储器内;

(3)当检测到有按键被触发时,启动单片机中的中断,在设定的叠加时间内将数组A 和数组B的两组元素进行循环叠加,并利用叠加结果产生PWM信号输出;

(4)将输出的PWM信号经模拟滤波器后输送给驱动器,即可驱动发声设备得到所需的 DTMF按键提示音;

(5)DTMF按键提示音发音完毕,关闭单片机中的中断。

优选地,所述数组A和数组B的两组元素循环叠加的具体方法为:

数组A{a1,a2,...ak,ak+1,...am};数组B{b1,b2,...bm,bm+1,...bn};

将数组A的每一个元素乘以一个叠加系数c(其中0<c<1),得到:

A1{a1*c,a2*c,...ak*c,ak+1*c,...am*c};

将数组B的每一个元素乘以系数(1-c),得到:

B1{b1*(1-c),b2*(1-c),...bm*(1-c),bm+1*(1-c),...bn*(1-c)};

然后再将两数组的元素循环叠加;

将数组A1的第一个元素a1*c与数组B1的第一个元素b1*(1-c)叠加,A1的第二个元素a2*c 和B1的第二个元素b2*(1-c)叠加,依次进行,A1的最后一个元素am*c与B1的第m元素bm*(1-c) 叠加,然后A1的第1个元素a1*c与B1的第m+1个元素bm+1*(1-c)叠加,依次进行,直到 A1的第k个元素ak*c与B1的最后一个元素bn*(1-c)叠加,之后A1的第k+1个元素ak+1*c与 B1的第一个元素b1*(1-c)叠加,这样依次进行下去,直到达到设定的叠加次数,其中k<m<n。

优选地,所述数组A和数组B元素的取值范围均为[0~2n];所述的数组A和数组B元素 叠加后的取值范围在[0~2n],其中,n为正整数。

优选地,,所述数组A和数组B均为一维数组。

优选地,所述DTMF按键提示音发音完毕的时间包含数组A和数组B的叠加总时间和叠 加完成后到中断关闭前的空闲时间。

优选地,所述数组A和数组B的叠加次数为数组A和数组B的叠加总时间/数组A和数 组B的单次叠加时间。

优选地,所述的采样点值呈正弦规律分布。

优选地,所述的正弦波采用y=2nsin(ωx)的函数,其中,n为正整数。

如上所述,本发明的一种使用单片机产生DTMF按键提示音的方法,具有以下有益效果:

省去了外接语音芯片或存储芯片,简化单片机系统的硬件电路,利用单片机本身的资源, 采用定时器中断,将按正弦波分布的两个数组进行叠加产生PWM信号的方式生成DTMF按键 提示音,本发明的方法简单实用,使需要产生DTMF按键提示音的系统更易实现小型化,同时 节省了成本。

附图说明

图1显示为本发明方法流程图。

图2显示为本发明方法的中断处理流程图。

图3显示为PWM信号转换为所需的DTMF按键提示音流程图。

元件标号说明:

S11-S15,S141-S144    步骤

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露 的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加 以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精 神下进行各种修饰或改变。

请参阅图1至图3。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的 基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及 尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型 态也可能更为复杂。

如图1所示,本发明为一种使用单片机产生DTMF按键提示音的方法,所述的方法包括:

步骤S11,根据需要的DTMF信号,分别确定高频频率fh和低频频率fl;

由于一个数字只对应一个唯一的DTMF信号,并且每个数字对应的高频频率和低频频率 已经固定,所以只要对照DTMF信号的频率表,即可确定高频频率fh和低频频率fl的具体数 值;

步骤S12,在单片机程序中建立数组A和数组B,并确定数组A和数组B的元素个数及 元素值,为方便叠加,数组A和数组B应为一维数组;

确定数组A和数组B的元素个数:数组A元素个数为对采样率除以高频频率fh的结果 取整,数组B元素个数为对采样率除以低频频率fl的结果取整;

确定数组A和数组B的元素值:可采用y=2nsin(ωx)函数,根据数组A个数在一个周期 为1/fh的正弦波形内采样取值,为保证DTMF按键提示音的音质,采样取值的采样点值应尽 量均匀,并使得所述的采样点值呈正弦规律分布;可采用y=2nsin(ωx)函数,根据数组B的 元素个数在一个周期为1/fl的正弦波形内采样取值,为保证DTMF按键提示音的音质,采样 取值的采样点值应尽量均匀,并使得所述的采样点值呈正弦规律分布;数组A和数组B元素 的取值范围均为[0~2n];并将数组A和数组B存储在单片机内部存储器内;

步骤S13,当检测到有按键被触发时,启动单片机中的中断;

步骤S14,开启单片机中的中断之后,响应按键,包括在设定的叠加时间内将数组A和 数组B的两组元素进行循环叠加,并利用叠加结果产生PWM信号输出;

所述数组A和数组B的两组元素循环叠加的具体方法为:

数组A{a1,a2,...ak,ak+1,...am};数组B{b1,b2,...bm,bm+1,...bn};

将数组A的每一个元素乘以一个叠加系数c(其中0<c<1),得到:

A1{a1*c,a2*c,...ak*c,ak+1*c,...am*c};

将数组B的每一个元素乘以系数(1-c),得到:

B1{b1*(1-c),b2*(1-c),...bm*(1-c),bm+1*(1-c),...bn*(1-c)};

然后再将两数组的元素循环叠加;

将数组A1的第一个元素a1*c与数组B1的第一个元素b1*(1-c)叠加,A1的第二个元素a2*c 和B1的第二个元素b2*(1-c)叠加,依次进行,A1的最后一个元素am*c与B1的第m元素bm*(1-c) 叠加,然后A1的第1个元素a1*c与B1的第m+1个元素bm+1*(1-c)叠加,依次进行,直到 A1的第k个元素ak*c与B1的最后一个元素bn*(1-c)叠加,之后A1的第k+1个元素ak+1*c与 B1的第一个元素b1*(1-c)叠加,这样依次进行下去,直到达到设定的叠加次数,其中k<m<n。

所述数组A和数组B的叠加次数为数组A和数组B的叠加总时间除以数组A和数组B 的单次叠加时间;叠加总时间和数组A和数组B的单次叠加时间应根据单片机的性能及所需 DTMF按键提示音的长短高低预先设定;

将输出的PWM信号经模拟滤波器后输送给驱动器,即可驱动发声设备得到所需的DTMF 按键提示音;DTMF按键提示音发音完毕,关闭单片机中的中断;

所述DTMF按键提示音发音完毕的时间包含数组A和数组B的叠加总时间和叠加完成后 到中断关闭前的空闲时间,这一空闲时间应预先设定。

综上所述,本发明提供的一种使用单片机产生DTMF按键提示音的方法,根据DTMF信 号的特点,在单片机内部,利用中断,通过设定与DTMF信号频率相对应的按正弦波分布的 两个数组进行循环叠加产生PWM信号,从而得到所需的DTMF按键提示音。

实施例:

本发明以使用MSP430F147单片机产生持续120ms(即叠加总时间为120ms),断开50ms(即 叠加完成后到中断关闭前的空闲时间为50ms),采样精度为8-bit,n的取值为8;采样率为 32k的按键数字“5”的DTMF按键音为例,说明具体的实施方案,假设单次叠加时间为10us:

如图1所示:

步骤S11,确定高频频率和低频频率,根据DTMF信号可知,数字“5”对应的高频频率 fh为1336Hz,低频频率fl为770Hz;

步骤S12,在单片机程序中建立数组A和数组B,数组A元素个数为对采样率除以高频 频率fh的结果取整,即数组A的元素个数为int(32kHz/1336Hz)=24个;数组B元素个数为对 采样率除以低频频率fl的结果取整,即数组B的元素个数为int(32kHz/770)=41个。

数组A和数组B均为一维数组;数组A各元素的取值为在一个周期为1/fh的正弦波形内 的采样点值;数组B各元素的取值为在一个周期为1/fl的正弦波形内的采样点值;应保证数 组A和数组B元素的取值范围均为[0~28],数组A和数组B元素叠加后的取值范围在[0~28]; 并且使得这两组整数都按正弦趋势变化且在一个正弦周期内的分布尽量均匀,具体可使用 y=28sin(ωx)函数产生数组A和数组B的元素值,然后稍加调整即可:

可选数组A和数组B的元素为下面的两组元素:

A={0x04,0x0E,0x018,0x22,0x2C,0x38,0x40,0x4A,0x54,0x5E,0x68,0x72,0x7C,0x86,0x90,0x9 A,0XA4,0xAE,0XB8,0XC2,0XD4,0XE0,0xEC,0XF8};

B={0x02,0x08,0x0E,0x14,0x1A,0x20,0x26,0x2C,0x32,0x38,0x3E,0x44,0x4A,0x50,0x56,0x5 C,0x62,0x68,0x6E,0x74,0x7A,0x80,0x8A,0x8E,0x94,0x9A,0xA0,0XA6,0xAE,0XB4,0xBA,0XC0, 0XC6,0xCC,0XD2,0XdD8,0xDE,0XE4,0xEA,0XF0,0XF6};

将数组A的每一个元素乘以一个叠加系数c,c取为0.5,得到:

A1={0x02,0x07,0x0C,0x11,0x16,0x1B,0x20,0x25,0x2A,0x2F,0x34,0x39,0x3E,0x43,0x48,0x4 D,0x52,0x57,0x5C,0x61,0x6A,0x70,0x76,0x7C};

将数组B的每一个元素乘以系数(1-c),得到:

B1={0x01,0x04,0x07,0x0A,0x0D,0x10,0x13,0x16,0x19,0x1C,0x1F,0x22,0x25,0x28,0x2B,0x2 E,0x31,0x34,0x37,0x3A,0x3D,0x40,0x43,0x47,0x4A,0x4D,0x50,0x53,0x57,0x5A,0x5D,0x60,0x63 ,0x66,0x69,0x6C,0x6F,0x72,0x75,0x78,0x7B};

将数组A和数组B存储在单片机内部存储器内;

步骤S13,主程序采用查询的方式检测按键,当检测到有按键被触发时,启动单片机中的 中断,中断采用定时器A的CCR0中断;

步骤S14,开启中断之后,响应按键。响应按键的中断处理流程如图2所示;

步骤S141,按键音若结束,则进入步骤S15,关闭中断,若按键音未结束,进入步骤S142, 判断发声部分是否完成;

步骤S142,若发声部分完成,进入步骤S143,判断是否达到中断关闭前的空闲时间,若 发声部分未完成,进入步骤S144,进行数组A和数组B的叠加;

步骤S143,若达到中断关闭前的空闲时间,则进入步骤S15,关闭中断,若为达到中断 关闭前的空闲时间,则返回;

步骤S144,若发声部分未完成,在设定的叠加时间内将数组A和数组B的两组元素进行 循环叠加,并在在定时器A的CCR0中断中进行数组A和数组B的叠加,叠加的次数为数组 A和数组B的叠加总时间/数组A和数组B的单次叠加时间,即120ms/10us=12000次;

所述数组A和数组B的两组元素循环叠加的具体方法为:

将数组A1的第一个元素0x02与数组B1的第一个元素0x01叠加,A1的第二个元素0x07, 和B1的第二个元素0x04叠加,依次进行,A1的最后一个元素0x7C与B1的第24元素0x47 叠加,然后A1的第1个元素0x02与B1的第25个元素0x4A叠加,依次进行,直到A1的第 17个元素0x52与B1的最后一个元素0x7B叠加,之后A1的第18个元素0x57与B1的第一个 元素0x01叠加,这样依次进行下去,直到达到设定的叠加总时间120ms;叠加完成之后,利 用定时器A的output单元将叠加结果产生的PWM信号输出;

步骤S15,DTMF按键提示音发音完毕,关闭单片机中的中断,返回;DTMF按键提示 音发音完毕的时间包含数组A和数组B的叠加总时间和叠加完成后到中断关闭前的空闲时间, 即当叠加全部完成后,定时器仍会继续工作,但不进行叠加,直到叠加完成后再过50ms的时 间,才认定为一次发音完毕,经过叠加总时间120ms加上叠加完成后到中断关闭前的空闲时 间50ms共170ms,一次DTMF按键提示音发音完毕。

如图3所示,将输出的PWM信号经模拟滤波器后会产生由频率fh和fl两种正弦波叠加 的波形,即选定的DTMF波形信号,该信号经过运放和功放处理后即可输送给驱动器,即可 驱动发声设备得到所需的DTMF按键提示音。

叠加过程中,不同的叠加结果会产生不同频率的PWM信号,下一个PWM信号的频率将会 在前一个PWM周期结束后被响应的中断中给出,这些不同频率的PWM信号群通过模拟滤波器 后即可产生选定的DTMF信号,这一信号通过驱动设备输出得到的便是期望的DTMF按键提示 音。

综上所述,本发明提供的一种使用单片机产生DTMF按键提示音的方法,利用单片机本身 的资源,结合软件的形式,将按正弦波分布的两个数组进行叠加产生PWM信号的方式产生 DTMF按键提示音,无需外接语音芯片或存储芯片,简化单片机系统的硬件电路,本发明的 方法简单实用,使需要产生DTMF按键提示音的系统更易实现小型化,同时节省了成本。所以, 本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技 术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡 所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等 效修饰或改变,仍应由本发明的权利要求所涵盖。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号