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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2540|回復: 1
打印 上一主題 下一主題
收起左側

基于STC系列單片機的蜂鳴器音樂播放程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:635836 發表于 2020-5-28 23:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
采用兩個定時器,一個用于產生不同頻率方波,另一個控制音節長度
至少要使用有1T定時器的單片機

單片機源程序如下:
  1. #include"STC12C5A60S2.h"
  2. #include<intrins.h>
  3. typedef unsigned int u16;
  4. typedef unsigned char u8;
  5. //音樂播放小程序 @12MHz
  6. sbit output=P1^0;//接蜂鳴器
  7. u8 f[48][2]={//C4-B8
  8. //                C                        #C                        D                        #D                        E                        F                        #F                        G                        #G                        A                        #A                        B
  9.         {0x4b,0xb7},{0x56,0xe4},{0x60,0x61},{0x69,0x57},{0x71,0xcc},{0x79,0xc7},{0x81,0x50},{0x88,0x6c},{0x8f,0x22},{0x95,0x78},{0x9b,0x72},{0xa1,0x17},
  10.         {0xa5,0xdc},{0xab,0x72},{0xb0,0x31},{0xb4,0xac},{0xb8,0xe6},{0xbc,0xe4},{0xc0,0xa8},{0xc4,0x36},{0xc7,0x91},{0xca,0xbc},{0xcd,0xb9},{0xd0,0x8c},
  11.         {0xd2,0xee},{0xd5,0xb9},{0xd8,0x19},{0xda,0x56},{0xdc,0x73},{0xde,0x72},{0xe0,0x54},{0xe2,0x1b},{0xe3,0xc9},{0xe5,0x5e},{0xe6,0xdd},{0xe8,0x46},
  12.         {0xe9,0x77},{0xea,0xdd},{0xec,0x0d},{0xed,0x2b},{0xee,0x3a},{0xef,0x39},{0xf0,0x2a},{0xf1,0x0e},{0xf1,0xe5},{0xf2,0xaf},{0xf3,0x6f},{0xf4,0x23}};
  13. u8 reH,reL;
  14. u8 spH,spL;
  15. u8 length;
  16. u16 disp;
  17. u16 fulllength;//樂曲總音節數
  18. u8 speed;//速度(b/min)
  19. char tune;//調(單位為半音)
  20. u8 code music[][2]={
  21.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{21,2},{19,2},{19,1},{21,1},//10
  22.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{21,2},{19,2},{19,1},{21,1},//10
  23.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{21,2},{19,2},{19,1},{21,1},//10
  24.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{21,2},{19,2},{19,1},{21,1},//10
  25.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{21,2},{19,2},{19,1},{21,1},//10
  26.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{21,2},{19,2},{19,1},{21,1},//10
  27.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{21,2},{19,2},{19,1},{21,1},//10
  28.         {255,2},{21,2},{21,2},{19,1},{21,1},{255,2},{36,2},{35,2},{31,2},//9
  29.         {31,2},{33,1},{33,3},{31,2},{31,2},{33,1},{33,3},{31,2},//8
  30.         {31,2},{33,1},{33,3},{31,2},{33,2},{35,2},{36,2},{38,2},//8
  31.         {35,4},{31,4},{41,4},{38,4},//4
  32.         {38,3},{38,3},{40,2},{255,2},{36,2},{35,2},{31,2},//7
  33.         {31,2},{33,1},{33,3},{31,2},{31,2},{33,1},{33,3},{31,2},//8
  34.         {31,2},{33,1},{33,3},{31,2},{33,2},{35,2},{36,2},{38,2},//8
  35.         {33,4},{255,4},{33,2},{35,2},{36,2},{38,2},//6
  36.         {35,4},{31,4},{28,4},{31,4},//4
  37.         {31,2},{33,1},{33,3},{36,2},{35,2},{31,1},{28,1},{28,2},{31,2},//9
  38.         {31,2},{33,1},{33,17},{255,12},//4--145
  39.         {30,8},{30,2},{28,2},{30,2},{32,2},//5
  40.         {30,8},{30,2},{28,2},{30,2},{32,2},//5
  41.         {33,8},{33,2},{35,2},{33,2},{32,2},//5
  42.         {33,2},{32,2},{30,2},{37,2},{33,8},//5
  43.         {30,8},{30,2},{28,2},{30,2},{32,2},//5
  44.         {30,8},{30,2},{28,2},{30,2},{32,2},//5
  45.         {33,4},{26,4},{32,2},{30,2},{28,2},{30,2},//6
  46.         {28,6},{26,2},{26,8},//3--184
  47.         {33,2},{33,1},{33,2},{33,1},{33,4},{33,2},{32,2},{31,2},//8
  48.         {29,4},{29,2},{37,1},{37,7},{37,1},{37,1},//6
  49.         {37,2},{35,2},{33,2},{20,2},{35,1},{33,2},{32,3},{30,2},//8
  50.         {28,3},{28,3},{26,2},{30,8},//4
  51.         {30,2},{30,1},{30,2},{30,1},{30,4},{30,2},{32,2},{32,2},//8
  52.         {32,4},{32,2},{28,1},{28,5},{255,2},{28,2},//6
  53.         {26,4},{26,2},{25,2},{26,2},{28,1},{30,3},{30,2},//7
  54.         {30,6},{28,1},{26,1},{28,8},//4
  55.         {37,3},{255,2},{38,3},{255,2},{37,3},{255,3},//5--240
  56.         {255,5},{36,2},{35,2},{31,2},//4
  57.         {31,2},{33,1},{33,3},{31,2},{31,2},{33,1},{33,3},{31,2},//8
  58.         {31,2},{33,1},{33,3},{31,2},{33,2},{35,2},{36,2},{38,2},//8
  59.         {35,4},{31,4},{41,4},{38,4},//4
  60.         {38,3},{38,3},{40,2},{255,2},{36,2},{35,2},{31,2},//7
  61.         {31,2},{33,1},{33,3},{31,2},{31,2},{33,1},{33,3},{31,2},//8
  62.         {31,2},{33,1},{33,3},{31,2},{33,2},{35,2},{36,2},{38,2},//8
  63.         {33,5},{255,3},{33,2},{35,2},{36,2},{38,2},//6//////////////
  64.         {35,3},{31,3},{28,3},//3////////////////////////
  65.         {255,2},{36,2},{35,2},{31,2},//4
  66.         {31,2},{33,1},{33,3},{31,2},{31,2},{33,1},{33,3},{31,2},//8
  67.         {31,2},{33,1},{33,3},{31,2},{33,2},{35,2},{36,2},{38,2},//8
  68.         {35,4},{31,4},{41,4},{38,4},//4
  69.         {38,3},{38,3},{40,2},{255,2},{36,2},{35,2},{31,2},//7
  70.         {31,2},{33,1},{33,3},{31,2},{31,2},{33,1},{33,3},{31,2},//8
  71.         {31,2},{33,1},{33,3},{31,2},{33,2},{35,2},{36,2},{38,2},//8
  72.         {33,5},{255,3},{33,2},{35,2},{36,2},{38,2},//6/////////////////
  73.         {35,4},{31,4},{28,4},{31,4},//4
  74.         {31,2},{33,1},{33,3},{36,2},{35,2},{31,1},{28,1},{28,2},{31,2},//9
  75.         {31,2},{33,1},{33,17},{255,12},//4--366
  76. };
  77. void delay(u16 a)
  78. {
  79.         u8 i;
  80.         while(a--)
  81.         {
  82.                 i=110;
  83.                 while(i--);
  84.         }
  85. }
  86. void init()
  87. {
  88.         unsigned long auxnum;
  89.         delay(10);
  90.         AUXR|=0x80;//T0不分頻,12倍速
  91.         TMOD|=0X11;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。

  92.         fulllength=366;
  93.         tune=-1;
  94.         speed=115;

  95.         auxnum=7500/speed;
  96.         auxnum*=1000;
  97.         auxnum=65536-auxnum;
  98.         spH=auxnum>>8;
  99.         spL=auxnum%16;

  100.         TH0=f[music[disp][0]+tune][0];//給定時器0賦初值
  101.         TL0=f[music[disp][0]+tune][1];
  102.         TH1=spH;//一個16分音符
  103.         TL1=spL;
  104.         ET0=1;//打開定時器中斷允許
  105.         ET1=1;
  106.         EA=1;//打開總中斷
  107.         TR0=1;//打開定時器
  108.         TR1=1;
  109. }
  110. void main()
  111. {
  112.         init();
  113.         P1M0=0x01;
  114.         while(1)
  115.         {
  116.                 if(length>music[disp][1])
  117.                 {
  118.                         TR0=0;
  119.                         length=0;
  120.                         disp++;
  121.                         if(disp>=fulllength)
  122.                         {
  123.                                 delay(2000);
  124.                                 disp=0;
  125.                         }
  126.                         TR0=1;
  127.                         delay(100);
  128.                         if(music[disp][0]==255)//空音
  129.                                 TR0=0;
  130.                         else
  131.                         {
  132.                                 TH0=reH=f[music[disp][0]+tune][0];
  133.                                 TL0=reL=f[music[disp][0]+tune][1];
  134.                         }
  135.                 }
  136.                
  137.         }
  138. }
  139. void Timer0() interrupt 1
  140. {
  141.         TH0=reH;
  142.         TL0=reL;
  143.         output=~output;
  144. }
  145. void Timer1() interrupt 3
  146. {
  147.         TH1=spH;//一個16分音符
  148.         TL1=spL;
  149.         length++;
  150. }
復制代碼

以上資料51hei提供下載:
music.rar (1.46 KB, 下載次數: 30)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:764394 發表于 2020-5-29 17:52 | 只看該作者
感謝分享,拿去測試一下,謝謝。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看国产 | 91精品国产91久久久久久最新 | 成人亚洲视频 | 中文字幕一区二区三区日韩精品 | 日韩精品视频一区二区三区 | 亚洲国产精品久久 | 日韩免费中文字幕 | 日韩精品一区二区三区中文字幕 | 国产高清在线 | 国产ts人妖另类 | 成人一区二区视频 | 国产成人一区 | 日韩免费一二三区 | 欧美一级免费看 | 国产高清免费 | 久久久久久久国产精品 | 一区二区三区精品视频 | 天堂精品 | 人妖videosex高潮另类 | 在线亚州 | 日韩在线一区二区三区 | 国产高清一区二区 | 999视频在线播放 | 国产三区视频在线观看 | 日韩精品在线一区 | 欧美一区二区三区在线 | 免费欧美视频 | 精品一二三区在线观看 | 国产精品一二区 | 大象视频一区二区 | 在线国产视频 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 国产精品久久久久久久久久久久午夜片 | 亚洲 欧美 日韩 在线 | 天天躁日日躁狠狠躁2018小说 | 欧美在线观看黄色 | 亚洲高清视频在线观看 | 欧美午夜精品理论片a级按摩 | 久久久www成人免费无遮挡大片 | 第四色影音先锋 | 7777在线视频免费播放 |