51单片机串口控制hc-sr04超声波测距模块的代码
时间: 2024-04-30 16:21:27 浏览: 110
51单片机超声波测距,HC-SR04,串口上位机显示C语言软件源代码++proteus仿真.rar
5星 · 资源好评率100%
以下是51单片机串口控制hc-sr04超声波测距模块的代码:
```c
#include <reg52.h>
#include <stdio.h>
#define TRIG P1_0
#define ECHO P1_1
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
void delay(unsigned int t)
{
while(t--);
}
void Display(unsigned char dat)
{
LSA=1;
LSB=1;
LSC=1;
switch(dat)
{
case 0:LSA=0;LSB=0;LSC=0;break;
case 1:LSA=1;LSB=0;LSC=0;break;
case 2:LSA=0;LSB=1;LSC=0;break;
case 3:LSA=1;LSB=1;LSC=0;break;
case 4:LSA=0;LSB=0;LSC=1;break;
case 5:LSA=1;LSB=0;LSC=1;break;
case 6:LSA=0;LSB=1;LSC=1;break;
case 7:LSA=1;LSB=1;LSC=1;break;
}
}
void init()
{
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
SCON=0x50;
EA=1;
ES=1;
}
void main()
{
unsigned char distance;
unsigned char dis_high,dis_low;
unsigned int dis;
init();
while(1)
{
TRIG=1;
delay(10);
TRIG=0;
while(!ECHO);
TH1=TL1=0;
while(ECHO);
dis_high=TH1;
dis_low=TL1;
dis=(dis_high<<8)|dis_low;
distance=dis/58.0;
printf("Distance:%dcm\n",distance);
Display(distance/100);
delay(1000);
Display(distance%100/10);
delay(1000);
Display(distance%10);
delay(1000);
}
}
void ser() interrupt 4
{
if(RI)
{
RI=0;
}
if(TI)
{
TI=0;
}
}
```
其中,TRIG和ECHO分别连接到51单片机的P1.0和P1.1引脚,LSA、LSB、LSC连接到51单片机的P2.2、P2.3和P2.4引脚,用于控制数码管的显示。在代码中,使用串口输出距离值,并通过数码管显示距离值的百位、十位和个位。
阅读全文