我的T12代码修改:1. sys_monitor.c 文件里Normal_SetTemp();
这个函数的最小温度设定值错误if(IronTemp.Set > MENU_DATA_Table.Temp_s.Max_Temp+50)
改为if(IronTemp.Set <50)
2. //限制通道范围
void Channel_SetTemp(void)
if(IronTemp.Chn > 100)
{
IronTemp.Chn = 0;
}
改为 if(IronTemp.Chn<0)
{
IronTemp.Chn = 0;
}
3. Keil的编译bug 如:str_mtitle[6].str = "控制参书"; 改为“控制参数\0xFD”
Keil过滤0xfd字符的bug引起的。keil c51在编译的时候会将0xfd的字符(有些汉字含该字符的内码)过滤,而导致程序出错.特别是在做液晶汉字显示时。
对于受到影响的汉字你可以直接用两个\x转义符把编码直接写上。或者额外写一个\xFD补上被滤掉的。例如 “数字电路”这个字符串直接写的话 “数”会出问题。那么你可以写 “数”的编码是0xCA 0xFD"\xCA\xFD字电路"或者写"数\xFD字电路"。
4. Key_Scan(); 屏蔽按键扫描程序,避免了用编码器调节温度时,烙铁嘴号号跟着温度一起变得的bug
5,外部中断4关掉没用
6,Set 改为有符号数,这样就可以限制调温0~最大值内变化,不会往小处调温度时调到0度就会截至,不会一下就变成最大值
typedef struct
{
unsigned int Chn;
signed int Set; //
//unsigned int Feedback; //
//unsigned int Display; //
float Feedback;
float Display;
}IRONTEMP_s;
7,if(x>122){x=0;y++;}改为if(x>(128-CHINESE_WIDE)){x=0;y+=2;}
8,Lib\LQ12864.c(296) : if(x>120)改为Lib\LQ12864.c(296) : if(x>112)
9,Lib\LQ12864.c(427) :ii += 1;
Lib\LQ12864.c(490) : ii += 1;
Lib\LQ12864.c(363) : ii += 1;去掉
10,Lib\LQ12864.c(238) : if(x>122){x=0;y++;}
Lib\LQ12864.c(344) : if(x>122){x=0;y++;}
改为if(x>120){x=0;y++;}
11,\Lib\LQ12864.c(216) : if(x>128){x=0;y++;}
改为if(x>122){x=0;y++;}
12,Lib\LQ12864.c(216) : if(x>128){x=0;y++;}改为if(x>120){x=0;y++;}
13,“分”汉字库重复 Beat_GUI\img.c(829) : "分",95*/ 删掉一个
14,LQ12864.C\434行 OLED_Set_Pos(x , y); 多余的删掉
15,测室温部分的上偏电阻由75k改为10k经典配置,以使温度显示稳定,不乱跳。
//NTC温度表,依次为-10℃~50℃对应的ADC值
unsigned int code NTCTAB[61] =
{867,860,852,844,836,828,820,811,802,793,784,774,765,755,745,734,724,714,703,692,681,670,659,
648,637,625,614,603,591,580,568,557,545,534,523,512,500 ,489,478,467,456,446,435,424,414,404,
394,384,374,364,355,346,337,328,319,310,302,294,286,278,270
}; |