📄 yh_t3_new.c
字号:
//菜单三:波特率选择
//dis_zone[0]=0xf2; //LCD第一个字位显示”b“
//dis_zone[1]=discode_low[4]; //LCD第一个字位显示”d“
//dis_zone[4]=0xbe;
//dis_zone[5]=0xbe;
dis_zone[0]=discode_low[2];
dis_zone[1]=discode_low[4];
dis_zone[4]=discode_num[0];
dis_zone[5]=discode_num[0];
while(1)
{
if(TARE==0)
{
delay_nms(50);
if(TARE==0)
{
while(!TARE);
alarm(200);//按键音
count_baud++;
if(count_baud==4)
count_baud=0;
}
}
if(MENU==0)
{
delay_nms(50);
if(MENU==0)
{
while(!MENU);
alarm(200);//按键音
buf_24c02_4B[2]=count_baud;
break;
}
}
switch(count_baud)
{
case 0: //dis_zone[2]=0x06;
//dis_zone[3]=0x7c;
dis_zone[2]=discode_num[1];
dis_zone[3]=discode_num[2];
break;//波特率1200
case 1: //dis_zone[2]=0x7c;
//dis_zone[3]=0xc6;
dis_zone[2]=discode_num[2];
dis_zone[3]=discode_num[4];
break;//波特率2400
case 2: //dis_zone[2]=0xc6;
//dis_zone[3]=0xfe;
dis_zone[2]=discode_num[4];
dis_zone[3]=discode_num[8];
break;//波特率4800
case 3: //dis_zone[2]=0xde;
//dis_zone[3]=discode_low[2];
dis_zone[2]=discode_num[9];
dis_zone[3]=discode_num[6];
break;//波特率9600
default: //显示错误号“Err 8”
alarm(800);
dis_zone[0]=0x00;
//dis_zone[1]=discode_cap[5];
//dis_zone[2]=discode_low[18];
//dis_zone[3]=discode_low[18];
dis_zone[1]=discode_cap[5];
dis_zone[2]=discode_low[18];
dis_zone[3]=discode_low[18];
dis_zone[4]=0x00;
dis_zone[5]=discode_num[8];
display_1621();
//此处延时很长,目的是让使用者
//看清楚错误号。
delay_nms(5000);
}
display_1621();
}
//菜单四:背光开关
//dis_zone[0]=0xf2;
//dis_zone[1]=discode_cap[12];
dis_zone[0]=discode_low[2];
dis_zone[1]=discode_cap[12];
dis_zone[2]=0x00;
while(1)
{
if(count_BL==0)
{
//显示“OFF”
//dis_zone[3]=0xbe;
//dis_zone[4]=discode_cap[6];
//dis_zone[5]=discode_cap[6];
dis_zone[3]=discode_cap[15];
dis_zone[4]=discode_cap[6];
dis_zone[5]=discode_cap[6];
}
else
{
//显示“ON”
dis_zone[3]=0x00;
//dis_zone[4]=0xbe;
//dis_zone[5]=0xae;
dis_zone[4]=discode_cap[15];
dis_zone[5]=discode_low[14];
}
display_1621();
if(TARE==0)
{
delay_nms(50);
if(TARE==0)
{
while(!TARE);
alarm(200);//按键音
count_BL++;
if(count_BL==2)
count_BL=0;
}
}
if(MENU==0)
{
delay_nms(50);
if(MENU==0)
{
while(!MENU);
alarm(200);//按键音
buf_24c02_4B[3]=count_BL;
break;
}
}
}
//菜单五:量程
//----------------------------------
temp_range=buf_24c02_2L[0];
f_cal=0;
while(1)
{
if(TARE==0)
{
delay_nms(50);
if(TARE==0)
{
while(!TARE);
alarm(200);//按键音
if(f_cal==0)
{
temp_range=0;
count_range=0;
f_cal=1;
}
else
{
count_range++;
if(count_range>9)
count_range=0;
temp_range-=arr_BCD[5];
temp_range+=count_range;
}
}
}
if(ZERO==0)
{
delay_nms(50);
if(ZERO==0)
{
while(!ZERO);
alarm(200);//按键音
if(f_cal==0)
{
temp_range=0;
f_cal=1;
}
else
{
temp_range*=10;
if(temp_range>=100000)
temp_range%=100000;
count_range=0;
}
}
}
//注意:此处可以优化一下,如果不想进行校准,
if(MENU==0)
{
delay_nms(50);
if(MENU==0)
{
while(!MENU);
alarm(200);//按键音
break;
}
}
//-------------------------------------
BIN_to_BCD(temp_range);
dis_zone[0]=discode_cap[12];
if((dis_zone[1]==0xbe)&&(count_point!=4))
{
dis_zone[1]=0x00;
if((dis_zone[2]==0xbe)&&(count_point!=3))
{
dis_zone[2]=0x00;
if((dis_zone[3]==0xbe)&&(count_point!=2))
{
dis_zone[3]=0x00;
if((dis_zone[4]==0xbe)&&(count_point!=1))
dis_zone[4]=0x00;
}
}
}
if(count_point!=0)
dis_zone[5-count_point]|=0x01;
display_1621();
}
//校准部分
if(f_cal==1)
{
f_cal=0;
//开始就显示“nLoAd”
dis_zone[0]=0x00;
//dis_zone[1]=discode_low[14];
//dis_zone[2]=discode_cap[12];
//dis_zone[3]=discode_low[15];
//dis_zone[4]=0xee;
//dis_zone[5]=discode_low[4];
dis_zone[1]=discode_low[14];
dis_zone[2]=discode_cap[12];
dis_zone[3]=discode_low[15];
dis_zone[4]=discode_cap[1];
dis_zone[5]=discode_low[4];
display_1621();
while(1)
{
if(MENU==0)
{
delay_nms(50);
if(MENU==0)
{
while(!MENU);
alarm(200);
break;
}
}
}
i=0;
while(i<3)//最开始取3次AD值,存放在ad3数据缓冲区
{
cmd_5460(0x5e);//输入向状态寄存器写数据命令
write_5460(0x00800000);//向5460中写入24位数据DRDY清零
while(1)
{
cmd_5460(0x1e);//输入读状态寄存器命令
buf_5460=read_5460();//从5460读出24位数据查询DRDY
if(((buf_5460)&0x00020000)==0x00020000)
{
cmd_5460(0x16);//读取平均电流寄存器
ad3[i]=read_5460();
break;
}
}
i++;
}
ave3_ad=average3();
i=0;
while(i<13)
{
ad13[i].ad=ave3_ad;
ad13[i].times=i;
i++;
}
while(1)
{
rotate3();
cmd_5460(0x5e);//输入向状态寄存器写数据命令
write_5460(0x00800000);//向5460中写入24位数据DRDY清零
while(1)
{
cmd_5460(0x1e);//输入读状态寄存器命令
buf_5460=read_5460();//从5460读出24位数据查询DRDY
if(((buf_5460)&0x00020000)==0x00020000)
{
cmd_5460(0x16);//读取平均电流寄存器
ad3[0]=read_5460();
break;
}
}
//此处省略了超载判断模块,因为前面刚刚设定量程,
//校准时超载的可能性不大。
//over_load();
ave3_ad=average3();
i=0;
while(i<13)
{
ad13[i].times++;
if(ad13[i].times==13)
{
temp_j=i;
ad13[i].ad=ave3_ad;
ad13[i].times=0;
}
i++;
}
rotate();
sort();
BIN_to_BCD(ad13[6].ad);
if((dis_zone[0]==0xbe)&&(count_point!=5))
{
dis_zone[0]=0x00;
if((dis_zone[1]==0xbe)&&(count_point!=4))
{
dis_zone[1]=0x00;
if((dis_zone[2]==0xbe)&&(count_point!=3))
{
dis_zone[2]=0x00;
if((dis_zone[3]==0xbe)&&(count_point!=2))
{
dis_zone[3]=0x00;
if((dis_zone[4]==0xbe)&&(count_point!=1))
dis_zone[4]=0x00;
}
}
}
}
display_1621();
if(MENU==0)
{
delay_nms(50);
if(MENU==0)
{
while(!MENU);
alarm(200);
delay_nms(500);
if(f_cal==0)
{
buf_24c02_AD[0]=ad13[6].ad;
//显示“LoAd”,提示使用者放置校准砝码
dis_zone[0]=0x00;
dis_zone[1]=0x00;
//dis_zone[2]=discode_cap[12];
//dis_zone[3]=discode_low[15];
//dis_zone[4]=0xee;
//dis_zone[5]=discode_low[4];
//dis_zone[6]=0x00;
dis_zone[2]=discode_cap[12];
dis_zone[3]=discode_low[15];
dis_zone[4]=discode_cap[1];
dis_zone[5]=discode_low[4];
display_1621();
f_cal=1;
while(1)
{
if(MENU==0)
{
delay_nms(50);
if(MENU==0)
{
while(!MENU);
alarm(200);
break;
}
}
}
}
else
{
buf_24c02_AD[1]=ad13[6].ad-buf_24c02_AD[0];
break;
}
}
}
}
//显示上次砝码的重量
//----------------------------------
temp_FaMa=buf_24c02_2L[1];
f_FaMa=0;
while(1)
{
if(TARE==0)
{
delay_nms(50);
if(TARE==0)
{
while(!TARE);
alarm(200);//按键音
if(f_FaMa==0)
{
temp_FaMa=0;
count_FaMa=0;
f_FaMa=1;
}
else
{
count_FaMa++;
if(count_FaMa>9)
count_FaMa=0;
temp_FaMa-=arr_BCD[5];
temp_FaMa+=count_FaMa;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -