单片机产生38khz方波(单片机如何产生一定频率的方波)

海潮机械 2022-12-23 20:01 编辑:admin 123阅读

1. 单片机如何产生一定频率的方波

  一首音乐是许多不同的音符组成的,而每个音符对应着不同的频率,这样我们利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来说,产生不同的频率非常方便。我们可以利用单片机的定时器/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系设置正确即可。  若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将I/O口反相,然后重复计时再反相。就可以在该I/O口引脚上得到频率的脉冲。  STC89C52RC单片机的一个计数周期需要12个时钟周期,采用12MHz晶振,一个计数周期即1us。利用单片机内部的定时器,使其工作计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。例如,中音DO频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,每计数956次将I/O口反相,就可得到中音DO。  计数脉冲值与频率的关系式是:  N=fi÷2÷fr  式中,N是计数值;fi是机器频率(晶振为12MHz时,其频率为1MHz);fr是想要产生的频率。  其计数初值T的求法如下:  T=65536-N=65536-fi÷2÷fr  单片机12MHz晶振,高中低音符与计数值对照如表 3 1所示。  表 3 1 C大调各音符频率与计数值对照表  音符 频率Hz 周期(T值) 音符 频率Hz 周期(T值)  低音区 低音DO 262 63628 中音区 #FA 740 0676  #DO 277 63731 中SO 784 0638  低RE 294 63836 #SO 831 0602  #RE 311 63928 中LA 880 0568  低M 330 64020 #LA 932 0536  低FA 349 64103 中SI 988 0506  #FA 370 64186 高音区 高DO 1046 0478  低SO 392 64260 #DO 1109 0451  #SO 415 64331 高RE 1175 0426  低LA 440 64400 #RE 1245 0402  #LA 466 64464 高M 1318 0372  低SI 494 64524 高FA 1397 0358  中音区 中DO 523 64580 #FA 1480 0338  #DO 554 64633 高SO 1568 0319  中RE 578 64694 #SO 1661 0292  #RE 622 64732 高LA 1760 0284  中M 659 64777 #LA 1865 0268  中FA 698 64820 高SI 1976 0253  注:#代表该音符升半调。  我们要为这些音符建立一个表格,让单片机通过查表的方法来获得音符的计数值。  unsigned int code note_value[][14]={  {0,63628,63835,64021,64103,64260,64400,64524,63731,63928,0,64185,64331,64463}, //低音1,2,3,4,5,6,7,#1,#2,0(#3在此程序中无需设),#4,#5,#6 相对应的定时器初值 {0,64580,64684,64777,64820,64898,64968,65030,64633,64732,0,64860,64934,64994}, //中音1,2,3,4,5,6,7,#1,#2,0(#3在此程序中无需设),#4,#5,#6 相对应的定时器初值 {0,65058,65110,65157,65178,65217,65252,65283,65085,65134,0,65198,65235,65268} //高音1,2,3,4,5,6,7,#1,#2,0(#3在此程序中无需设),#4,#5,#6 相对应的定时器初值  };  音乐的节拍,一个节拍为一个单位。如表 3 2所示。  表 3 2 曲调值表  曲调值 延时(ms) 曲调值 延时(ms)  调4/4 125 调4/4 62  调3/4 187 调3/4 94  调2/4 250 调2/4 125  实在不好意思,之前一直没有用文字整理出来,所以才给你回答,希望对你有帮助。

2. 单片机怎么产生方波

答:单片机中脉冲方波就是脉搏的跳动所产生的冲击波。

脉冲的定义其实是这样的: 电压(V)或电流(A)的波形象心电图上的脉搏跳动的波形 但现在听到什么电源脉冲、声脉动作何解释呢——脉冲的原意被延伸出来得: 隔一段相同的时间发出的波等机械形式。

3. 单片机测方波信号频率

单片机只有驱动无源蜂鸣器时才可以控制音调。改变驱动引脚输出方波的频率,就可以调整音调。如果采用延时法产生方波,那就改变延时时间;如果采用定时器法,那就改变定时器初值。

需要注意的是,无源蜂鸣器的频率范围并不覆盖整个音频,所以方波频率通常应控制在100~5KHz。

有源蜂鸣器的震荡频率是固定的,用单片机无法调整音调。

4. 用单片机输出一个方波

1000Hz 的周期 T=1ms,定时为 半周期 0.5ms=500us,12MHz晶振,机械周期为 1us,定时器初值=65536-(500us/1us)=65036=0xFE0C;

若是想问定时时间,就为500us,若是想问定时器初值,就为 0xFE0C;

5. 单片机用内部定时方法产生频率为100khz的等宽矩形波

还可以使用现成的TPC4-4TD型定时程序控制器,可以控制4路负载,还有4路输入开关的控制,输出定时0——200小时,一共60行设置程序,每行程序有一个延时定时器和一个输出定时器。采用表格设置,无需编程。不仅可以实现定时控制,还可以实现程序控制。不过这个控制器一般都是用于工业设备控制使用,价格380元。还有控制更多输出电器负载的型号。 下面补充回答你对单片机编程的问题: 用单片机编制简易家电控制器并不复杂,只要你学过汇编语言或者单片机C语言也是比较简单的入门程序。程序基本涉及到三个部分,一是按键扫描程序,二是显示程序,这两个程序配合实现对家电控制器操作和设置;三是定时部分,定时部分使用单片机内部的定时器,需要编写定时器的初始化和定时器的中断程序。最好亲自尝试程序的编写,有个这样的课题也是使自己提升的最佳机会。 有个捷径就是参考别人的示例程序,拿来理解修改,这也是学习过程,可以快速掌握。下的功夫越多,自己获得的就更多。

6. 单片机输出频率1000HZ的方波

stm32单片机的PWM模块就是产生方波的,一般式通过设置其相关定时器来实现产生不同频率,不同占空比的方波信号;同时PWM可以是脉冲宽度调制器,通过改变输入PWM的占空比与频率控制开关管的开关状态来改变输出电压,如常用的开关电源适配器,PWM可调风扇等大都都是利用PWM来实现的。

电力电子,电机调速领域都有广泛应用,可以调节脉冲宽度的脉冲.很多地方都有有、在开关电源里面用来驱动开关管.通过改变PWM的宽度就可以实现对输出的控制。

在单片机领域使用就更加广泛。

电机调速,灯光调亮,电功率调节可能回用到。

7. 单片机输出1khz方波

我用雷赛的步进电机驱动器M535,用单片机IO口直接接控制器脉冲口,打入8kHz这个不好说。 你需要频率慢慢加才可以,否则会卡死(就是你说的吱吱发

8. 单片机定时器产生100hz方波

#include

void InitTimer0(void)

{

TMOD = 0x01;

TH0 = 0x0FF;

TL0 = 0x0F4; //初值设置为12.5us,80KHZ, 误差0.5us

EA = 1;

ET0 = 1;

TR0 = 1;

}

void main(void)

{

InitTimer0();

while(1);

}

void Timer0Interrupt(void) interrupt 1

{

TH0 = 0x0FF;

TL0 = 0x0F4; //80KHZ, 12.5us

//add your code here!

}

9. 单片机产生10khz方波

如果是STC的MCU,则可以用定时器产生.这个频率有点偏差不要紧的。我还是建议使用实际点的ADC,8腿的,或者使用MCU自带的ADC。 用ATMEL或STC的单片机,它们的T2定时器可设置成在P1.0管脚上可编程时钟输出 STC89C52RC是跟通用的AT89C52兼容的,定时器T2可以16位自动重装输出方波而不用中断,是硬件输出的,不占用CPU,输出1MHZ都木问题。

你可以使用STC12C5A60S2,引脚兼容,带8路10位ADC。