- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机按键控制蜂鸣器发声程序
#includereg52.h
typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 Count,i;
sbit Speak =P1^2; //蜂鸣器器控制脚
sbit key1 =P3^2;//按键控制引脚
sbit key2 =P3^3;
sbit key3 =P3^4;
/*以下数组是音符编码*/
uint8 code SONG[] ={ 0xff,0x39,0x30,0x33,0x30,0xff,0x30,0x30,0x00,};
void Time0_Init()//定时器T0方式1,定时10ms
{
TMOD = 0x01;
IE = 0x82;
TH0 = 0xDC;
TL0 = 0x00;
}
void Time0_Int() interrupt 1
{
TH0 = 0xDC;
TL0 = 0x00;
Count++;
}
void delay (uint8 k)//按键防抖延时
{
uint8 j;
while((k--)!=0)
{
for(j=0;j125;j++)
{;}
}
}
void Delay_xMs(uint8 x)//发声延时
{
uint8 i,j;
for(i=0; ix; i++)
{
for(j=0; j3; j++);
}
}
void Play_Song(uint8 i)//蜂鸣器发声函数
{
uint8 Temp1,Temp2;
uint8 Addr;
Count = 0; //中断计数器清0
Addr = i *3;
while(1)
{
Temp1 = SONG[Addr++];
if (Temp1 == 0xFF) //休止符
{
TR0 = 0;
Delay_xMs(100);
}
else if (Temp1 == 0x00) //歌曲结束符
{
return;
}
else
{
Temp2 = SONG[Addr++];
TR0 = 1;
while(1)
{
Speak = ~Speak;
Delay_xMs(Temp1);
if(Temp2 == Count)
{
Count = 0;
break;
}
}
}
}
}
void keyscan (void)//按键切换声音函数
{
if(key1==0)
{
delay(10);
if(key1==0)
{
i=0;
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
i=1;
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
i=2;
}
}
}
void Main()
{
Time0_Init();//定时器0中断初始化
while(1)
{
keyscan ();
Play_Song(i);
}
}
- 软件下载与安装、电脑疑难问题解决、office软件处理 + 关注
-
实名认证服务提供商
专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!
文档评论(0)