本文主要是介绍单片机设计_超声波液位测量系统(AT89C51 DS18B20),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
想要更多项目私wo!!!
一、电路设计
超声波测距的基本原理和系统框图,给出了超声波发射和接收电路,通过盲区的消除以及环境温度的采样,提高了测距的精确度。利用超声波传输中距离与时间的关系,采用8051单片机进行控制及数据处理,设计出了能精确测量两点间距离的超声波液位检测系统。系统主要由超声波发射器电路、超声波接收器电路、单片机控制电路、环境温度检测电路及显示电路构成。利用所设计出的超声波液位检测系统,对液面进行了测试,采集当时的环境温度获得精确的速度,计算出液面距离。此系统具有易控制、工作可靠、测量精度高的优点,可实时检测液位。
二、运行效果图
三、部分代码
include <reg52.h>
#include <intrins.h>
#include "BJ_Key.h" //±¨¾¯°´¼ü
#include "display.h" //ÏÔʾͷº¯Êý
#include "ultrasonic_wave.h"//³¬Éù²¨Í·º¯Êý
#include "DS18B20.h" //ζȴ«¸ÐÆ÷Í·º¯Êý//º¯ÊýÉùÃ÷
void delayms(uint ms);
//Ö÷º¯Êý
void main()
{Init_ultrasonic_wave();//ÆÁÄ»³õʼ»¯Init1602();//ζȳõʼ»¯tmpchange(); t_=tmp();tmpchange();t_=tmp();tmpchange();t_=tmp();//Ñ»·ÏÔʾwhile(1){Key();//Õý³£ÏÔʾif(mode==0){StartModule();//Æô¶¯³¬Éù²¨while(!RX); //µ±RXΪÁãʱµÈ´ýTR0=1; //¿ªÆô¼ÆÊýwhile(RX); //µ±RXΪ1¼ÆÊý²¢µÈ´ýTR0=0; //¹Ø±Õ¼ÆÊýdelayms(20); //20MStmpchange(); //ζÈת»»t_=tmp(); //¶ÈζÈConut(t_/10); //¼ÆËã¾àÀëif(L_>Max||L_<Min){TR1=1;}else{Feng=1;TR1=0;}Display_1602(t_/10,L_);}//µ÷ÕûÏÔʾelse if(mode!=0){//×î´ó×îСֵInit_MaxMin();while(mode!=0){Key();if(k==1&&mode==1){Init_MaxMin(); write_com(0x8d);//ÉèÖÃλÖà }else if(k==1&&mode==2){Init_MaxMin(); write_com(0x8d+0x40);//ÉèÖÃλÖà }k=0;}//½çÃæ³õʼ»¯Init1602();}}
}void delayms(uint ms)
{uchar i=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}
}
这篇关于单片机设计_超声波液位测量系统(AT89C51 DS18B20)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!