加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于51单片机的智能水表源代码

2020/04/22
658
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

代码实现功能

通过液晶LCD1602液晶实时显示瞬时流量和累计流量、实时温度、设置的累计流量。

通过按键设置累计流量阈值,如果累计流量超过设置阈值,蜂鸣器报警、继电器断开,否则不报警继电器闭合。

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; //防止重复

unsigned char ReadTempFlag=0;//定义读时间标志

int temp1;//温度读取值

float temperature; //实际温度

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

/*------------------------------------------------

主函数

------------------------------------------------*/

void main (void)

{

Init_Timer0(); //定时器0初始化

EX0=1; //外部中断0开

IT0=1; //边沿触发

EA=1; //全局中断开

LCD_Init(); //初始化液晶

DelayMs(20); //延时有助于稳定

LCD_Clear(); //清屏

buzzer=0;relay = 0;DelayMs(200);buzzer=1;relay = 1;//蜂鸣器继电器 上电动作下方便检测硬件

while (1) //主循环

{

if(dealFlag==1) //定时处理流速

{

dealFlag=0;

ShunShi=(float)PluNum*0.00223*2;//计算瞬时流量 一个脉冲代表0.00223ml 3s处理一次

LeiJi=LeiJi+(float)PluNum*0.00223; //累计计算累计流量

ReadTempFlag++;

if(ReadTempFlag>=2)//读取温度标志

{

ReadTempFlag=0;

temp1=ReadTemperature();//读取温度

temperature=(float)temp1*0.0625; //温度值转换

}

sprintf(dis0,"S:%4.2fL/s %4.1f C",ShunShi,temperature); //打印

LCD_Write_String(0,0,dis0); //显示 瞬时流量

LCD_Write_Char(14,0,0xdf); //显示温度符号

sprintf(dis1,"L:%4.1fL %4.1f ",LeiJi,setNum); //打印

LCD_Write_String(0,1,dis1); //显示累计流量

PluNum=0;//清空计数

if(LeiJi>setNum) //对比设置和实际值

{buzzer=0;relay = 1;} //蜂鸣器报警 断开继电器

else

{buzzer=1;relay = 0;} //关闭蜂鸣器 闭合继电器

}

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;//防止重复按下

}

}

}

  • 源程序(C语言含详细备注).zip
    描述:源程序(C语言含详细备注)

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
9DBV0441AKLFT 1 Integrated Device Technology Inc VFQFPN-32, Reel

ECAD模型

下载ECAD模型
$4.96 查看
SN74AVC4T245RSVR 1 Texas Instruments 4-Bit Dual-Supply Bus Transceiver with Configurable Voltage-Level Shifting and 3-State Outputs 16-UQFN -40 to 85

ECAD模型

下载ECAD模型
$1.94 查看
SN74LVC1G07DBVRG4 1 Texas Instruments Single 1.65-V to 5.5-V buffer with open-drain outputs 5-SOT-23 -40 to 125

ECAD模型

下载ECAD模型
$0.39 查看

相关推荐

电子产业图谱