这个实验实现按下不同按键,蜂鸣器发出不同音调的声音.详情见附件.
平台: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);
}
}
文章评论(0条评论)
登录后参与讨论