毕业设计项目 单片机超声波液位测量系统(AT89C51 DS18B20)

一、电路设计

超声波测距的基本原理和系统框图,给出了超声波发射和接收电路,通过盲区的消除以及环境温度的采样,提高了测距的精确度。利用超声波传输中距离与时间的关系,采用8051单片机进行控制及数据处理,设计出了能精确测量两点间距离的超声波液位检测系统。系统主要由超声波发射器电路、超声波接收器电路、单片机控制电路、环境温度检测电路及显示电路构成。利用所设计出的超声波液位检测系统,对液面进行了测试,采集当时的环境温度获得精确的速度,计算出液面距离。此系统具有易控制、工作可靠、测量精度高的优点,可实时检测液位。

二、运行效果图

三、部分代码



    include 
    #include 
    #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);  //20MS
    			tmpchange();  //ζÈת»»
    			t_=tmp();     //¶ÈζÈ
    			Conut(t_/10); //¼ÆËã¾àÀë
    			if(L_>Max||L_


🔥 项目分享:

https://gitee.com/feifei1122/simulation-project

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AT89C51是一种基于MCS-51架构的8位微控制器,DS18B20是一种数字温度传感器。将它们结合起来可以实现温度检测系统。具体实现步骤如下: 1. 硬件连接:将DS18B20的数据线连接到AT89C51的P3.7引脚,VDD连接到5V电源,GND连接到地。 2. 软件编写:使用Keil C编写程序,通过AT89C51的P3.7引脚读取DS18B20的温度数据,并将其显示在数码管上。 3. 程序调试:使用Proteus进行仿真,检查程序是否能够正确读取DS18B20的温度数据并将其显示在数码管上。 以下是AT89C51+DS18B20的示例代码: ```c #include <reg51.h> #include <intrins.h> #define DQ P3_7 typedef unsigned char uchar; typedef unsigned int uint; uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; void delay(uint i) { while (i--); } uchar ds18b20_init() { uchar i; DQ = 1; _nop_(); _nop_(); DQ = 0; delay(600); DQ = 1; delay(60); i = DQ; delay(540); return i; } void ds18b20_write_byte(uchar dat) { uchar i, j; for (i = 0; i < 8; i++) { j = dat >> i; j &= 0x01; DQ = 0; _nop_(); _nop_(); DQ = j; delay(6); DQ = 1; if (i == 7) delay(10); } } uchar ds18b20_read_byte() { uchar i, j, dat = 0; for (i = 0; i < 8; i++) { DQ = 0; _nop_(); _nop_(); DQ = 1; _nop_(); _nop_(); j = DQ; delay(4); dat |= (j << i); } return dat; } void display(uchar dat) { P0 = table[dat / 10]; P2 = 0xfe; delay(5); P2 = 0xff; P0 = table[dat % 10]; P2 = 0xfd; delay(5); P2 = 0xff; } void main() { uchar temp, temp1, temp2; ds18b20_init(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0x44); ds18b20_init(); ds18b20_write_byte(0xcc); ds18b20_write_byte(0xbe); temp1 = ds18b20_read_byte(); temp2 = ds18b20_read_byte(); temp = (temp2 << 4) | (temp1 >> 4); display(temp); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值