• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的智能水表源代碼

2020/04/22
313
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

源程序(C語言含詳細(xì)備注).zip

共1個(gè)文件

代碼實(shí)現(xiàn)功能

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

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

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

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

float ShunShi=0; //瞬時(shí)流量

float LeiJi=0; //累計(jì)流量

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

char dis0[16]; //顯示更新暫存

char dis1[16]; //顯示更新暫存

unsigned char dealFlag=0; //處理速度標(biāo)志

bit rekey =0; //防止重復(fù)

unsigned char ReadTempFlag=0;//定義讀時(shí)間標(biāo)志

int temp1;//溫度讀取值

float temperature; //實(shí)際溫度

void Init_Timer0(void); //函數(shù)聲明

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

主函數(shù)

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

void main (void)

{

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

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

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

EA=1; //全局中斷開

LCD_Init(); //初始化液晶

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

LCD_Clear(); //清屏

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

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

{

if(dealFlag==1) //定時(shí)處理流速

{

dealFlag=0;

ShunShi=(float)PluNum*0.00223*2;//計(jì)算瞬時(shí)流量 一個(gè)脈沖代表0.00223ml 3s處理一次

LeiJi=LeiJi+(float)PluNum*0.00223; //累計(jì)計(jì)算累計(jì)流量

ReadTempFlag++;

if(ReadTempFlag>=2)//讀取溫度標(biāo)志

{

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); //顯示 瞬時(shí)流量

LCD_Write_Char(14,0,0xdf); //顯示溫度符號(hào)

sprintf(dis1,"L:%4.1fL %4.1f ",LeiJi,setNum); //打印

LCD_Write_String(0,1,dis1); //顯示累計(jì)流量

PluNum=0;//清空計(jì)數(shù)

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

{buzzer=0;relay = 1;} //蜂鳴器報(bào)警 斷開繼電器

else

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

}

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

{

if(rekey == 0)

{

DelayMs(10);

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

{

rekey =1;//防止重復(fù)按下

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

setNum = setNum + 0.1;

}

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

{

rekey =1;//防止重復(fù)按下

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

setNum = setNum - 0.1;

}

}

}

else

{

rekey = 0;//防止重復(fù)按下

}

}

}

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

相關(guān)推薦