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

立即注冊 登錄
返回首頁

uid:294853的個人空間

日志

簡易電子琴的設計圖和代碼

已有 1390 次閱讀2018-5-9 09:00

#include<AT89X52.h>

#define KeyPort P1


unsigned char High,Low; //定時器預裝值的高8位和低8位

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

sbit RS=P2^0;//液晶數據命令選擇
sbit RW=P2^1;//液晶讀寫選擇
sbit EN=P2^2;//液晶使能端

unsigned char code freq[][2]={ 
  0xD8,0xF7,//00440HZ 1   
  0xBD,0xF8,//00494HZ 2  
  0x87,0xF9,//00554HZ 3  
  0xE4,0xF9,//00587HZ 4    
  0x90,0xFA,//00659HZ 5     
  0x29,0xFB,//00740HZ 6     
  0xB1,0xFB,//00831HZ 7      
  0xEF,0xFB,//00880HZ `1
};

unsigned char Time; 
unsigned char code YINFU[9][1]={{' '},{'1'},{'2'},{'3'},{'4'},{'5'},{'6'},{'7'},{'8'}};
                          //世上只有媽媽好數據表
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,
                     6,2,4,      3,2,2,      5,2,1,    6,2,1,  5,2,2, 3,2,2,  1,2,1,
                     6,1,1,      5,2,1,      3,2,1, 2,2,4,  2,2,3, 3,2,1,    5,2,2,
                     5,2,1,      6,2,1,      3,2,2, 2,2,2,    1,2,4, 5,2,3,  3,2,1,
                     2,2,1,      1,2,1,      6,1,1, 1,2,1,  5,1,6, 0,0,0 
                                      };
                         // 音階頻率表 高八位
unsigned char code FREQH[]={
                         0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 
                         0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
                         0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
                         0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
                               } ;
                         // 音階頻率表 低八位
unsigned char code FREQL[]={
                         0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
                         0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
                         0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 
                         0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
                                };

void Init_Timer0(void);//定時器初始化

//延時函數大約約2*z+5us
void delay2xus(unsigned char z)
{
   while(z--);
}
// 延時函數大約約1ms
void delayms(unsigned char x)
{
   while(x--)
   {
     delay2xus(245);
     delay2xus(245);
   }
}


/*------------------------------------------------
                節拍延時函數
 各調1/4節拍時間:
 調4/4  125ms
 調2/4  250ms
 調3/4  187ms
------------------------------------------------*/
void delayTips(unsigned char t)
{
    unsigned char i;
 for(i=0;i<t;i++)
    {
   delayms(250);
    }
    TR0=0;
 }
//播放音樂的函數
void PlaySong()
{
   TH0=High;//賦值定時器時間,決定頻率
   TL0=Low;
   TR0=1;      //打開定時器
   delayTips(Time); //延時所需要的節拍                      
}

//定時器T0初始化子程序
void Init_Timer0(void)
{
 TMOD |= 0x01;  //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響     
 EA=1;            //總中斷打開
 ET0=1;           //定時器中斷打開
}
//定時器T0中斷子程序
void Timer0_isr(void) interrupt 1 
{
 TH0=High;
 TL0=Low;
 SPK=!SPK;
}
//主函數
void main (void)
{
  unsigned char num,k,i;                 
  Init_Timer0();    //初始化定時器0,主要用于數碼管動態掃描
  SPK=0; //在未按鍵時,喇叭低電平,防止長期高電平損壞喇叭         
  while (1)
  {
   switch(KeyPort)          //對按鍵進行處理
{
case 0xfe:num= 1;break;
case 0xfd:num= 2;break;
case 0xfb:num= 3;break;
case 0xf7:num= 4;break;
case 0xef:num= 5;break;
case 0xdf:num= 6;break;
case 0xbf:num= 7;break;
case 0x7f:num= 8;break;      //分別對應不用的音調
default:num= 0;break;
}
    P2 = KeyPort;
    if(num==0)
    {
       TR0=0;
       SPK=0;   //在未按鍵時,喇叭低電平,防止長期高電平損壞喇叭
 }
    else 
    {
   High=freq[num-1][1];
    Low =freq[num-1][0];
 TR0=1;
 }
   if(playSongKey==0)        //如果播放音樂按鍵被按下
   {
     delayms(10);
     if(playSongKey==0)
     {
       i=0;  
       while(i<100)
   {         
            k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振蕩頻率所需數據
            High=FREQH[k];
            Low=FREQL[k];
            Time=MUSIC[i+2];          //節拍時長
            i=i+3;
if(P1!=0xff)//長按任意8音鍵退出播放
{
               delayms(10);
               if(P1!=0xff)
        i=101;
}
            PlaySong();  
   }
  TR0=0;
     }
   }

  }
}



路過

雞蛋

鮮花

握手

雷人

全部作者的其他最新日志

評論 (0 個評論)

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

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 一区二区高清在线观看 | 久久久久国产精品午夜一区 | 天天操夜夜操 | 天天干国产 | 91干b| 91精品国产麻豆 | 久久久久国产精品午夜一区 | 亚洲国产精品99久久久久久久久 | 欧美8一10sex性hd | 欧美一区二区三区在线播放 | 欧美日韩福利视频 | 国产亚洲精品精品国产亚洲综合 | 新超碰97| 免费黄色在线观看 | 中文字幕 国产 | zzzwww在线看片免费 | 久久久久久99 | 国产91亚洲精品 | 中文字幕第二十页 | 亚洲国产高清在线观看 | 天天干天天玩天天操 | 国产午夜久久久 | 国产三区av | 中文字幕1区 | 亚洲国产精品久久久久婷婷老年 | 国产精品久久久久久久久免费相片 | 91 在线| 91n成人| 黄色毛片在线播放 | 一区二区三区在线 | 欧 | 亚洲精品www | 国产黄色av网站 | 亚洲不卡在线观看 | 日韩在线免费播放 | 久久久久久亚洲国产精品 | 精品久久久久久久久久久久 | 在线一区视频 | 午夜视频在线观看一区二区 | 国产成人久久av免费高清密臂 | 男人的天堂亚洲 | 自拍第1页 |