请你把用单片机蜂鸣器播放几首歌曲的代码给我发一份,邮箱1078760792@qq.com。

如果有按键控制上一首、下一首的C代码更假……... 如果有按键控制上一首、下一首的C代码更假…… 展开
 我来答
apitx
2011-07-10 · TA获得超过553个赞
知道小有建树答主
回答量:819
采纳率:25%
帮助的人:99万
展开全部

main()

{

uint i,j;

TMOD=0x01;

IT0=0;   

do

{

    IE=0x83;

flag=0;

     key=0;

check_lcd();

        KeyScan();

        lcd_busy();

        w_c_add=0x80;

        for(i=0;i<6;i++)

        {

         lcd_busy();

         w_d_add=0x20;

         w_d_add=0x20;

        }

    lcd_show(music_name);

    IE=0x83;          

    do

    {

        j=0;

        while(*(music+j)!=0xff)

       { if(key)break;                         

            k=*(music+j)&0x0f;

            l=*(music+j)>>4;

            sth0=tab[2*l];

            stl0=tab[2*l+1];

            TH0=sth0;

            TL0=stl0;

            TR0=1;

//             TR1=1;

            do

            {

             delay_music();

             flag++;

            }while(flag<k);

            flag=0;         

            j++;                                                                               

             }

         }while(!key);                      

  }while(1);

}

void delay_music(void)

{

uint count=150;

unsigned int i,j;

for(i=0;i<count;i++)

for(j=0;j<120;j++);

}

void delay(int i)

{

    int j,k;

for(j=0;j<i;j++)

{

    k=0x0f;

while(k--);

}

}

void KeyScan(void)

{

    uchar k;

    while(1)

    {

    P3&=0xfe;

    delay(1);

      k=P1;

    if(k!=0xff)

   {

       delay(10);

       P3&=0xfe;

       delay(1);

       k=P1;

       while((P1&0xff)!=0xff);

       if(k!=0xff)

      {

          switch(k)

     {

          case 0xfe:music_name=music_name1;music=music1;break;

      case 0xfd:music_name=music_name2;music=music2;break;

      case 0xfb:music_name=music_name3;music=music3;break;

      case 0xf7:music_name=music_name4;music=music4;break;

      case 0xef:music_name=music_name5;music=music5;break;

      case 0xdf:music_name=music_name6;music=music6;break;

      case 0xbf:music_name=music_name7;music=music7;break;

      case 0x7f:music_name=music_name8;music=music8;break;

      }

   return;

   }

   

    }

    P3|=0x01;

    delay(1);

    k=P1;

    if(k!=0xff)

   {

       delay(10);

       P3|=0x01;

       delay(1);

       k=P1;

       while((P1&0xff)!=0xff);

       if(k!=0xff)

      {

          switch(k)

     {

          case 0xfe:music_name=music_name9;music=music9;break;

         case 0xfd:music_name=music_name10;music=music10;break;

            

      }

      return ;

      }

     

    }

    }

}

void timer0(void) interrupt 1 using 1

{   

TL0=stl0;

TH0=sth0;

Speaker=!Speaker;

}

void int1_serve(void) interrupt 0 using 3

{

EA=0;

key=1;

    Speaker=1;

}

追问
非常感谢!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宿兴电子
2024-11-28 广告
联系我们蜂鸣器的种类规格繁多,需先知道几个参数 ( 电压,电流,驱动方式,尺寸,连接/固定方式),当然更重要的是,想要获的声音 (音压大小,频率高低).工作电压:电磁式蜂鸣器,从1.5到24V, 压电式的从3V到220V都是可行的,但一般压... 点击进入详情页
本回答由宿兴电子提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式