没有合适的资源?快使用搜索试试~ 我知道了~
基于单片机的八音盒详细设计步骤
4星 · 超过85%的资源 需积分: 49 28 下载量 200 浏览量
2011-06-07
12:21:02
上传
评论 3
收藏 462KB DOC 举报
温馨提示
试读
13页
这也是为初学单片机的同学的一点指导,其中处理数组的方式是很值得提倡的,相互借鉴,相互学习!
资源推荐
资源详情
资源评论
一、设计目的
利用 8052 单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先
设置的歌曲旋律。
二、设计要求
其基本功能为:1,使用 LED 显示器来显示目前演奏的歌曲编号;2,具有 8
个按键操作来选择演奏哪一首歌曲;3,内建 8 首歌曲旋律,按下单键可以演奏
歌曲。
三、设计器材
T89C52 单片机、晶振、八个按键、二位一体共阳极数码管、电阻电容若干 、
导线。
四、设计方案及分析
设计思路:
(1) 选择 8052 单片机,通过 T0 定时中断,并配合 P2.0 引脚输出音频频率。
(2) P2.0 引脚输出接蜂鸣器。
(3) 通过 P0 口接 LED。
(4) P1 口接键盘,输入歌曲号。
音符产生方法:
不同的音调有不同的频率。频率不同,音调也就不同。
利用定时器,使其工作在模式 1,定时中断,然后控制 P2.0 引脚的输出每次取
反,就可以在 P2.0 的引脚输出相应的方波频率。改变计数初值,就改变了频率 。
定时器的定时时间等于半个周期,定时时间到就输出脉冲取反,重复此过程,
就可在 P2.0 引脚得到一音频的脉冲。
如:中音 1 的频率=523HZ,周期 T=1/523=1912us;
定时器的定时时间为:T/2=1912/2us=956us;
计算得 TH0,TL0 的计数初值 THTL=64580
下面是个音符计数初值
音符
THTL
音符编码
低音 5
0F66FH 1
低音 6
0F724H 2
低音 7
0F81BH 3
中音 1
0F88FH 4
中音 2
0F95EH 5
中音 3
0FA17H 6
中音 4
0FA6BH 7
中音 5
0FB08H 8
中音 6
0FB92H 9
中音 7
0FC0EH A
高音 1
0FC4BH B
高音 2
0FCAFH C
高音 3
0FD0CH D
高音 4
0FD36H E
高音 5
0FD84H F
节拍产生方法:
音乐中的节拍用延时时间产生。假设 1/4 拍执行一次延时程序,这 1/2 拍就
执行两次延时程序,所以只要求出 1/4 延时时间,其余的节拍就是他的倍数。
为方便记谱,将节拍数也进行编码,如下:
节拍编码 节拍
1 1/4
2 1/2
3 3/4
4 1
建立曲谱编码表:
编谱用 8 位编码,高 4 位代表音符,低 4 位代表节拍。如 5 6
中音 5,中音 6,
都是 1/2 拍,则编码为:82H 92H
程序清单:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit SPEAK = P2^0;//接蜂鸣器管脚
uchar th0_f;
uchar tl0_f;
uchar code SEG[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
uchar code jie8[8]={12,14,16,17,19,21,23,24};
/**************************中断函数*******************************************/
timer0() interrupt 1
{
TL0=tl0_f;TH0=th0_f;
SPEAK =~SPEAK; //取反音乐输出 IO
}
/********************T0 的值,及输出频率对照表***********************************
/
uchar code freq[36*2]={
0xA9,0xEF,//00220HZ ,1 //0
0x93,0xF0,//00233HZ ,1#
0x73,0xF1,//00247HZ ,2
0x49,0xF2,//00262HZ ,2#
0x07,0xF3,//00277HZ ,3
0xC8,0xF3,//00294HZ ,4
0x73,0xF4,//00311HZ ,4#
0x1E,0xF5,//00330HZ ,5
0xB6,0xF5,//00349HZ ,5#
0x4C,0xF6,//00370HZ ,6
0xD7,0xF6,//00392HZ ,6#
0x5A,0xF7,//00415HZ ,7
0xD8,0xF7,//00440HZ 1 //12
0x4D,0xF8,//00466HZ 1# //13
0xBD,0xF8,//00494HZ 2 //14
0x24,0xF9,//00523HZ 2# //15
0x87,0xF9,//00554HZ 3 //16
0xE4,0xF9,//00587HZ 4 //17
0x3D,0xFA,//00622HZ 4# //18
0x90,0xFA,//00659HZ 5 //19
剩余12页未读,继续阅读
资源评论
- shhdgl2013-01-01确实比较详细,对刚开始设计的人比较有帮助
- 风住尘2013-01-22图文并茂地介绍了制作过程,方便学习与实践
dinglei21
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功