国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【AT89C52單片機項目】音樂播放器的設計

這篇具有很好參考價值的文章主要介紹了【AT89C52單片機項目】音樂播放器的設計。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  • 實驗目的

用51系列單片機設計一個可以切歌的音樂播放器。

  • 實驗儀器

AT89C52單片機。

音樂播放模塊。

  • 設計要求

采用重裝定時器計數(shù)方式1的初值來實現(xiàn)發(fā)出不同頻率的聲音,通過控制延時長度來實現(xiàn)不同的節(jié)拍,之后將音樂數(shù)據(jù)表填入,即可實現(xiàn)音樂播放。

可通過功能按鍵切換歌曲

  • 實驗原理

音樂播放采用重裝定時器計數(shù)方式1的初值來實現(xiàn)發(fā)出不同頻率的聲音,通過控制延時長度來實現(xiàn)不同的節(jié)拍,之后將音樂數(shù)據(jù)表填入,即可實現(xiàn)音樂播放。

音樂切換方面采取按鍵輸入,按鍵檢測到低電平,則判斷有信號輸入,等待10ms去抖后,等待下一個高電平,進行音樂的切換。

  • 實驗流程
  1. 根據(jù)課本學習喇叭發(fā)生實驗、警車聲音、救護車聲音、喇叭滴答聲音、報警發(fā)聲、消防車、音樂播放等一系列實驗了解了喇叭發(fā)聲以及調(diào)節(jié)頻率的方法。學習獨立按鍵的用法用于切換歌曲
  2. 模仿音樂播放的代碼,進行修改,將源代碼的歌曲樂譜換成“鈴兒響叮當”和“Spider Dance”的樂譜
  3. 將單片機喇叭短接,代碼燒錄入單片機。

【AT89C52單片機項目】音樂播放器的設計,單片機項目學習,單片機,嵌入式硬件,項目學習?

?

  • 實驗結(jié)果

單片機正常運行,先播放“鈴兒響叮當”的旋律,當我按下獨立按鍵INT1時,歌曲切換為“Spider Dance”的旋律,如果重新按下獨立按鍵INT1,可以切換回“鈴兒響叮當”。

  • 代碼

?

#include <reg52.h>
sbit SPK = P1 ^ 2;    //定義喇叭接口
sbit KEY = P3 ^ 3;    //設置獨立按鍵INT1,按下按鍵時切換歌曲
sbit LED = P1 ^ 7;    //用于切換歌曲的顯示,當LED = 1時播放鈴兒響叮當,否則播放Spider Dance
int Timer0_H, Timer0_L, Time; //定義定時器變量和時間變量

code unsigned char MUSIC1[] = { //歌曲“鈴兒響叮當”的樂譜,每個音由3個變量構(gòu)成,前兩個變量用來確定音樂頻率,第三個變量確定持續(xù)時間
    3,2,2,3,2,2,  3,2,4,  3,2,2,3,2,2,  3,2,4,
    3,2,2,5,2,2,  1,2,3,2,2,1,  3,2,8,
    4,2,2,4,2,2,  4,2,2,4,2,2,  4,2,2,3,2,2,  3,2,2,3,2,2,
    5,2,2,5,2,2,  4,2,2,2,2,2,  1,2,4,  1,3,4, 0,0,0
};
code unsigned char MUSIC2[] = { //歌曲“Spider Dance”的樂譜,如果前兩個變量為(0,0)時則為空拍
    6,3,4,   3,3,4,   1,3,4,   6,2,4,
	0,0,2,   2,3,2,	  2,3,2,   0,0,4,   2,3,2,   1,3,2,   5,2,2,   6,2,2,
	0,0,2,   3,3,2,   2,3,2,   1,3,2,   2,3,2,   3,3,2,   5,2,2,   6,2,2,
	1,3,2,   6,2,2,   5,2,2,   6,3,2,   0,0,2,   5,3,2,   3,3,1,   2,3,1,   1,3,2,
	6,2,4,   4,2,4,   7,2,4,   4,2,4,
	1,3,4,   4,2,4,   2,3,8,
	3,3,4,   2,3,4,   6,3,4,   3,3,4,
	5,3,4,   4,3,4,   3,3,4,   0,0,4,
	6,3,2,	 3,4,2,	  2,4,2,   3,4,2,   6,3,2,	 3,4,2,	  2,4,2,   3,4,2,
	3,3,2,	 2,4,2,	  2,4,2,   2,4,2,	3,3,2,	 3,4,2,	  7,3,2,   2,4,2,
	6,3,2,	 3,4,2,	  2,4,2,   3,4,2,   7,3,2,	 3,4,2,	  2,4,2,   3,4,2,
	1,4,2,	 3,4,2,	  2,4,2,   3,4,2,	2,4,2,	 4,4,2,	  3,4,2,   4,4,2,
	4,3,2,	 1,4,2,	  7,3,2,   1,4,2,	4,3,2,	 2,4,2,	  1,4,2,   2,4,2,
	4,3,2,	 3,4,2,	  2,4,2,   3,4,2,	4,3,2,	 4,4,2,	  3,4,2,   4,4,2, 0,0,0


};

code unsigned char FREQH[]= { //頻率表前八位,第0行頻率為低兩個8度的音,第1行頻率為低一個8度的音,第2行為正常音,第3行為高8度的音
                                //(抱歉,樂理基礎沒學好,音的標準說法忘了咋說了,懂意思就好)
                                // 比如說正常音la,持續(xù)時間為2,那就是(6,2,2)
    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
};

code unsigned char  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 DelayUs2x(unsigned char t)  //延遲函數(shù)
{
    while (--t)
    {

    }
}
void DelayMs(unsigned char t) //延遲時間函數(shù),略微修改,時間不準
{
    while (--t)
    {
        DelayUs2x(245);
    }
}
void delay(unsigned char t)  //延遲時間函數(shù)
{
    unsigned char i;
    for (i = 0; i < t; i++)
        DelayMs(125);
    TR0 = 0;
}

void Init_Timer0(void) //定時器初始化函數(shù)
{
    TMOD |= 0x01; //模式1,16位定時器/計數(shù)器
    EA = 1; //總中斷打開
    ET0 = 1; //定時器中斷打開
}
void TIM0_ISR() interrupt 1  //定時器中斷函數(shù),用于讀取音符頻率值,產(chǎn)生對應的音符
{
    TR0 = 0; //定時器暫停
    SPK = !SPK; //喇叭反轉(zhuǎn)
    TH0 = Timer0_H; //重置定時
    TL0 = Timer0_L;
    TR0 = 1; //定時器開始
}

void Song()
{
    if (Timer0_H == -1 && Timer0_L == -1) //空拍判斷,喇叭不發(fā)聲
    {
        delay(Time);
    }
    else
    {
        TH0 = Timer0_H;  //重置定時
        TL0 = Timer0_L;
        TR0 = 1;  
        delay(Time);
    }
}

void main(void)
{
    unsigned char k, i;
    Init_Timer0();
    KEY = 1;
    LED = 1;
    while (1)
    {
        i = 0;
        if (LED) //播放“鈴兒響叮當”
        {
            while (i < 76) //這個數(shù)字是MUSIC數(shù)組里的變量數(shù)
            {
                k = MUSIC1[i] + 7 * MUSIC1[i + 1] - 1;//頻率位置,用兩個變量進行判斷
                Timer0_H = FREQH[k];// 獲取頻率高八位
                Timer0_L = FREQL[k];// 獲取頻率低八位
                Time = MUSIC1[i + 2];// 獲取持續(xù)時間
                i += 3;
                Song();
                if (!KEY) //判斷獨立按鍵按下
                {
                    while (!KEY) //判斷按鍵釋放
                    { }
                    LED = !LED; //切歌
                    break;
                }
            }
        }
        else
        {
            while (i < 280) //播放“Spider Dance”
            {
                k = MUSIC2[i] + 7 * MUSIC2[i + 1] - 1;
                Timer0_H = FREQH[k];
                Timer0_L = FREQL[k];
                Time = MUSIC2[i + 2];
                i += 3;
                Song();
                if (!KEY)
                {
                    while (!KEY)
                    { }
                    LED = !LED;
                    break;
                }
            }
        }
    }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-568245.html

到了這里,關于【AT89C52單片機項目】音樂播放器的設計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 基于AT89C52單片機的溫濕度檢測設計

    基于AT89C52單片機的溫濕度檢測設計

    點擊鏈接獲取Keil源碼與Project Backups仿真圖: https://download.csdn.net/download/qq_64505944/87704704 源碼獲取 主要內(nèi)容: 設計一套基于51單片機的溫濕度Protus仿真監(jiān)控系統(tǒng),采用SHT11、DHT11或DS189B20等傳感器模塊,用LCD液晶實時顯示當前環(huán)境溫濕度值。 基本要求: 1、設計報警單元,實現(xiàn)

    2024年02月08日
    瀏覽(22)
  • 基于AT89C52單片機的計算器設計與仿真

    基于AT89C52單片機的計算器設計與仿真

    點擊鏈接獲取Keil源碼與Project Backups仿真圖: https://download.csdn.net/download/qq_64505944/88637995?spm=1001.2014.3001.5503 源碼獲取 B 源碼+仿真圖+課程設計+51 摘 要 計算器一般是指“電子計算器”,能進行數(shù)學運算的手持機器,擁有集成電路芯片,結(jié)構(gòu)簡單,功能較弱,但由于它使用方便、操

    2024年01月16日
    瀏覽(37)
  • 基于AT89C52單片機的多功能萬年歷設計

    基于AT89C52單片機的多功能萬年歷設計

    點擊鏈接獲取Keil源碼與Project Backups仿真圖: https://download.csdn.net/download/qq_64505944/87853675 源碼獲取 目 錄 摘 要 1 1 方案論證 2 1.1 單片機芯片的選擇方案和論證 2 1.2 顯示模塊選擇方案和論證 2 1.3 時鐘芯片的選擇方案和論證 3 1.4 電路設計最終方案決定 3 2 系統(tǒng)的硬件設計與實現(xiàn)

    2024年02月07日
    瀏覽(28)
  • 基于AT89C52單片機的簡易電子琴設計與仿真

    基于AT89C52單片機的簡易電子琴設計與仿真

    點擊鏈接獲取Keil源碼與Project Backups仿真圖: https://download.csdn.net/download/qq_64505944/87853299?spm=1001.2014.3001.5503 源碼獲取 主要內(nèi)容: 本設計是基于51系列的單片機進行的設計,利用所給鍵盤的八個鍵,能夠發(fā)出8個不同的音調(diào),并且要求按下按鍵發(fā)聲,松開延時一段時間停止,中間

    2024年02月04日
    瀏覽(18)
  • 利用AT89C52單片機實現(xiàn)數(shù)碼管的靜態(tài)與動態(tài)顯示

    利用AT89C52單片機實現(xiàn)數(shù)碼管的靜態(tài)與動態(tài)顯示

    ??????? 資源work1和work2(完整工程文件在筆者本人主頁的資源中,免費歡迎下載)分別完成下面兩個任務: ????????1、單片機接矩陣鍵盤和2個靜態(tài)數(shù)碼管,自行設計硬件電路,利用匯編語言,要求將按鍵值(0~15)在數(shù)碼管顯示。 ??????? 主要代碼: …… ?????

    2024年02月02日
    瀏覽(45)
  • 【嵌入式開發(fā)-8051】詳細:基于AT89C52單片機設計的溫控風扇(Proteus仿真設計-含設計原理圖、程序源碼)

    【嵌入式開發(fā)-8051】詳細:基于AT89C52單片機設計的溫控風扇(Proteus仿真設計-含設計原理圖、程序源碼)

    1、本設計是基于AT89C51/52單片機為核心的溫控風扇系統(tǒng),使用Proteus進行仿真分析。 2、由于上傳后圖片壓縮,可以私信聯(lián)系獲取清晰圖片。 3、本次為本人結(jié)課設計,整體比較簡單,如有疑問歡迎大家交流討論! ? 目錄 【嵌入式開發(fā)-8051】詳細:基于AT89C52單片機設計的溫控風

    2024年02月07日
    瀏覽(24)
  • 89C52RC普中單片機

    89C52RC普中單片機

    資料下載 普中科技--各型號產(chǎn)品資料下載鏈接 - STM8單片機 - 普中開源電子分享網(wǎng) - Powered by Discuz! (prechin.net) 2023-06-28? 1.開發(fā)板 ? ?2.軟件 keil,stc-isp。 1.點亮led 89C52RC芯片LED模塊是P2口。 ? ? ? 2.led1一秒閃爍 ?3.LED流水燈 ?4.獨立按鍵控制led亮滅(按下key1亮,松手滅) 5.獨立按鍵

    2024年02月11日
    瀏覽(22)
  • 什么是STC89C52單片機

    什么是STC89C52單片機

    STC89C52是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含8k Bytes ISP(In-system programmable)的可反復擦寫10000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu)[1],芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功

    2024年02月13日
    瀏覽(27)
  • STC89C52RC單片機原理圖詳解

    STC89C52RC單片機原理圖詳解

    目錄 1、單片機整體模塊 2、 LED模塊 3、獨立按鍵模塊 4、數(shù)碼管模塊 5、LCD1602模塊 6、矩陣按鍵模塊?編輯 7、串口通信模塊 8、LED點陣屏模塊 單片機使用的是TTL電平(一種電平的規(guī)范),規(guī)定為0V為低電平,5V為高電平; 字母上有一橫,意為低電平有效。 單片機上電時,所有

    2024年02月05日
    瀏覽(21)
  • 【mcuclub】STC89C52單片機最小系統(tǒng)講解

    【mcuclub】STC89C52單片機最小系統(tǒng)講解

    ? ? 3.1、主芯片 STC89C52是STC公司生產(chǎn)的一種低功耗、高性能8位微控制器 器件參數(shù): 1、增強型8051單片機,指令代碼完全兼容傳統(tǒng)8051 2、工作電壓:5.5V~3.3V 3、工作頻率范圍:0~40MHz,實際工作頻率可達48MHz 4、用戶應用程序空間為8K字節(jié)(程序空間) 5、片上集成512 字節(jié)RAM(

    2024年02月03日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包