8051单片机教程第二十八课:单片机音乐程序的设计

发布者:快乐家庭最新更新时间:2021-01-28 来源: eefocus关键字:单片机  音乐程序 手机看文章 扫描二维码
随时随地手机看文章

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


单片机的基本发音实验


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


例如,要产生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,则产生相应的停顿效果。为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。


程序框图如图2所示。


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


程序清单(略,请参看源程序的说明)。


《无线电》1992年第3期。


硬件连接说明:


随便找一个仿真机或者什么单片机实验板,只要能工作的就行,将程序输入,运行,然后找个音箱(你计算机旁边应当就有一对吧)拨出插头,插头的前端接在P1。0上,后面部分找根线接单片机的地,就应当有声了,然后怎么改进硬件连接就是你的事了。。。。



《无线电》1992年第3期。


关键字:单片机  音乐程序 引用地址:8051单片机教程第二十八课:单片机音乐程序的设计

上一篇:由MOVX指令深入分析51单片机总线时序及扩展
下一篇:51单片机教程(五):单片机动态扫描驱动数码管

推荐阅读最新更新时间:2024-11-17 07:25

mcu音乐程序的设计与实验
利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。 1. 单片机的基本发音实验 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的 高 电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制 高 低 电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序为: 其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存放延时常数,对200HZ音
[单片机]
单片机C语言电子时钟加日历显示编程
一、 任务和要求 设计制作一个电子表并且能够显示日历,用LED数码管直接显示,并且能够通过按键调整时间、年月日,功能为按第一个键被调整的相应调整区域开始闪烁,第二个键加一,第三个减一,第四个确认,最后一个在时分秒和年月日中间相互切换。 二、方案论证 我们在这里选用了C8051F单片机,它是完全集成的混合信号系统级芯片(SoC),具有与8051兼容的高速CIP-51内核,与MCS-51指令集完全兼容,片内集成了数据采集和控制系统中常用的模拟、数字外设及其他功能部件;内置FLASH程序存储器、内部RAM,大部分器件内部还有位于外部数据存储器空间的RAM,即XRAM。C8051F单片机具有片内调试电路,通过4脚的JTAG接口可以进行非侵
[单片机]
<font color='red'>单片机</font>C语言电子时钟加日历显示编程
基于单片机的无线防盗报警器研究与设计
随着现在社会的发展,时代进步,生活水平的提高,人们对自己所处环境的安全要求也就越来越高,不得不时刻留意不速之客的光顾,人们对家居安全也越来越重视。许多家庭选择安装了报警器,这有效的保护了大家的财产安全,让居家更放心。在本文中,介绍一种利用震动传感器进行监控,并进行报警的系统的设计。 1 系统简介 随着科技的提高,电子电器飞速发展,人民生活水平有了很大提高,然而一些不法分子也越来越多。这点就是因为不法分子看到了大部分人防盗意识不够强所造成的结果。因此越来越多的居民家庭对财产安全问题十分担忧,因此设计一种价格低廉,性能可靠、智能化的报警系统,必将在私人财产的防盗领域起到巨大作用。 本设计体型小,安装方便,不易被发现,安装在隐蔽地方对
[单片机]
基于<font color='red'>单片机</font>的无线防盗报警器研究与设计
基于51单片机的多机并行通信系统
在一些复杂的系统中,系统与分系统、分系统与设备等之间存在数据的传递问题,往往采用通信的方式来解决。由于分系统、没备等通信波特率的不同,特别是一些特殊波特率设备的存在,使得系统中设备间的相互通信不易实现。例如,在一个系统中,上位机接收某一设备的数据,如图1所示,设备l和设备2采用的是172.8 kbps的波特率,而上位机用VB编程,其通信波特率为115.2 kbps、128 kbps或256 kbps,等,这样设备之间就不能相互通信,给设计带来困难。为了解决上述问题,采用双单片机电路,设计了波特率变换器,将接收波特率为172.8 kbps的数据,转换成波特率为115.2 kbps的输出,从而使不同波特率设备之间的通信成为可能。
[单片机]
基于51<font color='red'>单片机</font>的多机并行通信系统
51单片机在玻璃管加热控制系统中的应用
1 引言 步进电机是一种将电脉冲信号转换成相应的角位移或线位移的电磁机械装置,是一种输出与输入数字脉冲对应的增量驱动元件,具有快速启动和停止的能力。但大多数设计人员常常习惯于用逻辑电路实现复杂的步进电机的控制,虽然已经取得很大成效,但实现起来成本高、费时多,而且一旦组成了电路,就很难再改动,因此不得不完全重新设计控制器。微处理器与微计算机的先进技术和低廉的价格,给步进电机的控制开创了一个新的局面 。人们完全可以借助于软件来对步进电机实施控制,从而实现复杂而成本又不高的控制系统,同时还可以很灵活地通过改变程序来改变控制方案。为此,我们基于 89C51单片机设计了步进电机控制器用于玻璃管加热系统。该控制器具有线路简洁、性能良好、成本
[单片机]
51<font color='red'>单片机</font>在玻璃管加热控制系统中的应用
PIC18F4550单片机三个操作寄存器的使用方法
试验芯片:Microchip PIC 18F4550 集成开发环境:MPLAB IDE v8.53 编译器:Microchip C18 PIC18系列单片机是美国微芯公司(Microchip)8位单片机系列中的高档系列,其任一I/O引脚允许的最大灌电流或最大拉电流达25mA,可以直接驱动LED和继电器。PORTA、PORTB和PORTE的最大灌电流或最大拉电流总和为200mA,PORTC和PORTD的最大灌电流或最大拉电流总和为200mA,PORTF和PORTG的最大灌电流或最大拉电流总和为100mA(注:PIC18F4550没有这两个端口)。 单片机和外设的交互都是通过I/O端口进行,每个I/O端口均有三个操作寄存器:
[单片机]
PIC18F4550<font color='red'>单片机</font>三个操作寄存器的使用方法
基于单片机的智能微型五维力/力矩传感器的研究
    摘要: 以研制的机器人多指灵巧手微型五维指尖力/力矩传感器为基础,基于单片机AT89C52设计了高性能的数据采集系统和数据处理系统,实现了与主计算机的RS422串行通讯,从而构成了一套完整的智能化的五维力/力矩测量系统。     关键词: 传感器  单片机  数据采集  串行通讯     多维力传感器的发展已经有几十年的历史。以机器人的腕力传感器为主要应用背景,国内外的很多公司制造了多种规格的多维力传感器 。为了满足医疗仪器、航空航天等领域对于微型多维力传感器的需求,以研制的机器人多指灵巧手微型五维指尖力/力矩传感器为基础,研制了一种基于单片机AT89C52的智能微型五维力传感器测量系统。   
[传感技术]
单片机在现代电子系统的地位综述
摘要 :现代电子技术发展的速度越来越快,其基本核心技术为嵌入式计算机系统,而作为嵌入式系统之一的单片机,以其明显的典型性、广泛性、普及性的特点,在现代电子系统发展历程中占据着重要的地位。本文就针对电子技术中单片机的应用进行综述性讨论,介绍其基本组成与特点,对其应用进行分析,最后提出其未来的发展方向。    一、单片机的特点与基本组成   与其它的嵌入式系统相比,单片机的体积小,但是集成度高,具备较高的可靠性与控制功能;功耗低且采用低电压,因此对便携式产品的制造与生产十分有利;具备较好的扩展性与优异的性能比,其应用范围十分广泛,包括办公室自动化设备、实时过程的控制、各类仪器仪表、医疗领域相关设备、汽车电子产品以及计算机网络通信技
[模拟电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved