版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简易的单片机音乐控制 作者:侯静 针对以前转贴的那篇单片机音乐控制,其算法对初学者不是很容易弄懂此,我根据网上提供的资料。用C语言写了一个八月桂花香的音乐控制。 音调是由不同的频率产生的,而每一个音调都是由一个音符和一个节拍组成,音符决定该音调的高低,节拍则决定了该音调是多少拍。因此,一个音调是由两个字节组成的。根
2、据音符字节 产生该大小次数的延时,声音输出口取反,就可以得到该音调的高低音。根据设置单位节拍的延时大小,可以控制音乐演唱速度。 因此算法很简单:定义单片机的一个I/O端脚为声音输出口,在规定的节拍内,根据音符字节的大小产生延时,将声音输出口不断的置高置低(即取反),就可以得到该音调。只要选取合适的单位节拍延时,就可以输出动听的音乐。 算法流程图如下: /*主程序*#include<reg51.h>#include "SoundPlay.h"uchar data count=0;voi
3、d init_com() TMOD=0x01; TH0=0xff; TL0=0xff; EA=1; ET0=1; void timer0(void) interrupt 1 using 3 counter=counter+1;/节拍次数计数 TH0=0xd8; /定义单位节拍的延时大小 TL0=0xef;void delay(uchar n) uchar i; while(n-
4、) for(i=0;i<125;i+); /延时1毫秒 void sound_delay(uchar n) uchar i; while(n-) for(i=0;i<2;i+); void main() uint i; uchar sound_signal;/定义音符大小 uchar sound_pace;/定义节拍大小 init_com() /arrayi=0x00 代表歌曲演唱完毕 /arrayi
5、=0xff 代表是休止符 while(1) i=0; while(arrayi!=0x00) /如果是休止符,延时100ms,并终止本次循环,进入下一个循环 if(arrayi=0xff) TR0=0; i+; delay(100); continue;
6、60; /从表中取得 音符大小 sound_signal=arrayi; i=i+1; /从表中取得 节拍大小 sound_pace=arrayi; TR0=1; /当节拍数未达到时候,继续循环,产生该音调的声音 while(counter!=sound_pace) sound=sound; sound_delay(sound_signal);
7、160; i+; counter=0;/节拍计数器置0,进入下一个音调 delay(10); /歌曲演唱完毕后,延时一段时间 /*soundplay.h*#ifndef _SOUNDPLAY_H_REVISION_FIRST_#define _SOUNDPLAY_H_REVISION_FIRST_#define uchar unsigned char#define uint unsigned intsbit sound=P12;uint counter=0;uc
8、har code array= 0x18, 0x30, 0x1C, 0x10, 0x20, 0x40, 0x1C, 0x10, 0x18
9、, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x18, 0x40, 0x1C, 0x20, 0x20, 0x20, 0
10、x1C, 0x20, 0x18, 0x20, 0x20, 0x80, 0xFF, 0x20, 0x30, 0x1C, 0x10, 0x18,
11、60;0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x20, 0x20, 0x2B,
12、 0x20, 0x26, 0x20, 0x20, 0x20, 0x30, 0x80, 0xFF, 0x20, 0x20, 0x1C, 0x10,
13、160; 0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40,
14、; 0x20, 0x20, 0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20,
15、160; 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20, 0x15, 0x20,
16、; 0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20,
17、 0x20, 0x20, 0x30, 0x80, 0x20, 0x30, 0x1C, 0x10, 0x20, 0x10, 0x1C, 0x10,
18、60; 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x15,
19、 0x1F, 0x05, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20,
20、60; 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家长安全培训活动简报课件
- 紧急避孕药临床用药指南与健康管理实践
- 2026年文化娱乐项目合同
- 家长会安全课件设计
- 2026年小型活动布置合同协议
- 2026年家庭月嫂服务合同
- 2026年艺术品私人拍卖成交确认合同
- 2026年跨境电商集装箱合同
- 2026年隧道施工能源供应合同
- 2026年图书版权合同
- GB/T 3543.11-2025农作物种子检验规程第11部分:品种质量品种真实性鉴定
- 人力资源有限公司管理制度
- 2024年高中语文选择性必修上册古诗文情境式默写(含答案)
- 部编人教版4年级上册语文期末复习(单元复习+专项复习)教学课件
- 2024-2025学年云南省玉溪市八年级(上)期末英语试卷(含答案无听力原文及音频)
- 绿色建材生产合作协议
- 英语丨安徽省皖江名校联盟2025届高三12月联考英语试卷及答案
- 湖南省长沙市长2024年七年级上学期数学期末考试试卷【附答案】
- 凉山州 2024 年教师综合业务素质测试试卷初中物理
- 他汀不耐受的临床诊断与处理中国专家共识(2024)解读课件
- 钢管支撑强度及稳定性验算
评论
0/150
提交评论