欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)電煮鍋控制程序 可控硅控制 功能很多
[打印本頁(yè)]
作者:
20190312
時(shí)間:
2019-4-11 11:01
標(biāo)題:
單片機(jī)電煮鍋控制程序 可控硅控制 功能很多
自編的電水壺程序參考下,ESD-SFB-7P201與ESD-SFB-7P202開(kāi)關(guān)面板
單片機(jī)源程序如下:
#include "../H/Function_Init.h"
#define LED_COM1 PB4//第一組LED公共端---共陽(yáng)極 【大火、中火、小火、功能】
#define LED_COM2 PA1//第二組LED公共端---共陽(yáng)極 【沸水、慢燉、蒸燜、開(kāi)關(guān)】
#define LED_SEG1 PA7//中火、慢燉
#define LED_SEG2 PA6//小火、蒸燜
#define LED_SEG3 PA5//開(kāi)關(guān)、功能
#define LED_SEG4 PB1//大火、沸水
#define CLOSE_DISP {LED_SEG1 = 1;LED_SEG2 = 1;LED_SEG3 =1;LED_SEG4 = 1;LED_COM1 = 0;LED_COM2 = 0;}//關(guān)顯示
/*
PB6 電壓檢測(cè)【220 110】---AIN13
PB5 過(guò)零檢測(cè)---AIN12
PB3 溫度檢測(cè)1---AIN10
PA3 溫度檢測(cè)2
PA4 可控硅控制腳
*/
#define Horizontal 0
#define Vertical 1
#define Pro_Attr Vertical
// 電煮鍋 蒸蛋
#define STATE_OFF 0//關(guān)機(jī)
#define B_FIRE 6//大火 --- 蛋羹
#define M_FIRE 5//中火 --- 全熟蛋
#define S_FIRE 4//小火 --- 溏心蛋
#define STEWING 1//蒸燜 --- 火鍋
#define S_STEW 2//慢燉 --- 燒開(kāi)
#define B_WATER 3//沸水 --- 溫泉蛋
/*
------------------------------------------------------------------------------------------------
【蒸蛋機(jī)】
大火【蛋羹】 --- 首次96.5度持續(xù)保溫60S【功率要求:全功率】,98度持續(xù)60S【功率要求:300W】,96度持續(xù)420S【功率要求:300W】,98度持續(xù)300S【功率要求:300W】,95持續(xù)200S【功率要求:200W】
中火【全熟蛋】 --- 首次92度持續(xù)保溫35S【功率要求:首次在全電壓后轉(zhuǎn)100W保溫】,96.7度持續(xù)300S【功率要求:100W】
小火【溏心蛋】 --- 首次90度持續(xù)保溫30S【功率要求:首次在全電壓后轉(zhuǎn)100W保溫】,100度持續(xù)150S【功率要求:100W】
蒸燜【火鍋】 --- 到100度持續(xù)30S后轉(zhuǎn),長(zhǎng)期沸騰【功率要求:首次在全電壓后轉(zhuǎn)300W】
慢燉【燒開(kāi)】 --- 首次98度3~12S內(nèi)斷電開(kāi)始保溫,保溫溫度范圍75~90【功率要求:100V 450W/220V 600W】
沸水【溫泉蛋】 --- 首次65度持續(xù)保溫5分鐘【功率要求:首次在全電壓后轉(zhuǎn)100W保溫】,69度持續(xù)3分鐘【功率要求:100W】,72度持續(xù)13分鐘【功率要求:100W】
------------------------------------------------------------------------------------------------
*/
const uint16 data_ad10[]={//12位AD 精度5.00/4096 = 0;根據(jù)電阻分壓,求出模擬值。
4018,4014,4010,4005,4000,3995,3990,3985,3979,3973,//-9~0
3967,3961,3954,3948,3941,//1~5
3933,3925,3917,3909,3900,//6~10
3891,3882,3872,3862,3851,//11~15
3840,3829,3817,3805,3793,//16~20
3779,3766,3752,3738,3723,//21~25
3708,3692,3676,3659,3642,//26~30
3625,3607,3588,3569,3550,//31~35
3530,3509,3488,3467,3445,//36~40
3422,3399,3376,3352,3328,//41~45
3303,3278,3252,3226,3199,//46~50
3172,3145,3117,3089,3060,//51~55
3031,3002,2972,2942,2912,//56~60
2881,2850,2819,2788,2756,//61~65
2724,2692,2659,2627,2595,//66~70
2561,2529,2496,2462,2429,//71~75
2396,2363,2329,2289,2263,//76~80
2229,2196,2163,2129,2096,//81~85
2063,2030,1997,1964,1931,//86~90
1899,1867,1835,1804,1772,//91~95
1741,1711,1680,1650,1621,//96~100
1591,1562,1534,1506,1478,//101~105
1450,1423,1397,1370,1344,//106~110
1319,1294,1269,1245,1221,//111~115
1197,1174,1151,1128,1106,//116~120
1084,1063,1042,1021,1000,//121~125
979,958,938,918,898,//126~130
879,860,842,824,806,//131~135
789,772,755,739,723,//136~140
708,693,678,664,649,//141~145
636,622,609,596,584//146~150
};
uint8 work_mode;//關(guān)機(jī)
uint8 blink;//呼吸標(biāo)志
uint8 pwr_vol;//供電電壓
uint8 power;//工作功率
uint8 temperature;//當(dāng)前溫度
uint8 step;//加熱步驟標(biāo)志
uint8 temp_err;//溫度異常標(biāo)志
uint8 stop_change;//停止變換
uint8 drift_max;
uint8 t98_max;
uint8 keyscan_enable;
#define T98_220MAX 80//
#define T98_100MAX 180//
void work_at_b_fire(void);
void work_at_m_fire(void);
void work_at_s_fire(void);
void work_at_stewing(void);
void work_at_s_stew(void);
void work_at_b_water(void);
/*****************************************************
*函數(shù)名稱(chēng):void ramClear(void)
*函數(shù)功能:RAM中數(shù)據(jù)全部清零
*入口參數(shù):void
*返回值:void
*****************************************************/
void ramClear(void){
__asm{
CLR IAAL;
CLR IAAH;
CLR IAD;
INC IAAL,1;
JBS PSW,C
GOTO $-3;
INC IAAH,1;
JBS IAAH,2
GOTO $-6;
}
}
/*****************************************************
*函數(shù)名稱(chēng):void sysInit(void)
*函數(shù)功能:系統(tǒng)初始化
*入口參數(shù):void
*返回值:void
*****************************************************/
void sysInit(void){//用戶(hù)需更改
ANSL =0xFF; //Set Digital port
ANSH =0xFF;
PWEN = 3; // 當(dāng)BOREN使能時(shí),軟件使能低電壓檢測(cè)復(fù)位;使能WDT內(nèi)部RC時(shí)鐘
blink = 0;
work_mode = STATE_OFF;//B_FIRE STATE_OFF
temperature = 0;
pwr_vol = PWR_VOL_220AC;//PWR_VOL_220AC
power = PWR_STOP;//
step = 0;
temp_err = 0;
stop_change = 0;
drift_max = Drift_220V;
t98_max = T98_220MAX;
keyscan_enable = 0;
}
/*****************************************************
*函數(shù)名稱(chēng):void delay100ms(uint8 time)
*函數(shù)功能:延時(shí)100ms
*入口參數(shù):time—時(shí)間計(jì)數(shù),單位100ms
*返回值:void
*****************************************************/
void delay100ms(uint8 time){
uint8 i,j,k;
for (i=0; i<time; i++){
for (j=0; j<100; j++){
for (k=0; k<249; k++){
nop();
nop();
//nop();
clr_wdt();
}
}
}
}
/*****************************************************
*函數(shù)名稱(chēng):void display(void)
*函數(shù)功能:顯示函數(shù)
*入口參數(shù):void
*返回值:void
*****************************************************/
void display(void){
//開(kāi)關(guān)指示燈在關(guān)機(jī)狀態(tài)下常亮,開(kāi)機(jī)工作狀態(tài)下,3s后熄滅
//功能指示燈在開(kāi)機(jī)狀態(tài)和切換工作模式狀態(tài)時(shí)常亮,3s后熄滅
/*
#define LED_COM1 PB4//第一組LED公共端---共陽(yáng)極 【大火、中火、小火、功能】
#define LED_COM2 PA1//第二組LED公共端---共陽(yáng)極 【沸水、慢燉、蒸燜、開(kāi)關(guān)】
#define LED_SEG1 PA7//中火、慢燉
#define LED_SEG2 PA6//小火、蒸燜
#define LED_SEG3 PA5//開(kāi)關(guān)、功能
#define LED_SEG4 PB1//大火、沸水
目前:蛋羹1、全熟2、溏心3、火鍋4、燒開(kāi)5、火鍋6
愚人:
1.豎排的排序:如圖,功能跳轉(zhuǎn):默認(rèn)火鍋,燒開(kāi)、溫泉、溏心、全熟、蛋羹
愚人:
1.橫排的排序及功能跳轉(zhuǎn):默認(rèn)火鍋,燒開(kāi)、溫泉、溏心、全熟、蛋羹
*/
static uint8 i = 0;
if(tick2 != 2){
return;
}
CLOSE_DISP
if(i == 0){
LED_COM1 = 1;
if(work_mode != STATE_OFF){
LED_SEG3 = 0;//功能指示燈只有在開(kāi)機(jī)的時(shí)候才亮
}
switch(work_mode){
case B_FIRE://大火
if(blink < 6){//小于3s
if(blink%2){
if(Pro_Attr == Vertical){
LED_SEG4 = 0;
}else{
LED_SEG2 = 0;
}
}
}else{
if(blink%7 < 6){
if(Pro_Attr == Vertical){
LED_SEG4 = 0;
}else{
LED_SEG2 = 0;
}
}
}
break;
case M_FIRE://中火
if(blink < 6){//小于3s,
if(blink%2){
LED_SEG1 = 0;
}
}else{
if(blink%7 < 6){
LED_SEG1 = 0;
}
}
break;
case S_FIRE://小火
if(blink < 6){//小于3s,
if(blink%2){
if(Pro_Attr == Vertical){
LED_SEG2 = 0;
}else{
LED_SEG4 = 0;
}
}
}else{
if(blink%7 < 6){
if(Pro_Attr == Vertical){
LED_SEG2 = 0;
}else{
LED_SEG4 = 0;
}
}
}
break;
}
i = 1;
}else{
LED_COM2 = 1;
LED_SEG3 = 0;//開(kāi)關(guān)指示燈永遠(yuǎn)亮
switch(work_mode){
case STEWING://蒸燜
if(blink < 6){//小于3s,
if(blink%2){
LED_SEG2 = 0;
}
}else{
if(blink%7 < 6){
LED_SEG2 = 0;
}
}
break;
case S_STEW://慢燉
if(blink < 6){//小于3s
if(blink%2){
LED_SEG1 = 0;
}
}else{
if(blink%7 < 6){
LED_SEG1 = 0;
}
}
break;
case B_WATER://沸水
if(blink < 6){//小于3s
if(blink%2){
LED_SEG4 = 0;
}
}else{
if(blink%7 < 6){
LED_SEG4 = 0;
}
}
break;
}
i = 0;
}
}
/*****************************************************
*函數(shù)名稱(chēng):void keyScan(void)
*函數(shù)功能:工作 //TK_state 使用TK_state參數(shù) 對(duì)應(yīng)按鍵狀態(tài)位 32bit 按下為1 松開(kāi)為0
*入口參數(shù):void //TK_state_single 使用TK_state_single參數(shù) 對(duì)應(yīng)按鍵狀態(tài)位 32bit 按下為1 松開(kāi)為0 僅一個(gè)按鍵有效
*返回值:void
*****************************************************/
void keyScan(void){
static uint8 record = 14,reset = 0;
uint8 tkey = 14;
if(keyscan_enable == 0){
return;
}
if(temp_err){//溫度傳感器異常,不能開(kāi)機(jī)
work_mode = STATE_OFF;
return;
}
if((uint16)TK_state_single&0x1){
tkey = 7;
}else if((uint16)TK_state_single&0x2){
tkey = 9;
}
if(tkey != record){//如果此次按鍵值,與記錄的按鍵值不相同,開(kāi)始計(jì)時(shí),消抖
if(reset){
if(tk_cnt >= TK_CNT){//計(jì)時(shí)了20ms,觸發(fā)按鍵還是沒(méi)發(fā)生變化
reset = 0;
}else{
return;
}
}else{//重新計(jì)數(shù)
tk_cnt = 0;
reset = 1;
return;
}
}else{
return;
}
record = tkey;
if(blink > 6){
stop_change = 1;
}else{
blink = 0;
}
switch(tkey){
case 9://觸摸按鍵9 --- 功能按鍵
if((work_mode != STATE_OFF)&&(stop_change != 1)){
work_mode++;
if(work_mode > B_FIRE){
work_mode = STEWING;
}
}
break;
case 7://觸摸按鍵7--- 開(kāi)關(guān)按鍵
if(work_mode != STATE_OFF){
work_mode = STATE_OFF;
blink = 7;//關(guān)機(jī)立刻刷新工作狀態(tài)
}else{
work_mode = STEWING;
blink = 0;
stop_change = 0;
}
break;
default://14
break;
}
}
/*****************************************************
*函數(shù)名稱(chēng):void stateMonitor(void)
*函數(shù)功能:檢測(cè)輸入電壓和過(guò)零檢測(cè)
*入口參數(shù):void
*返回值:void
*****************************************************/
void stateMonitor(void){
uint16 val;
uint8 i;
//【AIN10---RT1溫度采集】【AIN12過(guò)零檢測(cè) AIN13電壓檢測(cè)】
/*
示波器顯示:220VAC時(shí),采樣點(diǎn)電壓最大值3.6V,最小值3.2V,平均值3.33V
220AC ---> 110DC 110V x [10 / (100+100+10+10)] - 1.4 = 3.6V
100AC ---> 50DC 50V x [10 / (100+100+10+10)] - 1.4 = 0.87V
綜上所述,以2V為分界點(diǎn),大于2V為220VAC供電,小于2V為100VAC供電
分界采樣值a如下:4096 / 5 *2 = 1638 ===> 取1650即可
*/
//RT1溫度采集
static uint8 temp_old = 0,k = 0;
val = adcSimpling(AIN10);
for(i = 0;i < 160;i++){
if(val < data_ad10[i]){
continue;
}else{
break;
}
}
if(i < 10){//熱敏電阻短路故障 25===2045~2050
temperature = 0xe3;//0xe3
temp_err = 1;
}else if(i > 120){//熱敏電阻開(kāi)路故障【干燒到110度】
temperature = 0xe3;//0xe2
temp_err = 1;
}else{
temperature = i - 9;//轉(zhuǎn)化溫度值
temp_old = temperature;
temp_err = 0;
}
if(temp_err){
if(k <= 100){
k++;
temperature = temp_old;
temp_err = 0;
}
}else{
k = 0;
}
//電壓檢測(cè)
if(tick1 != 1){
return;
}
if(adcSimpling(AIN13) > 1500){//1650
pwr_vol = PWR_VOL_220AC;//220VAC供電
drift_max = Drift_220V;
t98_max = T98_220MAX;
}else{
pwr_vol = PWR_VOL_100AC;//100VAC供電
drift_max = Drift_100V;
t98_max = T98_100MAX;
}
tick1 = 0;
}
/*****************************************************
*函數(shù)名稱(chēng):void outputCtrl(void)
*函數(shù)功能:輸出控制函數(shù)
*入口參數(shù):void
*返回值:void
*****************************************************/
void outputCtrl(void){
/*
P = U*U/R;
加熱管220V 1800W
220V 600W【默認(rèn)為全電壓、全功率】
100V 350W【默認(rèn)為全電壓、全功率】
------------------------------------------------------------------------------------------------
【蒸蛋機(jī)】
大火【蛋羹】 --- 首次96.5度持續(xù)保溫60S【功率要求:全功率】,98度持續(xù)60S【功率要求:300W】,96度持續(xù)420S【功率要求:300W】,98度持續(xù)300S【功率要求:300W】,95持續(xù)200S【功率要求:300W】
中火【全熟蛋】 --- 首次92度持續(xù)保溫35S【功率要求:首次在全電壓后轉(zhuǎn)300W保溫】,96.7度持續(xù)300S【功率要求:300W】
小火【溏心蛋】 --- 首次90度持續(xù)保溫30S【功率要求:首次在全電壓后轉(zhuǎn)300W保溫】,100度持續(xù)150S【功率要求:300W】
蒸燜【火鍋】 --- 到100度持續(xù)30S后轉(zhuǎn),長(zhǎng)期沸騰【功率要求:首次在全電壓后轉(zhuǎn)300W】
慢燉【燒開(kāi)】 --- 首次98度3~12S內(nèi)斷電開(kāi)始保溫,保溫溫度范圍75~90【功率要求:100V 350W/220V 600W】
沸水【溫泉蛋】 --- 首次65度持續(xù)保溫5分鐘【功率要求:首次在全電壓后轉(zhuǎn)200W保溫】,69度持續(xù)3分鐘【功率要求:200W】,72度持續(xù)13分鐘【功率要求200W】
【蒸蛋機(jī)】---功能修改2019-3-16
中火【全熟蛋】 --- 首次92度持續(xù)保溫35S【功率要求:首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W,來(lái)確保冰箱蛋不被由于溫度驟升導(dǎo)致裂)后轉(zhuǎn)300W保溫】,96.7度持續(xù)300S【功率要求:300W】
小火【溏心蛋】 --- 首次90度持續(xù)保溫30S【功率要求:首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W,來(lái)確保冰箱蛋不被由于溫度驟升導(dǎo)致裂)后轉(zhuǎn)300W保溫】,100度持續(xù)150S【功率要求:300W】
沸水【溫泉蛋】 --- 首次65度持續(xù)保溫5分鐘【功率要求:首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W,來(lái)確保冰箱蛋不被由于溫度驟升導(dǎo)致裂)后轉(zhuǎn)200W保溫】,69度持續(xù)3分鐘【功率要求:200W】,72度持續(xù)13分鐘【功率要求200W】
【蒸蛋機(jī)】---功能修改2019-3-21
大火【蛋羹】 --- 1.首次96.5度持續(xù)保溫60S【1.全功率轉(zhuǎn)300W】,2.98度持續(xù)60S【2.350W】,3.96度持續(xù)420S【3.300W】,4.98度持續(xù)300S【4.350W】,5.95持續(xù)200S【5.300W】
中火【全熟蛋】 --- 1.首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W到60度持續(xù)60S后轉(zhuǎn)300W到92度保溫35S,2.300W到96持續(xù)300S
小火【溏心蛋】 --- 1.首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W到60度持續(xù)60S后350W到90度300W保溫30S,2.350W到100度持續(xù)150S
沸水【溫泉蛋】 --- 1.首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W到67度后轉(zhuǎn)200W維持保溫5分鐘 2.200W 69度持續(xù)保溫3.5分鐘 3.200W 72度持續(xù)保溫14分鐘
------------------------------------------------------------------------------------------------
*/
static uint8 old_work_mode = 0;
if(blink > 6){//新的工作模式生效
if(old_work_mode != work_mode){
step = 0;//工作模式變過(guò),操作步驟重新開(kāi)始
old_work_mode = work_mode;
}
}
switch(old_work_mode){
case STATE_OFF://關(guān)機(jī)
power = PWR_STOP;
break;
case B_FIRE://大火【蛋羹】
work_at_b_fire();
break;
case M_FIRE://中火【全熟蛋】
work_at_m_fire();
break;
case S_FIRE://小火【溏心蛋】
work_at_s_fire();
break;
case STEWING://蒸燜【火鍋】
work_at_stewing();
break;
case S_STEW://慢燉【燒開(kāi)】
work_at_s_stew();
break;
case B_WATER://沸水【溫泉蛋】
work_at_b_water();
break;
}
}
//===============================================================================
//全功率時(shí),96度要減,98度不用減
//局部函數(shù),工作在大火模式下
void work_at_b_fire(void){
//大火【蛋羹】 --- 1.首次96.5度持續(xù)保溫60S【1.全功率轉(zhuǎn)300W】,2.98度持續(xù)60S【2.350W】,3.96度持續(xù)420S【3.300W】,4.98度持續(xù)300S【4.350W】,5.95持續(xù)200S【5.300W】
if(step == 0){
if(temperature < (96 - 2)){//1.首次96.5度持續(xù)保溫60S【1.全功率轉(zhuǎn)300W】
power = PWR_ALL;
}else{
step = 1;
tickn = 0;
}
}else if(step == 1){
if(tickn < 60){
if(temperature < 96){
power = PWR_300W;
}else{
power = PWR_STOP;
}
}else{
step = 2;
}
}else if(step == 2){//2.98度持續(xù)60S【2.350W】
if(temperature < 98-2){
power = PWR_350W;
}else{
step = 3;
tickn = 0;
}
}else if(step == 3){
if(tickn < 60){
if(temperature < 98){
power = PWR_350W;
}else{
power = PWR_STOP;
}
}else{
step = 4;
}
}else if(step == 4){//3.96度持續(xù)420S【3.300W】
if(temperature > 96){
power = PWR_STOP;//一定要加
}else{
step = 5;
tickn = 0;
}
}else if(step == 5){
if(tickn < 420){
if(temperature < 96){
power = PWR_300W;
}else{
power = PWR_STOP;
}
}else{
step = 6;
}
}else if(step == 6){//4.98度持續(xù)300S【4.350W】
if(temperature < 98-2){
power = PWR_350W;
}else{
step = 7;
tickn = 0;
}
}else if(step == 7){
if(tickn < 300){
if(temperature < 98){
power = PWR_350W;
}else{
power = PWR_STOP;
}
}else{
step = 8;
}
}else if(step == 8){//5.95持續(xù)200S【5.300W】
if(temperature > 95){
power = PWR_STOP;//一定要加
}else{
step = 9;
tickn = 0;
}
}else if(step == 9){
if(tickn < 200){
if(temperature < 95){
power = PWR_300W;
}else{
power = PWR_STOP;
}
}else{
work_mode = STATE_OFF;//工作結(jié)束,關(guān)機(jī)
}
}
}
//局部函數(shù),工作在中火模式下
void work_at_m_fire(void){
//中火【全熟蛋】 --- 1.首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W到60度持續(xù)60S后轉(zhuǎn)300W到92度保溫35S,2.300W到96持續(xù)320S
if(step == 0){
if(temperature < 40){
power = PWR_ALL;
}else{
step = 1;
tickn = 0;
}
}else if(step == 1){
if(tickn < 120){
if(temperature < 40){
power = PWR_ALL;
}else{
power = PWR_STOP;
}
}else{
step = 2;
}
}else if(step == 2){
if(temperature < 60){
power = PWR_350W;
}else{
step = 3;
tickn = 0;
}
}else if(step == 3){
if(tickn < 60){
if(temperature < 60){
power = PWR_350W;
}else{
power = PWR_STOP;
}
}else{
step = 4;
}
}else if(step == 4){
if(temperature < 92){
power = PWR_300W;
}else{
step = 5;
tickn = 0;
}
}else if(step == 5){
if(tickn < 35){
if(temperature < 92){
power = PWR_300W;
}else{
power = PWR_STOP;
}
}else{
step = 6;
}
}else if(step == 6){
if(temperature < (97-2)){
power = PWR_300W;
}else{
step = 7;
tickn = 0;
}
}else if(step == 7){
if(tickn < 320){//
if(temperature < 97){
power = PWR_300W;
}else{
power = PWR_STOP;
}
}else{
work_mode = STATE_OFF;//工作結(jié)束,關(guān)機(jī)
}
}
}
//局部函數(shù),工作在小火模式下
void work_at_s_fire(void){
//小火【溏心蛋】 --- 1.首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W到60度持續(xù)60S后350W到90度300W保溫30S,2.350W到100度持續(xù)130S
if(step == 0){
if(temperature < 40){
power = PWR_ALL;
}else{
step = 1;
tickn = 0;
}
}else if(step == 1){
if(tickn < 120){
if(temperature < 40){
power = PWR_ALL;
}else{
power = PWR_STOP;
}
}else{
step = 2;
}
}else if(step == 2){
if(temperature < 60){
power = PWR_350W;
}else{
step = 3;
tickn = 0;
}
}else if(step == 3){
if(tickn < 60){
if(temperature < 60){
power = PWR_350W;
}else{
power = PWR_STOP;
}
}else{
step = 4;
}
}else if(step == 4){
if(temperature < 90){
power = PWR_350W;
}else{
step = 5;
tickn = 0;
}
}else if(step == 5){
if(tickn < 30){
if(temperature < 90){
power = PWR_300W;
}else{
power = PWR_STOP;
}
}else{
step = 6;
}
}else if(step == 6){
if(temperature < (100 - 4)){
power = PWR_350W;
}else{
step = 7;
tickn = 0;
}
}else if(step == 7){
if(tickn < 130){
if(temperature < 100){
power = PWR_350W;
}else{
power = PWR_STOP;
}
}else{
work_mode = STATE_OFF;//工作結(jié)束,關(guān)機(jī)
}
}
}
//局部函數(shù),工作在蒸燜模式下
void work_at_stewing(void){
//蒸燜【火鍋】 --- 到100度持續(xù)30S后轉(zhuǎn),長(zhǎng)期沸騰【功率要求:首次在全電壓后轉(zhuǎn)300W】
if(step == 0){
if(temperature < (100 - 3)){//首次小于100度
power = PWR_ALL;//全功率加熱
}else{
step = 1;//到了100度,進(jìn)入下一步,進(jìn)行保溫
tickn = 0;//100度持續(xù),計(jì)時(shí)30s
}
}else if(step == 1){//到100度持續(xù)30S后轉(zhuǎn),長(zhǎng)期沸騰【功率要求:首次在全電壓后轉(zhuǎn)300W】
if(tickn < 30){//100度持續(xù)30s時(shí)間未到
power = PWR_ALL;//全功率加熱
}else{//100度持續(xù)30s時(shí)間到,進(jìn)入下一步
step = 2;//長(zhǎng)期沸騰
}
}else if(step == 2){//300W,長(zhǎng)期沸騰
//300W加熱
power = PWR_300W;//
}
}
//局部函數(shù),工作在慢燉模式下
void work_at_s_stew(void){
//慢燉【燒開(kāi)】 --- 首次98度3~12S內(nèi)斷電開(kāi)始保溫,保溫溫度范圍75~90【功率要求:100V 350W/220V 600W】
static uint8 heat = 0;
if(step == 0){
if(temperature < 90){
power = PWR_ALL;//全功率加熱
}else{
step = 1;//到了90度,進(jìn)入下一步
tickn = 0;//90度,計(jì)時(shí)
}
}else if(step == 1){
if((temperature < (98-1))&&(tickn < t98_max)){//首次98度3~12S內(nèi)斷電
power = PWR_ALL;//全功率加熱
}else{
step = 2;//到了98度,進(jìn)入下一步
tickn = 0;//98度持續(xù),3~12S內(nèi)斷電
}
}else if(step == 2){
if(tickn < 12){//3~12S內(nèi)斷電
if(temperature < 98){//首次98度3~12S內(nèi)斷電
power = PWR_ALL;//全功率加熱
}else{
power = PWR_STOP;
}
}else{
power = PWR_STOP;
step = 3;//到了3~12s,進(jìn)入下一步,保溫,保溫溫度范圍75~90
heat = 0;
}
}else if(step == 3){
if(temperature < (75 + 2)){
heat = 1;
}
if(temperature > (90 - 2)){
heat = 0;
}
if(heat){//溫度不在保溫范圍內(nèi),需要加熱
power = PWR_ALL;//全功率加熱
}else{
power = PWR_STOP;
}
}
}
//局部函數(shù),工作在沸水模式下
void work_at_b_water(void){
//沸水【溫泉蛋】 --- 1.首次分開(kāi)二段,先全電壓維持40度1`2分鐘后轉(zhuǎn)350W到67度后轉(zhuǎn)200W維持保溫5分鐘 2.200W 69度持續(xù)保溫3.5分鐘 3.200W 72度持續(xù)保溫14分鐘
if(step == 0){
if(temperature < 40){
power = PWR_ALL;
}else{
step = 1;
tickn = 0;
}
}else if(step == 1){
if(tickn < 120){
if(temperature < 40){
power = PWR_ALL;
}else{
power = PWR_STOP;
}
}else{
step = 2;
}
}else if(step == 2){
if(temperature < 67){
power = PWR_350W;
}else{
step = 3;
tickn = 0;
}
}else if(step == 3){
if(tickn < 300){
if(temperature < 67){
power = PWR_200W;
}else{
power = PWR_STOP;
}
}else{
step = 4;
}
}else if(step == 4){
if(temperature < 69){
power = PWR_200W;
}else{
step = 5;
tickn = 0;
}
}else if(step == 5){
if(tickn < 210){
if(temperature < 69){
power = PWR_200W;
}else{
power = PWR_STOP;
}
}else{
step = 6;
}
}else if(step == 6){
if(temperature < 72){
power = PWR_200W;
}else{
step = 7;
tickn = 0;
}
}else if(step == 7){
if(tickn < 840){
if(temperature < 72){
power = PWR_200W;
}else{
power = PWR_STOP;
}
}else{
work_mode = STATE_OFF;//工作結(jié)束,關(guān)機(jī)
}
}
}
/*****************************************************
*函數(shù)名稱(chēng):void Customer_Keystatejustpress(void)
*函數(shù)功能:觸控任意通道被剛剛檢測(cè)到按下?tīng)顟B(tài)
*入口參數(shù):void
*返回值:void
*****************************************************/
void Customer_Keystatejustpress(void){ //TK_state was just freshed you can use the parameter as you want 輸出值: TK_state
}
/*****************************************************
*函數(shù)名稱(chēng):void Customer_Keystatejustrelease(void)
*函數(shù)功能:觸控任意通道被剛剛檢測(cè)到釋放
*入口參數(shù):void
*返回值:void
*****************************************************/
void Customer_Keystatejustrelease(void){ //TK_state was just freshed you can use the parameter as you want 輸出值: TK_state
}
復(fù)制代碼
/*********************************************************************************
適用于ESD-SFB-7P201與ESD-SFB-7P202開(kāi)關(guān)面板
**********************************************************************************/
#include "./H/Function_Init.h"
/*****************************************************
*函數(shù)名稱(chēng):void main(void)
*函數(shù)功能:主函數(shù)
*參數(shù):void
*返回值:void
*****************************************************/
void main(void){
ramClear();
sysInit();//Customer need change
delay100ms(1);
ioInit();
adcInit();
dateInit();
timerInit();
itVectorsInit();
TKInit();
GIE = 1;
Tk_getbaselinedata();//初始化基線(xiàn)
while(!(tick2 == 2));//芯片配置字中的看么狗沒(méi)有使能
while(1){
clr_wdt();//清看門(mén)狗
Tk_service();
Timer_check();//Check if 10ms tick
keyScan();
stateMonitor();
outputCtrl();
}
}
復(fù)制代碼
所有資料51hei提供下載:
test.7z
(594.05 KB, 下載次數(shù): 63)
2019-4-11 19:40 上傳
點(diǎn)擊文件名下載附件
電水壺
下載積分: 黑幣 -5
作者:
admin
時(shí)間:
2019-4-11 19:44
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1