标题:
单片机门铃程序设计 按键按下触发蜂鸣器门铃“叮咚”响
[打印本页]
作者:
yangdragon
时间:
2019-3-9 23:14
标题:
单片机门铃程序设计 按键按下触发蜂鸣器门铃“叮咚”响
/* 下载程序后按键K1按下就会触发蜂鸣器门铃“叮咚”响 */
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;
sbit k1=P3^1;
u8 ding,dong,flag,stop;
u16 n;
void delay(u16 i)
{
while(i--);
}
void time0init() //定时器0初始化
{
TMOD=0X01; //定时器0 方式1
TH0=0Xff;
TL0=0X06; //定时250us
// TR0=1;
EA=1;
ET0=1;
}
void biaohaoinit() //各个标号初始化
{
ding=0; //叮声音 计数标志
dong=0; //咚声音 计数标志
n=0; //定时0.5s标志
flag=0;
stop=0; //结束标志
}
void main()
{
time0init();
biaohaoinit();
while(1)
{
if(k1==0) //判断按键是否按下
{
delay(1000); //消抖
if(k1==0)
{
TR0=1; //打开定时器0
while(!stop);
}
}
}
}
void time0() interrupt 1
{
n++;
TH0=0Xff;
TL0=0X06; //250us
if(n==2000) //定时0.5s 叮响0.5秒,咚响0.5秒
{
n=0;
if(flag==0)
{
flag=~flag;
}
else
{
flag=0;
stop=1;
TR0=0; //关闭定时器0
}
}
if(flag==0)
{ //通过改变定时计数时间可以改变门铃的声音
ding++; //叮
if(ding==1)
{
ding=0;
beep=~beep;
}
}
else
{
dong++;
if(dong==2) //咚
{
dong=0;
beep=~beep;
}
}
}
作者:
lllyxr
时间:
2019-12-21 15:49
你好我想请问一下从这一步开始是什么意思啊 n++; TH0=0Xff; TL0=0X06; //250us if(n==2000) //定时0.5s 叮响0.5秒,咚响0.5秒 { n=0; if(flag==0) { flag=~flag; } else { flag=0; stop=1; TR0=0; //关闭定时器0 } } if(flag==0) { //通过改变定时计数时间可以改变门铃的声音 ding++; //叮 if(ding==1) { ding=0; beep=~beep; } } else { dong++; if(dong==2) //咚 { dong=0; beep=~beep; } } }
作者:
噢耶叶叶
时间:
2020-1-4 08:07
标志位有点不明白。大神可以请教下吗
作者:
ddddddddn
时间:
2020-5-23 10:48
你好,请问这个程序有proteus仿真图吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1