登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

只用I/O产生双音多频DTMF信号

作者:leiwei77 栏目:单片机
只用I/O产生双音多频DTMF信号
//---------------如何只用I/O产生双音多频DTMF信号---------
1。直接用2个I/O输出不同的高低音频方波,再用运放做加法,滤波,勉强可以;
2。在一段时间内分别对高/低频群取样,得到不同的时间点上各个频率幅度(可以用4位或8
位),编成8个表。分别抽取高频和低频表中某一时刻的幅值,做或运算,将得到的结果从4
位I/O口(8位就更精确)输出,在I/O口上在按8421的权重来输入到运放做加法,滤波,这
个办法效果比较好,需要CPU跑的比较快。
3。上面两种办法,第一种其实是1位取样,第二种是多位的取样,关键还是要频偏要小。
///////////////////////////////////////////////////////////
我想用你的第二种方法,用6 I/O来作,可是不知怎么计算频率的表格,好像不用定时器也可以。我附以PIC的程序,她好像没用定时器这样频率是怎么得来的??还请指教如计算频
率的表格。多谢!!
//////////////////////////////////////////////////////////
《单片机技术选编7》的259页有计算方法,它的采样频率相同吗?可采样点数??N=M/Tf。式中T及f。是已知,M怎么定呢?M代表的周期又是谁的周期呢?两个频率如何产生(不用两个
定时器)?还请各路高人发表高见或讲出你的计算方法,小弟万分着急!
再谢各位多多帮忙!
(只用6 I/O产生双音多频DTMF信号方法已定,不能更改,并已选定用EMC的PIC16C57A或EMC的78P447来做)
//--------------------------------------------------------
《单片机技术选编7》可到本站去下,也可来信 leiwei77@163.com 取 pdf 档
////////////////////////////////////////////////////////////
; Filename: DTMF.ASM
; **********************************************
; * Author:   John Day                         *
; *           Sr. Field Applications ENGINEER  *
; *       MICROCHIP TECHNOLOGY             *
; * Revision: 1.1                              *
; * Date      December 20, 1995                *
; * PART:     PIC16C54                         *
; * Compiled using MPASM V1.40                 *
; **********************************************
; * Include files:                             *
; *           NONE (used by DTMF.ASM)          *
; **********************************************
; * Fuses:    OSC:  XT (3.579545 Mhz XTAL)     *
; *           WDT:  OFF                        *
; *            CP:  OFF                *
; ****************************************************************************
; * This program uses and external R2R ladder network to generate complete   *
; * DTMF dial tones used for telphone dialing.                   *
; ****************************************************************************
; * Program MEMORY:                                                      *
; *          220 Words - sine wave look-up table (7 sine waves total)    *
; *       25 Words - keypad sine address MATRIX look-up              *
; *           37 Words - DTMF sine wave base initialization/generation   *
; *            3 Words - Initialization                  *
; *       25 Words - TEST SAMPLE code                    *
; * RAM MEMORY:                                      *
; *        8 Bytes                           *
; ****************************************************************************
;    list     p=16C54, r=dec
;    #include <p16c5x.inc>
;    __CONFIG _XT_OSC&_WDT_OFF&_CP_OFF
sinecolumnb_sineoffset  equ 00
WAVEABASE       EQU     10h ; Base address of sine A waveform
POINTERA        EQU     11h ; Pointer to current position in sine A
WAVEBBASE       EQU     12h ; Base address of sine B waveform
POINTERB        EQU     13h ; Pointer to current position in sine B
NEXTVALUE       EQU     14h ; Sum register to store Sine A + Sine B
SINECOUNT       EQU     15h ; LSB counter for time to OUTPUT DTMF
SINECOUNTH      EQU     16h ; MSB counter for time to OUTPUT DTMF
TEMP        EQU 17h ; Temporary storage
ENDSINE         EQU     127    ; VALUE to show the end of a sine table
; ****************************************************************************
; * sinelookup                                   *
; * This is the look-up table for the (4 X 3) keypad MATRIX sine wave table. *
; * There are (7) sine waves stored here and adding any two from the         *
; * MATRIX will PRODUCT a DTMF signal for the appropriate key            *
; * CRYSTAL Frequency:  3.579545 Mhz        &
2楼: >>参与讨论
sch_l
你说的这个法有点复杂,如果没有dtmf测试仪就不要
你说的这个法有点复杂,如果没有dtmf测试仪就不要作乐,HT9200不贵的,这样一个法:16个频率分别取样,利用表格组合起来16个代码,两个去养殖在发出之前相加即可.

参与讨论
昵称:
讨论内容:
 
 
相关帖子
关于用MPASM汇编程序一问
仿真可以通讯而芯片不能通讯(配置是一样的),请教!!
想认识做PIC开发的朋友
一个程序要怎样实现同时能查多个表
请问:如何在PIC系列的单片机的程序存贮器中写入任意数据?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号