资料介绍
利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。单片机的基本发音实验
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。
例如,要产生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次下载
- 51单片机汇编语言教程之单片机键盘接口程序设计的详细资料说明 19次下载
- 51单片机汇编语言教程之单片机条件转移指令的详细资料说明 15次下载
- 51单片机汇编语言教程之单片机定时器与计算器的详细资料说明 23次下载
- 51单片机汇编语言教程之单片机逻辑与或异或指令的详细资料讲解 17次下载
- 51单片机汇编语言教程之单片机数据传递类指令的详细资料概述 14次下载
- 嵌入式系统原理及应用教程之ARM汇编语言程序设计的详细资料说明 11次下载
- 单片机基础教程之汇编语言程序设计知识的详细资料说明 10次下载
- 51单片机教程之80C51的汇编语言程序设计资料总结 9次下载
- 80C51单片机教程之80C51的汇编语言程序设计详细资料总结 10次下载
- 51单片机教程之MCS51单片机C程序设计的详细资料概述 11次下载
- 51单片机教程之指令系统及程序设计的详细资料概述 8次下载
- 单片机教程之汇编语言程序设计的详细资料讲解 16次下载
- 基于51单片机汇编语言教程:22课单片机串行口通信程序设计 25次下载
- 51单片机汇编语言教程_单片机延时程序分析 0次下载
- PIC系列单片机程序设计基础知识详细说明 4301次阅读
- 51单片机的汇编程序库 9414次阅读
- 51单片机实现最小系统的原理和电路与编程设计说明 8437次阅读
- pic单片机的各种汇编语言指令解析 2271次阅读
- PIC的指令系统和汇编语言指令格式说明 3384次阅读
- 单片机C语言有哪些优越性?如何建立一个Keil C51项目 1.2w次阅读
- 单片机 | 基础汇编语言编程实例 9876次阅读
- 51单片机的汇编语言指令中英文对照 5119次阅读
- 单片机汇编语言常见错误知识点分析 6449次阅读
- C语言与汇编语言相互结合的嵌套汇编语言 3419次阅读
- 跑马灯实验用汇编语言和C51语言做出的不同效果 3714次阅读
- 分享一些单片机汇编语言常见的语法和程序错误 7479次阅读
- 单片机编程之汇编语言基础-PIC单片机汇编指令 2977次阅读
- 单片机编程之汇编语言基础-常用指令和程序模式 1.5w次阅读
- 汇编语言的结构化设计及其在俄罗斯方块中的应用 2934次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 651单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 751单片机大棚环境控制器仿真程序
- 1.10 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多