📄 learn.c~
字号:
eeprom unsigned int FullWeightAD;
eeprom unsigned int ZeroWeightAD;
eeprom unsigned char Scale=21; //初始值
/*给初值是为了在第一次使用时(没有学习零满重的情况下),不会产生错误*/
unsigned char LearnFlag=0;
#define PIN??.? ADLearnKey;
//#define MaxScale 6000 //6Kg
#define MaxScale 15000 //15Kg
//#define MaxScale 30000 //30Kg
void AD_Learn(void)
{
switch(LearnFlag)
{
case 0:
{
if(ADLearnKey==0)
{
delay_ms(35);
if(ADLearnKey==0)
{
ZeroWeightAD=AD_Result;
Updata_ZeroWeightAD_Display(ZeroWeightAD);
LearnFlag=1;
Tone(900);
}
}
break;
}
case 1:
{
if(ADLearnKey==0)
{
delay_ms(35);
if(ADLearnKey==0)
{
FullWeightAD=AD_Result;
Updata_FullWeightAD_Display(FullWeightAD);
LearnFlag=0;
Tone(900);
}
}
break;
}
default ;
}
}
//确认键确认学习完成,按下确认键后计算分度值Scale
//Scale为X AD/g (X个AD每克)
void LearnOK(void)
{
Scale=((FullWeightAD-ZeroWeightAD)/MaxScale)*10; //*10的目的是避免产生浮点数
Tone(1200);
}
void Updata_ZeroWeightAD_Display(unsigned int Dis_data)
{
unsigned int temp1,temp2,temp3,temp4;
temp1=Dis_data/10000; // 最高位
temp2=Dis_data%10000;
temp3=temp2%1000;
temp4=temp3%100;
Written_char(0,1,temp1);
Written_char(0,2,(temp2/1000));
Written_char(0,3,(temp3/100));
Written_char(0,4,(temp4/10));
Written_char(0,5,temp4%10); //个位
}
void Updata_FullWeightAD_Display(void)
{
unsigned int temp1,temp2,temp3,temp4;
temp1=Dis_data/10000; // 最高位
temp2=Dis_data%10000;
temp3=temp2%1000;
temp4=temp3%100;
Written_char(0,7,temp1);
Written_char(0,8,(temp2/1000));
Written_char(0,9,(temp3/100));
Written_char(0,10,(temp4/10));
Written_char(0,11,temp4%10); //个位
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -