基于单片机音乐播放器设计.pdf

上传人:w**** 文档编号:74269623 上传时间:2023-02-25 格式:PDF 页数:15 大小:1.06MB
返回 下载 相关 举报
基于单片机音乐播放器设计.pdf_第1页
第1页 / 共15页
基于单片机音乐播放器设计.pdf_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《基于单片机音乐播放器设计.pdf》由会员分享,可在线阅读,更多相关《基于单片机音乐播放器设计.pdf(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、基于单片机音乐播放器设计 基于单片机的音乐播放器设计 摘要:利用单片机演奏音乐大概是单片机爱好者感兴趣的问题之一。利用单片机控制音乐播放也多不胜举.音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。它有功能多)价格优)外围电路简单的特点,备受音乐爱好者及音乐芯片制造商的青昧。用AT89S51单电机及少数外围电路控制音乐播放,产生几首不同的歌曲。对于单片机产生音乐,关键是控制频率的输出。我们知道,不同的声音对应不同的频率,产生有规律的频率输出就可以得到相应规律的声音。本文应用单片机和音乐发声的相关知识设计了一个简单的音乐播放器。所谓音乐播放器,由单片机进行信息处理,再经过信号放大,由耳

2、机或扬声器(喇叭)放出乐曲声。我们知道,振动产生声音,振动频率不同,所发出的声音也就不同,有规律的振动发出的声音叫“乐音”,音乐由音频和节拍构成,音频即发声的频率,节拍即延时的长短,因此利用单片机的定时器/计数器产生一定频率的方 关键词:8051 单片机,中断,编程,音乐,音乐播放器 一、设计要实现的功能 (1):利用 I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同 的音调,从而演奏歌曲。(2):采用共阳七段数码管显示当前播放歌曲的序号。(3):可以通过按键实现暂停、三首歌之间换歌的基本操作。二、功能说明 (1)硬件电路中 P1.0 口为音频输出端口。(2)用 P3.0,P3.1和 P3.

3、2 分别作为切换三首歌曲的功能键,P3.3 作为暂停键,当按下时停止播放,弹开后继续播放。(3)用 P0.0-P0.7 这几个管脚来控制七段数码管的显示。(4)单片机 18 和 19 号管教接 12MHZ 的晶振,其中电容皆为 30PF 的瓷片电容。(5)单片机 40 号管脚接 VCC,20 号管脚接地。31 号管脚接 VCC,9 号管脚外接复位电路。三、主要元器件介绍 3.1:AT89S52 AT89S52 是一种低功耗、高性能的 CMOS 工艺的 8 位单片机。它带有 8KB 的可在线编程的 Flash 存储器,该单片机采用了 ATMEL 公司的高密度、非易失性存储器技术,与工业上标准 型

4、 80C51 单片机的指令系统及引脚完全兼容;片内的 Flash 存储器可在线重新编程,或使用通用的非易失性存储器编程 器;通用的 8 位 CPU 与在线可编程 Flash 集成在一块芯片上,从而使 AT89S52 功能更加完善,应用更加灵活;具有较高的 性能价格比,使其在嵌入式控制系统中有着广泛的应用前 景。3.2 独立式键盘 单片机系统中常见的键盘有:触摸式键盘、薄膜键盘和按键式键盘。其中按键式键盘是最常用的。键的闭合与否反映在行线输出电压上就是呈现高电平或者低电平。如果呈现高电平,表示键断开,低电平则表示键闭合,通过对行线的电平高、低状态的检测,便可以确认按键按下以及按键释放与否。本设计

5、使用独立式按键,分别于单片机的 P3.0,P3.1 和 P3.2,P3.3 连接。独立式键盘电路 3.3 共阳七段数码管 LED 数码管是由发光二极管构成的,亦称半导体数码管。将条状发光二极管按照共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了 LED 数码管。若按规定使某些笔段上的发光二极管发光,就能显示从0,9 的一系列数字。同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS 电路兼容等的数显器件。如上图所示是共阳极七段数码管的原理图 本设计使用静态显示驱动 静

6、态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的 I/O 端口进行驱动,或者使用如 BCD 码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 58,40 根 I/O 端口来驱动,要知道一个 89S51 单片机可用的 I/O端口才 32 个呢),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。3.4 蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器

7、两种类型。三:软件流程图 主程序流程图 键选歌曲与暂停 四:系统仿真图 五:音乐播放器 C51 源程序:#include sbit SPK=P10;/蜂鸣器 歌曲 1 的按键;sbit a=P30;/选择 sbit b=P31;/选择歌曲 2 的按键;sbit c=P32;/选择歌曲 3 的按键;sbit f=P33;/控制暂停与继续;unsigned char code*data song;/指向具体歌的指针 unsigned int data j;/取码指针 unsigned char data i;/用于循环 unsigned char data k;/几个 1/4 拍 unsigned

8、 char data l;/第几个码 void delay(void);unsigned char code yin30=0 xFF,0 xFF,0 xFB,0 x90,0 xFC,0 x0C,0 xFC,0 x44,0 xFC,0 xAC,0 xFD,0 x09,0 xFD,0 x34,0 xFD,0 x82,0 xFD,0 xC8,0 xFE,0 x06,0 xFE,0 x22,0 xFA,0X15,0 xFB,0 x04,0 xFA,0 x67,0 xFE,0 x85;/C 调各音符频率与计数初值 T 的对照表 /第一首 兰花草 unsigned char code song146=0

9、x12,0 x52,0 x52,0 x52,0 x56,0 x42,0 x32,0 x42,0 x32,0 x22,0 x18,0 x82,0 x82,0 x82,0 x82,0 x86,0 x72,0 xB2,0 x72,0 x72,0 x62,0 x58,0 x52,0 x82,0 x82,0 x72,0 x56,0 x42,0 x32,0 x42,0 x32,0 x22,0 x16,0 xB2,0 xB2,0 x32,0 x32,0 x22,0 x16,0 x52,0 x42,0 x32,0 x22,0 xC2,0 x88,0 xFF;/第二首 祈祷 unsigned char code

10、 song237=0 xC4,0 x12,0 x32,0 x44,0 x42,0 x52,0 x52,0 x44,0 x32,0 x32,0 x12,0 x14,0 x12,0 x12,0 x32,0 x42,0 x54,0 x44,0 x4F,0 xC4,0 x12,0 x32,0 x44,0 x42,0 x72,0 x58,0 x42,0 x32,0 x34,0 x14,0 x12,0 x32,0 x34,0 x32,0 x12,0 x1F,0 xFF;/第三首 最浪漫的事 unsigned char code song3138=0 xC2,0 xC2,0 x12,0 x34,0 x32,

11、0 x32,0 x32,0 x12,0 x12,0 x52,0 x54,0 x02,0 xC2,0 x12,0 x32,0 x32,0 x32,0 x32,0 x34,0 x52,0 x72,0 x7C,0 x02,0 x72,0 x82,0 x72,0 x82,0 x72,0 x84,0 x72,0 x41,0 x51,0 x52,0 x41,0 x31,0 x34,0 x02,0 x32,0 x32,0 x12,0 x34,0 x32,0 x12,0 x32,0 x54,0 x42,0 x32,0 x32,0 x32,0 x32,0 x34,0 x52,0 x72,0 x7C,0 x72,

12、0 x72,0 x82,0 x72,0 x82,0 x72,0 x84,0 x82,0 x72,0 x42,0 x52,0 x42,0 x34,0 x12,0 x12,0 x32,0 xC4,0 x52,0 x42,0 x34,0 x12,0 x12,0 x31,0 x41,0 x32,0 x3C,0 x84,0 x82,0 x72,0 x82,0 x72,0 x52,0 x72,0 x78,0 x02,0 x72,0 x82,0 xA2,0 x84,0 x82,0 x72,0 x82,0 x72,0 x82,0 x32,0 x0A,0 x72,0 x82,0 xA2,0 x38,0 x02,

13、0 x32,0 x42,0 x52,0 x64,0 x62,0 x72,0 x82,0 x82,0 x72,0 x82,0 x82,0 xA2,0 x82,0 x82,0 x82,0 xA2,0 x82,0 x72,0 x78,0 x72,0 x32,0 x82,0 x72,0 x78,0 x72,0 x82,0 xA3,0 x51,0 x42,0 x51,0 x41,0 x3C,0 xFF;放歌曲频率之间的延时;void delay1()/延时 20ms 子程序,用于播 unsigned int m,n;for(m=1000;m0;m-)for(n=120;n0;n-);void song1

14、()/当 P30 对应的键 a(P3.0)按下时播放歌曲 1 delay1();if(a=1)/确定键 a 已经弹起;song=song1;/播放第一首歌曲;P0=0 x06;/数码管显示 1;void song2()/当 P31 对应的键 b(P3.1)按下时播放歌曲 2 delay1();if(b=1)确定键 b 已经弹起;song=song2;/播放第二首歌曲;P0=0 x5b;/数码管显示 2;void song3()/当 P32 对应的键 c(P3.2)按下时播放歌曲 3 delay1();if(c=1)确定键 b 已经弹起;song=song3;/播放第三首歌曲;P0=0 x4f;

15、/数码管显示 3;void another()/当 P33 对应的键 f(P3.3)按下时暂停 delay1();if(f=1)P0=0 x3f;/数码管显示 0;void main()TMOD=0 x01;/timer0 工作在方式 1 IE=0 x82;/EA=1 开总中断;ETO=1 开总中断计时器 T0 中断允许;song=song1;/预置演奏第一首;P0=0 x06;/数码管显示 1;while(1)j=0;while(*(song+j)!=0 xFF)/是否取到结束码 if(a=0)/判断是否键 a(P3.0)按下;song1();Break;if(b=0)/判断是否键 b(P3

16、.1)按下;song1();Break;if(c=0)/判断是否键 c(P3.2)按下;song1();Break;if(f=0)/判断是否键 f(P3.3)按下;do ;while(e=0);k=*(song+j)&0 x0F;/后 4 位为多少个 1/4 拍 l=*(song+j)4;/song(song+j)中所放的每个字节 /前 4 位乘 2 表示为音符频率在数组 yin中的位置 TH0=yin2*l;/置初值 TL0=yin2*l+1;TR0=1;/起动定时器 0 if(yin2*l=0 xff)&(yin2*l+1=0 xff)/如果取到的都是休止符,则不输出音频 TR0=0;SPK=1;for(i=k;i0;-i)/节拍 K 为多少就执行多少个 1/4 拍 delay();TR0=0;j+;/回 main /*每个音符的发声*/void timer0()interrupt 1 using 1 TH0=yin2*l;TL0=yin2*l+1;SPK=SPK;/*延时 1/4 拍时间即 187ms*/void delay(void)unsigned int c,d;for(c=150;c0;c-)for(d=100;d0;d-);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com