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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機演奏音樂(F調3個8度7音階)程序+Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
單片機演奏音樂仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. /********本程序中,FOSC=11.0592M*********/
  2. #include<reg51.h>

  3. #include<intrins.h>

  4. #define uchar unsigned char
  5. #define uint  unsigned int

  6. struct music_type{
  7.         uchar tone;
  8.         uchar delay;
  9. };



  10. /**********F調3個8度7音階的音高參數**********/
  11. uint code tonetab[]={  
  12.     64216,64360,64489,64603,64654,64752,64837, //低音1~7
  13.     64876,64948,65012,65042,65095,65144,65186, //中音1~7
  14.     65206,65242,65274,65289,65315,65340,65361  //高音1~7
  15. };
  16. //曲譜,每個音符含兩項數據,第1項為音高,第2項為節拍(以1/4拍為單位)
  17. /**************康定情歌樂譜***************/
  18. struct music_type code  songtab[]={  
  19.         3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x01,2+7,0x04,
  20.         3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x06,
  21.         3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x01,2+7,0x04,
  22.         5+7,0x02,3+7,0x02,2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,2+7,0x02,6+0,0x06,
  23.         6+0,0x02,2+7,0x06,5+7,0x02,3+7,0x06,2+7,0x01,1+7,0x01,6+0,0x06,
  24.         5+7,0x02,3+7,0x02,2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,2+7,0x02,6+0,0x06,
  25.         //
  26.         3+7,0x01,2+7,0x01,3+7,0x01,5+7,0x01,6+7,0x01,5+7,0x01,1+14,0x01,6+7,0x01,
  27.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  28.         1+14,0x02,2+14,0x01,3+14,0x01,2+14,0x01,1+14,0x01,6+7,0x01,1+14,0x01,
  29.         5+7,0x08,
  30.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  31.         1+14,0x02,2+14,0x01,3+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,
  32.         5+7,0x02,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  33.         1+7,0x01,6,0x01,1+7,0x06,
  34.         3+7,0x01,2+7,0x01,1+7,0x02,2+7,0x03,3+7,0x01,
  35.         5+7,0x02,6+7,0x01,1+14,0x01,6+7,0x02,5+7,0x02,
  36.         5+7,0x01,3+7,0x01,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  37.         1+7,0x01,2+7,0x01,6,0x04,1+7,0x02,
  38.         2+7,0x03,3+7,0x01,1+7,0x01,2+7,0x01,1+7,0x02,6,0x01,
  39.         1+7,0x01,6,0x01,5,0x05,
  40.         //
  41.         3+7,0x01,2+7,0x01,3+7,0x01,5+7,0x01,6+7,0x01,5+7,0x01,1+14,0x01,6+7,0x01,
  42.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  43.         1+14,0x02,2+14,0x01,3+14,0x01,2+14,0x01,1+14,0x01,6+7,0x01,1+14,0x01,
  44.         5+7,0x08,
  45.         5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,
  46.         1+14,0x02,2+14,0x01,3+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,
  47.         5+7,0x02,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  48.         1+7,0x01,6,0x01,1+7,0x06,
  49.         3+7,0x01,2+7,0x01,1+7,0x02,2+7,0x03,3+7,0x01,
  50.         5+7,0x02,6+7,0x01,1+14,0x01,6+7,0x02,5+7,0x02,
  51.         5+7,0x01,3+7,0x01,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,
  52.         1+7,0x01,2+7,0x01,6,0x04,1+7,0x02,
  53.         2+7,0x03,3+7,0x01,1+7,0x01,2+7,0x01,1+7,0x02,6,0x01,
  54.         1+7,0x01,6,0x01,5,0x05,

  55.         0,0x00
  56. };
  57. /*********端口及變量定義**********/
  58. sbit SPEAKER = P3^7;

  59. uchar tlow1,thig1;

  60. /*******軟件延時,約n*10us******/
  61. void delay10us(unsigned char n){
  62.         do{
  63.         _nop_();
  64.         _nop_();
  65.         _nop_();
  66.         _nop_();
  67.         _nop_();
  68.         }while(--n);
  69. }
  70. /*******軟件延時,約n ms******/
  71. void delayms(unsigned int n){
  72.         do {
  73.                 delay10us(131);
  74.         }while(--n);
  75. }


  76. main () {
  77.         uchar i,j;
  78.         EA=1;ET0=1;
  79.         TMOD=0X01;
  80.         while(1){
  81.                 i=0;
  82.                 while(songtab[i].delay!=0){
  83.                         if(songtab[i].tone==0)TR0=0;  //音高數據為0
  84.                         else{     //音高數據不為0
  85.                                 //用定時器參數控制T1的振蕩頻率,即音高
  86.                                 thig1=TH0=tonetab[songtab[i].tone-1]/256;
  87.                                 tlow1=TL0=tonetab[songtab[i].tone-1]%256;
  88.                                 TR0=1;
  89.                         }
  90.                         //控制音符的持續時間,即節拍
  91.                         for(j=0;j<songtab[i].delay;j++){

  92.                                 delayms(200);
  93.                         }
  94.                         i++; //下一個音符
  95.                 }
  96.                 TR0=0;  //停止演奏
  97.                 delayms(1000);  //一遍完成后等待
  98.         }
  99. }

  100. /*******定時器1中斷,控制蜂鳴器發聲頻率*******/
  101. void  t0 () interrupt 1{
  102.         TH0=thig1;TL0=tlow1;
  103.         SPEAKER = !SPEAKER;  //蜂鳴器發聲
  104. }
復制代碼

所有資料51hei提供下載:
單片機演奏音樂.rar (54.52 KB, 下載次數: 43)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产三级在线观看播放 | 欧美一区二区三区电影 | 91超碰caoporn97人人| 久久色视频| 一级黄色片在线看 | 日日碰碰 | 亚洲成人一区 | 色噜噜亚洲男人的天堂 | 久久综合av | 天天草天天爱 | 久久久噜噜噜久久中文字幕色伊伊 | 久久久久网站 | 一区二区中文字幕 | 91精品国产综合久久婷婷香蕉 | 欧美乱操 | 精品综合久久 | 久久久国产精品 | 日韩精品在线观看网站 | 色毛片| 美人の美乳で授乳プレイ | 亚洲精品日日夜夜 | 国产精品污www一区二区三区 | 久久成人国产精品 | 理论片免费在线观看 | 一区二区三区播放 | 国产精品一区二区欧美黑人喷潮水 | 亚洲一区二区三区视频 | 综合网中文字幕 | 自拍偷拍av | 成人av观看 | 日韩电影一区二区三区 | 日韩福利视频 | 黄色网址在线免费观看 | 亚洲精品9999久久久久 | 国产精产国品一二三产区视频 | 久久精品毛片 | 日韩精品在线免费 | 天堂中文av | 国产精品久久久久久久免费大片 | 免费能直接在线观看黄的视频 | 五十女人一级毛片 |