历史上的今天
今天是:2025年03月05日(星期三)
2018年03月05日 | 自动演奏延迟程序电路及配套程序介绍
2018-03-05 来源:eefocus
我们通过对一个自动演奏延迟程序电路及配套程序的介绍,来讲解“置位”、“清位”等指令和延时程序的编制原理。
一、发声原理
由图可知,如果我们要使B2发出一定频率的声音,只要改变Pl.7的高低电位,并在Pl.7高低电位变换之间延长一段时间即可。改变Pl.7的高低电位可用专门的位操作指令,也叫做布尔操作指令。比如,我们用一条“置位Pl.7”指令,可使Pl.7呈高电位,然后延时一段时间,再执行“清位Pl.7”指令,使Pl.7呈低电位,延时一段时间后再返回去执行“置位”指令。经过上述操作,Pl.7的电位就完成了一个高低变化周期,B2也就完成了一次全振动。如此,循环上述程序,Pl.7就会持续地向B2送出一定频率的方波,B2就会持续地发出一定频率的声音来。

二、延时原理
为了使B2发声的频率稳定,Pl.7呈高电位的时间和呈低电位的时间必须是一个定数,这就要求CPU在完成对Pl.7的“置位”和“清位”之间延迟一定的时间,这期间必须保证不再对Pl.7进行改变电位的操作。CPU可以停止对Pl.7操作,但CPU绝不会停下来,它仍会按一定的节拍在工作,所以,上述延时时间内CPU或者去完成对其它I/O口输入输出的操作,或者就在那里“计数”以实现延时。后者是延时的常用手段。
通常是先向某一个寄存器装入一个常数,然后让CPU完成几个“空操作”,再将寄存器里的数减l并对该寄存器中的数值进行判断,如果寄存器中的数值不为零,则进行一轮空操作后再进行判断;如果寄存器中的数值为零,说明延时时间已到,接着完成延时后的操作。
三、乐声及其程序
乐声是由长短高低不同的音阶构成的。由于音阶高低不同的音调是由振动频率决定的,所以我们只要用程序来确定振动频率、各频率联接的先后次序及各频率持续的时间,就能实现乐声演奏。以《小草》前两句为例,音阶是“6-6-1-7-6,6-6-3-2-3”,而所用到的不重复音阶只有“6、7、l、2、3”等5个。我们分别将能通过B2发出上述5种音高的程序联接起来,就能使电路连续演奏出《小草》这首歌的部分弦律来。
音阶“6”的频率是220Hz,周期约为5.545ms,半周期约2.27ms,这样,我们可编一段2.27ms的延时程序嵌在Pl.7高低电位变化之间,即可使B2发出“6”音。
“6”音的程序见清单中0063H至0075H区间。
由程序可以看出,执行“置位Pl.7、送数R2,#E3”后,又连续执行了三次“空操作”。每次空操作用时2(s,而执行“减1转移Xl”用时4(s,此一个循环用时恰为l0(s。“减1转移”是一条条件转移指令。执行结果是将指定寄存器中的内容减1,然后判断寄存器中的数值,如果寄存器中的数值不为零,即转移到指定位置;如果寄存器中的数值为零,接着执行下面的程序。由于“送数R2,#E3H”装入R2中的数为E3H,即227,所以,当R2中的数为零时,共完成上述循环227次,用时恰好是2.27ms,而“置位”和“送数”指令所用4(s则可以忽略。
就是说,至此,Pl.7呈高电位的时间已持续了2.27ms。
同样,接着执行“清位Pl.7”和下面的程序,又使Pl.7呈低电位的时间持续了2.27ms。这样,Pl.7就输出了频率为220HZ的方波信号的一个完整的周期。持续循环上述程序,B2就会发出“6”的音阶。其它音阶程序原理与之相同。各音阶子程序之后是子程序返回指令。
史海拾趣
|
同时介绍:CC2500 是集FSK/ASK/OOK/MSK调制方式的收发模块,它兼容扩展硬件支持实现信息包处理、数据缓冲、群发射.。可以采用曼彻斯特编码进行调制它的数据流,性能优越并且易于应用到你的产品设计中。它可以应用在2400-2483.5MHz ISM/SRD频段的系 ...… 查看全部问答> |
|
当硬件设计上 flash 和 sram 地址数据线时,sopc的建立需要一个三态桥,然后再把加入的CFI 和 SRAM controller 分别挂在该三态桥上。 然后双击三态桥,address 勾上,设置成复用。 一点常用的技巧共享给大家!… 查看全部问答> |
|
one or more files from the emulator for windows ce installation is missing 在Embedded Visual C++ 4.0编译程序,即不能编译,也运行不起来,提示如下: one or more files from the emulator for windows ce installation is missing 解决办法: 打开系统分区根目录下的BOOT.INI文件,对其进行编辑。 将其 ...… 查看全部问答> |
|
机器上用到煤气加热,需要煤气检测。请问: 1.煤气检测是不是应该与控制电路板分开,单独做出一个煤气传感器模块? 2.独立的煤气传感器安装在什么位置比较好的?机器的高度才1米。 3.电子脉冲点火器对单片机的干扰很大,具体怎么做可以降低干扰 ...… 查看全部问答> |
|
我用的IAR5.3和三合一板子上STLINK,调试STM32F103RBT6芯片,前些天调试仿真还都挺好,但从昨天开始,代码不能下载仿真了,显示 下载 (27.69 KB) 2010-5-26 13:21 警告,按确定后出现 下载 (55.81 KB) 201 ...… 查看全部问答> |
|
Chipscope是XILINX推出的一款在线调试软件,价格便宜,通过它完全可以脱离传统逻辑分析仪(太贵)来调时序,观察FPGA内部的任何信号,触发条件、数据宽度和深度等的设置也非常方便,但是肯定也存在不足,比如速度和数据量方面。Chipscope本身是一个逻 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 11:46 编辑 来自于,电机驱动业务部门Gem Li 市场销售经理 电机驱动基础知识,仅供初步学习~~~欢迎下载分享~~~ … 查看全部问答> |
|
如何提高阅读源代码的效率 记得在开源流行之前,我看过的代码紧限于所参与的项目,能有个几万行就不错哩。后来很多优秀开源项目都相继蹦出来了,阅读的代码量那叫一个大呀!不得不 ...… 查看全部问答> |




