1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
單片機自動噴霧設備程序
[打印本頁]
作者:
jx_guoli
時間:
2018-10-8 08:56
標題:
單片機自動噴霧設備程序
自動噴霧設備程序
0.png
(10.51 KB, 下載次數: 12)
下載附件
2018-10-8 12:51 上傳
單片機源程序如下:
#define __ZHUJI_C
#include <STC12C5A60S2.H>
#include <string.h>
#include <intrins.h>
#include "sys.h"
#include "rom.h"
#include "timer.h"
#include "lcd.h"
#include "zhuji.h"
#include "setup.h"
////煤速(度)
//sbit pSudu = P2^5;
////有煤無煤
//sbit pMeiliu = P2^6;
////濕度高低
//sbit pDamp = p2^7;
////灑水
//sbit JD_Sasui = P1^4;
//系統模式,工作/設置
u8 SysMode;
//工作模式,自動/手動
u8 WorkMode;
//工作狀態
u8 WorkState; //SUDU_STOP_MODE,速度啟動檢測3秒
u8 fMeisu;
u8 pSudu = Off;
u8 MesuDelayStop_N;
//灑水
sbit Key_Return = P1^6;
sbit Key_Setup = P1^7;
sbit Key_Inc = P2^2;
sbit Key_Dec = P2^3;
u8 Key_Scan(void)
{
u32 Key_Delay_N;
if(Key_Return == 0)
{
delay_ms(20);
if(Key_Return == 0)
{
return KEY_RETURN;
}
}
if(Key_Setup == 0)
{
delay_ms(20);
if(Key_Setup == 0)
{
while(Key_Setup == 0)
{
}
return KEY_SETUP;
}
}
if(Key_Inc == 0)
{
delay_ms(20);
if(Key_Inc == 0)
{
Key_Delay_N = Get_SysTime();
while(Key_Inc == 0)
{
if((Get_SysTime() - Key_Delay_N) > (T_CNT_1S/3))
{
return KEY_INC;
}
}
return KEY_INC;
}
}
if(Key_Dec == 0)
{
delay_ms(20);
if(Key_Dec == 0)
{
Key_Delay_N = Get_SysTime();
while(Key_Dec == 0)
{
if((Get_SysTime() - Key_Delay_N) > (T_CNT_1S/3))
{
return KEY_DEC;
}
}
return KEY_DEC;
}
}
return KEY_NULL;
}
void Sasui_Off(void)
{
if(JD_Sasui != 1)
{
JD_Sasui = 1;
JD_Sasui_2 = 1;
lcd_Disp_Sasui();
}
}
void Sasui_On(void)
{
if(JD_Sasui != 0)
{
JD_Sasui = 0;
JD_Sasui_2 = 0;
lcd_Disp_Sasui();
}
}
u32 Sudu_Cnt_Bak;
void zhuji_Judge_Meisu(void)
{
u32 TmpMesuDelayStop_N;
TmpMesuDelayStop_N = MesuDelayStop_N * T_CNT_1S / 10;
if(fMeisu == 0)
{
if((Get_SysTime() - Sudu_Cnt_Bak) > TmpMesuDelayStop_N)
{
pSudu = Off;
}
}
else
{
fMeisu = 0;
pSudu = On;
Sudu_Cnt_Bak = Get_SysTime();
}
}
u8 Meiliu_Bak;
u8 Meiliu_State;
u32 Meiliu_Start_Pre_Cnt;
u32 Saved_Disp_Sec_Meiliu;
void zhuji_Judge_Meiliu(void)
{
u32 Tmp_Disp_Sec;
if(pMeiliu == WUMEI)
{
if(Meiliu_Bak == YOUMEI)
{
Meiliu_State = WUMEI;
Meiliu_Bak = WUMEI;
lcd_Disp_Meiliu(-1);
}
}
else
{
if(Meiliu_Bak == WUMEI)
{
Meiliu_Start_Pre_Cnt = Get_SysTime();
Meiliu_Bak = YOUMEI;
lcd_Disp_Meiliu(0);
lcd_Disp_Meiliu(1);
Saved_Disp_Sec_Meiliu = 0;
}
else
{
if(Meiliu_State == WUMEI)
{
Tmp_Disp_Sec = (Get_SysTime() - Meiliu_Start_Pre_Cnt) / T_CNT_1S;
if((Get_SysTime() - Meiliu_Start_Pre_Cnt) >= (3 * T_CNT_1S))
{
Meiliu_State = YOUMEI;
//lcd_Disp_Meiliu(0);
}
else if(Tmp_Disp_Sec != Saved_Disp_Sec_Meiliu)
{
Saved_Disp_Sec_Meiliu = Tmp_Disp_Sec;
lcd_Disp_Meiliu((u16)Tmp_Disp_Sec + 1);
}
}
}
}
}
u8 WumeiDelay_Bak;
u8 WumeiDelay_State;
u32 WumeiDelay_Start_Pre_Cnt;
u32 Saved_Disp_Sec_WumeiDelay;
void zhuji_WumeiDelay_Delay(void)
{
u32 Tmp_Disp_Sec;
if(JD_Sasui == Off)
{
WumeiDelay_Bak = WUMEI;
WumeiDelay_State = WUMEI;
lcd_Disp_WumeiDelay(-1);
}
else
{
//無煤-有煤
if(Meiliu_State == YOUMEI)
{
if(WumeiDelay_Bak == WUMEI)
{
WumeiDelay_State = YOUMEI;
WumeiDelay_Bak = YOUMEI;
lcd_Disp_WumeiDelay(-1);
}
}
else
{
//有煤-無煤,灑水運行
if(WumeiDelay_Bak == YOUMEI)
{
WumeiDelay_Start_Pre_Cnt = Get_SysTime();
WumeiDelay_Bak = WUMEI;
lcd_Disp_WumeiDelay(0);
lcd_Disp_WumeiDelay(1);
Saved_Disp_Sec_WumeiDelay = 0;
}
else
{
if(WumeiDelay_State == YOUMEI)
{
Tmp_Disp_Sec = (Get_SysTime() - WumeiDelay_Start_Pre_Cnt) / T_CNT_1S;
if((Get_SysTime() - WumeiDelay_Start_Pre_Cnt) >= (30 * T_CNT_1S))
{
WumeiDelay_State = WUMEI;
lcd_Disp_WumeiDelay(0);
}
else if(Tmp_Disp_Sec != Saved_Disp_Sec_WumeiDelay)
{
Saved_Disp_Sec_WumeiDelay = Tmp_Disp_Sec;
lcd_Disp_WumeiDelay((u16)Tmp_Disp_Sec + 1);
}
}
}
}
}
}
u8 Damp_Bak;
u8 Damp_State;
u32 Damp_Start_Pre_Cnt;
u32 Saved_Disp_Sec_Damp;
//3秒才算濕度大,濕度正常立刻開灑水
void zhuji_Judge_Damp(void)
{
u32 Tmp_Disp_Sec;
if(pDamp == DAMP_NORMAL)
{
if(Damp_Bak == DAMP_H)
{
Damp_State = DAMP_NORMAL;
Damp_Bak = DAMP_NORMAL;
lcd_Disp_Damp(-1);
}
}
else
{
if(Damp_Bak == DAMP_NORMAL)
{
Damp_Start_Pre_Cnt = Get_SysTime();
Damp_Bak = DAMP_H;
lcd_Disp_Damp(0);
lcd_Disp_Damp(1);
Saved_Disp_Sec_Damp = 0;
}
else
{
if(Damp_State == DAMP_NORMAL)
{
Tmp_Disp_Sec = (Get_SysTime() - Damp_Start_Pre_Cnt) / T_CNT_1S;
if((Get_SysTime() - Damp_Start_Pre_Cnt) >= (3 * T_CNT_1S))
{
Damp_State = DAMP_H;
//lcd_Disp_Damp(0);
}
else if(Tmp_Disp_Sec != Saved_Disp_Sec_Damp)
{
Saved_Disp_Sec_Damp = Tmp_Disp_Sec;
lcd_Disp_Damp((u16)Tmp_Disp_Sec + 1);
}
}
}
}
}
u32 Sudu_Start_Pre_Cnt;
u32 Sudu_Start_Pre2_Cnt;
u32 Runstate_Pre_Cnt;
u32 RunState_Start_Flag;
u32 Saved_Disp_Sec_Sudustartpre2;
u32 Saved_Disp_Sec_Sudustartpre1;
void zhuji_Auto_Mode_Proc(void)
{
u32 Tmp_Disp_Sec;
//設置按鍵
if(Key_Scan() == KEY_SETUP)
{
Setup_Init();
return;
}
zhuji_Judge_Meisu();
if(pSudu == Off)
{
if(WorkState != SUDU_STOP_MODE)
{
WorkState = SUDU_STOP_MODE;
lcd_Disp_Sudu();
lcd_Disp_Sudu_Pre1(0);
lcd_Disp_Meiliu(-1);
lcd_Disp_WumeiDelay(-1);
lcd_Disp_Damp(-1);
Sasui_Off();
}
}
switch(WorkState)
{
//停機模式
case SUDU_STOP_MODE:
Sasui_Off();
if(pSudu == On)
{
WorkState = SUDU_START_Pre;
Sudu_Start_Pre_Cnt = Get_SysTime();
lcd_Disp_Sudu();
lcd_Disp_Sudu_Pre1(1);
Saved_Disp_Sec_Sudustartpre1 = 0;
}
break;
//速度啟動檢測3秒 算有運行 灑水
case SUDU_START_Pre:
//計時到
if((Get_SysTime() - Sudu_Start_Pre_Cnt) >= (3 * T_CNT_1S))
{
WorkState = SUDU_START_Pre2;
Sudu_Start_Pre2_Cnt = Get_SysTime();
Sasui_On();
lcd_Disp_Sudu_Pre2(1);
Saved_Disp_Sec_Sudustartpre2 = 0;
//濕度
Damp_State = DAMP_NORMAL;
Damp_Bak = DAMP_NORMAL;
}
//顯示計時
else
{
Tmp_Disp_Sec = (Get_SysTime() - Sudu_Start_Pre_Cnt) / T_CNT_1S;
if(Tmp_Disp_Sec != Saved_Disp_Sec_Sudustartpre1)
{
Saved_Disp_Sec_Sudustartpre1 = Tmp_Disp_Sec;
lcd_Disp_Sudu_Pre1((u16)Tmp_Disp_Sec + 1);
}
}
break;
//速度正常60秒 灑水
case SUDU_START_Pre2:
//計時到
if((Get_SysTime() - Sudu_Start_Pre2_Cnt) >= (60 * T_CNT_1S))//60
{
WorkState = RUN_MODE;
lcd_Disp_Sudu_Pre2(0);
//煤流
Meiliu_State = WUMEI;
Meiliu_Bak = WUMEI;
zhuji_Judge_Meiliu();
// //濕度
// Damp_State = DAMP_NORMAL;
// Damp_Bak = DAMP_NORMAL;
// zhuji_Judge_Damp();
Runstate_Pre_Cnt = Get_SysTime();
RunState_Start_Flag = 1;
}
//顯示計時
else
{
//濕度
zhuji_Judge_Damp();
if(Damp_State == DAMP_NORMAL)
{
Sasui_On();
}
else if(Damp_State == DAMP_H)
{
Sasui_Off();
}
Tmp_Disp_Sec = (Get_SysTime() - Sudu_Start_Pre2_Cnt) / T_CNT_1S;
if(Tmp_Disp_Sec != Saved_Disp_Sec_Sudustartpre2)
{
Saved_Disp_Sec_Sudustartpre2 = Tmp_Disp_Sec;
lcd_Disp_Sudu_Pre2(Tmp_Disp_Sec + 1);
}
}
break;
//速度正常 有煤,濕度正常,灑水
case RUN_MODE:
zhuji_Judge_Meiliu();
zhuji_Judge_Damp();
if((Get_SysTime() - Runstate_Pre_Cnt) >= (T_CNT_1S * 3))
{
RunState_Start_Flag = 0;
}
if(RunState_Start_Flag == 1)
{
//3秒內,Meiliu_State= YOUMEI沒有測到不用關,
if((pMeiliu == WUMEI) || (Damp_State == DAMP_H))
{
Sasui_Off();
RunState_Start_Flag = 0;
WumeiDelay_State = WUMEI;
WumeiDelay_Bak = WUMEI;
}
}
else
{
zhuji_WumeiDelay_Delay();
if((Damp_State == DAMP_NORMAL) && (Meiliu_State == YOUMEI))
{
Sasui_On();
}
else if((Damp_State == DAMP_H) || (WumeiDelay_State == WUMEI))
{
Sasui_Off();
}
}
break;
default:
break;
}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
AP.rar
(8.47 KB, 下載次數: 7)
2018-10-8 08:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2018-10-8 12:51
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1