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

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

QQ登錄

只需一步,快速開始

搜索
查看: 4261|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)簡易電子琴仿真和源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
簡易電子琴仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)電子琴源程序如下:
  1. #include<AT89X52.h>

  2. #define KeyPort P1


  3. unsigned char High,Low; //定時(shí)器預(yù)裝值的高8位和低8位

  4. sbit SPK=P3^7;          //定義蜂鳴器接口
  5. sbit playSongKey=P0^0;          //功能鍵

  6. sbit RS=P2^0;//液晶數(shù)據(jù)命令選擇
  7. sbit RW=P2^1;//液晶讀寫選擇
  8. sbit EN=P2^2;//液晶使能端

  9. unsigned char code freq[][2]={
  10.   0xD8,0xF7,//00440HZ 1   
  11.   0xBD,0xF8,//00494HZ 2  
  12.   0x87,0xF9,//00554HZ 3  
  13.   0xE4,0xF9,//00587HZ 4   
  14.   0x90,0xFA,//00659HZ 5     
  15.   0x29,0xFB,//00740HZ 6     
  16.   0xB1,0xFB,//00831HZ 7      
  17.   0xEF,0xFB,//00880HZ `1
  18. };

  19. unsigned char Time;
  20. unsigned char code YINFU[9][1]={{' '},{'1'},{'2'},{'3'},{'4'},{'5'},{'6'},{'7'},{'8'}};
  21.                           //世上只有媽媽好數(shù)據(jù)表
  22. unsigned char code MUSIC[]={ 6,2,3,      5,2,1,      3,2,2,    5,2,2,    1,3,2,    6,2,1,    5,2,1,
  23.                      6,2,4,      3,2,2,      5,2,1,    6,2,1,           5,2,2,         3,2,2,           1,2,1,
  24.                      6,1,1,      5,2,1,      3,2,1,         2,2,4,           2,2,3,         3,2,1,    5,2,2,
  25.                      5,2,1,      6,2,1,      3,2,2,         2,2,2,    1,2,4,         5,2,3,           3,2,1,
  26.                      2,2,1,      1,2,1,      6,1,1,         1,2,1,           5,1,6,         0,0,0
  27.                                       };
  28.                          // 音階頻率表 高八位
  29. unsigned char code FREQH[]={
  30.                          0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
  31.                          0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
  32.                          0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
  33.                          0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
  34.                                } ;
  35.                          // 音階頻率表 低八位
  36. unsigned char code FREQL[]={
  37.                          0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
  38.                          0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
  39.                          0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
  40.                          0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
  41.                                 };

  42. void Init_Timer0(void);//定時(shí)器初始化

  43. //延時(shí)函數(shù)大約約2*z+5us
  44. void delay2xus(unsigned char z)
  45. {
  46.    while(z--);
  47. }
  48. // 延時(shí)函數(shù)大約約1ms
  49. void delayms(unsigned char x)
  50. {
  51.    while(x--)
  52.    {
  53.      delay2xus(245);
  54.      delay2xus(245);
  55.    }
  56. }


  57. /*------------------------------------------------
  58.                 節(jié)拍延時(shí)函數(shù)
  59. 各調(diào)1/4節(jié)拍時(shí)間:
  60. 調(diào)4/4  125ms
  61. 調(diào)2/4  250ms
  62. 調(diào)3/4  187ms
  63. ------------------------------------------------*/
  64. void delayTips(unsigned char t)
  65. {
  66.     unsigned char i;
  67.           for(i=0;i<t;i++)
  68.     {
  69.             delayms(250);
  70.     }
  71.     TR0=0;
  72. }
  73. //播放音樂的函數(shù)
  74. void PlaySong()
  75. {
  76.    TH0=High;//賦值定時(shí)器時(shí)間,決定頻率
  77.    TL0=Low;
  78.    TR0=1;      //打開定時(shí)器
  79.    delayTips(Time); //延時(shí)所需要的節(jié)拍                     
  80. }

  81. //定時(shí)器T0初始化子程序
  82. void Init_Timer0(void)
  83. {
  84. TMOD |= 0x01;          //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響                     
  85. EA=1;            //總中斷打開
  86. ET0=1;           //定時(shí)器中斷打開
  87. }
  88. //定時(shí)器T0中斷子程序
  89. void Timer0_isr(void) interrupt 1
  90. {
  91. TH0=High;
  92. TL0=Low;
  93. SPK=!SPK;
  94. }
  95. //主函數(shù)
  96. void main (void)
  97. {
  98.   unsigned char num,k,i;                 
  99.   Init_Timer0();    //初始化定時(shí)器0,主要用于數(shù)碼管動(dòng)態(tài)掃描
  100.   SPK=0;                        //在未按鍵時(shí),喇叭低電平,防止長期高電平損壞喇叭         
  101.   while (1)
  102.   {
  103.    switch(KeyPort)          //對(duì)按鍵進(jìn)行處理
  104.                 {
  105.                  case 0xfe:num= 1;break;
  106.                  case 0xfd:num= 2;break;
  107.                  case 0xfb:num= 3;break;
  108.                  case 0xf7:num= 4;break;
  109.                  case 0xef:num= 5;break;
  110.                  case 0xdf:num= 6;break;
  111.                  case 0xbf:num= 7;break;
  112.                  case 0x7f:num= 8;break;      //分別對(duì)應(yīng)不用的音調(diào)
  113.                  default:num= 0;break;
  114.                 }
  115.     P2 = KeyPort;
  116.     if(num==0)
  117.     {
  118.        TR0=0;
  119.        SPK=0;   //在未按鍵時(shí),喇叭低電平,防止長期高電平損壞喇叭
  120.           }
  121.     else
  122.     {
  123.             High=freq[num-1][1];
  124.                    Low =freq[num-1][0];
  125.                   TR0=1;
  126.           }
  127.    if(playSongKey==0)        //如果播放音樂按鍵被按下
  128.    {
  129.      delayms(10);
  130.      if(playSongKey==0)
  131.      {
  132.        i=0;  
  133.        while(i<100)
  134.             {         
  135.             k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)
  136.             High=FREQH[k];
  137.             Low=FREQL[k];
  138.             Time=MUSIC[i+2];          //節(jié)拍時(shí)長
  139.             i=i+3;
  140.                         if(P1!=0xff)//長按任意8音鍵退出播放
  141.                         {
  142.                delayms(10);
  143.                if(P1!=0xff)
  144.                                  i=101;
  145.                         }
  146.             PlaySong();  
  147.             }
  148.                    TR0=0;
  149.      }
  150.    }

  151.   }
  152. }
復(fù)制代碼

所有資料51hei提供下載:
簡易電子琴.zip (57.99 KB, 下載次數(shù): 56)


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:357373 發(fā)表于 2018-7-1 17:19 | 只看該作者
很實(shí)用的 可以用
回復(fù)

使用道具 舉報(bào)

板凳
ID:313328 發(fā)表于 2018-7-1 20:38 | 只看該作者
可以自己做個(gè)玩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费观看视频 | 日韩精品一区二区久久 | 国产亚韩| 日韩免费视频一区二区 | 99久久久久久99国产精品免 | 一级毛片在线播放 | 欧美日韩一区二区电影 | 国产午夜视频 | 天天操天天干天天爽 | 欧美伊人久久久久久久久影院 | 精品伊人久久 | 精品国产18久久久久久二百 | 国产精品久久久久免费 | 91久久精品国产91久久性色tv | 亚洲韩国精品 | 四季久久免费一区二区三区四区 | 精品一区二区免费视频 | 久久久久国产精品 | 亚洲一区二区三区桃乃木香奈 | 亚洲视频国产视频 | www.亚洲| 一区二区三区在线免费观看 | 久久久这里都是精品 | 欧美另类视频 | 国产欧美一区二区在线观看 | 亚洲精品视频在线 | 欧美一级www片免费观看 | 一级毛片大全免费播放 | 日韩精品一区二区三区视频播放 | 国产精品一区二区三区四区 | www.日韩高清 | 精品在线播放 | 一区二区三区成人 | 中文字幕一区二区三区在线观看 | 国产69精品久久久久777 | 国产一区二区在线免费播放 | 国产精品久久久久久久一区二区 | 午夜精品一区二区三区在线视频 | 久久婷婷色 | 久久精品久久久久久 | 日本在线一区二区三区 |