一般超声波模块有4个引脚,使用很方便:
时序:
所以,我们需要测距的话所要做的就是触发Trig,然后用计时器统计Echo的高电平时长,就可以算出距离了:
代码:
#include <reg51.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define BAUD 9600L #define FOSC 22118400L #define CYCLE (12000000.0/FOSC) //周期 us sbit Trig = P2^5; sbit Echo = P2^6; void sendByte(uchar dat) { ES = 0; //关闭中断 SBUF = dat; //写入数据 while(!TI); //等待数据发送结束 TI = 0; //手动置0 ES = 1; //打开中断 } void sleep() { uchar i, j, k; for(i = 0; i < 255; i++) for(j = 0; j < 255; j++) for(k = 0; k < 16; k++); } void writeString(char *str) { while(*str) { sendByte(*str); str++; } } void uartInit() { TMOD = 0x20; //定时器1用于串口 TH1 = TL1 = -(FOSC/12/32/BAUD); //设置装入初值 TR1 = 1; //启动定时器1 SM0 = 0; SM1 = 1; //设置串口为方式一 REN = 1; //接收使能 ES = 1; //打开中断 EA = 1; } float getDist() { uchar i = 100; float dist = 0.0f; uint count = 0; Trig = 1; //打开触发 while(i--); //延时一会儿 TMOD = 0x01; //计时器0方式1 TH0 = TL0 = 0; //装入初值 Trig = 0; //关闭触发 while(!Echo); //测距过程中 TR0 = 1; //打开中断 while(Echo); //等待输出电平结束 TR0 = 0; //关闭中断 count = (TH0 << 8) | TL0; //读取16位计时器里的数字 dist = CYCLE * count * 0.017; //0.034cm/us return dist; } void main() { char buffer[16] = {0}; Trig = 0; Echo = 1; while(1) { sprintf(buffer,"%.2f cm\n",getDist()); uartInit(); writeString(buffer); sleep(); } }
串口输出:
模块连接:
相关推荐
基于51单片机的超声波测距程序,简单实用,直接就可以运行
使用51单片机实现超声波测距,结果用数码管显示
该压缩包内有单片机完整C源代码和大作业文档,并配有演示视频。代码结构层次清晰,可以很快理解整个实现流程,足以应对老师的提问。
基于51单片机的超声波测距模块设计说明.doc
本文介绍与总结基于51单片机的超声波测距模块与L298N电机的控制,本系统仿真可以对SR04超声波传感器模块的仿真,能够将测得的距离进行显示,L298控制小车的实际运动
基于51单片机的超声波测距程序(LCD1602显示)本模块性能稳定,测度距离精确。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,首创无盲区(0cm开始测量),稳定的测距是此产品成功走向市场的有力保障。
单片机采用“铁牛单片机”,超声波测距模块选用“HC-SR04”,程序已通过验证
51单片机驱动超声波模块测距LCD12864显示keil工程文件C源文件,超声波模块TRIG接P1.2,ECHO 接P1.1
该设计使用AT89C51单片机控制超声波脉冲的产生、计时和数据处理,并采用温度补偿的调整,通过四位LED数码管切换显示距离和温度。整个硬件电路由超声波发射电路、超声波接收电路、电源电路、显示电路等模块组成。 该...
程序实现了利用超声波测距。超声波模块的TRIG管脚接在单片机的P20口,ECHO管脚接在单片机的P21口
超声波测距模块 c语言代码 超声波测距模块 c语言代码 超声波测距模块 c语言代码
基于51单片机实现超声波测距设计的目标是开发一个简单而稳定的系统,能够准确测量物体与传感器之间的距离,并将结果以可视化的方式显示出来。硬件设计:硬件设计包括超声波传感器、51单片机、驱动电路和显示模块等。...
51控制超声波测距程序,通过51单片机控制超声波测距模块精准测距
1、HC-SR04超声波测距模块 2、超声波PIC单片机C程序 3、超声波测距51C程序 4、超声波测距LC1602显示 5、超声波测距LCD12864显示 6、超声波测距数码管显示 7、超声波测距串口显示
51单片机项目设计,超声波测距,C语言代码+仿真proteus7.8 注意:超声波模块仿真!超声波模块仿真!超声波模块仿真! 超声波模块原件库是没有的
单片机超声波测距+温度补偿+报警Proteus仿真(keil完整源项目+源c代码+proteus源仿真电路图)
硬件设计主要分为单片机控制、数字测温、数码管显示、超声波模块、串口显示这五个模块。以AT89C52单片机作为核心的处理控制芯片,DS18B20数字测温模块进行温度的测量,数码管可以对当前测量的数值进行显示。选用通用...
正在学习51单片机,想利用HC-SR04超声波模块做作品的同学,可以通过这套代码的理解逐渐对超声波上手