带温度补偿的超声波测距程序.docx

带温度补偿的超声波测距程序.docx

ID:54974541

大小:19.67 KB

页数:10页

时间:2020-04-25

带温度补偿的超声波测距程序.docx_第1页
带温度补偿的超声波测距程序.docx_第2页
带温度补偿的超声波测距程序.docx_第3页
带温度补偿的超声波测距程序.docx_第4页
带温度补偿的超声波测距程序.docx_第5页
资源描述:

《带温度补偿的超声波测距程序.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、/**程序:基于HC-SR04的超声波测距系统*单片机型号:STC90C51612MHz*说明:开始连续进行7次超声波测距,每次测距间隔80ms,*完成后对7次结果排序并将最大的2个数值和最小的2个数值去除,对剩余的*3个数值取平均值。完成后指示灯灭,输出结果到LCD1602上。测量超出范围则发出报警声。*使用两个IO端口控制HC-SR04触发信号输入和回响信号输出,*以及一个T0定时器用于时间计数。*使用DS18B20测量环境温度,声速公式:V=334.1m/s+Temperature*0.61,

2、*单片机晶振为12Mhz(11.953M),计数时为T=1us*计算公式:S=(334.1m/s+Temperature*0.61)*N*T/2,N为计数值=TH0*256+TL0*//*包含头文件*/#include#include#defineDelay4us(){_nop_();_nop_();_nop_();_nop_();}/*宏定义*/#defineucharunsignedchar//无符号8位#defineuintunsignedint//无符

3、号16位#defineulongunsignedlong//无符号32位/*全局变量定义*/sbitBEEP=P1^5;//报警测量超出范围sbitTrig=P3^4;//HC-SR04触发信号输入sbitEcho=P3^2;//HC-SR04回响信号输出floatxdataDistanceValue=0.0;//测量的距离值floatxdataSPEEDSOUND;//声速floatxdataXTALTIME;//单片机计数周期ucharxdatastringBuf[6];//数值转字符串缓冲//

4、LCD1602提示信息ucharcodePrompts[][16]={{"MeasureDistance"},//测量距离{"-OutofRange-"},//超出测量范围{"MAXrange400cm"},//测距最大值400cm{"MINrange2cm"},//测距最小值2cm{""},//清屏};ucharxdataDistanceText[]="Range:";//测量结果字符串ucharxdataTemperatureText[]="Temperature:";//测量温度值/*外部函数

5、声明*/externvoidLCD_Initialize();//LCD初始化externvoidLCD_Display_String(uchar*,uchar);externvoidReadTemperatureFromDS18B20();externintxdataCurTempInteger;voidDelayMS(uintms);//毫秒延时函数voidDelay20us();//20微秒延时函数voidHCSR04_Initialize();//HCSR04初始化floatMeasurin

6、gDistance();//测量距离floatDistanceStatistics();//测距的数值排序求平均voidDisplayDistanceValue(floatdat);//输出距离值到LCD1602上ucharUnsigedIntToString(uintvalue);//将无符号的整数转成字符串,返回字符串长度,不包括''结束符voidBeep(uchartime);//蜂鸣器voidDisplayTemperatureValue();//显示温度值/***测量距离***/flo

7、atMeasuringDistance(){//最大定时时间约65msTH0=0;TL0=0;//生成20us的脉冲宽度的触发信号Trig=1;Delay20us();Trig=0;while(!Echo);//等待回响信号变高电平TR0=1;//启动定时器0while(Echo);//等待回响信号变低电平TR0=0;//关闭定时器0return(SPEEDSOUND*XTALTIME*((float)TH0*256+(float)TL0))/2000;//返回距离值(mm)}/***HCSR04初

8、始化***/voidHCSR04_Initialize(){XTALTIME=12/12;//计算单片机计数周期晶振=12M单位usSPEEDSOUND=334.1+25*0.61;//温度25度时声速的值Trig=0;Echo=0;TMOD=0x01;}/***输出距离值到LCD1602上***/voidDisplayDistanceValue(floatdat){uchari=0,j=0,len;uintvalue;value=(uint)dat;//范围检查大于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。