基于51单片机的智能水表水流量计流量报警器温度设计

1、系统功能介绍

  • 系统构成
    • 本系统由STC89C52单片机电路+水流量传感器+DS18B20温度电路+继电器电路+LCD1602液晶显示电路+按键电路+蜂鸣器电路+电源电路组成。
  • 功能:
    • 1、水流量传感器采用椭圆齿轮传感器。
    • 2、通过液晶LCD1602液晶实时显示瞬时流量和累计流量、实时温度、设置的累计流量。3、通过按键设置累计流量阈值,如果累计流量超过设置阈值,蜂鸣器报警、继电器断开,否则不报警继电器闭合。
    • 4、继电器模拟水阀开关,如果当前累计流量低于设置流量,打开继电器的意思。

2、资料下载

3、系统电路介绍

3.1、STC89C52单片机最小系统设计

  • 1.STC89C52是STC公司(中国深圳宏晶科技公司)生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器(8K对单片机来说不小了,当然不能跟我们的手机比),使用MCS-51内核,指令代码完全兼容传统8051。
  • 2.工作电压范围很广(这里只介绍5V版本),在3.3V~5.5V之间都能工作,但是电压越高,工作电流也会更大,通俗的说,如果用单片机点亮一颗LED灯,使用5.5V供电,灯的亮度要比3.3V供电时亮,耗电也会更多。
  • 3.通用I/O 口(4x8=32个),复位后为:P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为 I/O 口用时,需加上拉电阻。(除非某I/0口置零,否则它就输出高电平)
  • 4.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz,其工作频率取决于晶振频率,我们常用的是12MHz、11.0592MHz。
  • 5.ISP(在系统可编程)/IAP(在应用可编程),可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序。在学习过程中,我们只要使用ISP即可,也就是制作好电路板之后,只要把RxD/P3.0,TxD/P3.1通过排针引出来,我们就可以通过USB-TTL把程序烧录到单片机,不需要再把单片机芯片从系统板上取出来。
  • 6.共3 个16 位定时器/计数器。即定时器T0、T1、T2。

单片机最小系统电路图如下图所示

  • 实物图:

3.2、LCD1602液晶显示模块电路设计

  • 1602液晶,也叫做1602字符型液晶,可以显示2行字符信息,每行可以显示16个字符,是一种专门用来显示字母、数字、符号的点阵型液晶模块。

  • LCD1602由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距地间隔,每行之间也有间隔,起到了字符间距和行间距的作用。

  • 电路原理图

  • 实物图

3.3、DN15流量传感器模块电路设计

  • 流量检测传感器选择的是基于霍尔传感器的流量传感器。流量传感器主要由塑料阀体 、液流转子组件和霍尔传感器组成。它装在液体进入端,用于检测进液体流量,当液体通过液流转子组件时,磁性转子转动并且转速随着流量变化而变化,霍尔传感器输出相应脉冲信号,反馈给控制器,由控制器判断水流量的大小,进行调控。

  • 电路设计如下图所示:

  • 实物图:

3.4、DS18B20温度传感器模块电路设计

  • DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。

  • DS18B20温度传感器封装一般有2种,使用上都是一样的。可以根据使用环境随意选择。第一种是直接是裸露的芯片,主要用于空气温度检测。第2种是不锈钢钢管封装好的,防水,一般用于水温灯液体温度检测。

  • 电路原理图:

  • 实物图:

4、程序设计

4.1、LCD1602初始化

// LCD1602初始化
void lcd1602_Init()
{
    lcd1602_WriteCom(0x32);  // 将8位总线转为4位总线
    lcd1602_WriteCom(LCD_MODE_8_2_5X7);  // 8位数据,显示2行,5x7点阵/每字符28H
    lcd1602_WriteCom(LCD_CURSOR_RIGHT);  // 写入数据后光标右移 06H
    lcd1602_WriteCom(LCD_CLEAR);  // 清屏 01H
    lcd1602_WriteCom(LCD_OPENSHOW);  // 显示开 0cH
    lcd1602_WriteCom(LCD_START_ADDR1);  // 设置数据指针地址起始点是第一行第一列,80H=00H|80H
}

4.2、LCD1602显示数据

void lcd1602_WriteData(uchar dat)
{
    LCD_EN=0;  // 使能
    LCD_RS=1;  // 发送数据
    LCD_RW=0;  // 选择写命令
    
    LCD_DATA=dat;  // 放入数据,4位数据,接线到P0的高四位,传送高四位不用改
    lcd1602_Delay1ms(1);  // 等待数据稳定
    
    LCD_EN=1;  // 写入时序
    lcd1602_Delay1ms(5);  // 保持稳定
    LCD_EN=0;  
    
    LCD_DATA=dat<<4;
    lcd1602_Delay1ms(1);  // 等待数据稳定
    
    LCD_EN=1;  // 写入时序
    lcd1602_Delay1ms(5);  // 保持稳定
    LCD_EN=0;  
}

4.3、DS18B20初始化

bit Init_DS18B20(void)
{
 bit dat=0;
 DQ = 1;    //DQ复位
 DelayUs2x(5);   //稍做延时
 DQ = 0;         //单片机将DQ拉低
 DelayUs2x(200); //精确延时 大于 480us 小于960us
 DelayUs2x(200);
 DQ = 1;        //拉高总线
 DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
 dat=DQ;        //如果x=0则初始化成功, x=1则初始化失败
 DelayUs2x(25); //稍作延时返回
 return dat;
}

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值