立即注册
登录
返回首页
uid:249645的个人空间
空间首页
主题
个人资料
论坛
问答区
单片机教程
单片机DIY
电子DIY
帮助
我的空间
好友
帖子
收藏
道具
勋章
任务
淘帖
群组
排行榜
日志
电子密码锁
已有 403 次阅读
2017-11-15 14:32
电子密码锁当密码输入正确,蜂鸣器就会响很长的一段音乐,请问如何缩短这个音乐到几秒。程序如下
#include<reg52.h>
#include<sounder.h>
#include<lcd1602.h>
#include<music.h>
uchar Count; //中断计数音符
void delay_us(uchar x) //延时微秒级
{
while(--x);
}
void bell()
{
uchar n,m;
for(m=50;m>0;m--)
{
for(n=200;n>0;n--)
{
beep=~beep;
delay_us(1000);
}
}
beep=0;
delayms(100);
}
void Time0_Init()
{
TMOD = 0x01;
IE = 0x82;
TH0 = 0xD8;
TL0 = 0xEF;//12MZ晶振,10ms
}
void Time0_Int() interrupt 1
{
TH0 = 0xD8;
TL0 = 0xEF;
Count++;//长度加1
}
/*************************************************
功能:1MS延时子程序
****************************************************/
void Delay_xMs(unsigned int x)
{
unsigned int i,j;
for( i =0;i < x;i++ )
{
for( j =0;j<3;j++ );
}
}
/*******************************************************
功能:歌曲播放子程序i为播放哪一段曲目
*********************************************************/
void Play_Song(unsigned char i)
{
unsigned char Temp1,Temp2;
unsigned int Addr;
Count = 0;//中断计数器清0
Addr = i * 217;
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)
{
beep = ~beep;
Delay_xMs(Temp1);
if ( Temp2 == Count )
{
Count = 0;
break;
}
}
}
}
}
路过
鸡蛋
鲜花
握手
雷人
收藏
邀请
举报
全部
作者的其他最新日志
•
单片机串行口与PC机通讯实验
•
51想问一下找工作好找吗?
评论 (
0
个评论)
uid:249645
加为好友
打个招呼
发送消息
手机版
|
小黑屋
|
51黑电子论坛
|
管理员QQ:125739409;技术交流QQ群281945664
Powered by
单片机教程网
返回顶部