功能介绍:
本设计采用STC89C51/52(与AT89C51/52、AT89S51/52通用,指定单片机请留言)单片机做为主控制器
主要功能:
单片机内置8首歌曲,按键可以上一曲,下一曲,开始或暂停。电位器可以调节音量。LM386驱动喇叭,够响亮!
使用说明:
一共4个按键
上面那个独立的是复位按键,按下去程序从头执行,详情请看视频讲解文件夹中的最小系统介绍。
下面3个按键分别是:上一曲、开始/暂停、下一曲。
单片机源程序如下:
//////////////////////////////////////////////
//51单片机音乐播放器程序 //
//共三个按键:上一曲、下一曲、播放暂停 //
//播放完一首歌曲无按键按下时顺序播放下一曲 //
//////////////////////////////////////////////
#include //#define sound_amount 5 //歌曲的数量 sbit play_up=P1^3; //上一首歌 sbit play_down=P3^5; //下一首歌 sbit pause=P3^2; //播放暂停 sbit speaker=P1^0; //无源蜂鸣器 ////////////////////////////////////////////// unsigned char timer0h,timer0l,time;//timer0h,timer0l为定时器T0的高低位初值,time为对应的节拍时间 unsigned char music_num; //music_num为歌曲编号,music_num=0表示刚开机时的状态,num是查找歌曲数据表的地址 unsigned int num; signed int fre; //对应频率数据表的地址 bit play_enable; //歌曲播放的使能标志位,用于播放暂停 void delay(unsigned char t); //延时子函数,控制发音的时间长度 void delayms(unsigned int t); //普通延时子程序,可用于按键消抖 void song(void); //演奏一个音符 void music_play(void); //播放歌曲 ////////////////////////////////////////////// //每三个数字,代表一个音符 //第一个数字是音符的数值1234567之一(第几个音),代表哆来咪发... //第二个数字是0123之一,代表低音中音高音超高音(第几个八度) //第三个数字是时间长度,以半拍为单位,乐曲数据表的结尾是三个0 ////////////////////////////////////////////// //《烟花易冷》 unsigned char code song1[]={ 5,2,1, 3,2,1, 2,2,2, 2,2,4, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2, 2,2,2, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,1, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,1, 5,1,1, 6,1,6, 5,2,1, 3,2,1, 2,2,2, 2,2,1, 2,2,1, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2, 2,2,1, 2,2,1, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1, 7,2,3, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,2, 5,1,2, 6,1,6, 0,0,0 }; //《发如雪》 unsigned char code song2[]={ 5,1,1, 2,2,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1, 3,2,1, 6,2,1, 5,2,1, 3,2,1, 5,2,3, 5,2,1, 6,2,1, 1,3,2, 6,2,1, 5,2,1, 3,2,1, 5,2,1, 3,2,2, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 6,1,1, 3,2,1, 2,2,1, 5,1,1, 2,2,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1, 3,2,1, 6,2,1, 5,2,3, 5,2,1, 6,2,1, 1,3,2, 6,2,1, 5,2,1, 3,2,1, 5,2,1, 3,2,2, 1,2,1, 6,1,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 2,2,1, 2,2,1, 1,2,4, 0,0,0 }; //《简单爱》 unsigned char code song3[]={ 5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,1, 4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1, 3,2,1, 3,2,1, 1,2,1, 5,2,1, 1,2,1, 5,2,1, 1,2,1, 7,1,1, 1,2,1, 1,2,1, 6,1,1, 2,2,1, 2,2,1, 3,2,1, 3,2,1, 5,2,1, 5,2,1, 5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 5,1,1, 1,2,1, 2,1,2, 3,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,1, 4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1, 3,2,1, 3,2,1, 1,2,2, 5,2,1, 1,2,1, 5,2,1, 5,2,1, 7,1,1, 1,2,1, 0,0,0 }; //《世上只有妈妈好》 unsigned char code song4[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, //6,2,3代表6,中音,3个半拍; //5,2,1代表5,中音,1个半拍; //3,2,2代表3,中音,2个半拍; //5,2,2代表5,中音,2个半拍; //1,3,2代表1,高音,2个半拍; //... 5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0}; //《当你孤单你会想起谁》 unsigned char code song5[]={ 3,2,2, 3,2,1, 4,2,1, 3,2,2, 2,2,1, 1,2,1, 2,2,2, 5,2,2, 2,2,2, 2,2,3, 1,2,2, 1,2,1, 2,2,1, 1,2,2, 7,1,1, 6,1,1, 7,1,2, 3,2,2, 7,1,2, 7,1,3, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 5,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 7,1,1, 1,2,6, 0,0,0 }; //《乡间小路》 unsigned char code song6[]={ 3,1,2, 3,1,1, 3,1,1, 6,0,1, 6,0,1, 1,1,2, 6,0,1, 5,0,1, 6,0,4, 6,0,2, 6,0,1 ,6,0,1, 6,0,2, 6,0,1, 1,1,1, 2,1,2, 2,1,1, 3,1,1, 2,1,4, 3,1,1, 3,1,1, 3,1,1, 2,1,1, 4,1,2, 4,1,2, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 7,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 5,0,1, 6,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 6,0,4, 6,1,2, 3,1,1, 6,1,1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 5,1,1, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 4,1,2, 4,1,1, 3,1,1, 2,1,2, 1,1,1, 2,1,1, 3,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,4, 6,1,2, 3,1,1, 6,1,1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 0,0,0}; //《送别》 unsigned char code song7[]={ 5,1,2, 3,1,3, 5,1,1, 1,2,3, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 1,1,1, 2,1,1, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 5,1,2, 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,1, 1,1,4, 6,1,2, 1,2,2, 1,2,4, 7,1,2, 6,1,1, 7,1,1, 1,2,4, 6,1,1, 7,1,1, 1,2,1, 6,1,1, 6,1,1, 5,1,1, 3,1,1, 1,1,1, 2,1,8, 5,1,2, 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,2, 1,1,4, 0,0,0}; //《最浪漫的事》 unsigned char code song8[]={ 5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1, 3,1,1, 5,1,5, 5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1, 6,1,1, 1,1,5, 1,1,1, 2,1,1, 3,1,1, 2,1,1, 2,1,1, 2,1,1, 1,1,1, 2,1,1, 1,1,1, 6,1,1, 3,1,2, 2,1,3, 5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1, 6,1,1, 1,1,5, 1,1,1, 2,1,1, 3,1,1, 4,1,2, 4,1,1, 5,1,1, 6,1,1, 6,1,1, 5,1,1, 6,1,2, 1,2,1, 6,1,3, 1,2,1, 6,1,1, 5,1,1, 5,1,4, 1,1,1, 6,1,1, 5,1,5, 5,1,1, 6,1,1, 1,2,1, 3,1,1, 2,1,1, 3,1,1, 1,1,6, 0,0,0}; // 频率-半周期数据表 高八位 共保存了四个八度的28个频率数据 unsigned char code FREQH[]={ 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567 // 频率-半周期数据表 低八位 unsigned char code FREQL[]={ 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音1234567 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音 1234567 void KEY() { if(!pause) //暂停键处理 { delayms(5); if(!pause) { TR0=0; speaker=1; if(music_num==0) //music_num=0只有在刚开机,且未按下暂停键时存在,表示刚开机时的状态,按下后从第一首开始播放 { music_num=1; //歌曲序号置1 num=0; //从头播放 play_enable=1; //允许播放
上一篇:单片机6位数电子密码锁源码+PCB+仿真原理图设计(可改密码
下一篇:最后一页
推荐阅读
史海拾趣
得力公司在国内市场取得成功后,开始积极拓展海外市场。公司在全球建立了多个生产基地和创新研发中心,整合全球人才和资源,为用户提供卓越的产品和服务。同时,得力还注重品牌本土化经营和国际化运营,努力融入当地市场和文化,赢得了全球客户的信赖和认可。
面对不断变化的市场需求和技术环境,肯尼威始终坚持以创新为引领。公司不断投入研发资源,推出了一系列具有创新性的产品。例如,针对特殊需求的客户,公司推出了定制化的电源滤波器解决方案;同时,还开发了新型的三相电源滤波器等产品,满足了市场的多样化需求。这些创新不仅提升了公司的技术实力,也为公司赢得了更多的市场份额。
在品质保障的基础上,肯尼威开始积极拓展市场。公司不仅在台湾本地建立了完善的销售网络,还成功进军国际市场。通过与多家国际知名企业的合作,肯尼威的产品逐渐打入电子、机械、医疗器械等多个领域。同时,公司还积极参加国际展会,展示最新的技术和产品,吸引了众多海外客户的关注。
Burr-Brown公司,成立于1956年,初期仅有两名雇员,并得益于房地产开发商的支持。公司起初专注于制造模拟集成电路,第一年的销售总额为1600美元。创始人布朗怀揣雄心壮志,提出在一年内将厂房扩大到1200平方英尺,并期望销售收入能增长到7200美元。随着销售的稳步增长,公司不断迁往更大的设施,最终在1965年购买了附近的机场,为公司未来的成长奠定了坚实的基础。
进入20世纪70年代中期,Burr-Brown敏锐地意识到数字技术将对音频行业产生深远影响。公司迅速抓住CD播放机市场的机遇,通过技术创新,成功引领音频行业进入数字时代。这一转型不仅巩固了Burr-Brown在音频领域的领先地位,也为公司带来了更广阔的发展空间。
引言 汽车MP3无线发射器可以将MP3播放器内存储的音乐通过FM广播方式发送,再通过FM调频收音机接收,通过汽车音响播放。本文采用单片机AT89C52及数字锁相环MC145152等芯片设计了汽车MP3无线发射器,从仿真结果与目标样机的 ...… 查看全部问答∨ |
|
小弟初学DSP,在做一个项目,算法是将一组数据经过处理之后仅留下几个数据。算法已用C语言实现,而且直接将C语言程序移植到CCS上程序都能通过,且结果正确。但下一步该怎么做就不明白,是买板子在硬件上调试吗?如果是的话,还请各位大侠推荐一个较 ...… 查看全部问答∨ |
|
网上搜了一下,对于我来说比较有吸引力的有以下几点: 1、内嵌SafeRTOS内核2、8/16/32位独立外设并行总线3、支持SDRAM、SRAM/Flash、FPGA、CPLD4、IEEE1588精密时间协议(PTP)硬件支持的10/100以太网 MAC/PHY5、先进的运动控制 (这个目前用不到 ...… 查看全部问答∨ |
求帮忙!!!为什么我的LAUNCHPAD 进不了P1口的外部中断程序?? P1口中断和全局中断全部都打开了 部分程序如下: .......... P1DIR &= ~BIT3; P1DIR &= ~BIT4; P1DIR &= ~BIT5; P1DIR &= ~BIT7; P1OUT |= B ...… 查看全部问答∨ |
【C2000 LaunchPad】单相交流电压+电流表__工程创建篇 总贴位置:https://bbs.eeworld.com.cn/viewthread.php?tid=369113&page=1&extra=page%3D2#pid1466612 【C2000 LaunchPad】单相交流电压+电流表 以前一直用CCS3.3。最近装了个 ...… 查看全部问答∨ |