硬件设计

上一篇咱们说了基于液位传感器的优缺点,其中缺点就是测量距离有限,这里就引入了超声波的测距方式,该方式测量距离就大大增加。

超声波测距系统原理
在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,被测物距离越大,脉冲宽度越大,输出脉冲个数与被测距离成正比。超声测距大致有以下方法:① 取输出脉冲的平均值电压,该电压 (其幅值基本固定 )与距离成正比,测量电压即可测得距离;② 测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔 t,故被测距离为 S=1/2vt。本测量电路采用第二种方案。由于超声波的声速与温度有关,如果温度变化不大,则可认为声速基本不变 。如果测距精度要求很高,则应通过温度补偿的方法加以校正。超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。
超声波测距的算法设计: 超声波在空气中传播速度为每秒钟340米(15℃时)。X2是声波返回的时刻,X1是声波发声的时刻,X2-X1得出的是一个时间差的绝对值,假定X2-X1=0.03S,则有340m×0.03S=10.2m。由于在这10.2m的时间里,超声波发出到遇到返射物返回的距离如下:

仿真图:
LCD1602作为显示器,三个按键作为设置和切换功能,继电器模拟水泵的控制。

程序设计


#include<reg51.h>
#include<intrins.h>
#include"lcd.h"
#include"key.h"sbit Trig = P2^1;
sbit Echo = P2^0;sbit K0=P2^2;
sbit K1=P2^3;
sbit beep=P1^0;unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.','-','M'};unsigned int  time=0;unsigned long S=0;bit      flag =0;bit       min = 0;int      cont;unsigned char disbuff[4]    ={ 0,0,0,0,};
/*******************************************************************************
* 函 数 名         : main
* 函数功能         : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Conut(void){time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.7)/100+1;     //算出来是CMif((S>=700)||flag==1) //超出测量范围显示“-”{   flag=0;t[1][6]=ASCII[11];t[1][8]=ASCII[11];t[1][9]=ASCII[11];}else{disbuff[0]=S%1000/100;disbuff[1]=S%1000%100/10;disbuff[2]=S%1000%10 %10;t[1][6]=ASCII[disbuff[0]];t[1][8]=ASCII[disbuff[1]];t[1][9]=ASCII[disbuff[2]];}display(t[0],t[1]);if(min){cont++;if(cont==5){cont=0;min=0;beep=0;}}}void zd0() interrupt 1          //T0中断用来计数器溢出,超过测距范围{flag=1;                           //中断溢出标志}void  StartModule()                //启动模块{Trig=1;                                 //启动一次模块_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_();Trig=0;}void delayms(unsigned int ms)
{unsigned char i=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}
}void main(void)
{TMOD=0x01;           //设T0为方式1,GATE=1;TH0=0;TL0=0;          ET0=1;             //允许T0中断EA=1;              //开启总中断  InitLcd1602();beep=0;K0=1;K1=1;min=0;while(1){while(KEY3){StartModule();while(!Echo);       //当RX为零时等待TR0=1;               //开启计数while(Echo);      //当RX为1计数并等待TR0=0;             //关闭计数Conut();          //计算                        delayms(20);if(S>MAX||S<LIN){            break;}}if(S<LIN){beep=1;K0=0;K1=1;min=1;while(KEY3){StartModule();while(!Echo);          //当RX为零时等待TR0=1;               //开启计数while(Echo);          //当RX为1计数并等待TR0=0;             //关闭计数Conut();              //计算            delayms(20);if(S>MAX){              break;}}}if(S>MAX){beep=1;K0=1;K1=1;min=1;while(KEY3){StartModule();while(!Echo);         //当RX为零时等待TR0=1;               //开启计数while(Echo);          //当RX为1计数并等待TR0=0;             //关闭计数Conut();              //计算            delayms(20);if(S<MAX){              break;}}}if(!KEY3){delay(1000);if(!KEY3){select();}}}
}

附:http://www.jh-tec.cn/archives/7139

基于51单片机的超声波水位液位监测仿真程序设计相关推荐

  1. 【030】基于51单片机的超声波液位测距报警系统(带温度显示)Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计一份: (2).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计keli ...

  2. 水塔水位测量c语言程序,基于51单片机水塔水箱水位检测系统控制器设计(附程序代码)...

    基于51单片机水塔水箱水位检测系统控制器设计(附程序代码)(任务书,开题报告,外文翻译,论文18000字) 摘  要 为了能实现水位监测与控制,以STC89C52作为核心控制芯片,进行了水位检测系统控 ...

  3. 【031】基于51单片机的超声波倒车雷达系统(带温度显示补偿)Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计一份: (2).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计 ...

  4. 基于51单片机HC-SR04超声波测距带温度补偿

    基于51单片机HC-SR04超声波测距带温度补偿 1 开发环境 2 功能说明介绍 3 程序 3.1 工程文件 3.2 代码 4 原理图 5 元器件清单 6 PCB 7全部资料 1 开发环境 仿真图:p ...

  5. 基于51单片机的超声波避障小车设计(含Proteus仿真)

    超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料. 这次主要给大家分享其Proteus仿真部分. 涉及到的模块有:超声波模块(hc-sr ...

  6. 【011】基于51单片机的低频信号发生proteus仿真与实物设计

    ​一.资料内容 (1).基于51单片机的低频信号发生proteus仿真设计一份: (2).基于51单片机的低频信号发生proteus仿真设计keli源代码一份: (3).基于51单片机的低频信号发生A ...

  7. 基于51单片机PT100热电偶AD转换protues仿真设计

    基于51单片机PT100热电偶AD转换protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0023 这里写 ...

  8. 基于51单片机的LCD1602电子钟闹钟proteus仿真设计

    本设计是基于51单片机的LCD1602电子钟闹钟proteus仿真设计 源码+仿真+原理图+器件清单 仿真软件版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编 ...

  9. 【004】基于51单片机的音乐播放器proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的音乐播放器proteus仿真设计一份: (2).基于51单片机的音乐播放器proteus仿真设计keli源代码一份: (3).基于51单片机的音 ...

最新文章

  1. 【Linux入门到精通系列讲解】Ubuntu下使用gcc编译并运行C程序
  2. css实现图片虚化_CSS中实现图片自适应的方法
  3. css中position属性(absolute/relative/static/fixed)
  4. Pixhawk之姿态控制篇
  5. 经典面试|为何Kafka这么快?
  6. LeetCode算法总结-回溯法与深度优先搜索
  7. Android之Activity框架
  8. python计算排队时间_python计算排队时间_Python(pdb)-排队执行命令
  9. 【三维深度学习】多视角场景点云重建模型PointMVS
  10. 杭电1091题c语言答案,杭电题目acm部分答案.doc
  11. python server agent_Python实现Windows监控agent(上)
  12. 中国地图里暗藏的天机
  13. wps插入公式与文字不平行问题解决办法
  14. Java Swing绘制箭头
  15. Android高手秘笈之View的挂载
  16. EI索引!海口举办!ICIG 2021喊你来投稿啦
  17. 计算机教子好考吗,考进985的孩子:父母都是这样教育孩子,这些方法比刷题管用...
  18. 云服务 saas_SaaS和云服务策划
  19. python 计算快递费
  20. 【matlab系列汇总】matlab学习实战快速进阶之路(持续更新)

热门文章

  1. ccc-台大林轩田机器学习基石-hw1
  2. 【request库详解】
  3. php开发团购,php 团购倒计时 代码
  4. 核桃编程学python吗_想了解核桃编程咋样?好不好??
  5. [国产PLC]耐特品质PLC在全自动定位圆瓶贴标机中怎么运用
  6. cefsharp监控鼠标点击及键盘按键事件,并定义“热键”源码
  7. 计算机缺少xlive dll,win10专业版64位玩游戏提示计算机中缺少xlive.dll
  8. 做手机 UI 如何根据手机分辨率在 PS 建画布?
  9. oneway,twoway
  10. 基于Python+C++的二维碎片图像拼接复原系统