自编的电水壶程序参考下,ESD-SFB-7P201与ESD-SFB-7P202开关面板
单片机源程序如下:
- #include "../H/Function_Init.h"
- #define LED_COM1 PB4//第一组LED公共端---共阳极 【大火、中火、小火、功能】
- #define LED_COM2 PA1//第二组LED公共端---共阳极 【沸水、慢炖、蒸焖、开关】
- #define LED_SEG1 PA7//中火、慢炖
- #define LED_SEG2 PA6//小火、蒸焖
- #define LED_SEG3 PA5//开关、功能
- #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;}//关显示
- /*
- PB6 电压检测【220 110】---AIN13
- PB5 过零检测---AIN12
- PB3 温度检测1---AIN10
- PA3 温度检测2
- PA4 可控硅控制脚
- */
- #define Horizontal 0
- #define Vertical 1
- #define Pro_Attr Vertical
- // 电煮锅 蒸蛋
- #define STATE_OFF 0//关机
- #define B_FIRE 6//大火 --- 蛋羹
- #define M_FIRE 5//中火 --- 全熟蛋
- #define S_FIRE 4//小火 --- 溏心蛋
- #define STEWING 1//蒸焖 --- 火锅
- #define S_STEW 2//慢炖 --- 烧开
- #define B_WATER 3//沸水 --- 温泉蛋
- /*
- ------------------------------------------------------------------------------------------------
- 【蒸蛋机】
- 大火【蛋羹】 --- 首次96.5度持续保温60S【功率要求:全功率】,98度持续60S【功率要求:300W】,96度持续420S【功率要求:300W】,98度持续300S【功率要求:300W】,95持续200S【功率要求:200W】
- 中火【全熟蛋】 --- 首次92度持续保温35S【功率要求:首次在全电压后转100W保温】,96.7度持续300S【功率要求:100W】
- 小火【溏心蛋】 --- 首次90度持续保温30S【功率要求:首次在全电压后转100W保温】,100度持续150S【功率要求:100W】
- 蒸焖【火锅】 --- 到100度持续30S后转,长期沸腾【功率要求:首次在全电压后转300W】
- 慢炖【烧开】 --- 首次98度3~12S内断电开始保温,保温温度范围75~90【功率要求:100V 450W/220V 600W】
- 沸水【温泉蛋】 --- 首次65度持续保温5分钟【功率要求:首次在全电压后转100W保温】,69度持续3分钟【功率要求:100W】,72度持续13分钟【功率要求:100W】
- ------------------------------------------------------------------------------------------------
- */
- const uint16 data_ad10[]={//12位AD 精度5.00/4096 = 0;根据电阻分压,求出模拟值。
- 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;//关机
- uint8 blink;//呼吸标志
- uint8 pwr_vol;//供电电压
- uint8 power;//工作功率
- uint8 temperature;//当前温度
- uint8 step;//加热步骤标志
- uint8 temp_err;//温度异常标志
- 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);
- /*****************************************************
- *函数名称:void ramClear(void)
- *函数功能:RAM中数据全部清零
- *入口参数: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;
- }
- }
- /*****************************************************
- *函数名称:void sysInit(void)
- *函数功能:系统初始化
- *入口参数:void
- *返回值:void
- *****************************************************/
- void sysInit(void){//用户需更改
- ANSL =0xFF; //Set Digital port
- ANSH =0xFF;
- PWEN = 3; // 当BOREN使能时,软件使能低电压检测复位;使能WDT内部RC时钟
- 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;
- }
- /*****************************************************
- *函数名称:void delay100ms(uint8 time)
- *函数功能:延时100ms
- *入口参数:time—时间计数,单位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();
- }
- }
- }
- }
- /*****************************************************
- *函数名称:void display(void)
- *函数功能:显示函数
- *入口参数:void
- *返回值:void
- *****************************************************/
- void display(void){
- //开关指示灯在关机状态下常亮,开机工作状态下,3s后熄灭
- //功能指示灯在开机状态和切换工作模式状态时常亮,3s后熄灭
- /*
- #define LED_COM1 PB4//第一组LED公共端---共阳极 【大火、中火、小火、功能】
- #define LED_COM2 PA1//第二组LED公共端---共阳极 【沸水、慢炖、蒸焖、开关】
- #define LED_SEG1 PA7//中火、慢炖
- #define LED_SEG2 PA6//小火、蒸焖
- #define LED_SEG3 PA5//开关、功能
- #define LED_SEG4 PB1//大火、沸水
- 目前:蛋羹1、全熟2、溏心3、火锅4、烧开5、火锅6
- 愚人:
- 1.竖排的排序:如图,功能跳转:默认火锅,烧开、温泉、溏心、全熟、蛋羹
- 愚人:
- 1.横排的排序及功能跳转:默认火锅,烧开、温泉、溏心、全熟、蛋羹
- */
- static uint8 i = 0;
- if(tick2 != 2){
- return;
- }
- CLOSE_DISP
- if(i == 0){
- LED_COM1 = 1;
- if(work_mode != STATE_OFF){
- LED_SEG3 = 0;//功能指示灯只有在开机的时候才亮
- }
- 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;//开关指示灯永远亮
- 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;
- }
- }
- /*****************************************************
- *函数名称:void keyScan(void)
- *函数功能:工作 //TK_state 使用TK_state参数 对应按键状态位 32bit 按下为1 松开为0
- *入口参数:void //TK_state_single 使用TK_state_single参数 对应按键状态位 32bit 按下为1 松开为0 仅一个按键有效
- *返回值:void
- *****************************************************/
- void keyScan(void){
- static uint8 record = 14,reset = 0;
- uint8 tkey = 14;
- if(keyscan_enable == 0){
- return;
- }
- if(temp_err){//温度传感器异常,不能开机
- 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){//如果此次按键值,与记录的按键值不相同,开始计时,消抖
- if(reset){
- if(tk_cnt >= TK_CNT){//计时了20ms,触发按键还是没发生变化
- reset = 0;
- }else{
- return;
- }
- }else{//重新计数
- 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--- 开关按键
- if(work_mode != STATE_OFF){
- work_mode = STATE_OFF;
- blink = 7;//关机立刻刷新工作状态
- }else{
- work_mode = STEWING;
- blink = 0;
- stop_change = 0;
- }
- break;
- default://14
- break;
- }
- }
- /*****************************************************
- *函数名称:void stateMonitor(void)
- *函数功能:检测输入电压和过零检测
- *入口参数:void
- *返回值:void
- *****************************************************/
- void stateMonitor(void){
- uint16 val;
- uint8 i;
- //【AIN10---RT1温度采集】【AIN12过零检测 AIN13电压检测】
- /*
- 示波器显示:220VAC时,采样点电压最大值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为分界点,大于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){//热敏电阻开路故障【干烧到110度】
- temperature = 0xe3;//0xe2
- temp_err = 1;
- }else{
- temperature = i - 9;//转化温度值
- temp_old = temperature;
- temp_err = 0;
- }
- if(temp_err){
- if(k <= 100){
- k++;
- temperature = temp_old;
- temp_err = 0;
- }
- }else{
- k = 0;
- }
- //电压检测
- 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;
- }
- /*****************************************************
- *函数名称:void outputCtrl(void)
- *函数功能:输出控制函数
- *入口参数:void
- *返回值:void
- *****************************************************/
- void outputCtrl(void){
- /*
- P = U*U/R;
- 加热管220V 1800W
- 220V 600W【默认为全电压、全功率】
- 100V 350W【默认为全电压、全功率】
- ------------------------------------------------------------------------------------------------
- 【蒸蛋机】
- 大火【蛋羹】 --- 首次96.5度持续保温60S【功率要求:全功率】,98度持续60S【功率要求:300W】,96度持续420S【功率要求:300W】,98度持续300S【功率要求:300W】,95持续200S【功率要求:300W】
- 中火【全熟蛋】 --- 首次92度持续保温35S【功率要求:首次在全电压后转300W保温】,96.7度持续300S【功率要求:300W】
- 小火【溏心蛋】 --- 首次90度持续保温30S【功率要求:首次在全电压后转300W保温】,100度持续150S【功率要求:300W】
- 蒸焖【火锅】 --- 到100度持续30S后转,长期沸腾【功率要求:首次在全电压后转300W】
- 慢炖【烧开】 --- 首次98度3~12S内断电开始保温,保温温度范围75~90【功率要求:100V 350W/220V 600W】
- 沸水【温泉蛋】 --- 首次65度持续保温5分钟【功率要求:首次在全电压后转200W保温】,69度持续3分钟【功率要求:200W】,72度持续13分钟【功率要求200W】
- 【蒸蛋机】---功能修改2019-3-16
- 中火【全熟蛋】 --- 首次92度持续保温35S【功率要求:首次分开二段,先全电压维持40度1`2分钟后转350W,来确保冰箱蛋不被由于温度骤升导致裂)后转300W保温】,96.7度持续300S【功率要求:300W】
- 小火【溏心蛋】 --- 首次90度持续保温30S【功率要求:首次分开二段,先全电压维持40度1`2分钟后转350W,来确保冰箱蛋不被由于温度骤升导致裂)后转300W保温】,100度持续150S【功率要求:300W】
- 沸水【温泉蛋】 --- 首次65度持续保温5分钟【功率要求:首次分开二段,先全电压维持40度1`2分钟后转350W,来确保冰箱蛋不被由于温度骤升导致裂)后转200W保温】,69度持续3分钟【功率要求:200W】,72度持续13分钟【功率要求200W】
- 【蒸蛋机】---功能修改2019-3-21
- 大火【蛋羹】 --- 1.首次96.5度持续保温60S【1.全功率转300W】,2.98度持续60S【2.350W】,3.96度持续420S【3.300W】,4.98度持续300S【4.350W】,5.95持续200S【5.300W】
- 中火【全熟蛋】 --- 1.首次分开二段,先全电压维持40度1`2分钟后转350W到60度持续60S后转300W到92度保温35S,2.300W到96持续300S
- 小火【溏心蛋】 --- 1.首次分开二段,先全电压维持40度1`2分钟后转350W到60度持续60S后350W到90度300W保温30S,2.350W到100度持续150S
- 沸水【温泉蛋】 --- 1.首次分开二段,先全电压维持40度1`2分钟后转350W到67度后转200W维持保温5分钟 2.200W 69度持续保温3.5分钟 3.200W 72度持续保温14分钟
- ------------------------------------------------------------------------------------------------
- */
- static uint8 old_work_mode = 0;
- if(blink > 6){//新的工作模式生效
- if(old_work_mode != work_mode){
- step = 0;//工作模式变过,操作步骤重新开始
- old_work_mode = work_mode;
- }
- }
- switch(old_work_mode){
- case STATE_OFF://关机
- 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://慢炖【烧开】
- work_at_s_stew();
- break;
- case B_WATER://沸水【温泉蛋】
- work_at_b_water();
- break;
- }
- }
- //===============================================================================
- //全功率时,96度要减,98度不用减
- //局部函数,工作在大火模式下
- void work_at_b_fire(void){
- //大火【蛋羹】 --- 1.首次96.5度持续保温60S【1.全功率转300W】,2.98度持续60S【2.350W】,3.96度持续420S【3.300W】,4.98度持续300S【4.350W】,5.95持续200S【5.300W】
- if(step == 0){
- if(temperature < (96 - 2)){//1.首次96.5度持续保温60S【1.全功率转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度持续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度持续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度持续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持续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;//工作结束,关机
- }
- }
- }
- //局部函数,工作在中火模式下
- void work_at_m_fire(void){
- //中火【全熟蛋】 --- 1.首次分开二段,先全电压维持40度1`2分钟后转350W到60度持续60S后转300W到92度保温35S,2.300W到96持续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;//工作结束,关机
- }
- }
- }
- //局部函数,工作在小火模式下
- void work_at_s_fire(void){
- //小火【溏心蛋】 --- 1.首次分开二段,先全电压维持40度1`2分钟后转350W到60度持续60S后350W到90度300W保温30S,2.350W到100度持续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;//工作结束,关机
- }
- }
- }
- //局部函数,工作在蒸焖模式下
- void work_at_stewing(void){
- //蒸焖【火锅】 --- 到100度持续30S后转,长期沸腾【功率要求:首次在全电压后转300W】
- if(step == 0){
- if(temperature < (100 - 3)){//首次小于100度
- power = PWR_ALL;//全功率加热
- }else{
- step = 1;//到了100度,进入下一步,进行保温
- tickn = 0;//100度持续,计时30s
- }
- }else if(step == 1){//到100度持续30S后转,长期沸腾【功率要求:首次在全电压后转300W】
- if(tickn < 30){//100度持续30s时间未到
- power = PWR_ALL;//全功率加热
- }else{//100度持续30s时间到,进入下一步
- step = 2;//长期沸腾
- }
- }else if(step == 2){//300W,长期沸腾
- //300W加热
- power = PWR_300W;//
- }
- }
- //局部函数,工作在慢炖模式下
- void work_at_s_stew(void){
- //慢炖【烧开】 --- 首次98度3~12S内断电开始保温,保温温度范围75~90【功率要求:100V 350W/220V 600W】
- static uint8 heat = 0;
- if(step == 0){
- if(temperature < 90){
- power = PWR_ALL;//全功率加热
- }else{
- step = 1;//到了90度,进入下一步
- tickn = 0;//90度,计时
- }
- }else if(step == 1){
- if((temperature < (98-1))&&(tickn < t98_max)){//首次98度3~12S内断电
- power = PWR_ALL;//全功率加热
- }else{
- step = 2;//到了98度,进入下一步
- tickn = 0;//98度持续,3~12S内断电
- }
- }else if(step == 2){
- if(tickn < 12){//3~12S内断电
- if(temperature < 98){//首次98度3~12S内断电
- power = PWR_ALL;//全功率加热
- }else{
- power = PWR_STOP;
- }
- }else{
- power = PWR_STOP;
- step = 3;//到了3~12s,进入下一步,保温,保温温度范围75~90
- heat = 0;
- }
- }else if(step == 3){
- if(temperature < (75 + 2)){
- heat = 1;
- }
- if(temperature > (90 - 2)){
- heat = 0;
- }
- if(heat){//温度不在保温范围内,需要加热
- power = PWR_ALL;//全功率加热
- }else{
- power = PWR_STOP;
- }
- }
- }
- //局部函数,工作在沸水模式下
- void work_at_b_water(void){
- //沸水【温泉蛋】 --- 1.首次分开二段,先全电压维持40度1`2分钟后转350W到67度后转200W维持保温5分钟 2.200W 69度持续保温3.5分钟 3.200W 72度持续保温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;//工作结束,关机
- }
- }
- }
- /*****************************************************
- *函数名称:void Customer_Keystatejustpress(void)
- *函数功能:触控任意通道被刚刚检测到按下状态
- *入口参数:void
- *返回值:void
- *****************************************************/
- void Customer_Keystatejustpress(void){ //TK_state was just freshed you can use the parameter as you want 输出值: TK_state
-
- }
- /*****************************************************
- *函数名称:void Customer_Keystatejustrelease(void)
- *函数功能:触控任意通道被刚刚检测到释放
- *入口参数:void
- *返回值:void
- *****************************************************/
- void Customer_Keystatejustrelease(void){ //TK_state was just freshed you can use the parameter as you want 输出值: TK_state
-
- }
复制代码
- /*********************************************************************************
- 适用于ESD-SFB-7P201与ESD-SFB-7P202开关面板
- **********************************************************************************/
- #include "./H/Function_Init.h"
- /*****************************************************
- *函数名称:void main(void)
- *函数功能:主函数
- *参数:void
- *返回值:void
- *****************************************************/
- void main(void){
- ramClear();
- sysInit();//Customer need change
- delay100ms(1);
- ioInit();
- adcInit();
- dateInit();
- timerInit();
- itVectorsInit();
- TKInit();
- GIE = 1;
- Tk_getbaselinedata();//初始化基线
- while(!(tick2 == 2));//芯片配置字中的看么狗没有使能
- while(1){
- clr_wdt();//清看门狗
- Tk_service();
- Timer_check();//Check if 10ms tick
- keyScan();
- stateMonitor();
- outputCtrl();
- }
- }
复制代码
所有资料51hei提供下载:
test.7z
(594.05 KB, 下载次数: 63)
|