原创 51 音乐按键 实验(十一)

2008-5-12 10:57 4222 6 6 分类: MCU/ 嵌入式

点击下载


这个实验实现按下不同按键,蜂鸣器发出不同音调的声音.详情见附件.


平台:FDR51开发板


代码:


#include<AT89X52.h>
#include"key.h"               
sbit beep="P3"^7;//IO口宏定义区   
unsigned char Count="0";//全局变量 
/*********************************************************************
                      定时器0中断初始化函数
**********************************************************************/
  void Time0_Init()
{
 TMOD = 0x01;
 IE   = 0x82;
 TH0  = 0xD8;
 TL0  = 0xEF;  //12MZ晶振,10ms

/*************************************************************************
                      定时器0中断处理函数
**************************************************************************/
void Time0_Int() interrupt 1
{
 TH0 = 0xD8;
 TL0 = 0xEF;
 Count++;   //长度加1
}
/*********************************************************************************
                          延时函数
**********************************************************************************/


void Delay_xMs(unsigned char x)
{
 unsigned char i,j;
 for( i =0;i < x;i++ )for( j =0;j<3;j++ );
}  
/*********************************************************************************
                          放音子函数
    参数:frequence 决定音乐声调的变量
          length  决定某个音调播放的时间
*********************************************************************************/
void beeping(unsigned char frequence,unsigned char length)

 TR0=1;
 while(1)
 { 
  beep = !beep;                                              
  Delay_xMs(frequence);
  if ( length == Count )
  {
   Count = 0;
   break;
  }
 }
 TR0=0;
 beep=1;     //关蜂鸣器

/****************************************************
               程序主函数
*****************************************************/
void main()
{
 unsigned char k="0";
 Time0_Init();             //初始化定时器0
 while(1)
 { 
  k=getch();
  if(k!=255)beeping(k,20);
 } 
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条