基于51单片机的流量计制作

流量计主要应用于检测流体流速,通过检测累计流量可以做到控制流体体积的功能,今天笔者给大家介绍一种基于STC89C52的流量计制作方法,主要能够实现检测实时流速,并在液晶屏上显示出来,累计流量达到限定值后,蜂鸣器产生警报的功能。需要的材料有:BUZZER蜂鸣器,30P无极电容,DC接口(小),10uf极性电容,水流量传感器,2.54间距3芯单排针,LCD1302液晶屏,LED灯,103电位器,9012直插电极管,10K电阻,1K电阻,按键,STC89C52单片机 ,电源开关,晶振,IC座,2.54单排座。
系统硬件框图如下:这里写图片描述`
程序执行的大致流程给大家用流程图表示出来了;这里写图片描述
下面给大家分享一下笔者使用的源代码:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include "1602.h"
#include "delay.h"

sbit buzzer=P1^2;     //蜂鸣器
sbit key1=P1^1;   //按键1
sbit key2=P1^0;   //按键2

unsigned long PluNum=0; //检测速度转化来的脉冲量
unsigned long time_ms;         //定时器计数
float ShunShi=0;          //瞬时流量
float LeiJi=0;            //累计流量
float setNum=1.5;         //设置流量值

char dis0[16];         //显示更新暂存
char dis1[16];         //显示更新暂存
unsigned char dealFlag=0;  //处理速度标志
bit rekey =0;              //防止重复

void Init_Timer0(void);    //函数声明

/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main (void)
{                  
    Init_Timer0();        //定时器0初始化
    EX0=1;         //外部中断0开
    IT0=1;         //边沿触发
    EA=1;          //全局中断开
    LCD_Init();           //初始化液晶
    DelayMs(20);          //延时有助于稳定
    LCD_Clear();          //清屏

    sprintf(dis0,"SH:%4.2fL/s",ShunShi);  //打印瞬时流量
    LCD_Write_String(0,0,dis0);         //显示 瞬时流量                           
    sprintf(dis1,"LJ:%4.1fL   %4.1f",LeiJi,setNum);  //打印累计流量
    LCD_Write_String(0,1,dis1);      //显示累计流量

    buzzer=0;       //关闭蜂鸣器
    while (1)         //主循环
    {
        if(dealFlag==1)   //定时处理流速
        {
            dealFlag=0;
            ShunShi=(float)PluNum*0.00223*2;    //计算瞬时流量 一个脉冲代表0.00223ml 3s处理一次
            LeiJi=LeiJi+(float)PluNum*0.00223;   //累计计算累计流量

            sprintf(dis0,"SH:%4.2fL/s",ShunShi);  //打印瞬时流量
            LCD_Write_String(0,0,dis0);         //显示 瞬时流量                           
            sprintf(dis1,"LJ:%4.1fL   %4.1f",LeiJi,setNum);  //打印累计流量
            LCD_Write_String(0,1,dis1);      //显示累计流量
            PluNum=0;   //清空计数

            if(LeiJi>setNum)   //对比设置和实际值
            {buzzer=0;}        //蜂鸣器报警
            else
            {buzzer=1;}        //关闭蜂鸣器
        }

        if((key1 == 0)||(key2 == 0))    //有按键情况下
        {
            if(rekey == 0)
            {
                DelayMs(10);
                if(key1 == 0)  //按键1按下
                {
                    rekey =1;   //防止重复按下
                    if(setNum<99.9)            //设置值++
                        setNum = setNum + 0.1;
                }
                else if((key2 == 0))//按键2按下
                {
                    rekey =1;   //防止重复按下
                    if(setNum>0.1)             //设置值--
                        setNum = setNum - 0.1;
                }
            }
        }
        else
        {
            rekey = 0;  //防止重复按下
        }

    }
}

void Init_Timer0(void)
{
    TMOD |= 0x01;     //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响          
    TH0=(65536-20000)/256;        //重新赋值 20ms
    TL0=(65536-20000)%256;
    EA=1;            //总中断打开
    ET0=1;           //定时器中断打开
    TR0=1;           //定时器开关打开
}

void Timer0_isr(void) interrupt 1 
{
    TH0=(65536-20000)/256;        //重新赋值 20ms
    TL0=(65536-20000)%256;

    time_ms++;
    if(time_ms%25==0)    //时间定时500ms
    {
        dealFlag=1;
    }
}

/*------------------------------------------------
                 外部中断程序
------------------------------------------------*/
void ISR_Key(void) interrupt 0 using 1
{
    PluNum++;        //脉冲计数
}
  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 超声波流量计是一种常用的流量测量装置,它主要由单片机和DSP组成。它的测流原理是利用超声波在流体中的传播速度与流速成正比的特性来进行流量测量。 具体来说,超声波流量计的工作原理是利用超声波的传播速度与介质的密度和压力相关。当超声波沿着流体内部传播时,会受到流体的速度影响,流速越大,超声波传播速度越快。因此,通过测量超声波的传播时间差,就可以得到流体的流速信息。 单片机和DSP在超声波流量计中的应用是为了实现信号的处理和测量结果的输出。单片机负责进行超声波传感器的控制和数据采集,同时对采集到的数据进行初步处理。而DSP则负责更复杂的信号处理,包括对声波信号的滤波、放大和频谱分析等。最终,通过单片机和DSP的协同工作,将测量得到的超声波传播时间差转化为流量值,并将结果以数字形式输出。 超声波流量计的应用非常广泛。它可用于液体或气体的流量测量,例如给水管道、石油管道、化工管道等。它还能够实现对流量的实时监测和控制,提高流量计的精度和稳定性。同时,超声波流量计还具有非侵入式、无压力损失、不易受介质性质和管道尺寸等因素影响的优点,使其在工业自动化领域得到广泛应用。 ### 回答2: 超声波流量计是一种利用超声波测量液体或气体流速的仪器。单片机和DSP(数字信号处理器)是其中应用最为广泛的控制和处理装置。 超声波流量计的测流原理是基于多普勒效应和超声波传播速度的变化。它通常由一个发射器和一个接收器组成,发射器发射超声波到流体中,接收器接收超声波经过流体后的信号。当流体中有流动时,超声波在流体中的传播速度会与流速有关,通过测量超声波的频率变化,我们可以得知流速的值。单片机和DSP可以控制和处理超声波信号,从而完成流速的测量。 超声波流量计的应用非常广泛。首先,在工业领域中,它可以用于监测和控制各种流体的流速,如水、油、气体等,用于工艺过程的控制和优化。其次,在家庭和商业领域中,它可以用于测量水、煤气等公共设施的使用量,用于计量和计费。此外,超声波流量计还可以应用于医疗领域,如血流速的监测和诊断。总之,超声波流量计在各个领域中都有着重要的应用价值。 在测量原理和应用方面,单片机和DSP在超声波流量计中起着关键的作用。它们可以实现信号的生成、采集、处理和输出,实现流速的准确测量和实时监测。同时,它们还能够与其他系统或设备进行数据交互,实现自动化控制和集成应用。因此,单片机和DSP在超声波流量计中具有重要的地位和应用前景。 ### 回答3: 超声波流量计是一种常用于测量液体或气体流量的仪器。它采用超声波技术来实现测流原理。单片机和DSP是两种常用于控制和处理超声波流量计的芯片。 测流原理是基于声音的传播速度在流体中的变化。超声波流量计通过发射超声波脉冲并接收反射波来测量流体的流速。工作原理如下:首先,超声波传感器发射超声波脉冲,脉冲经过流体时会发生折射和反射。然后,超声波传感器接收到反射波,并计算反射波的时间差。根据声音在流体中的传播速度和反射波的时间差,可以计算出流体的流速。 超声波流量计在工业、医疗、环保等领域有着广泛的应用。在工业领域,它常用于水、油、气体等介质的流量监测和控制。在医疗领域,它可以用于测量血液流量,对于心血管疾病的诊断和治疗起到了重要的作用。在环保领域,超声波流量计可以用于监测和控制废水、废气的流量,以达到环境保护的目的。 单片机和DSP在超声波流量计应用中发挥着重要的作用。单片机通常负责控制超声波传感器和信号处理电路的工作,包括发射超声波脉冲、接收反射波、计算时间差等。而DSP则负责对接收到的信号进行数字信号处理,包括滤波、去噪、数值计算等,以得到准确的流速数据。 总而言之,超声波流量计通过测量声音在流体中的传播速度来实现对流速的测量。单片机和DSP在测流原理的实现和信号处理方面发挥着重要的作用。超声波流量计在工业、医疗、环保等领域具有广泛的应用前景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值