本设计由STC89C52单片机电路+LCD1602液晶显示电路+超声波模块检测电路+蜂鸣器报警电路+按键电路+电源电路组成。
1、LCD1602实时显示距离。
2、通过按键可以设置距离阈值,如果当前距离超过阈值,蜂鸣器报警,否则,蜂鸣器不报警。
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include "1602.h"
#include "delay.h"
#include "math.h"
sbit Echo=P1^1; //超声波引脚定义
sbit Trip=P1^0;
sbit buzzer=P1^5; //引脚定义
sbit key1=P1^4;
sbit key2=P1^3;
char tab[16]; //显示数组
float JuLi; //距离
long JlCoun=0; //定时器计数
unsigned int setNum = 500 ;//设置值
void main (void)
{
TMOD|=0x01; //设T0为方式1,GATE=1;
TH0=0;
TL0=0;
ET0=1; //允许T0中断
EA=1; //开启总中断
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear();
while (1) //主循环
{
JuLi=(float)(JlCoun*17)/100.0*1.08; //算出来是mm
if((JlCoun>0)&&(JuLi>0))
{
// sprintf(dis0,"%05d %05d",(unsigned int)JlCoun,(unsigned int)JuLi);//打印温度值
sprintf(tab,"JuLi:%04dmm ",(unsigned int)JuLi);//更新显示
DispStr(0,0,(unsigned char *)tab);//打印显
//不报警
}
if(key1 == 0)
{
if(setNum<5000) setNum++;
}
DelayMs(100);
}
}
资料下载地址