我的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
}; |