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; } } } 因为这是之前做比赛的时候剩下的传感器,前两天突然冒出来了,看了看数据手册,发现挺简单的就敲了出来。电路板就没设计了,因为YF-B1的输出太简单了。源码应该没有问题,测试过精度还挺不错的。代码能力还值得提升,有很多冗余的部分,之后有时间优化一下。5、测试效果
写在最后:上传照片的时候大小超过5M,记录一下调整方法,以免又忘了。
直接使用Windows自带照片编辑工具->点击更多->调整大小。
上一篇:基于单片机的电梯(四层)控制系统设计
下一篇:基于单片机的智能温度表课程设计
推荐阅读最新更新时间:2024-11-08 10:38
推荐帖子
- 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得捷技术专区
设计资源 培训 开发板 精华推荐
- EVALZ-ADN2915、ADN2915 评估板设置和 ADN2915 6.5 至 11300 MHz 时钟和数据恢复应用
- KIT35XS3400EVBE: Evaluation Kit - MC35XS3400, Quad High Side Switch
- USB-TTL-FT232
- Spark_T12_V1.22
- DS21401C,基于 TC649 PWM 风扇电机控制器的演示板
- 具有欠压锁定功能的 LT3990HMSE-5 5V 降压转换器的典型应用
- TDA2030功放板
- LTC2953CDD-2 用于具有复位功能的双电源监视器的电压监控器的典型应用电路
- 基于XXDCDC-SW2303的快充电源模块
- DC103A,LT1511 演示板,3A 恒流/恒压电池充电器