【无标题】单片机小项目———音乐播放器(keil+protues)

这篇具有很好参考价值的文章主要介绍了【无标题】单片机小项目———音乐播放器(keil+protues)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

刚学完单片机的朋友可以看一看。

主要功能:

1.播放音乐

2.切歌

3.显示歌曲数

仿真:

【无标题】单片机小项目———音乐播放器(keil+protues)

 代码:

#include<REG52.H>
//#define sound_amount 5 
sbit play_up=P1^0;       
sbit play_down=P1^1;   
sbit pause=P1^2;       
sbit speaker=P3^1;     

unsigned char timer0h,timer0l,time,n;
unsigned char music_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);              
unsigned code dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};



unsigned char code FREQH[]={
    0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,  
    0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,
    0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,            
    0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};  
unsigned char code FREQL[]={
    0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,   
    0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F,
    0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,            
    0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};  
void KEY()
{
    if(!pause)      
        {
        delayms(5);
        if(!pause)
        {
            TR0=0;
            speaker=1;
            if(music_num==0)   
            {
                music_num=1;   
                num=0;           
                play_enable=1;    
            }
            else
            {
                play_enable=~play_enable;
                speaker=1;
            }
            while(!pause)     
            {
            if(play_enable==0){}            
            }

          }
    }

        if((!play_up)&&(music_num!=0))
        {
        delayms(5);
        if((!play_up)&&(music_num!=0))
        {
           TR0=0;
           speaker=1;
            music_num-=1;
            if(music_num<=0)
            music_num=3;
            num=0;      

       if(music_num==(sound_amount+1))
                music_num=1;     
            delayms(500);
        }    
        }

        if((!play_down)&&(music_num!=0))
        {
        delayms(5);
        if((!play_down)&&(music_num!=0))
        {   
            TR0=0;
            speaker=1;
            music_num+=1;
            if(music_num>=4)
            music_num=1;
            num=0;         
            delayms(500);
        }
        }
}
void main(void)
{
    TMOD=0x11; 
    ET0=1;  
    EA=1;  
    while(1)
    {
        music_play();   

        KEY();

    }

void delayms(unsigned int t)       
{
    unsigned int i,j;
    for(i=0;i<t;i++)
    {
        for(j=0;j<123;j++)
            ;
    }
}

void delay(unsigned char t)      
{
    unsigned char t1;
    unsigned long t2;
    for(t1=0;t1<t;t1++)           
    {
        for(t2=0;t2<6500;t2++) 
        {
            KEY();
        }
    }
    TR0=0;                       
}

void timer0(void) interrupt 1 
{
    speaker=!speaker;
    TH0=timer0h;    
    TL0=timer0l;
 }

void song(void)     
{
    TH0=timer0h;   
    TL0=timer0l;
    TR0=1;           
    delay(time);  
}

void music_play(void)
{
    int i=0;
    P2=0x00;
    if(play_enable==1){
        P2=dm[music_num];
}
        else if(play_enable==0){
            P2=dm[0];
            delayms(5);
        }
    if((music_num==1)&&(play_enable==1))
    {
        fre=song1[num]+7*song1[num+1]-1;
        timer0h=FREQH[fre];             
        timer0l=FREQL[fre];
        time=song1[num+2];           
        num+=3;
        if(fre<0)       
        {
            num=0;      
            music_num=2;
        }
        song();          
    }

    if((music_num==2)&&(play_enable==1))
    {  
        fre=song2[num]+7*song2[num+1]-1;
        timer0h=FREQH[fre];
        timer0l=FREQL[fre];
        time=song2[num+2];
        num+=3;
        if(fre<0)
        {
            num=0;
            music_num=3;
        }
        song();        
    }

        if((music_num==3)&&(play_enable==1))
    {  
        fre=song3[num]+7*song3[num+1]-1;
        timer0h=FREQH[fre];
        timer0l=FREQL[fre];
        time=song3[num+2];
        num+=3;
        if(fre<0)
        {
            num=0;
            music_num=4;
        }
        song();        
    }
    
    
}    文章来源地址https://www.toymoban.com/news/detail-512417.html

到了这里,关于【无标题】单片机小项目———音乐播放器(keil+protues)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【单片机】电子音乐播放器的设计与制作(说明书)

    前   言          这是本人在大学期间的《单片机控制技术》课程中,所作的结课作业项目,而我也正想要一个电子音乐播放器,而且这样设计的音乐播放器可以发出宜人的音乐旋律,能给生活增加不少的乐趣,本次作业项目也就让我用51系列单片机设计这个电子音乐播放

    2024年02月06日
    浏览(48)
  • 基于51单片机的7键电子琴音乐播放器proteus

    本设计仅供参考 基于51单片机的7键电子琴音乐播放器proteus(仿真+源码+原理图) 原理图:Altium Designer 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0036 有需要学习可以点击下方链接下载 资料下载链接 设计介绍: 本次设计首先对单片机设计简易电子琴仔细分

    2024年02月11日
    浏览(43)
  • 单片机毕设 STM32音乐播放器设计与实现(原理图+源码+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月05日
    浏览(50)
  • 通信工程毕设 Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(59)
  • 82、基于stm32单片机音乐喷泉设计播放器频谱彩灯系统设计(程序+原理图+参考论文+开题报告+任务书+设计资料+元器件清单等)

    随着人们生活水平的提高和建立绿色城市的向往,音乐喷泉以其独特的魅力和特殊的功能,愈来愈成为休闲娱乐产业中的一项重要产品,音乐喷泉的兴建也越来越多。 根据目前音乐喷泉的发展现状,介绍了一个以STM32单片机为核心的小型音乐喷泉控制系统。给出了一个简洁的单

    2024年02月12日
    浏览(134)
  • 使用单片机控制蜂鸣器播放音乐的代码

    在嵌入式系统中,单片机常常被用于控制各种外设,其中包括蜂鸣器。蜂鸣器是一种能够发出声音的电子元件,可以通过单片机的控制来播放各种音乐或声效。本文将介绍如何使用单片机控制蜂鸣器播放音乐,并提供相应的源代码。 在开始编写代码之前,我们首先需要确定使

    2024年02月01日
    浏览(39)
  • MCU-51:单片机蜂鸣器播放音乐和提示音

    蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带振荡源,需要控制器提供振

    2024年02月02日
    浏览(48)
  • 项目7-音乐播放器2(上传音乐+查询音乐+拦截器)

    之后就不用对用户是否登录进行判断了 生效 请求: { post, /music/upload {singer,MultipartFile file}, } 响应: { \\\"status\\\": 0, \\\"message\\\": \\\"上传成功!\\\", \\\"data\\\": true } Java如何判断一个文件是否为真实的MP3文件_判断一个文件是否是mp3 文件-CSDN博客 流程:前端进行相关的文件操作-再将上传的文

    2024年04月17日
    浏览(48)
  • 项目7-音乐播放器6+评论区

    前端小白:怎么为你的网页增加评论功能?(一)_为网页添加评论区怎么弄-CSDN博客 参考的上述文章的前端代码 我们从上述前端图片知道,我们数据库需要准备的字段: id,commentuserName,coomentmusicId,comment,time 路径:\\\"/comment/upload\\\" 1.MAPPER 2.SERVICE 3.Controller MAPPER SERVICE CONTROLLER 成功

    2024年04月23日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包