加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于51單片機的智能水表源代碼

2020/04/22
418
服務支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
方塊圖(2)
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

代碼實現(xiàn)功能

通過液晶LCD1602液晶實時顯示瞬時流量和累計流量、實時溫度、設(shè)置的累計流量。

通過按鍵設(shè)置累計流量閾值,如果累計流量超過設(shè)置閾值,蜂鳴器報警、繼電器斷開,否則不報警繼電器閉合。

unsigned long PluNum=0;//檢測速度轉(zhuǎn)化來的脈沖量

unsigned long time_ms; //定時器計數(shù)

float ShunShi=0; //瞬時流量

float LeiJi=0; //累計流量

float setNum=1.5; //設(shè)置流量值

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); //函數(shù)聲明

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

主函數(shù)

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

void main (void)

{

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

EX0=1; //外部中斷0開

IT0=1; //邊沿觸發(fā)

EA=1; //全局中斷開

LCD_Init(); //初始化液晶

DelayMs(20); //延時有助于穩(wěn)定

LCD_Clear(); //清屏

buzzer=0;relay = 0;DelayMs(200);buzzer=1;relay = 1;//蜂鳴器繼電器 上電動作下方便檢測硬件

while (1) //主循環(huán)

{

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; //溫度值轉(zhuǎn)換

}

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;//清空計數(shù)

if(LeiJi>setNum) //對比設(shè)置和實際值

{buzzer=0;relay = 1;} //蜂鳴器報警 斷開繼電器

else

{buzzer=1;relay = 0;} //關(guān)閉蜂鳴器 閉合繼電器

}

if((key1 == 0)||(key2 == 0))//有按鍵情況下

{

if(rekey == 0)

{

DelayMs(10);

if(key1 == 0) //按鍵1按下

{

rekey =1;//防止重復按下

if(setNum<99.9) //設(shè)置值++

setNum = setNum + 0.1;

}

else if((key2 == 0))//按鍵2按下

{

rekey =1;//防止重復按下

if(setNum>0.1) //設(shè)置值--

setNum = setNum - 0.1;

}

}

}

else

{

rekey = 0;//防止重復按下

}

}

}

  • 源程序(C語言含詳細備注).zip
    描述:源程序(C語言含詳細備注)

相關(guān)推薦

電子產(chǎn)業(yè)圖譜