52单片机超声波测距用lcd1602显示程序
时间: 2023-07-26 16:03:25 浏览: 40
这是一个使用STC89C52单片机和HC-SR04超声波传感器测距,并使用LCD1602显示距离的程序:
```c
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P1^2;
sbit TRIG=P3^0;
sbit ECHO=P3^1;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void send_command(uchar command)
{
RS=0;
RW=0;
P2=command;
E=1;
_nop_();
_nop_();
_nop_();
E=0;
}
void send_data(uchar data)
{
RS=1;
RW=0;
P2=data;
E=1;
_nop_();
_nop_();
_nop_();
E=0;
}
void init()
{
send_command(0x38); //8位数据,5x7点阵
send_command(0x0c); //显示器开,光标关闭
send_command(0x06); //文字不动,地址自动加1
send_command(0x01); //清屏
}
void main()
{
uchar distance;
init();
while(1)
{
TRIG=1;
delay(10);
TRIG=0;
while(ECHO==0);
while(ECHO==1)
{
distance++;
delay(1);
}
distance=distance*0.17; //计算距离
send_command(0x80); //光标移动到第一行第一列
send_data('D');
send_data('i');
send_data('s');
send_data('t');
send_data(':');
send_data(distance/100+'0'); //显示百位数
send_data(distance%100/10+'0'); //显示十位数
send_data(distance%10+'0'); //显示个位数
delay(500); //延时0.5秒
send_command(0x01); //清屏
distance=0; //距离清零
}
}
```
请注意,这只是一个简单的程序示例,可能需要根据您的具体硬件配置进行修改和适应。