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(); }
2.电路图