• 專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    51單片機C語言演奏“童話”

    作者:浪子   來源:浪子   點擊數:  更新時間:2014年06月10日   【字體:

     #include<reg51.h>

     
    sbit  sound=P2^4;
    sbit  led1=P1^6;
    sbit  led2=P1^7;
    unsigned char h,l,count,length;
    unsigned int t,f,i,j;
    unsigned int  scale[22]={100,262,294,330,349,392,440,494,523,578,659,698,784,880,988,1046,1175,1318,1397,1568,1760,1976};
    bit flag=1;
    void setthl(unsigned int p)
    {
    t=p*2;
    f=1000000/t;
    h=(65536-f)/256;
    l=(65536-f)%256;
    TH1=h;
    TL1=l;
    flag=1;
    TR1=1;
    }
    time1() interrupt 3 using 1
      {
        TH1=h;
        TL1=l;
        sound=~sound;
       }
      
    void timer0(void) interrupt 1
    {
     TH0=0x9c;   
     TL0=0x60;
     count++;
     if (count==length)
     {
          flag=0;
          count=0;
     }
    }
     
    delay()
    {
       length=10;
       flag=1;
       TR1=0;
       while(flag);
       TR1=1;
     }
     
    note(unsigned char n,unsigned char len)
    {
       setthl(scale[n]);
       length=len;
       while (flag);
       led1=!led1;
       led2=!led2;
     
    }
     
    song()
    {
       note(5,15);
       note(12,15);
       note(11,15);
       note(10,30);
       note(10,15);note(11,8);note(10,38);
      
       note(10,15);note(11,15);note(10,15);note(11,15);note(10,15);note(9,8);
       note(8,8); delay(); 
      
       note(8,15);note(10,15);note(12,15);note(13,30);note(13,15);note(13,8);note(12,23);note(9,15);note(9,15);note(11,8);note(10,38);
       delay();
       note(8,15);note(10,15);note(12,15);note(13,30);note(13,15);note(13,8);note(12,23);note(9,15);
       note(9,15);note(11,15);note(10,15);note(11,15);note(10,15);note(9,8);note(8,38);  
       note(9,15);note(9,8);note(10,7);note(6,30);note(6,15);note(8,15);note(8,15);note(7,15);note(7,30);note(8,30);(8,30);
    }
    Delay(int i)
      { int j;
       for(;i>0;i--)
       {
         for(j=i;j>0;j--);
        }
      }
    main()
    {while(1)
    {count=0,length=0;
    TMOD=0x11;
    TH0=0x3c;
    TL0=0xb0;
    EA=1;
    ET1=1;
    ET0=1;
    TR1=1;
    TR0=1;
        led1=!led1;  
       song();
       sound=1;
       EA=0;   
       Delay(500);
        }
     
    }
    關閉窗口

    相關文章

    亚洲一区二区制服在线|在绩专区欧美自拍日韩|青春娱乐网97超碰人人射|在线观看国产网址你懂的