4个开关接到P2.0-P2.3
LED接到P0.0-P0.3
喇叭接到P1.0
参考程序(实验板运行正常)
/*****************************
名称 : 单片机警报系统(原创)
晶振 : 6MHz
作者 : dsu5566
日期 : 2011年11月15日
备注 : 转载请注明出处
*****************************/
#include <REG51.H>
#define uint unsigned int
#define uchar unsigned char
sbit BP=P1^0; //定义喇叭
sbit K1=P2^0; //定义按键
sbit K2=P2^1;
sbit K3=P2^2;
sbit K4=P2^3;
sbit LED1=P0^0; //定义指示灯
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
void delay(uchar i) //1ms延时程序
{ uint x;
for(;i>0;i--)
for(x=124;x>0;x--);
}
void initTimer(void) //定时器初始化
{
TMOD=0x1;
TH0=0xFF;
TL0=0x6;
}
void timer0(void) interrupt 1//定时器T0
{
TH0=0xFF;
TL0=0x6;
BP=~BP; //1KHz方波信号
}
void main(void)//主程序
{
initTimer();
ET0=1;
EA=1;
while(1)
{
if(P2!=0xFF) //检测按键
{
delay(10); //按键消抖
if(P2!=0xFF)
{
P0=P2; //LED显示按键状态
TR0=1; //开T0发出警报声
while(P2!=0xFF);//等待按键放开
TR0=0; //关定时器
BP=1; //关报警声
P0=0xFF;//关LED显示
}
}
}
}
电路系统