如何用51系列单片机产生DTMF双音频信号,核心是关于怎样用C语言写两个中断程序

作者&投稿:焦便 (若有异议请与网页底部的电邮联系)
如何用C51单片机发生DTMF信号~

首先几个部件是必须的,单片机,信号发生器芯片,频率调节,波形变换

频率调节:按键输入和频率显示,按键可以4*4按键,频率显示是数码管或者液晶屏

波形变换:信号发生器产生的是正弦信号,需要用一个运放做比较器产生方波,
然后对方波进行积分产生三角波

手机的DTMF信号从芯片内部合成,只能从耳机听筒中提取。可以接耳机线就行了。其余的部分提取DTMF信号太困难。
当然我说的方法也只适合两部机器通话,受话机才能提取。本机,也就是发送机是很难的。加上他有消侧音功能,发话的时候自己耳机中是没有声音的。

我比较了下,是DTMF音频信号。不过你用专门的DTMF芯片解码,然后再送单片机比较合适。

给你一个中断服务程序编写的样式:
#include "reg51.h"
void Init(void)
{
TMOD = 0x01; //十六位定时器
TH0 = 60000/256; //定时器计数器赋值,12MHz晶振5.5ms一次中断
TL0 = 60000%256;
ET0 = 1; //开定时器0中断允许
PT0 = 0; //中断优先级为0
return;
}
void Timer0(void) interrupt 1 //定时器中断0
{
TL0 = TL0|(60000%256);//重装初值
TH0 = 60000/256; //定时器计数器赋值,12MHz晶振50ms一次中断
// 你的代码(如信号引脚取反==) 通过判断重装不同的初值可以改变占空比.
return;
}
两个不同频率的信号不能在同一个引脚上输出,因为谈频率,就得是周期性的!
给你个单片机论坛地址:http://bbs.zlgmcu.com/index.asp?action=frameon
当然你也可以在百度 搜索51C语言的论坛 多的是的


怎么用51单片机做定时器
假定使用51系列单片机 机器周期T =12 \/ Fosc =12\/(24x10^6Hz) = 0.5μs 计数值C =10ms \/ 0.5μs =20000d 定时器T1工作于方式1,是16位计数器,模M=2^16=65536d 计数初装值a =M -C =65536d -20000d =45536d =B1E0h 初始化程序如下:MOV TMOD, #01h ;;方式1,作定时器...

51单片机是什么?如何学习它的编程?都用在哪些方面
现在每年仍旧会使用几十亿片51系列的兼容芯片,在你想得到的电器、玩具上,比如:遥控灯具、洗衣机、冰箱、电子钟表、显示器、汽车(每辆汽车可能会用到十几到几十片)。。。学习它很简单,到当地书店、图书馆、随手可以找到几十种单片机入门书,8成以上是讲51系列单片机的。--- 学习编辑 作为一个初学...

为什么51系列单片机能成为8位单片机的主流
现阶段,8位机主要运用在民用产品中,如家用电器等,其运用广泛性不言而喻。而且其处理能力能够符合大部分场合。

MCS-51系列单片机为什么既能单片应用,又能进行外部功能扩展?何谓外部...
【答案】:(1)这是由单片机自身的结构特点所决定的,由于单片机是在一块芯片上集成了CPU、振荡器电路、ROM和RAM存储器、定时器\/计数器和并行\/串行I\/O接口等部件,构成了一台具有一定功能的计算机,因此它可以单片应用。又因为它具备外部扩展功能,可以配置成各种不同的应用系统,所以又能进行外部功能...

51系列单片机的含义是什么?
目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机即是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 当前常用的51系列单片机主要产品有: *Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; *...

51系列单片机的基本功能
11)中断系统有5个中断源,可编程为两个优先级。12)111条指令,含乘法指令和除法指令。13)有强的位寻址、位处理能力。14)片内采用单总线结构。15)用单一+5V电源。52子系列单片机:片内数据存储器增至256个节;片内程序存储器增至8KB(8032无);有3个16位定时器\/计数器;...

51单片机如何使用?
我是一名多年的单片机工程师,下面的51单片机教程学习方法你参考一下\\x0d\\x0a\\x0d\\x0a1 首先了解单片机的硬件结构。\\x0d\\x0a\\x0d\\x0a2 掌握很基本的数电模电知识,如二进制、十进制、十六进制之间的转换,与、或、非逻辑关系等。\\x0d\\x0a\\x0d\\x0a3 熟悉5个基本语句的运用,如:if ...

51系列的单片机有什么区别,最小系统上用的51系列的单片机可以通用吗
1. 51系列单片机内核相同,因此40PIN的51单片机引脚在硬件连接上是通用的。2. 如果最小系统使用的是通用模块如T0、T1、UART等,并且单片机都是12T模式,那么程序也是兼容的。3. 然而,如果单片机具有特定功能,如某公司的PWM功能,而另一公司产品没有,则程序将不兼容。4. 某些公司生产的51单片机可能...

51单片机的寄存器怎么使用?
学习使用单片机如果不仔细阅读数据手册几乎是无法进行的,对于51单片机的应用,其实就是设置这些寄存器的事情,这些弄懂了也就入门了。TMOD=0x10 :设置定时器1为方式1模式(16位定时器\/计数器)。TMOD=0x02:设置定时器0为方式2模式(自动重载8位定时器\/计数器)

怎么样才算是真正会用51单片机了
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系...

孟津县15972375134: 如何用C51单片机发生DTMF信号 -
一皆辛夷: 首先几个部件是必须的,单片机,信号发生器芯片,频率调节,波形变换频率调节:按键输入和频率显示,按键可以4*4按键,频率显示是数码管或者液晶屏波形变换:信号发生器产生的是正弦信号,需要用一个运放做比较器产生方波, 然后对方波进行积分产生三角波

孟津县15972375134: 如何用单片机产生PWM -
一皆辛夷: /*--------------- 文件名称: PWM.C 功能 :单片机脉冲方式产生PWM信号 ----------------*/ #include <reg52.h> // 引用标准库的头文件 #include <absacc.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define COUNT0 ...

孟津县15972375134: 如何用一个51单片机两个需不同占空比的pwm控制两个相互独立的电机运转?请给出详细的思路,最好有电路图? -
一皆辛夷: 用定时器产生一个时基时序,比如1ms、10ms或者100ms等,这个时基就作为你的PWM的最小时间单位,然后用计数器的方式(定时中断一次计数器加一),不同的计数值可以形成不同的脉宽,然后改变你的输出状态,就可以形成脉宽可调的...

孟津县15972375134: 我想用51单片机控制两块AD9850,同时产生两路可控制的正弦波.请问下我应该怎么样才能合理分配51单片机的I/o -
一皆辛夷: 用一个tmer,tmer只负责计量最小时间单位,然后再tmer中断里设置一个变量 计中断次数,查询这个变量的值来决定2路得pwm输出,这样可以输出2路不同占空比的pwm

孟津县15972375134: 用51单片机定时器中断产生两路占空比可调的pwm波形 -
一皆辛夷: 只需使用一个定时器,设置为模式2(自重装),定时时间100微秒,在中断程序中比较两个PWM值就可以了,以下为示范:PWM++;if(PWM==100)PWM=0;if(PWM1>PWM)P1.1=0;else P1.1=1;if(PWM2>PWM)P1.2=0;else P1.2=1;

孟津县15972375134: 51单片机是如何产生PWM波的..用定时器中断如何实现 -
一皆辛夷: 1 设置一个 IO 输出口作为 PWM 输出 2 设置一个 可调定时器 如 定时 250 IO输出 0 , 定时 5 IO输出 1, 高电平 窄或 定时 5 IO输出 0 , 定时 250 IO输出 1, 高电平 宽即定时器每中断一次要重装定时数据

孟津县15972375134: 如何利用51单片机输出PWM波30 -
一皆辛夷: 用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比.大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值...

孟津县15972375134: 如何用51单片机来产生pwm波来驱动5v的小电机
一皆辛夷: 51没有硬件的PWM,得全靠软件模拟. 调速程序可以用定时器做,首先设置两个定时用的全局变量,一个代表高电平时间一个代表低电平时间. 先给定时器初值(既那两个全局变量中的一个),溢出后触发中断,在中断里设置另另一个初值并且取反PWM的输出端口,两个初值轮流给定时器,就可以任意调整占空比,占空比取决于两个初值. PWM输出后,驱动三极管,后面接上电机就是了. 按键调速也不难,看你具体的按键处理程序了,通过获得的键值控制上面说的两个全局变量就可以了. 测速可以用计数器做,得到计数值处理一下即可. 如果是自动调速,那需要做点简单的算法程序. 反正51有那么多I/O口,再来一个转速显示什么的也可以.

孟津县15972375134: 如何用51单片机用PWM控制左右电机!!求高手指教... -
一皆辛夷: 首先,控制直流电机转动方向就是控制电流方向.直流电机两个输入端,如果是不同电平(一高一低),就会产生电流,那么交换高低电平就会改变运转方向.用PWM,就是通过一系列周期信号控制直流电机速度,周期持续时间相同,通过每一个周期内的高电平持续时间来控制直流电机的驱动电力.其次,控制速度,每一个周期内控制高电平的持续时间就行,要快一点那么高电平持续时间多一些,反之就低电平状态时间多一些.

孟津县15972375134: 51单片机 计时器0产生PWM波 计时器1用作串口通信 两个计时器互相影响...该怎么处理 -
一皆辛夷: 串口和定时器的中断是有优先级的,这两个中断首先不可能同时响应,默认必须是先执行完定时器的中断服务程序后才会去执行串口的中断服务程序,当然当串口中断服务程序执行到一半的时候出现了定时器中断,就会对串口有一定的影响,想避免最好就是在执行串口中断服务程序之前关定时器0中断,等串口中断服务程序执行完毕在开定时器0中断.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网