日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用51单片机霍尔水流量传感器开发水流统计水流量报警(LCD1602显示)

發(fā)布時間:2023/12/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用51单片机霍尔水流量传感器开发水流统计水流量报警(LCD1602显示) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開發(fā)前的準備:

LCD1602一塊

51單片機開發(fā)板 一塊(這里我用的是普中的板子)

霍爾水流量傳感器一塊(紅色接5V黑色接GND黃色是數(shù)據(jù)傳接口)

?霍爾傳感器流量經(jīng)驗公式:?Q=(F+3)/8.1 Q表示流量

main.c

#include <REGX52.H>//頭文件 #include "LCD1602.H"//1602顯示的頭文件 #include "Buzzer.h"//蜂鳴器的頭文件#define uchar unsigned char //宏定義 #define uint unsigned int //宏定義 #define stand 40 //設(shè)置報警值(可調(diào)根據(jù)自己需求調(diào))uint flag;//設(shè)置標志位sbit led=P2^0; sbit K1=P3^1;//定義按鍵Key1引腳float Q,F,num;//Q為流量,單位L/min;F為頻率,單位HZ//毫秒級延時函數(shù) void delay(uint z) {uint x,y;for(x = z; x > 0; x--)for(y = 114; y > 0 ; y--); }uint read()//得到計數(shù)器0當前脈沖次數(shù)函數(shù) {uint tl,th1,th2;//讀兩次高位,兩次高位一樣說明沒有低位進位,讀數(shù)更加精確。uint value;//設(shè)置存儲值valuewhile(1){th1=TH0;//定時器置高位賦值給th1tl=TL0;//定時器置低位賦值給t1th2=TH0;//定時器置高位賦值給th2if(th1==th2)//判斷如果兩個高位相等就結(jié)束break;}value=th1*256+tl;//把定時器高位轉(zhuǎn)為二進制+上低位return value;//返回val的值 }void buzzer()//蜂鳴器報警 {Buzzer_Time(100); } void timer0()//定時器函數(shù) {TMOD=0x15;//定時器計數(shù)器工作方式配置TH0=0;//高位TL0=0;//低位TH1=(65536-45872)/256;//確定高位TL1=(65536-45872)%256;//確定低位EA=1;//開總中斷ET0=1;//中斷允許ET1=1;TR0=1;//運行控制位TR1=1; }void KeyPro()//按鍵函數(shù) {static uint a;//靜態(tài)變量a標志位if(K1==0)//如果k1按下{delay(20);//按時20msif(K1==0)//再一次判斷 {a++;//標志位+1if(a%2==0)//標注位對二求余等于0{flag=1;//flag就等于1}else//否則就flag等于0{ flag=0; }}}}void main()//主函數(shù) {LCD_Init();//初始化timer0();//定時器初始化while(1)//死循環(huán){ KeyPro();//按鍵函數(shù)LCD_ShowNum(1,2,Q,4);//lcd1602顯示函數(shù)LCD_ShowString(1,6,"ML");//lcd1602顯示函數(shù) 字符串if(stand <= Q)//判斷預(yù)設(shè)值和報警值{if(flag==1)//標注位等于1的話蜂鳴器就報警{buzzer();//蜂鳴器報警}}} }void T0_time()interrupt 1//中段函數(shù)1 {TH0=0;TL0=0; }void T1_time()interrupt 2//中斷3{TH1=(65536-45872)/256;//50毫秒TL1=(65536-45872)%256;num++;if(num==5) //1s更新一次數(shù)據(jù),送至數(shù)碼管顯示{num=0;F=read();//每隔1s讀一次計數(shù)器0,該值則為頻率。計算出Q后立馬把計數(shù)器0清零重新計數(shù)。if(F>0){Q=(F+3)/8.1*100; //流量傳感器經(jīng)驗公式根據(jù)這個公式計算水流量TH0=0;TL0=0; }else{Q=0;//如果不加這句,當F=0,由公式知道Q!=0。TH0=0;TL0=0;}} }

總結(jié)

以上是生活随笔為你收集整理的利用51单片机霍尔水流量传感器开发水流统计水流量报警(LCD1602显示)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。