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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13290|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

PIC12F508項目程序(版權(quán)所有,謝絕轉(zhuǎn)載)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:73735 發(fā)表于 2015-2-18 23:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

版權(quán)所有,謝絕轉(zhuǎn)載,此程序僅供學(xué)習(xí)參考,請勿做商業(yè)用途,謝謝!
#include<htc.h>
#include "main.h"
__CONFIG(MCLRDIS&WDTDIS&PROTECT&INTRC);       //設(shè)置配置位(MCLR腳復(fù)位禁止,看門狗關(guān),無代碼保護(hù),內(nèi)部RC振蕩)
volatile unsigned char Key_Flag=0;      /*****用于識別按鍵是否按下的標(biāo)志*****/
volatile unsigned char Fluid_Flag=0;    //流量標(biāo)志
volatile unsigned char Press_Flag=0;    //壓力標(biāo)志
volatile unsigned char Test_Count=0;    //轉(zhuǎn)存計數(shù)器計數(shù)值
volatile unsigned char Time_Flag=0;     //時間次數(shù)標(biāo)志
/*****延時毫秒級函數(shù)*****/
void Delay_Ms(unsigned char Ms_Time)
{
   unsigned char t;
   while(Ms_Time--)
   {
    for(t=0;t<165;t++);
   }
}
/*****延時秒級函數(shù)*****/
void Delay_Sec(unsigned char Sec_Time)
{
unsigned char m;
for(m=0;m<Sec_Time;m++)
{
  Delay_Ms(251);
  Delay_Ms(251);
  Delay_Ms(251);
  Delay_Ms(252);
}
}
/*********按鍵掃描函數(shù)**********/
void Key_Scan(void)
{
Key_Flag=0;               //掃描鍵盤之前先將按鍵標(biāo)志清零
    if(Key==0)
{
  Delay_Ms(10);         //延時去抖
  if(Key==0)
  {
   while(!Key);      //等待K1鍵釋放
   Key_Flag=1;
  }
}
}
/*********流量壓力監(jiān)測函數(shù)**********/
void DetectWater(void)
{
unsigned char Num=30;              //壓力檢測次數(shù)
unsigned char Press_Count=0;       //壓力計數(shù)器
Press_Flag=0;
Fluid_Flag=0;
TMR0=0x00;

do
{
  if(Press_In==1)                //有壓力,則壓力計數(shù)器加1
  {
   Press_Count++;
  }
  
  Delay_Ms(100);                 //延時
  Num--;                         //壓力檢測次數(shù)減1
  
}while(Num);                       //壓力檢測完成

if(Press_Count>=20)                //壓力數(shù)據(jù)處理
{
  Press_Flag=1;
}
else
{
  Press_Flag=0;
}

Test_Count=TMR0;                  //讀取計數(shù)器的計數(shù)值,存入Test_Count

if(Test_Count>=3)                 //流量數(shù)據(jù)處理
{
  Fluid_Flag=1;
}
else
{
  Fluid_Flag=0;
}
}
/*********主函數(shù)***********/
void main(void)
{
Delay_Ms(20);                                 //上電延時100毫秒,以保證電源可靠供電

OPTION=0xE0;                                   //計數(shù)器初始化
TRIS = 0xFC;                                   //繼電器和LED_RED設(shè)為輸出 壓力設(shè)為輸入,流量使用T0CKI輸入計數(shù)
TMR0=  0x00;
   
    Red_Led=0;                                     //紅燈熄滅
    Relay_Out=1;                                   //水泵強(qiáng)制啟動8秒
    Delay_Sec(7);
   
    DetectWater();                                 //流量壓力檢測
   
    while(1)
    {
/**************正常供水開始*********************/
     if(Fluid_Flag==1)                          //只要有流量,則水泵一直啟動正常供水
     {
      Time_Flag=1;                           //進(jìn)入正常供水標(biāo)志
      
      Red_Led=0;                             //紅燈熄滅
      Relay_Out=1;
      do
      {
       DetectWater();
      }
      while(Fluid_Flag);                     //沒有流量,則終止循環(huán)
     }
/**************正常供水完成*********************/
/**************保壓停機(jī)開始*********************/
     
     if((Fluid_Flag==0)&&(Press_Flag==1))       //沒有流量,有壓力則進(jìn)入保壓停機(jī)
     {
      unsigned char Detect_Num=30;
      Time_Flag=1;                           //進(jìn)入保壓停機(jī)標(biāo)志
   TMR0=0;
   
   do
   {
    Delay_Ms(100);
    Detect_Num--;
   }
   while(Detect_Num);
   
   Test_Count=TMR0;
   
   if(Test_Count>=3)
   {
    break;
   }
   else
   {
    Relay_Out=0;
    while(1)
    {
     TMR0=0;
     Detect_Num=30;
     do
     {
      Delay_Ms(90);
      Key_Scan();
            Detect_Num--;
     }
     while((Detect_Num)&&(!Key_Flag)&&(Press_In));
     
     Test_Count=TMR0;
     
     if((Test_Count>=3) || (Key_Flag) || (Press_In==0))
     {
      break;
     }
     
    }
    break;
   }
      
     }
/**************保壓停機(jī)完成*********************/
/**************缺水保護(hù)開始*********************/
     
     if((Fluid_Flag==0)&&(Press_Flag==0))       //沒有流量,沒有壓力則進(jìn)入缺水循環(huán)
     {
      unsigned char Check_Num=7;
      unsigned int Number=0;
      Red_Led=1;
      
      if(Time_Flag==1)                      //識別是從開始就缺水還是從正常供水轉(zhuǎn)入到缺水狀態(tài)
      {
       Check_Num=10;
      }
      
      do                                     //繼續(xù)運(yùn)行20秒后水泵停機(jī),同時紅燈亮
      {
       DetectWater();
       Check_Num--;
      }
      while((!Fluid_Flag)&&(Check_Num));
      
      if(Fluid_Flag==1)
      {
       break;
      }
      
/************缺水停30秒,若有按鍵按下,則重新啟動******************/
      Relay_Out=0;
      Check_Num=60;
      
      do                                     //缺水停30秒,期間進(jìn)行按鍵掃描,并且紅燈閃爍
      {
       Red_Led=0;
       Delay_Ms(240);
       Key_Scan();                        //掃描按鍵
       if(!Key_Flag)
       {
        Red_Led=1;
        Delay_Ms(240);
        Key_Scan();
        Check_Num--;
       }
      }
      while((!Key_Flag)&&(Check_Num));       //時間到或者有按鍵按下,跳出循環(huán)
      
      if(Key_Flag==1)                        //有按鍵按下,則重新啟動并檢測
      {
             break;
      }
      
/************30秒停止時間到,進(jìn)入啟動4分鐘檢測水流和水壓流量和壓力*************/      
      Relay_Out=1;
      Red_Led=1;
            Delay_Sec(8);
            Check_Num=78;
         do
         {
          DetectWater();
          Check_Num--;
         }
         while((!Fluid_Flag)&&(Check_Num));     //有流量或者啟動4分鐘時間到,則跳出循環(huán)
         
         if(Fluid_Flag==1)                      //有流量則跳出循環(huán)返回到while循環(huán)
         {
          break;
         }
      
/************時間到,則進(jìn)入停止3小時**************/
            
      Relay_Out=0;
      Number=22587;
      
      do
      {
       Red_Led=0;
       Delay_Ms(240);
       Key_Scan();                        //掃描按鍵
       if(!Key_Flag)
       {
        Red_Led=1;
        Delay_Ms(240);
        Key_Scan();
        Number--;
       }
      }
      while((!Key_Flag)&&(Number));
      break;                                 
     }
/**************缺水保護(hù)完成*********************/
    }
}






#ifndef     __MAIN_H__
#define     __MAIN_H__
#define Relay_Out  GP0
#define Red_Led    GP1
#define Fluid_In   GP2
#define Press_In   GP3
#define Key        GP4
void Delay_Ms(unsigned char Ms_Time);
void Delay_Sec(unsigned char Sec_Time);
void GPIO_Port_Init(void);
void Start_Count_Fluid(void);
void Stop_Count_Fluid(void);
void Detect_Water(void);
void Key_Scan(void);
#endif




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

來自 5#
ID:244971 發(fā)表于 2017-11-8 22:15 | 只看該作者
PIC12F508只有8pin 樓主又把 watchgog禁止掉,target又是電感性的閥體,
想來硬體保護(hù)須作的非常完備,否則一干擾就有可能死機(jī),哈~~
不想microchip先前的cmos otp抗雜訊一級棒,改到這些年頭都是flash,抗雜訊能力每下愈況,令人不勝唏噓...

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

沙發(fā)
ID:91774 發(fā)表于 2015-10-24 08:07 | 只看該作者
有保護(hù)自己勞動成果的意識。程序?qū)懙牟诲e,值得學(xué)習(xí)、借鑒。贊一個!
回復(fù)

使用道具 舉報

板凳
ID:98168 發(fā)表于 2015-12-3 16:05 | 只看該作者
贊一個,不錯
回復(fù)

使用道具 舉報

地板
ID:77498 發(fā)表于 2017-5-7 18:53 | 只看該作者

 贊一個
回復(fù)

使用道具 舉報

6#
ID:379680 發(fā)表于 2018-8-24 14:57 | 只看該作者


 贊一個
回復(fù)

使用道具 舉報

7#
ID:86450 發(fā)表于 2018-8-27 08:56 | 只看該作者
贊一個
回復(fù)

使用道具 舉報

8#
ID:287515 發(fā)表于 2018-10-24 22:59 | 只看該作者
贊一個
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 伊人网站视频 | 中文在线一区 | 成人影院网站ww555久久精品 | 久久久国产一区二区三区 | 2018国产大陆天天弄 | 久久久久久久一区二区三区 | 欧美激情区 | 国产成人精品久久二区二区 | 国产精品久久久久免费 | 一区二区三区亚洲 | 成人av电影在线 | 六月色婷 | 中文无码日韩欧 | 亚洲一区免费 | 夜夜爽99久久国产综合精品女不卡 | www.天天操.com | 国产三区视频在线观看 | 亚洲一区二区久久 | 国产精品一区二区久久久久 | 国产一区欧美 | 国产精品日韩高清伦字幕搜索 | 国产福利在线 | 国产视频在线一区二区 | 日韩视频中文字幕 | 在线看亚洲| 国产电影一区二区三区爱妃记 | 成人无遮挡毛片免费看 | 91在线一区 | 午夜视频在线观看网站 | 免费黄色的网站 | av特级毛片 | 五月天天丁香婷婷在线中 | 一级毛片视频免费观看 | 免费观看一级特黄欧美大片 | 亚洲日日夜夜 | 在线免费观看黄视频 | 色偷偷噜噜噜亚洲男人 | 欧美一区二 | 在线免费看毛片 | 色天堂影院 | 欧美一区免费 |