51单片机(按键声光报警实验)代码电路图
一、蜂鸣器原理
编写程序,主程序控制发光二极管L1~L4循环轮流闪烁,即同一时刻只有一个LED灯亮。按下SKEY1按键触发外部中断,中断服务程序控制L5~L8同时亮灭闪烁3次后熄灭,及蜂鸣器响3次后停止发声。
二、具体实现(响3次结束)
1.代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint i;
sbit FMQ=P1^4;//蜂鸣器FMQ为P1.4口
void delay()
{
uint i,j;
for(i=0;i<1000;i++)
for(j=0;j<50;j++);
}
void intFun0() interrupt 0
{
EX0=1;//禁止外部中断中断
delay();
EX0=0;//允许外部中断中断
for(i=0;i<3;i++)
{
P2=0x0f;//P2口 0000 1111
FMQ=1;//蜂鸣器打开
delay();
P2=0xff;//P2口 1111 1111
FMQ=0;//蜂鸣器关闭
delay();
}
}
void main()
{
FMQ=0;//蜂鸣器初始化(关闭)
EA=1;//总开关打开
EX0=1;//允许外部中断中断
IT0=1;//INT0为负跳变触发方式(INT0触发方式控制位)
P2=0xfe;//端口P2输出: 引脚0号设置低电平,其余设置高电平 1111 1110
delay();
P2=0xfd;//端口P2输出: 引脚1号设置低电平,其余设置高电平 1111 1101
delay();
P2=0xfb;//端口P2输出: 引脚2号设置低电平,其余设置高电平 1111 1011
delay();
P2=0xf7;//端口P2输出: 引脚3号设置低电平,其余设置高电平 1111 0111
delay();
}