![在这里插入图片描述](https://img-blog.csdnimg.cn/4196ddc0131c428784493dc10fbee76a.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAWXVsaW5femh1YW5n,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
部分核心代码
#include "reg52.h"
#include "delay.h"
#include "lcd1602.h"
sbit Key1 = P0^0;
sbit Key2 = P0^1;
sbit Key3 = P0^2;
sbit Key4 = P1^2;
sbit Key5 = P0^4;
sbit LED = P1^1;
sbit BEEP= P1^0;
sbit Echo1 = P1^4;
sbit Trig1 = P1^3;
sbit Echo2 = P1^5;
sbit Trig2 = P1^6;
u16 time=0,S1=0,S2=0;
float V=346.0;
bit Run_Flag=0;
bit Set_Flag=0;
int Anquanjuli=50;
void Key();
void Celiang();
void Display();
void Alarm();
void main()
{
TMOD=0x01;
TH0=0;
TL0=0;
ET0=1;
TR0=0;
EA=1;
Trig2 = 0;
Trig1 = 0;
LCD_Init();
while(1)
{
Key();
Celiang();
Display();
Alarm();
}
}
void Alarm()
{
if(((S1<=Anquanjuli)||(S2<=Anquanjuli))&&(Run_Flag==1))
{
LED=1;
BEEP=0;
delay_ms(200);
}
else
{
LED=0;
BEEP=1;
}
}
void Display()
{
if(Set_Flag==0)
{
LCD_Display_Num(1,7,S1%1000/100);
LCD_Display_Num(1,8,S1%100/10);
LCD_Display_Num(1,9,S1%10);
LCD_Display_Num(2,7,S2%1000/100);
LCD_Display_Num(2,8,S2%100/10);
LCD_Display_Num(2,9,S2%10);
}
else
{
LCD_Display_Num(1,11,Anquanjuli%1000/100);
LCD_Display_Num(1,12,Anquanjuli%100/10);
LCD_Display_Num(1,13,Anquanjuli%10);
}
}
void Celiang()
{
if(Run_Flag==1)
{
Trig1=1;
Delayus(15);
Trig1=0;
while(!Echo1);
TR0=1;
while(Echo1);
TR0=0;
time=TH0*256+TL0;
if(time>=60000) time=0;
TH0=0;TL0=0;
S1=(u16)(time*V/20000);
delay_ms(200);
Trig2=1;
Delayus(15);
Trig2=0;
while(!Echo2);
TR0=1;
while(Echo2);
TR0=0;
time=TH0*256+TL0;
if(time>=60000) time=0;
TH0=0;TL0=0;
S2=(u16)(time*V/20000);
delay_ms(200);
}
}
void Key()
{
u8 i;
if((Key1==0)&&(Set_Flag==0))
{
delay_ms(10);
if(Key1==0) Run_Flag=1;
while(Key1==0);
}
if(Key2==0)
{
delay_ms(10);
if(Key2==0)
{
Run_Flag=0;
S1=0;S2=0;
}
while(Key2==0);
}
if((Key3==0)&&(Run_Flag==0))
{
delay_ms(10);
if(Key3==0)
{
Set_Flag=~Set_Flag;
if(Set_Flag==0)
{
LCD_Write_Cmd(0x80);
for(i=0;i<16;i++)
LCD_Write_Data(str1[i]);
LCD_Write_Cmd(0xc0);
for(i=0;i<16;i++)
LCD_Write_Data(str2[i]);
}
else
{
PutString(1,1,"Safe_Dista: cm");
PutString(2,1," ");
}
}
while(Key3==0);
}
if((Key4==0)&&(Set_Flag==1))
{
delay_ms(10);
if(Key4==0)
{
if(++Anquanjuli>=200) Anquanjuli=200;
}
delay_ms(200);
}
if((Key5==0)&&(Set_Flag==1))
{
delay_ms(10);
if(Key5==0)
{
if((Anquanjuli--)<=0) Anquanjuli=0;
}
delay_ms(200);
}
}
硬件电路图
![在这里插入图片描述](https://img-blog.csdnimg.cn/452b47d3a7a546ad8cd67baa906d94ea.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAWXVsaW5femh1YW5n,size_20,color_FFFFFF,t_70,g_se,x_16)