




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
让单片机奏乐-单片机电子琴实验 让单片机奏乐-单片机电子琴实验实验目的用分立电子元件制作报警器或简易电子琴一直是传统电子入门实验或电子 小制作的主打科目。现在,用单片机做此类实验已成为单片机学习入门级的必修课程之一。而且,因单片机自带有定时器,用单片机比分立元件在硬件搭建上要简 便。使用超简单单片机学习套材中的音响模块则使这一工作变得更加简单。另外,BASCOM中开发有专门的发生语 句:SOUND,使得程序实现也非常简单,因此,这个实验非常适合在较低水平的中小学生中开展。因为可以发声,可以演奏自己喜欢的乐曲,是个充满乐趣的单 片机实验,所以这个实验是中小学生学习单片机非常好的入门教材 。大多数单片机学习板都是带一个蜂鸣器来做音响实验,蜂鸣器因其自身特 点,只适合做一些报警器之类的实验,做音乐方面的实验时,音质实在难以接受。超简单单片机实验套材中的音响模块使用 35mm的小喇叭,配有音量调节和耳机插孔,使用者可以控制音量或是戴上耳机而不会影响他人,这就很适合在课堂上开展多人的活动。在调试阶段互不干扰, 最后再各自拿出自己的作品予以展示。难度等级:初级电子乐常识物理音高与音乐音高从物理学中声学的角度讲,声音分为噪音和乐音,无规律的振动称 为噪音,而有规律的振动则称为乐音。好多个有规律的振动按照一定的关系排列在一起则构成了音列。人类对自然界中的声音经过大量的研究后,从中找到了 CDEFGAB这七个基本音级,其中A的频率是440赫兹,我们人为地把A定作标准音,只要振动频率达到440赫兹的音就是A,这个音不但用于乐器当中, 就是在生活中应用的也比较多,例如:汽车的喇叭声和电话的振铃声音都是A音。根据这个标准音推算出C的频率为261赫兹等,这种用数学方法算出来的音高我 们称之为“物理音高”。现在已有专门测量音高的仪器,选定几个音用仪器去校对,如果同仪器的音一致就不显示,若同仪器的音高不一致则会提示你是偏高或偏 低。物理上的音高属于纯理论的音高、是一种物理现象,但在实际生活中,音 乐音高与物理音高有很大的差别。 我们在演奏之前,先要同标准音A校对,而后再根据五度关系把其它几根弦调准。这个时候如果用频率仪器测量的话,会发现实际音高和测量音高存在差异,实际音 高已经比较准了,但测量后的音高有些不准。经研究调查,也证实了实际音高与物理音高存在误差,这个误差一般为四、五个音分左右。我们的耳朵不但听不出来这 个误差而且听上去还很和谐。这仅仅是调弦时的音准,在实际演奏乐曲当中随着乐思的变化,实际音高与物理音高不可避免存在许多差异,我们把这种实际音高称为 “音乐音高”。音乐是用来表达人或物的思想感情的,无论是自己演奏还是听别人演奏,能充分表达乐曲的思想内涵,音准就显得尤为重要了。 由此可以看出,物理音高是一种机械的、单一的,纯理论的音准概念,而 音乐音高是一种灵活的、多变的、带有人的思想感情的音准概念。物理音高是音乐音高的基础,音乐音高是物理音高的升华和体现,二者相辅相成、缺一不可。 音乐中使用的有固定音高的音(即乐音)的总和称乐音体系。按现在通用的十二平均律,从最低音(每秒振动16次左右)到最高音(每秒振动4186次),整个 乐音体系中约有97个音。乐音体系中的音,按照上行即从低到高或下行即由高到低的次序排列起来的音叫做音列。我们在钢琴上可以明显地看出乐音体系中所使用 的音和音列。现代标准的钢琴是音域最宽的乐器,有88个键,能奏出88个音高不同的乐音,也就是说钢琴由88个音高各不相同的音。除此之外的音很少用在音 乐中。用单片机定时器产生音符的方法要想让单片机发出音乐声,其实很简单,用单片机的定时器产生出与音符 频率对应数量的脉冲即可。首先要搞懂几个量值,他们是定时器频率;要发出的乐音或音符的频率;计数脉冲值;和定时器初值。定时器初值与计数脉冲的关系如下:T = K - N K:= 0xFFFF+1,即16位定时器发生溢出中断的数值,即十进制的65536 T:定时器初值 N:计数脉冲值这里定时器一般都工作在溢出中断的模式,对一个16位的定时器来说, 定时计数的最大值为0xFFFF,再加1就溢出了,从而发生中断。所以要想在指定的脉冲数发生后产生中断,就要用这个最大值K减需要的脉冲数N,得出定时 器初值T。计数脉冲值与音符频率的关系如下:N=Ft/2/Fm N:计数脉冲值 Ft:定时器时钟频率 Fm:要产生的音符频率上式表示的是定时器的工作原理。要产生某个音符的音频脉冲,只要算出 这个音频的周期即1/频率,然后将此周期除以2,即为半周期的时间。利用定时器计时这个半周期时间,每当计时到后(发生中断,在中断服务程序中要处理的事 情)就将输出脉冲的I/O反相,如此反复就可在I/O脚上得到此频率的50%占空比的脉冲。举例:设K=65536,定时器时钟频率Ft=1MHz(注),给定为 1MHz,即内部计时一次为1uS。求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的定时器初值。 T=65536-N=65536-Ft2Fm=65536-10000002Fm=65536-500000/Fm低音DO的T=65536-500000/262=63627 中音DO的T=65536-500000/523=64580 高音DO的T=65536-500000/1046=65058 注:定时器时钟频率由所选单片机的系统时钟决定,例如AVR的 Atmega48缺省系统时钟是8MHz,经8分频后就可以得到1MHz的定时器时钟频率。 音符音符频率计数脉冲定时器初值对照表音符FrNT低音12621908636281#27718056373122941701638352#311160863928333015156402143491433641034#37013516418553921276642605#41512056433164401136644006#4661073644637494101264524中音1523956645801#554903646332578865646712#622804647323659759647774698716648204#740676648605784638648985#831602649346880568649686#93253665000798850665030高音11046478650581#11094516508521175426651102#124540265134313183796515741397358651784#14803386519851568319652175#16613016523561760284652526#1865268652687197625365283硬件搭建本实验用超简单单片机实验套材中的AVR主板和音响模块完成。取C型3位 跳线一根,一端接AVR实验主板的 PORTC.0位置,另一段接音响模块的J1插座。取1位跳线一 根,一端插在AVR主板端口PORTD的(PD)0位置,一端悬空。实验开始时,将一线眺线的悬空端接触AVR主板上的GND(地)插针排的任意引脚,即 启动演奏。程序代码-$regfile = m48def.dat$crystal = 8000000Dim S As Integer , F As IntegerDim A As ByteConfig Pind.0 = InputPortd.0 = 1Config Portc.0 = OutputPortc.0 = 1Do Bitwait Pind.0 , ResetRestore Music_1Do Read S : Read FIf S = 0 And F = 0 Then Exit DoSound Portc.0 , S , FLoopPortc.0 = 1LoopEndMusic_1:Data 150% , 1276% , 50% , 1276%Data 200% , 1137% , 200% , 1276%Data 200% , 956% , 400% , 1012%Data 150% , 1276% , 50% , 1276%Data 200% , 1137% , 200% , 1276%Data 200% , 865% , 400% , 956%Data 150% , 1276% , 50% , 1276%Data 200% , 638% , 200% , 759%Data 200% , 956% , 200% , 1012%Data 200% , 1136% , 150% , 717%Data 50% , 717% , 200% , 759%Data 200% , 956% , 200% , 865%Data 400% , 956% , 0% , 0%目标单片机为ATmega48使用内部8M晶振设置PD0口作为输入口设置PD0口的上拉电阻有效设置PC0口作为输出口PC0输出高电平等待直到PD0口为低电平程序指向乐曲数据读入节拍值和音符值均为0 结束乐曲演奏乐音PC0输出高电平 生日快乐的乐曲数据程序讲解BASCOM中有关音乐演奏的语句SOUND pin, duration, pulses pin:是用来产生乐音的I/O口 duration:乐音延续时间,也就是节拍 pulses:要发出乐音脉冲数(N)本程序非常简单,演奏生日快乐歌。端口PORTD.0用作开始演奏的启动开关, 程序初始化时,置高电位,然后等待该端口变为低(开关按下)。然后循环从乐曲数据处读取节拍和乐音,从端口PORTC.0发出乐音,直至节拍和乐音都为 0,结束。乐曲数据的排放顺序是:节拍、乐音脉冲数。读者可以试着改变节拍的数值,看看效果如何。观看演示/-/源 程序大公开/(c) COPYRIGHT 20012002 xuwenjun/All Rights Reserved/V1.00/-/ 标题: 单片机IO口播放乐曲/版 本: V1.00/ 文件名: xwj_lcd16.C/ 创建人: 徐文军E-mail:/ 日期: 02-11-5/ 描述: 单片机利用T1中断在IO口P1.0输出乐曲/声 明:/以 下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处. /如用于商业用途请与作者联系.E- mail:/有问题请mailto 欢迎与我交流!/-/ 修改人: 徐文军E-mail:/ 日期: 02-11-5/ 说 明:/单 片机用T1中断在IO口P1.0输出乐曲(在P1.0口与VCC间接一喇叭即可听到) /1.由于输出的是方波,比较难 听:-)你也可以将波形细分用DA输出正弦波/2.由于T1频繁中断,任何其他中断发生都会是乐曲打顿,只适合试 验/3.优化音符编码:一个字节中包含节拍、音符、升降调,可区分数据和命令/同 时人工将音符译为机器码非常容易。(格式看下面实例)/-/#include #include #defineFREQ 11059200/音 乐_编码2 - 存储器定义/unsigned CHAR code music_tab1=/音符码格式:| D7 |D6D5D4| D3 |D2D1D0|/ 梁祝|变调|节拍|升降|音符 |0xcb,/ 示例:0xcb=11001011B,即升调,4/16拍,3Mi低音0x35,0x16,0xb9,0x12,0x96,0x99,0xa5,0xbd,0x99,0x96,0x15,0x13,0x15,0x62
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灌南篝火晚会活动策划方案
- 美团团购的营销推广方案
- 福清建房基础施工方案
- 防洪设施建设土地利用影响分析
- 湖北省烟花爆竹应急预案
- 江门在线税务咨询方案
- 建筑教具制作比赛方案设计
- 分析鸿星尔克营销方案
- 推销食品活动策划方案模板
- 数据治理咨询项目方案
- 2024年公司内部审计制度例文(四篇)
- 江苏省江阴市河塘中学2024-2025学年七年级上学期10月阶级段性练习语文试题
- 小学英语词汇量小学英语词汇大全(约1000词)(按字母顺序)修改版
- 2024年道路交通(驾驶员交通法规及安全)知识考试题库与答案
- 2024年全国职业院校技能大赛中职(数字产品检测与维护赛项)考试题库(含答案)
- 【乡村旅游探究的文献综述4200字】
- 2025年上半年教师资格考试高中历史学科知识与教学能力试卷与参考答案
- 城市供热管网抢修与维护工程技术规程
- DB2104∕T 0011-2022 地理标志产品 清原龙胆
- 《电动汽车双向无线电能传输系统技术规范》
- 医院护理培训课件:《安全注射》
评论
0/150
提交评论