久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2956|回復: 0
收起左側

單片機水流量傳感器使用 熱水器上水報警器源程序

[復制鏈接]
ID:873526 發表于 2021-1-5 10:57 | 顯示全部樓層 |閱讀模式
熱水器上水報警器

一、實驗目的

1. 了解水流量傳感器工作原理

2. 學會使用水流量傳感器檢測水流量

3. 會使用八段數碼管顯示熱水器水箱水量百分比

4. 學會使用蜂鳴器發出報警聲

二、實驗設備

1. 51單片機實驗板,以及電源線、下載線、杜邦線等

2. 水流量傳感器、蜂鳴器、數碼管顯示模塊

三、實驗項目要求

經常會看到某家屬樓外墻排水管水嘩嘩的流著,原來是某家太陽能熱水器上水忘記關閥門了,水白白浪費掉,非常可惜!為解決太陽能熱水器上水忘記關閥門問題,請設計一款熱水器上水報警器。該報警器通過水流量傳感器檢測上水的體積,并顯示已上水的體積占總體積的百分比(最大值為100),當水上滿后,啟動蜂鳴器報警提醒用戶關閉上水水閥。假設熱水器總容量為5升。

請按要求設計一個可行方案,包括設備選型、系統連接圖等,并編寫程序實現上述功能。

四、實驗步驟

1. 設計方案

①方案:采用水流量傳感器來測上水的體積,把檢測到的體積送給單片機進行處理,讓數碼管顯示已上水多少,如果上水已經有1升了,蜂鳴器報警提示用戶關閉上水閥

②設備選型:

  • 水流量傳感器

水流量傳感器主要由塑料閥體 、水流轉子組件和

霍爾傳感器組成。它裝在熱水器進水端,用于檢測進

水流量,當水通過水流轉子組件時,磁性轉子轉動并

且轉速隨著流量變化而變化,霍爾傳感器輸出相應脈沖信號,反饋給控              制器,由控制器判斷水流量的大小,進行調控。

接線方式:

1 紅  IN   接正極

2 黃  OUT  信號輸出線(輸出波形圖: 方波)

3 黑  GND  接負極

脈沖信號頻率與水流量的關系:

                   f=7.5q

     f—脈沖信號頻率,Hz;q—水流量,L/min

③系統連接圖:

  • 編寫源程序,編譯,生成hex文件

源程序:

  1. Main.c
  2. //本工程基于普中單片機開發板,晶振12MHz
  3. #include <config.h>
  4. #include <1602.h>
  5. sbit beep=P1^5;//蜂鳴器
  6. u8 K=0; //統計T1中斷次數,中斷20次為1秒
  7. u16 n=0;//1秒后的T0計數值,即1秒后流量傳感器轉動圈數
  8. void delay_us(u16 n)//微秒延時
  9. {
  10.     while(--n);
  11. }
  12. void delay_ms(u16 x)//毫秒延時函數
  13. {
  14.               u16 i,j;
  15.               for(i=0;i<x;i++)
  16.                   for(j=0;j<115;j++);
  17. }
  18. void Alarm(u8 t) //蜂鳴器報警,持續t秒,軟件延時
  19. {
  20.               u8 k;
  21.               u16 i,j;                           
  22.               for(k=0;k<t;k++)
  23.               {
  24.                             for(i=0;i<119;i++)//叮
  25.                             {  beep=0;delay_us(50);beep=1;delay_us(50);  }
  26.                             for(j=0;j<88;j++)//咚
  27.                     {  beep=0;delay_us(110);beep=1;delay_us(110);}
  28.               }
  29. }
  30. void ET_Init()//定時器計數器初始化
  31. {
  32. //T0工作于計數器模式,以流量傳感器輸出為外部計數脈沖,計數初值為0
  33. //T1工作于定時器模式,定時50ms,中斷20次,為1秒
  34. //每隔1秒讀出T0的計數值,即為1秒鐘流量傳感器轉動圈數
  35.               K=0;              //統計T1中斷次數,中斷20次為1秒
  36.               TMOD=0X15;//計數器T0工作方式1、軟啟動、計數;定時器1工作方式1、軟啟動、定時
  37.               TH0=0;              //T0計數初值為0
  38.               TL0=0;
  39.               TH1=19664/256;//T1計數初值19664,晶振11.0592MHz,定時50ms,計數值45872,計數初值19664
  40.               TL1=19664%256;
  41.               EA=1;  //中斷總允許
  42.               ET1=1; //T1中斷允許
  43.               TR0=1;              //啟動計數器T0
  44.               TR1=1;              //啟動定時器T1
  45. }
  46. void main()
  47. {
  48.               float q;//流量,單位:升/分鐘
  49.               float v=0;//水量,單位:升
  50.               u8 print[10];
  51.               LCD1602_Init();              //1602初始化
  52.               while(1) //每隔1s統計一次流量
  53.               {   
  54.                             ET_Init();              //定時器計數器初始化
  55.                             LCD1602_disstr("liuliang",0,0);
  56.                             while(K<20);//等待1s
  57.                             q=n*60/7.5; //計算流量,單位:轉/分鐘
  58.                             v=v+q/60;
  59.                             if(v>50)
  60.                             {
  61.                                           Alarm(5);
  62.                                           v=50;
  63.                             }
  64.                             sprintf(print,"%.1f",v*2);
  65.                             LCD1602_disstr(print,1,0);
  66.                             LCD1602_disch('%');
  67.               }
  68. }
  69. void T1_INT() interrupt 3
  70. {
  71.               K++;  //每中斷一次(50ms),計數值加1,中斷20次即為1s
  72.               if(K==20)
  73.               {
  74.                             TR0=0; //關閉計數器0
  75.                             TR1=0; //關閉定時器1
  76.                             n=TH0;
  77.                             n=n*256+TL0; //1秒后的T0計數值,即1秒后流量傳感器轉動圈數
  78.               }
  79.               else
  80.               {
  81.         TH1=19664/256;//不足20次時,重裝初值,繼續計時
  82.         TL1=19664%256;
  83.     }                                                           
  84. }</font>
復制代碼
將hex文件下載到實驗板運行,描述實驗現象
實驗現象:

水流量傳感器檢測到的上水體積,然后上水體積除以5升,再乘以100,得到的結果實時送給單片機的數碼管進行顯示,并且當數碼管顯示的數據大于50時,蜂鳴器發出報警聲。

實驗總結
通過本次實驗大致了解了水流量傳感器工作原理,學會了使用水流量傳感器檢測水流量的編程性思維。


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩久久 | 国产专区视频 | 欧美日韩久久精品 | 欧美韩一区二区 | 国产中文在线观看 | 高清久久久| 免费观看一级毛片 | 欧美 日韩 国产 成人 在线 | 国产精品久久网 | 日本一区二区三区免费观看 | 91精品国产乱码久久久久久久久 | 亚洲精品九九 | 国产一区二区在线看 | 欧美理论在线观看 | 亚洲一区二区三区免费视频 | 久久精品一| 中文字幕一区二区三区在线观看 | 天天影视色综合 | 羞羞涩涩在线观看 | 精品日韩在线 | www久久99 | 国产香蕉视频在线播放 | 91麻豆精品一区二区三区 | 国产精品久久久久av | 国产区在线免费观看 | 久久大香 | 日韩一级精品视频在线观看 | 国产福利精品一区 | 一区二区高清不卡 | 日韩精品不卡 | 国产精品www | 亚洲国产aⅴ精品 | 久在线| 国产精品美女久久久久aⅴ国产馆 | 久久综合一区二区 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 久久久久成人精品亚洲国产 | 日韩中文字幕在线不卡 | 久草久 | 欧美一级黄色免费 | 国产97视频在线观看 |