void clock_l()//下限报警函数距离超近声音超快
{
static uchar value,value1;
if(distance <= set_d)
{
value ++;//消除实际距离在设定距离左右变化时的干扰
if(value >= 2)
{
value1 ++;
if(value1 >= distance * 2)//这里是控制报警声越来越快
{
value1 = 0;
beep = ~beep;//蜂鸣器报警
}
}
}
else
{
value = 0;
beep = 1;
}
}
void main()
{
init_1602();//1602初始化
beep = 0;//开机蜂鸣器响一下
delay_1ms(200);
P0 = P1 = P2 = P3 = 0xff;//单片机IO口初始化为1
send_wave();//测距离函数
time_init();
init_eeprom();//读eepom数据
write_sfm3(2,7,set_d);//显示设置的距离
send_wave();//测距离函数
send_wave();//测距离函数
while(1)
{
if(flag_300ms == 1)
{
flag_300ms = 0;
if(beep == 1)
send_wave();//测距离函数
if(menu_1 == 0)
write_sfm3(1,7,distance);//显示距离
}
key();//按键函数
if(key_can < 10)
{
key_with();//按键处理函数
}
}
}
void time1_int() interrupt 3
{
static uchar value;//定时10ms中断一次
TH1 = 0xf8;
TL1 = 0x30;//2ms
value++;
clock_l();//下限报警函数距离超近声音超快
if(value >= 150)
{
value = 0;
flag_300ms = 1;
}
}