2019年 10月 03日 星期四
您的位置: 威廉希尔主页 > 单片机技术 >

单片机对音乐程序的设计原理解析

来源:未知     作者:威廉希尔     发布时间:2019-10-02 07:21         

  (或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。

  我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。

  例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序为:

  其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存放延时,对200HZ音频,其周期为1/200秒,即5ms。这样,当P1.4的高电平或低电平的持续时间为2.5ms,即R3的时间取2500/20=125(7DH)时,就能发出200HZ的音调。将上述程序键入学习机,并持续修改R3的能感到音调的变化。乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率及其对应的时间。读者能根据表1所供给的,将其16进制代码送入R3,反复体会。根据表1能奏出音符。仅这还不够,要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。

  音符的节拍我们能用定时器T0来控制,送入不一样的初值,就能产生不一样的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。其它节拍与时间的对应关系见表2。

  但时,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不一样节拍。我们能用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。表2中也给出了各种节拍所对应的时间。例如对1/4拍音符,定时时间为0.16秒,对应的时间为16(即10H);对3拍音符,定时时间为1.92秒,对应时间长数为192(即C0H)。

  我们将每一音符的时间和其对应的节拍作为一组,按次序将乐曲中的所有排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就能实现演奏效果。此外,结束符和体止符能分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生对应的停顿效果。为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不一样的音符。

  下面给出程序序清单,可直接在TD-III型学习机上演奏,对其它不一样型号的学习机,只需对应地改变一下地址即可。本程序演奏的是民歌“八月桂花遍地开”,C调,节奏为94拍/分。读者也能自行找出一首歌,按表1和表2给定的,将乐曲翻译成码表输入机器,而程序不变。本实验办法简便,即使不懂音乐的人,将一首陌生的曲子翻译成代码也是易事,和着机器的演奏学唱一首歌曲,其趣味无穷。

  中国硬件创新大赛网络培训会—技术培训篇如果你就干这行,毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机,也不

  我们先来看看10进制下是如何手工计算开方的。 先看下面两个算式, x = 10*p + ...

  对于我们这些设计和开发PCB的人来说,你的固件不受黑客的影响喜欢捉迷藏的游戏。固件或微控制器代码...

  控制系统的硬件组成 控制系统的硬件组成电由SM8954A单片机、可编程并行接口8255、地址锁存器...

  51系列是应用最广泛的单片机,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的...

  时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,比如12MHZ=...

  本文着手从集成电角度去认识单片机,主要介绍了单片机的引脚图及引脚功能,以及单片机简易编程。

  对于USB2.0而言其传输速率为480Mbps。通讯速率是比较高的。而TVS中除了要考虑动作电压外,...

  两个简单的报警程序,希望能对大家有所,让单片机发出更美妙的音响 #include #...

  Flash存储器,简称Flash,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程的性能,还不...

  本文介绍的语音电子门锁是一种在凌阳16位单片机SPCE061A上实现的与文本有关的说话人确认系统。

  按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振...

  电容的选取,第一个参数是耐压值的考虑。我们用的是 5V 系统,电容的耐压值要高于5V,一般推荐 1....

  SWIM:当SWIM引脚出现特定序列信号时,就会进入此状态。这种模式下,调试工具通过SWIM引脚使用...

  卸船机故障显示单片机通过双绞线与plc的输出模块建立连接及时读取plc的内部寄存器区的各种故障信息。

  仿真有CPU仿真和ROM仿真两种,所谓CPU仿真是指用仿真机代替目标机的CPU,由仿真机向目标机的应...

  当51单片机进行多机通信时,串口要工作在方式2和方式3。假设当前多机通信系统有1个主机和3个从机,从...

  时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如...

  单片机学习、使用非常重要的一个步骤就是把写好的程序烧写到单片机里,好多初学者,好不容易才写好一个程序...

  单片机的ADC接口属于模数转换接口,将外部的模拟量信号为数字信号,单片机属于数字器件,需将模拟信...

  PLC底层,实际就是单片机在运行,它只不过是基于单片机的基础,开发出来的一款二次应用的工业逻辑控制器...

  PLC底层,实际就是单片机在运行,它只不过是基于单片机的基础,开发出来的一款二次应用的工业逻辑控制器...

  单片机外围电设计之一:电阻 对于电阻,想必大家都觉得简单,没有什么好说的。其实电阻的应该还常...

  在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端...

  近日,瑞萨开始了新一轮的产品巡回研讨会,首站厦门,随后在南京和西安三地巡回举办,在研讨会上瑞萨全系列...

  老生常谈的话题又来了,感觉自己看过好多五花八门的关于单片机的开发经验了,但是不一定那些就是适合你的,...

  大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有...

  在8位单片机中没有16位数的操作指令,所有的int型数据都要通过两个字节分开操作,使用的方法不用,生...

  LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失线

      威廉希尔