单片机C语言实现HC-SR04超声波测距程序
#include <reg52.h> #define uint unsigned int #define uchar unsigned char
sbit Trig = P2^0; // Trig引脚连接P2.0 sbit Echo = P2^1; // Echo引脚连接P2.1
uint t; // 定义计时器中断计数器 float distance; // 定义距离变量
void Init_Timer0(); // 初始化计时器0 void Ultrasonic_Ranging(); // 超声波测距函数
void main() { Init_Timer0(); // 初始化计时器0 while(1) { Ultrasonic_Ranging(); // 超声波测距 } }
void Init_Timer0() { TMOD &= 0xF0; // 清零T0模式位 TMOD |= 0x01; // 设定T0为模式1(16位定时器模式) TR0 = 0; // 关闭T0 }
void Ultrasonic_Ranging() { Trig = 1; // 发送高电平 delay_us(10); // 延时10us Trig = 0; // 发送低电平 while(!Echo); // 等待Echo引脚变高 TR0 = 1; // 开启计时器0 while(Echo); // 等待Echo引脚变低 TR0 = 0; // 关闭计时器0 t = TH0 * 256 + TL0; // 计算计时器中断次数 TH0 = 0; // 清零TH0 TL0 = 0; // 清零TL0 distance = t * 1.7 / 100; // 计算距离 }
原文地址: https://www.cveoy.top/t/topic/nLDs 著作权归作者所有。请勿转载和采集!