久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6239|回復(fù): 2
收起左側(cè)

在proteus軟件中用51單片機(jī)實(shí)現(xiàn)音樂(lè)播放,音質(zhì)完美

[復(fù)制鏈接]
ID:710460 發(fā)表于 2021-4-20 17:44 | 顯示全部樓層 |閱讀模式
proteus 圖紙需要用8.8版本以上,才能打開(kāi)。
1.png
注意上圖的speaker的驅(qū)動(dòng)電壓需要修改成1V,才能驅(qū)動(dòng)。

單片機(jī)代碼如下所示:
  1. #include <reg52.h>

  2. sbit beep = P1^5;
  3. unsigned char timer0H, timer0L, time;

  4. //單片機(jī)晶振采用11.0592MHz
  5. // 頻率-半周期數(shù)據(jù)表 高八位     本軟件共保存了四個(gè)八度的28個(gè)頻率數(shù)據(jù)
  6. code unsigned char FREQH[] = {
  7.     0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,    //低音1234567
  8.     0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i
  9.     0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,            //高音 234567
  10.     0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};   //超高音 1234567
  11. // 頻率-半周期數(shù)據(jù)表 低八位
  12. code unsigned char FREQL[] = {
  13.     0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,    //低音1234567
  14.     0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i
  15.     0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,             //高音 234567
  16.     0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};   //超高音 1234567
  17. //數(shù)據(jù)表           
  18. code unsigned char song[] = {
  19. 5, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 2, 1, 2, 6, 5, 1, 6, //我和我的祖國(guó)
  20. 1, 2, 2, 3, 2, 2, 1, 3, 2, 7, 2, 2, 6, 2, 3, 3, 2, 1, 5, 2, 12,                        //一刻也不能分割
  21. 6, 2, 2, 7, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 6, 6, 1, 6,        //無(wú)論我走到哪里
  22. 7, 1, 2, 6, 1, 2, 5, 1, 2, 5, 2, 2, 1, 2, 3, 2, 2, 1, 3, 2, 12,                        //都唱出一首贊歌
  23. 5, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 2, 1, 2, 6, 5, 1, 6,        //我歌唱每一座高山
  24. 1, 2, 2, 3, 2, 2, 1, 3, 2, 7, 2, 2, 2, 3, 3, 1, 3, 1, 6, 2, 12,                        //我歌唱每一條河
  25. 1, 3, 2, 7, 2, 2, 6, 2, 2, 5, 2, 6,                                                                                //裊裊炊煙
  26. 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 6,                                                                                //小小村落
  27. 7, 1, 4, 6, 1, 2, 5, 1, 4, 2, 2, 2, 1, 2, 12,                                                        //路上一道轍
  28. 8, 2, 2, 2, 3, 2, 3, 3, 2, 2, 3, 2, 8, 2, 2, 6, 2, 2, 7, 2, 2, 6, 2, 3, 3, 2, 1, 5, 2, 12,//我最親愛(ài)的祖國(guó)
  29. 8, 2, 2, 2, 3, 2, 3, 3, 2, 2, 3, 2, 8, 2, 2, 6, 2, 2, 7, 2, 2, 5, 2, 3, 3, 2, 1, 6, 2, 12,//我永遠(yuǎn)緊依著你的心窩
  30. 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 6, 7, 1, 2, 6, 1, 2, 5, 1, 2, 3, 2, 6,4, 2, 6, 2, 2, 4, 1, 2, 2,1, 2, 10,//你用你那母親的脈搏和我訴說(shuō)
  31. 0x00,0x00,0x00
  32. };
  33. //一個(gè)音符有三個(gè)數(shù)字。前為第幾個(gè)音、中為第幾個(gè)八度、后為時(shí)長(zhǎng)(以半拍為單位)。
  34. //6, 2, 3 分別代表:6, 中音, 3個(gè)半拍;
  35. //5, 2, 1 分別代表:5, 中音, 1個(gè)半拍;

  36. void t0int() interrupt 1         //T0中斷程序,控制發(fā)音的音調(diào)
  37. {
  38.     TR0 = 0;                     //先關(guān)閉T0
  39.     beep = !beep;          //輸出方波, 發(fā)音
  40.     TH0 = timer0H;               //下次的中斷時(shí)間, 這個(gè)時(shí)間, 控制音調(diào)高低
  41.     TL0 = timer0L;
  42.     TR0 = 1;                     //啟動(dòng)T0
  43. }

  44. void delay(unsigned char t)     //延時(shí)程序,控制發(fā)音的時(shí)間長(zhǎng)度
  45. {
  46.     unsigned char t1;
  47.     unsigned long t2;
  48.     for(t1 = 0; t1 < t; t1++)    //雙重循環(huán), 共延時(shí)t個(gè)半拍
  49.       for(t2 = 0; t2 < 4000; t2++); //延時(shí)期間, 可進(jìn)入T0中斷去發(fā)音
  50.     TR0 = 0;                        //關(guān)閉T0, 停止發(fā)音
  51. }

  52. void sing()                      //演奏一個(gè)音符
  53. {
  54.     TH0 = timer0H;               //控制音調(diào)
  55.     TL0 = timer0L;
  56.     TR0 = 1;                     //啟動(dòng)T0, 由T0輸出方波去發(fā)音
  57.     delay(time);                 //控制時(shí)間長(zhǎng)度
  58. }

  59. void main(void)
  60. {
  61.     unsigned int k, i;
  62.     TMOD = 1;                    //置T0定時(shí)工作方式1
  63.     ET0 = 1;                     //開(kāi)T0中斷
  64.     EA = 1;                      //開(kāi)總中斷
  65.    while(1)
  66.         {
  67.       i = 0;
  68.       time = 1;
  69.                            while(time)
  70.                                 {
  71.                                                 k = song[i] + 7 * song[i + 1] - 1;//第i個(gè)是音符, 第i+1個(gè)是第幾個(gè)八度
  72.                                                 timer0H = FREQH[k];      //從數(shù)據(jù)表中讀出頻率數(shù)值
  73.                                                 timer0L = FREQL[k];      //實(shí)際上, 是定時(shí)的時(shí)間長(zhǎng)度
  74.                                                 time = song[i + 2];   //讀出時(shí)間長(zhǎng)度數(shù)值
  75.                                                 i += 3;
  76.                                           if(time!=0x00)
  77.                                                         sing();                  //發(fā)出一個(gè)音符
  78.                                                 else break;
  79.                                 }  
  80.     }  
  81. }
復(fù)制代碼
根據(jù)下圖所示簡(jiǎn)譜,編寫(xiě)的程序

我和我的祖國(guó)簡(jiǎn)譜.jpg

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:710460 發(fā)表于 2021-4-20 18:13 | 顯示全部樓層
忘記上傳附件了
-用蜂鳴器實(shí)現(xiàn)的音樂(lè)盒.7z (37.78 KB, 下載次數(shù): 47)
回復(fù)

使用道具 舉報(bào)

ID:1088316 發(fā)表于 2023-7-13 09:19 | 顯示全部樓層
這個(gè)燒到51單片機(jī)里面不能用是為什么呀
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91在线网站 | 久久久久久成人 | 欧洲av在线 | 狠狠干五月天 | 亚洲视频手机在线 | 色接久久 | 欧美精品欧美精品系列 | 一本色道久久综合亚洲精品高清 | 日本精品一区二区三区四区 | 国产一区不卡 | 久久精品av麻豆的观看方式 | 亚洲午夜视频在线观看 | 日韩一区二 | 国产精品久久久免费 | 国产精品五月天 | 黄色av网站免费看 | 国产精品色 | 久久中文字幕av | 久久久青草婷婷精品综合日韩 | 性一交一乱一透一a级 | 亚洲视频一区在线观看 | 日本三级在线视频 | 日韩一级 | 亚洲一区二区免费电影 | 麻豆久久 | 欧美一级片在线播放 | 99国产精品99久久久久久 | 国产精品99久久久久久久久久久久 | 一级免费视频 | 欧美 日韩 国产 一区 | 日韩性生活网 | 99re视频在线观看 | 九九久视频 | 亚洲一区二区av | 精品一区二区在线观看 | 久热m3u8 | 国产在线视频一区二区董小宛性色 | 精品国产不卡一区二区三区 | 国产精品成av人在线视午夜片 | 一级片片| 色吧色综合|