51单片机超声波测距_液位检测_温度检测原理图PCB仿真代码

目录

实物图:

PCB

​原理图​

仿真图

[​编辑 程序](#编辑 程序)

资料下载地址:51单片机超声波测距-液位检测-温度检测原理图PCB仿真代码

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 主控为stc89c52,通过ds18b20进行温度采集,超声波测距,距离不可以超过1m,通过按键可以设置距离上下限阈值 ## 实物图: |

PCB

原理图

仿真图

程序

cpp 复制代码
#define uchar unsigned char
#define uint unsigned int
#define ULint unsigned long int
//温度零上与零下的标志位
char flag=0;
//超声波
char flags=0;
//超声波距离
char flag1s=0;
//计算定时间
uint time=0;
//计算距离
ULint L_=0;
//温度
uint t_=0;
//显示模式  0正常  1最大值调整  2最小值调整
uchar mode=0;

uint Max=490;
uint Min=30;
//按键标志
uchar k=0;
//数值有误
uchar FW=0;
//头函数
#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);  //20MS
                        tmpchange();  //温度转换
                        t_=tmp();     //度温度
                        Conut(t_/10); //计算距离
                        if(L_>Max||L_<Min)
                        {
                                Feng_Start();
                        }
                        else
                        {
                                if(FW!=1)
                                Feng_Stop();
                        }
                        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);
                }
        }
}


//T0中断用来计数器溢出,超过测距范围
void CJ_T0() interrupt 1
{
    flags=1;                                                         //中断溢出标志
}
相关推荐
智者知已应修善业3 小时前
【51单片机数码管驱动2位显示0-99按键3短按+1长按+10按键4短按-1长按清零,按键不影响数码管显示】2023-8-16
c++·经验分享·笔记·算法·51单片机
来生硬件工程师10 小时前
【51单片机学习笔记】:P01 STC89C52RC
笔记·学习·51单片机
fie888910 小时前
51单片机 NRF24L01 接收程序
嵌入式硬件·mongodb·51单片机
智者知已应修善业1 天前
【51单片机2个外部中断切换LED花样】2024-1-3
c++·经验分享·笔记·算法·51单片机
笨笨没好名字3 天前
怎么看懂51单片机电路图与功能实现的C语言编写(2-7入门篇)
c语言·嵌入式硬件·51单片机
智者知已应修善业3 天前
【51单片机用T0定时器方式1,实现0.5S的时间间隔实现第一次一个灯亮、第二次二个灯亮,直到全部灯亮,然后重复整个过程】2023-12-29
c++·经验分享·笔记·算法·51单片机
智者知已应修善业3 天前
【51单片机4位静态数码管显示1234】2023-11-14
c++·经验分享·笔记·算法·51单片机
Purple Coder3 天前
51单片机(1)
单片机·嵌入式硬件·51单片机
我先去打把游戏先3 天前
Ubuntu虚拟机(服务器版本)Git卸载完全教程——彻底移除与清理配置
服务器·git·单片机·嵌入式硬件·物联网·ubuntu·51单片机
智者知已应修善业3 天前
【51单片机8个LED的花样12亮34熄56间隔78闪烁3秒3闪烁】2023-11-4
c++·经验分享·笔记·算法·51单片机