基于51单片机的霍尔水流量计设计

发布者:科技先锋最新更新时间:2022-05-01 来源: eefocus关键字:51单片机 手机看文章 扫描二维码
随时随地手机看文章

1、开发准备


(1)YF-B1流量传感器一个
(2)51开发板一个

 

2、基础知识


(1)YF-B1流量传感器只有三根线。即数据线、VCC、GND。数据线输出为占空比为50%的方波。当水流通过水流转子组件时,磁性转子转动并且转速随着流量的变化而成线性变化。霍尔传感器(霍尔元件采样)输出相应的脉冲信号。其流量脉冲特性计算公式为:脉冲f(Hz)=8.1x流量Q(L/min)-3。
(2)51单片机的中断工作方式。51单片机有定时器T0和T1,他们既有定时又有计数的功能。通过设置相关的特殊功能寄存器就可以启用定时或计数功能。需要注意的是,定时器系统是单片机内部一个独立的硬件部分,CPU一旦设置定时功能,定时器便在晶振的作用下计时,当计数器计满便会产生中断,通知CPU该如何去处理。而作为计数器时,计数脉冲来自相应的外部输入引脚T0(P3.4),T1(P3.5)或者T2(P1.0,52单片机)。

 

3、电路设计


(1)将霍尔传感器数据线插在P3.4,VCC接在VCC,GND接GND。

(2)这是我的开发板数码管的电路,提供参考。


4、软件设计


#include

#include

#define uchar unsigned char   //宏定义

#define uint  unsigned int   //宏定义

sbit we = P2^7; //位定义数码管位选锁存器接口

sbit du = P2^6;  //位定义数码管位选锁存器接口

float frency,Q,F,num;//Q为流量,单位L/min;F为频率,单位HZ

uchar code leddata[]={ 

 

                0x3F,  //"0"

                0x06,  //"1"

                0x5B,  //"2"

                0x4F,  //"3"

                0x66,  //"4"

                0x6D,  //"5"

                0x7D,  //"6"

                0x07,  //"7"

                0x7F,  //"8"

                0x6F,  //"9"

                0x77,  //"A"

                0x7C,  //"B"

                0x39,  //"C"

                0x5E,  //"D"

                0x79,  //"E"

                0x71,  //"F"

                0x76,  //"H"

                0x38,  //"L"

                0x37,  //"n"

                0x3E,  //"u"

                0x73,  //"P"

                0x5C,  //"o"

                0x40,  //"-"

                0x00,  //熄灭

                0x00  //自定义

 

                         };

                 //数码管带小数点显示

uchar code leddatapoint[]={ 

 

                0xBF,  //"0"

                0x86,  //"1"

                0xDB,  //"2"

                0xCF,  //"3"

                0xE6,  //"4"

                0xED,  //"5"

                0xFD,  //"6"

                0x87,  //"7"

                0xFF,  //"8"

                0xEF,  //"9"

                0x00,  //熄灭

                0x00  //自定义

 

                         };

//毫秒级延时函数

void delay(uint z)

{

 uint x,y;

 for(x = z; x > 0; x--)

  for(y = 114; y > 0 ; y--);

}

//四位数码管动态显示函数

void display(float i)

{

 uchar shi, ge,fen,shifen;

 float x,y;

 shi = i / 10; //显示十位

 ge  = (int)i % 10;//显示个位

 x=i*10;

 y=i*100;

 fen = (int)x%10;//分位

 shifen = (int)y%10;//十分位

 

 P0 = 0xff;//清除断码

 we = 1; //打开位选

 P0 = 0xef;//1110 1111  

 we = 0; //关闭位选

 

 du = 1;//打开段选

 P0 = leddata[shi]; 

 du = 0; //关闭段选

 delay(5);//延时5毫秒

 

 P0 = 0xff;//清除断码

 we = 1; //打开位选

 P0 = 0xdf;//1101 1111  

 we = 0; //关闭位选

 

 du = 1;//打开段选

 P0 = leddatapoint[ge]; 

 du = 0; //关闭段选

 delay(5);//延时5毫秒

 

 P0 = 0xff; //清除断码

 we = 1;//打开位选

 P0 = 0xbf;//1011 1111 

 we = 0; //关闭位选

 

du = 1; //打开段选

 P0 = leddata[fen];

 du = 0; //关闭段选

 delay(5);//延时5毫秒

 

P0 = 0xff; //清除断码

 we = 1;//打开位选

 P0 = 0x7f;//0111 1111 

 we = 0; //关闭位选

 

du = 1; //打开段选

 P0 = leddata[shifen];

 du = 0; //关闭段选

 delay(5);//延时5毫秒 

}

uint read()//得到计数器0当前脉冲次数函数

{

 uint tl,th1,th2;//读两次高位,两次高位一样说明没有低位进位,读数更加精确。

 uint val;

 while(1)

  {

  th1=TH0;

  tl=TL0;

  th2=TH0;

  if(th1==th2)

   break;

 }

 val=th1*256+tl;

 return val;

}

void main()

{

 TMOD=0x15;//定时器计数器工作方式配置

 TH0=0;

 TL0=0;

 TH1=(65536-45872)/256;

 TL1=(65536-45872)%256;

 EA=1;//开总中断

 ET0=1;//中断允许

 ET1=1;

 TR0=1;//运行控制位

 TR1=1;

 while(1)

 { 

  display(Q);

 }

 

}

void T0_time()interrupt 1

{

 TH0=0;

 TL0=0;

}

void T1_time()interrupt 3

{

 TH1=(65536-45872)/256;//50毫秒

 TL1=(65536-45872)%256;

 num++;

 if(num==20)  //1s更新一次数据,送至数码管显示

 {

  num=0;

  F=read();//每隔1s读一次计数器0,该值则为频率。计算出Q后立马把计数器0清零重新计数。

  if(F>0)

  {

   Q=(F+3)/8.1;//流量传感器经验公式

   TH0=0;

   TL0=0;

  }

  else

  {

   Q=0;//如果不加这句,当F=0,由公式知道Q!=0。

   TH0=0;

   TL0=0;

  }

 } 

}

5、测试效果


写在最后:上传照片的时候大小超过5M,记录一下调整方法,以免又忘了。
直接使用Windows自带照片编辑工具->点击更多->调整大小。

因为这是之前做比赛的时候剩下的传感器,前两天突然冒出来了,看了看数据手册,发现挺简单的就敲了出来。电路板就没设计了,因为YF-B1的输出太简单了。源码应该没有问题,测试过精度还挺不错的。代码能力还值得提升,有很多冗余的部分,之后有时间优化一下。


关键字:51单片机 引用地址:基于51单片机的霍尔水流量计设计

上一篇:基于单片机的电梯(四层)控制系统设计
下一篇:基于单片机的智能温度表课程设计

推荐阅读最新更新时间:2024-11-08 10:38

第三节 趣讲51单片机之P1P2P3口深入讲解
一、P1口 P1口是4组Parallel Ports中最简单的。其结构图如下: 与P0口的区别是:由于没有端口复用功能,所以,P0口的V1变成了一个上拉电阻。 由于内部就有上拉电阻,所以,作为GPIO时,P1口不需要接上拉电阻,当然,您接了也没关系啦,就相当于两个上拉电阻并联嘛。 读端口、读引脚、写功能在P0中已经讲得非常详细了,此处略个一万字。 二、P2口 P2口的原理图如下图: 咋一看,和P0口有点像,都有控制信号,选择作为 地址/数据 总线还是作为GPIO;又和P0口有些不同,P2口没有推挽式输出的结构,即没有V1 MOS管。 我们说过,P0在作为 地址/数据 总线时
[单片机]
第三节 趣讲<font color='red'>51单片机</font>之P1P2P3口深入讲解
51单片机——硬件基础
1、单片机内部资源 STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源 (1)Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢 (2)RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用 (3)SFR —— 特殊功能寄存器 2、单片机最小系统 最小系统:最少组件组成单片机可以工作的系统。 三要素: (1)、 电源电路:5V (2)、 晶振电路:11.0592MHZ、两个30PF (3)、 复位电路: P0:开漏输出,必须加上拉电阻 准双向口: 强推挽输出:电流驱动能力强 高阻态 上下拉电阻:上拉电路就是将不确定的
[单片机]
<font color='red'>51单片机</font>——硬件基础
51单片机的定时器与中断
一、中断及定时器工作原理 1、中断概念: 1 CPU处理事件A发生事件B进行处理(中断产生) 2 CPU暂时中断当前工作,转去处理事件B(中断响应与中断服务) 3 待CPU处理完B,再回来处理事件A(中断返回) 4 51不支持中断嵌套 图释: 注意:中断服务不超过20行,尽量简短,不要进行复杂的比较,延时运算!可以进行简单比较,标志位,赋值的处理 保存主程序服务状态(保护现场):push:入栈 保存工作状态 恢复工作状态 pop:出栈 89C51:5个中断源 89C52:8个中断源 2、 可以看出,003H——00BH中有8个字节,显然是不够程序存放的,着八个字节中存放跳转指令 在ARM中,此表叫做中断向量表,在ARM
[单片机]
51单片机的引脚及功能
51单片机的引脚及功能
[单片机]
<font color='red'>51单片机</font>的引脚及功能
51单片机做一个简易呼吸灯
利用占空比的方式来控制灯的变暗和变亮 占空比就是高电平和低电平的比例; 实现呼吸灯效果是利用人眼的分辨率只能看到25帧每秒,甚至还不够, 所以用单片机做呼吸灯是利用频率来控制呼吸灯的呼吸时间,用占空比来控制灯的亮度 代码如下 #include reg52.h sbit LED1=P2^0; //定义灯的位置 int PWM_Low,Clock=500; void delay(unsigned int x) //延迟函数 { int i; for(i=0;i x;i++); } void main(void) { while(1) { for(PWM_Low=Clock;PWM
[单片机]
51单片机STC89C52控制LED闪烁(使用for语句实现延时)
/*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------端口/引脚定义区域----------------------*/ sbit LED=P2^0; //位定义P2.0引脚名为LED /*-----------------------主函数区域-----------------------------*/ void main() { unsigned int i; //定义无符号整形变量i(范围为0~65535) while(1)
[单片机]
用C51单片机设计物体分级设备的测量光幕
1 引言 光幕是电子测量系统中应用比较多的一种设备。利用光幕可以测量恒速传送带上的物体高度、长度或宽度等一系列数据,以便为后面的电子系统提供相应的参数。本文给出了一种利用单片机实现物体高度测量的光幕测量方法。 2 光幕测量物体高度的基本原理 图1所示是一个用普通光幕测量物体高度的测试原理结构示意图。图中,光幕的一边等间距安装有多个红外发射管,另一边相应的有相同数量同样排列的红外接收管,每一个红外发射管都对应有一个相应的红外接收管,且安装在同一条直线上。当同一条直线上的红外发射管、红外接收管之间没有障碍物时,红外发射管发出的调制信号(光信号)能顺利到达红外接收管。红外接收管接收到调制信号后,相应的电路输出低电平,而在有
[单片机]
用C<font color='red'>51单片机</font>设计物体分级设备的测量光幕
红外遥控电机调速+普中51单片机+江科大自化协
1 实验现象   基于STC89C52单片机设计一个红外遥控直流电机调速系统。一上电,数码管上显示0,此时直流电机不转动。当按下红外遥控器上的“1”键时,数码管显示1,直流电机开始转动。电机转速分为4个挡位,每升高一个挡位,数码管都会显示对应的挡位数字同时提高电机的转速。 2 实验原理   该系统整体采用红外遥控器控制,红外接收模块接收到遥控器键码信号后,向单片机送入中断信号并由单片机译码,单片机开始进行相应挡位的数据处理和挡位的改变。通过模拟PWM模块产生不同的PWM矩形波来控制直流电机调速,最后显示挡位到数码管上。 3 系统设计 4 硬件设计(略) 5 软件设计 5.1 主函数 #include REGX52
[单片机]
红外遥控电机调速+普中<font color='red'>51单片机</font>+江科大自化协

推荐帖子

PCB设计专业词汇表达,一网打尽!
作者:板妞1.原理图:shematicdiagram  2.逻辑图:logicdiagram  3.印制线路布设:printedwirelayout  4.布设总图:masterdrawing  5.可制造性设计:design-for-manufacturability  6.计算机辅助设计:computer-aideddesign.(CAD)  7.计算机辅助制造:computer-aidedmanufacturing.(CAM)  8.
ohahaha PCB设计
【样片申请】TTI代理TE家的KilovacEV/LEV系列高压直流接触器
概述:TTI为TE航空航天防卫与船舶事业部KilovacEV/LEV系列高压直流接触器在亚太地区的总代理TE航空航天防卫与船舶事业部KilovacEV/LEV系列高压直流接触器为小型、轻量、优质、密封型继电器。额定负载电流高达500A+。为恶劣的环境应用研发,其固有的密封性使得线圈和触点不会产生氧化物或污染物,在长期不动作的情况下其接触电阻也能保持稳定。点击“样片申请”,填写表单,就有机会申请样片!部分产品如下:KILOVACEV202高压
EEWORLD社区 分立器件
全新real210+全新书籍 仅此一次机会
以上打包800顺风到付,这个价格不用我多说吧,星期六搬家,出到星期五,需要的联系我QQ1905753823本站强荐:185娱乐℉城.足球℉真_人.彩票齐全℉手机可投℉注任何游戏.首次开户送10元.首存送58元.信誉绝对保证185.cc全新real210+全新书籍仅此一次机会楼主到现在还没出啊!真替你着急价格相当有诱惑啊。以前我也打算买一个210的。可惜木有银子。本站强荐:185娱乐ど城.足球ど真_人.彩票齐全ど手机可投ど注任何游戏.首次开户送10元
hangzhoucainiao 淘e淘
分享个cadence16.6的学习笔记
看了于争博士的cadence视频教程,使用的candence版本是16.6-2015,教程中的部分操作在16.6中存在出入,边看教程边将各功能与16.6版本对应起来,并将部分内容记录了下来,希望对学习cadence的同学有用吧,,,学完后为了熟悉整个流程,自己建了个简单的工程(基于stm32f103c8t6设计的原理图,什么都没有~~做出来也只能够点个灯玩玩),下面贴上原理图及PCB的一些截图,以及贴上个遇到的问题,操作有误的地方还望各位大侠指出!笔记内容大体如下,有需要
Tobey PCB设计
【中科蓝讯AB32VG1碰上RTT】测评汇总
活动详情:https://bbs.eeworld.com.cn/elecplay/content/165测评报告汇总:@qiangtech【中科蓝讯AB32VG1RISC-V板碰上RTT】先运行起来【中科蓝讯AB32VG1RISC-V板碰上RTT】音频响起来@xiyue521【中科蓝讯AB32VG1RISC-V板碰上RTT】+开箱与环境安装【中科蓝讯AB32VG1RISC-V板碰上RTT测评】+LED与按键控制【中科蓝
okhxyyo 国产芯片交流
【2024 DigiKey 创意大赛】基于AI图像识别的宠物监控报警装置
一、作品简介我在养狗的过程中一只有个困扰,就是狗需要运动,不能把它一直关到笼子里。但家里又有很多区域不想让它进入,但往往一眼没看住他就跑了进去。因此我打算设计一个报警装置,我们可以将其部署在一些不希望宠物进入的区域,比如厨房或阳台。当宠物进入该区域并被摄像头捕捉到后,通过放置在其他区域的ESP32-S3模块播放声音,同时使用ESP32-C6模块控制灯光闪烁,以此吸引宠物离开区域。二、系统框图项目的技术实现可以分为下面几个部分。1,物联网中枢平台,我计划是用部署在树莓派ze
土豆12 DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved