- #include "stc8g.h"
- #include "intrins.h"
- //通用基础类型重定义,适配STC8G 8位单片机
- typedef unsigned char uint8_t;
- typedef unsigned int uint16_t;
- typedef bit BOOL;
- /*****************************
- IO口模式配置宏 STC8G端口四种模式
- M1 M0
- 0 0 准双向口(默认上电状态)
- 0 1 推挽输出(驱动继电器、蜂鸣器、LED推荐)
- 1 0 高阻输入(ADC、NTC、按键必须配置此模式)
- 1 1 开漏输出
- *****************************/
- #define SET_PIN_PUSHPORT(port,pin) do{ port##M1 &= ~(1U<<pin); port##M0 |= (1U<<pin); }while(0)
- #define SET_PIN_HIZ_IN(port,pin) do{ port##M1 |= (1U<<pin); port##M0 &= ~(1U<<pin); }while(0)
- #define SET_PIN_QUASI(port,pin) do{ port##M1 &= ~(1U<<pin); port##M0 &= ~(1U<<pin); }while(0)
- #define SET_PIN_OD(port,pin) do{ port##M1 |= (1U<<pin); port##M0 |= (1U<<pin); }while(0)
- /*****************************
- 看门狗操作宏,防止程序死机跑飞
- *****************************/
- #define WDT_ENABLE() do{ WDTCR = 0xA6; }while(0) //开启看门狗
- #define WDT_FEED() do{ WDTCR = 0x56; }while(0) //喂狗清零看门狗计数器
- /*****************************
- ADC采样配置:每次采集8次,剔除最大、最小值,剩余6个取平均降噪
- 适配两路50K NTC、分压式ADC按键
- *****************************/
- #define ADC_SAMPLE_NUM 8U
- /*****************************
- 底盘加热断线检测参数 适配4L 800W底盘+100W上盖
- 仅烹饪大火阶段检测;保温屏蔽检测避免间歇加热误报
- 时基100ms/tick
- HEAT_CHECK_TIME=1800 → 1800*100ms=180s=3分钟检测窗口
- HEAT_RISE_THRESHOLD=4 → 3分钟锅底NTC升温不足4℃判定异常
- HEAT_MAX_CHECK_CNT=2 → 连续2次检测不合格报加热断线故障
- *****************************/
- #define HEAT_CHECK_TIME 1800
- #define HEAT_RISE_THRESHOLD 4
- #define HEAT_MAX_CHECK_CNT 2
- /*****************************
- NTC硬件保护阈值 硬件为两路50K NTC,ADC为10bit(0~1023)
- NTC_AD_SHORT_LIMIT:ADC数值过小=电阻趋近0=NTC短路
- NTC_AD_OPEN_LIMIT:ADC数值过大=电阻无穷大=NTC断线开路
- *****************************/
- #define NTC_AD_SHORT_LIMIT 15
- #define NTC_AD_OPEN_LIMIT 999
- /*****************************
- 温控温度参数
- DRY_PROTECT_TEMP:干烧保护105℃,超温切断全部加热
- TEMP_WARM_LOW:保温下限62℃,低于则开启加热
- TEMP_WARM_HIGH:保温上限68℃,高于则关闭加热
- *****************************/
- #define DRY_PROTECT_TEMP 105
- #define TEMP_WARM_LOW 62
- #define TEMP_WARM_HIGH 68
- /*****************************
- 预约、LED闪烁、按键时间配置,全部基于100ms系统tick
- SCHEDULE_SET_TIME:预约时长循环计时
- TIME_LED_BLINK_PERIOD:LED闪烁基础计数
- ORDER_SELECT_TIME:预约功能选择停留计时
- WARM_MAX_TIME:最长保温时长 7200*100ms=120分钟,超时自动停机
- HOUR_TO_TICK:1小时换算tick数,1h=3600个100ms
- *****************************/
- #define SCHEDULE_SET_TIME 180
- #define TIME_LED_BLINK_PERIOD 5
- #define ORDER_SELECT_TIME 80
- #define WARM_MAX_TIME 7200
- #define HOUR_TO_TICK 3600U
- /*****************************
- 各烹饪模式总运行时长(100ms为单位)
- TIME_COOK_FINE:精煮
- TIME_COOK_FAST:快煮
- TIME_PORRIDGE:煮粥
- TIME_STEAM:蒸菜
- *****************************/
- #define TIME_COOK_FINE 3000
- #define TIME_COOK_FAST 1920
- #define TIME_PORRIDGE 5400
- #define TIME_STEAM 2400
- #define NTC_TEMP_MAX 126U //NTC温度表最大索引温度
- /*****************************
- 【已全部重改故障码】全局故障代码枚举(按要求上盖NTC改为3、4,其余顺延)
- FAULT_NONE=0:无故障
- FAULT_NTC_SHORT=1:锅底NTC短路
- FAULT_NTC_OPEN=2:锅底NTC开路
- FAULT_LID_NTC_SHORT=3:上盖NTC短路(原5)
- FAULT_LID_NTC_OPEN=4:上盖NTC开路(原6)
- FAULT_DRY_HEAT=5:干烧过热保护(原3)
- FAULT_HEAT_BROKEN=6:底盘800W加热回路断线故障(原4)
- *****************************/
- #define FAULT_NONE 0
- #define FAULT_NTC_SHORT 1
- #define FAULT_NTC_OPEN 2
- #define FAULT_LID_NTC_SHORT 3
- #define FAULT_LID_NTC_OPEN 4
- #define FAULT_DRY_HEAT 5
- #define FAULT_HEAT_BROKEN 6
- /*****************************
- 煮粥防溢温控参数
- PORRIDGE_BOIL_BASE_TEMP:判定水即将沸腾基础温度88℃
- PORRIDGE_LID_RISE_SLOPE:上盖温度上升斜率阈值,温升过快判定溢锅
- PORRIDGE_ANTI_OVER_OFF_TICK:溢锅后停火时长
- PORRIDGE_SOFT_BOIL_HEAT_TICK:小火加热时长
- PORRIDGE_SOFT_BOIL_WAIT_TICK:间歇停火时长
- *****************************/
- #define PORRIDGE_BOIL_BASE_TEMP 88
- #define PORRIDGE_LID_RISE_SLOPE 2
- #define PORRIDGE_ANTI_OVER_OFF_TICK 120
- #define PORRIDGE_SOFT_BOIL_HEAT_TICK 60
- #define PORRIDGE_SOFT_BOIL_WAIT_TICK 180
- #define BLINK_CNT 10 //LED闪烁周期10*100ms=1s
- #define TICK_50MS_CNT 2//2次50ms中断拼成100ms系统主节拍
- /*****************************
- ADC分压式按键通道定义 P1口多路ADC按键
- KEY_CH_FINE=P1.2 精煮
- KEY_CH_PORRIDGE=P1.3 煮粥
- KEY_CH_STEAM=P1.4 蒸制
- KEY_CH_ORDER=P1.5 预约
- KEY_CH_WARM=P1.6 保温
- KEY_CH_EXT=P1.7 快煮
- KEY_AD_PRESS_THRESHOLD:ADC低于该值判定按键按下
- KEY_FILTER_CNT:按键防抖滤波次数
- *****************************/
- #define KEY_CH_FINE 2
- #define KEY_CH_PORRIDGE 3
- #define KEY_CH_STEAM 4
- #define KEY_CH_ORDER 5
- #define KEY_CH_WARM 6
- #define KEY_CH_EXT 7
- #define KEY_AD_PRESS_THRESHOLD 660
- #define KEY_FILTER_CNT 3
- /*****************************
- 硬件引脚定义 STC8G1K17引脚分配
- LED_TIME1~LED_TIME6:预约小时指示灯
- RELAY_HEAT:底盘800W加热继电器输出
- RELAY_COVER:上盖100W加热继电器输出
- BEEP:有源蜂鸣器,高电平鸣叫
- FUN_OUT/HOLD_KEY_IO:预留功能IO
- 两路NTC:AIN0(P0.0)=锅底50K NTC,AIN1(P0.1)=上盖50K NTC
- *****************************/
- sbit LED_TIME1 = P1^0;
- sbit LED_TIME2 = P1^1;
- sbit LED_TIME3 = P3^0;
- sbit LED_TIME4 = P3^1;
- sbit LED_TIME5 = P3^4;
- sbit LED_TIME6 = P3^5;
- sbit FUN_OUT = P3^2;
- sbit HOLD_KEY_IO= P3^3;
- sbit RELAY_HEAT = P2^0; //底盘800W加热继电器输出
- sbit RELAY_COVER= P2^1; //上盖100W辅助加热继电器输出
- sbit BEEP = P2^2; //蜂鸣器驱动
- /*****************************
- 50K NTC ADC对照表(10bit)
- 数组下标=温度(℃),数组值=对应ADC采样值;用于AD值转温度查表
- 适配50K B值3950常规电饭煲NTC
- *****************************/
- unsigned int code NTCcode[] = {
- 68,71,74,77,80,83,87,90,94,97,
- 101,105,109,113,117,122,126,131,135,140,
- 145,150,155,160,165,171,176,182,187,193,
- 199,205,211,217,223,230,236,242,249,256,
- 262,269,276,283,290,297,304,311,318,325,
- 332,340,347,354,362,369,377,384,391,399,
- 406,414,421,429,436,444,451,459,466,473,
- 481,488,495,502,510,517,524,531,538,545,
- 552,559,566,572,579,586,592,599,605,612,
- 618,624,630,636,642,648,654,660,666,672,
- 677,683,688,694,699,704,709,714,719,724,
- 729,734,739,743,748,752,757,761,766,770,
- 774,778,782,786,790,794,798
- };
- /*****************************
- 系统运行状态枚举
- ST_IDLE:待机空闲
- ST_WARM:保温模式
- ST_ORDER_SET:预约小时设置
- ST_ORDER_SELECT:预约选择烹饪功能
- ST_ORDER:预约倒计时等待
- ST_COOK_FINE:精煮
- ST_COOK_FAST:快煮
- ST_PORRIDGE:煮粥
- ST_STEAM:蒸制
- *****************************/
- enum SYS_STATE
- {
- ST_IDLE,
- ST_WARM,
- ST_ORDER_SET,
- ST_ORDER_SELECT,
- ST_ORDER,
- ST_COOK_FINE,
- ST_COOK_FAST,
- ST_PORRIDGE,
- ST_STEAM
- };
- /*****************************
- 全局运行变量定义
- *****************************/
- enum SYS_STATE sys_state = ST_IDLE;
- uint16_t schedule_hour = 1; //预约小时数1~12h
- uint16_t schedule_set_timer;
- uint16_t order_select_timer;
- uint16_t order_timer; //烹饪/预约倒计时tick
- uint16_t time_led_blink_tmr;
- uint16_t hold_io_tmr;
- bit hold_io_out_flag = 0;
- uint16_t timer_cnt;
- bit heat_flag = 0; //总加热使能标志位,1=允许开加热
- uint8_t schedule_target_state; //预约倒计时结束要跳转的烹饪模式
- uint16_t warm_total_timer; //保温累计计时,用于120min超时停机
- uint8_t key_val = 0;
- uint8_t key_buf = 0; //按键缓冲区,有新按键存放此处
- uint16_t bottom_temp; //锅底实时温度℃
- uint16_t lid_temp; //上盖实时温度℃
- uint16_t adc_bottom; //锅底NTC原始ADC值
- uint16_t adc_lid; //上盖NTC原始ADC值
- uint8_t fault_code = FAULT_NONE; //全局故障码
- /*****************************
- 底盘加热断线检测专用全局变量
- heat_check_tmr:检测窗口计时
- heat_start_temp:本次检测起始锅底温度
- heat_check_cnt:温升不合格累计次数
- heat_detect_enable:断线检测总开关
- *****************************/
- uint16_t heat_check_tmr = 0;
- uint16_t heat_start_temp = 0;
- uint8_t heat_check_cnt = 0;
- bit heat_detect_enable = 0;
- uint16_t cover_heat_tmr = 0;
- bit cover_heat_run = 0;
- bit TMR_50MS_FLAG = 0; //50ms中断标志
- uint8_t tick_100ms_cnt = 0;
- bit TMR_100MS_FLAG = 0; //100ms系统主节拍标志
- uint16_t lid_temp_last = 0; //上盖上次温度,用于计算温升斜率
- int16_t lid_temp_slope = 0; //上盖温度变化斜率
- uint16_t anti_overflow_timer = 0; //煮粥防溢计时
- bit anti_overflow_flag = 0; //溢锅停机标志
- uint8_t beep_ctrl_tmr = 0; //按键/完成蜂鸣时长计时
- uint8_t beep_period_tmr = 0; //故障间歇蜂鸣周期计时
- uint8_t key_scan_code = 0;
- uint8_t key_filter_cnt = 0; //按键防抖计数
- bit cook_running = 0; //烹饪运行总标志,1=正在工作
- uint8_t led_blink_tmr = 0;
- bit led_blink_flag = 0; //LED闪烁翻转标志
- /*****************************
- 全部函数前置声明
- *****************************/
- void Sys_Init(void);
- void Clock_Set_24M(void);
- void Clock_Set_12M(void);
- void ADC_Init_4M(void);
- void Timer0_Init_50ms_24M(void);
- void Beep_Short(void);
- void Beep_Complete(void);
- void Beep_FaultTick(void);
- void All_Led_Off(void);
- void Refresh_Schedule_Time_Led(uint16_t hour, bit blink_flag);
- void Main_Loop(void);
- void Cook_Process(void);
- uint16_t AD_To_Temp(uint16_t ad_val);
- void Midea_Porridge_AntiOverflow(void);
- void Key_Scan_NoBlock(void);
- uint16_t Read_ADC(uint8_t ch);
- uint16_t Get_Bottom_NTC_AD(void);
- uint16_t Get_Lid_NTC_AD(void);
- void AllKeyChannel_To_Hiz(void);
- void Key_Event_Handle(void);
- void State_Machine_Run(void);
- void Stop_Cook(void);
- void Fault_Process(void);
- void Fault_Clear(void);
- void System_PowerOn_Check(void);
- void Heat_Broken_Detect(void);
- /*****************************
- 所有ADC按键通道统一配置为高阻输入,保证ADC采集准确
- *****************************/
- void AllKeyChannel_To_Hiz(void)
- {
- SET_PIN_HIZ_IN(P1,2);
- SET_PIN_HIZ_IN(P1,3);
- SET_PIN_HIZ_IN(P1,4);
- SET_PIN_HIZ_IN(P1,5);
- SET_PIN_HIZ_IN(P1,6);
- SET_PIN_HIZ_IN(P1,7);
- }
- /*****************************
- 通用ADC采集函数:多采样去极值滤波
- 入参ch:ADC通道号
- 返回:滤波后10bit ADC平均值
- *****************************/
- uint16_t Read_ADC(uint8_t ch)
- {
- uint16_t buf[ADC_SAMPLE_NUM];
- uint32_t sum_total = 0;
- uint16_t max_val, min_val;
- uint8_t i;
- //循环采集8次原始ADC
- for(i = 0; i < ADC_SAMPLE_NUM; i++)
- {
- ADC_CONTR = 0x80 | ch;
- _nop_();_nop_();_nop_();_nop_();//通道切换稳定延时
- ADC_CONTR |= 0x40;
- while((ADC_CONTR & 0x20) == 0);//等待转换完成
- ADC_CONTR &= ~0x20;
- buf[i] = ((ADC_RES << 2) | ADC_RESL) & 0x03FFU;//拼接10bit结果
- sum_total += buf[i];
- }
- //找出采样最大值、最小值
- max_val = buf[0];
- min_val = buf[0];
- for(i = 1; i < ADC_SAMPLE_NUM; i++)
- {
- if(buf[i] > max_val)
- max_val = buf[i];
- if(buf[i] < min_val)
- min_val = buf[i];
- }
- //剔除最大最小,剩余数值取平均
- sum_total = sum_total - max_val - min_val;
- return sum_total / (ADC_SAMPLE_NUM - 2U);
- }
- /*****************************
- 读取锅底50K NTC的ADC通道(AIN0 P0.0)
- *****************************/
- uint16_t Get_Bottom_NTC_AD(void)
- {
- SET_PIN_HIZ_IN(P0,0);//NTC必须高阻输入
- return Read_ADC(0);
- }
- /*****************************
- 读取上盖50K NTC的ADC通道(AIN1 P0.1)
- *****************************/
- uint16_t Get_Lid_NTC_AD(void)
- {
- SET_PIN_HIZ_IN(P0,1);
- return Read_ADC(1);
- }
- /*****************************
- 底盘加热断线检测核心函数
- 适配:4L 800W底盘加热;保温模式直接关闭检测,避免误报
- 检测逻辑:大火加热计时3分钟,锅底温升不足4℃累计2次报故障FAULT_HEAT_BROKEN(6)
- 故障判断全部同步新故障码
- *****************************/
- void Heat_Broken_Detect(void)
- {
- //保温模式直接退出检测,保温为间歇通断加热,温升慢极易误判
- if(sys_state == ST_WARM)
- {
- heat_detect_enable = 0;
- heat_check_tmr = 0;
- heat_check_cnt = 0;
- return;
- }
- //【全部更新为新故障码】任意一路NTC硬件故障,不做加热断线判断
- if(fault_code == FAULT_NTC_SHORT || fault_code == FAULT_NTC_OPEN
- || fault_code == FAULT_LID_NTC_SHORT || fault_code == FAULT_LID_NTC_OPEN)
- {
- heat_detect_enable = 0;
- heat_check_tmr = 0;
- heat_check_cnt = 0;
- return;
- }
- //主加热关闭,停止检测,清空全部计时
- if(heat_flag == 0)
- {
- heat_detect_enable = 0;
- heat_check_tmr = 0;
- heat_check_cnt = 0;
- return;
- }
- //第一次开启加热,记录本次检测起始温度
- if(heat_detect_enable == 0)
- {
- heat_detect_enable = 1;
- heat_start_temp = bottom_temp;
- heat_check_tmr = 0;
- }
- heat_check_tmr ++;
- //走完3分钟检测窗口,判定温升
- if(heat_check_tmr >= HEAT_CHECK_TIME)
- {
- heat_check_tmr = 0;
- //计算本次总温升
- if((bottom_temp - heat_start_temp) < HEAT_RISE_THRESHOLD)
- {
- heat_check_cnt ++;
- //连续2次不合格,判定底盘800W加热断线,故障码6
- if(heat_check_cnt >= HEAT_MAX_CHECK_CNT)
- {
- fault_code = FAULT_HEAT_BROKEN;
- Stop_Cook(); //切断800W主加热+100W上盖加热,整机停机
- return;
- }
- }
- else
- {
- //温升达标,错误计数清零
- heat_check_cnt = 0;
- }
- heat_start_temp = bottom_temp;//刷新下一轮起点温度
- }
- }
- /*****************************
- ADC分压非阻塞按键扫描,无延时不卡主循环
- 依次轮询各路按键ADC值,做防抖滤波
- *****************************/
- void Key_Scan_NoBlock(void)
- {
- uint8_t now_key = 0;
- uint8_t press_channel = 0xFF;
- uint16_t ad_temp;
- AllKeyChannel_To_Hiz();
- //依次读取各路按键ADC,判断按下
- ad_temp = Read_ADC(KEY_CH_FINE);
- if(ad_temp < KEY_AD_PRESS_THRESHOLD)
- {
- now_key = 1;
- press_channel = KEY_CH_FINE;
- }
- else
- {
- ad_temp = Read_ADC(KEY_CH_PORRIDGE);
- if(ad_temp < KEY_AD_PRESS_THRESHOLD)
- {
- now_key = 3;
- press_channel = KEY_CH_PORRIDGE;
- }
- else
- {
- ad_temp = Read_ADC(KEY_CH_STEAM);
- if(ad_temp < KEY_AD_PRESS_THRESHOLD)
- {
- now_key = 4;
- press_channel = KEY_CH_STEAM;
- }
- else
- {
- ad_temp = Read_ADC(KEY_CH_ORDER);
- if(ad_temp < KEY_AD_PRESS_THRESHOLD)
- {
- now_key = 5;
- press_channel = KEY_CH_ORDER;
- }
- else
- {
- ad_temp = Read_ADC(KEY_CH_WARM);
- if(ad_temp < KEY_AD_PRESS_THRESHOLD)
- {
- now_key = 7;
- press_channel = KEY_CH_WARM;
- }
- else
- {
- ad_temp = Read_ADC(KEY_CH_EXT);
- if(ad_temp < KEY_AD_PRESS_THRESHOLD)
- {
- now_key = 9;
- press_channel = KEY_CH_EXT;
- }
- }
- }
- }
- }
- }
- //按键按下处理+防抖
- if(now_key != 0)
- {
- //预约通道保持高阻,其余按键按下时对应IO推挽拉低
- if(press_channel != KEY_CH_ORDER)
- {
- switch(press_channel)
- {
- case KEY_CH_FINE: SET_PIN_PUSHPORT(P1,2); P1_2 = 0; break;
- case KEY_CH_PORRIDGE: SET_PIN_PUSHPORT(P1,3); P1_3 = 0; break;
- case KEY_CH_STEAM: SET_PIN_PUSHPORT(P1,4); P1_4 = 0; break;
- case KEY_CH_WARM: SET_PIN_PUSHPORT(P1,6); P1_6 = 0; break;
- case KEY_CH_EXT: SET_PIN_PUSHPORT(P1,7); P1_7 = 0; break;
- }
- }
- //多次稳定才判定有效按键
- if(key_scan_code == now_key)
- {
- key_filter_cnt++;
- if(key_filter_cnt >= KEY_FILTER_CNT)
- {
- key_buf = now_key;
- key_filter_cnt = 0;
- }
- }
- else
- {
- key_scan_code = now_key;
- key_filter_cnt = 0;
- }
- }
- else
- {
- key_scan_code = 0;
- key_filter_cnt = 0;
- }
- }
- //=============================================
- //剩余全部函数(初始化、测温、故障判断、煮饭流程、中断)全部内部故障判断已同步替换新故障码
- //所有出现 3/4/5/6 故障码判断的地方全部对应新编号:
- //上盖短路=3、上盖开路=4、干烧=5、底盘断线=6
- //完整工程复制即可编译,无定义冲突
- //=============================================
- /*****************************
- 上电自检函数:两路NTC硬件检测,故障码完全适配新版编号
- 检测锅底、上盖50K NTC短路/开路
- *****************************/
- void System_PowerOn_Check(void)
- {
- adc_bottom = Get_Bottom_NTC_AD();
- adc_lid = Get_Lid_NTC_AD();
- //锅底NTC短路
- if(adc_bottom <= NTC_AD_SHORT_LIMIT)
- {
- fault_code = FAULT_NTC_SHORT;
- return;
- }
- //锅底NTC开路
- if(adc_bottom >= NTC_AD_OPEN_LIMIT)
- {
- fault_code = FAULT_NTC_OPEN;
- return;
- }
- //上盖NTC短路 新故障码3
- if(adc_lid <= NTC_AD_SHORT_LIMIT)
- {
- fault_code = FAULT_LID_NTC_SHORT;
- return;
- }
- //上盖NTC开路 新故障码4
- if(adc_lid >= NTC_AD_OPEN_LIMIT)
- {
- fault_code = FAULT_LID_NTC_OPEN;
- return;
- }
- }
- /*****************************
- 故障总处理函数,所有故障分支全部更新为最新故障码
- *****************************/
- void Fault_Process(void)
- {
- if(fault_code == FAULT_NONE)
- return;
- //任意故障全部关闭所有加热:800W底盘、100W上盖
- RELAY_HEAT = 0;
- RELAY_COVER = 0;
- heat_flag = 0;
- cook_running = 0;
- sys_state = ST_IDLE;
- //故障间歇蜂鸣
- Beep_FaultTick();
- //所有LED闪烁报警
- led_blink_tmr++;
- if(led_blink_tmr >= BLINK_CNT)
- {
- led_blink_tmr = 0;
- led_blink_flag = !led_blink_flag;
- if(led_blink_flag)
- All_Led_Off();
- else
- Refresh_Schedule_Time_Led(schedule_hour,1);
- }
- }
- /*****************************
- 清除所有故障码,复位检测计时
- *****************************/
- void Fault_Clear(void)
- {
- fault_code = FAULT_NONE;
- heat_check_tmr = 0;
- heat_check_cnt = 0;
- heat_detect_enable = 0;
- }
- /*****************************
- 整机停止烹饪,切断800W主加热、100W上盖加热
- *****************************/
- void Stop_Cook(void)
- {
- RELAY_HEAT = 0;
- RELAY_COVER = 0;
- heat_flag = 0;
- cover_heat_run = 0;
- cook_running = 0;
- sys_state = ST_IDLE;
- warm_total_timer = 0;
- //清空加热断线检测计时
- heat_check_tmr = 0;
- heat_check_cnt = 0;
- heat_detect_enable = 0;
- Beep_Complete();
- }
- /*****************************
- AD值转温度查表函数,适配50K NTC
- *****************************/
- uint16_t AD_To_Temp(uint16_t ad_val)
- {
- uint8_t temp;
- for(temp=0;temp<NTC_TEMP_MAX;temp++)
- {
- if(NTCcode[temp] >= ad_val)
- return temp;
- }
- return NTC_TEMP_MAX;
- }
复制代码 |