📄 kena.c
字号:
else if(ky1==3){write_com(0x8e);write_data(0x01);}
}
//////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
void smene1k(unsigned char sky1,unsigned char sky2)
{if(sky2==0) {xianshi_s(" ",0x90);}
else if(sky2==1){xianshi_s(" ",0x88);}
else if(sky2==2){xianshi_s(" ",0x98);}
if(sky1==0) {write_com(0x90);write_data(0x01);}
else if(sky1==1){write_com(0x88);write_data(0x01);}
else if(sky1==2){write_com(0x98);write_data(0x01);}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void vis_mene_caz(void)
{write_com(0x01);
delay(10);
write_com(0x80);
hzkdis(" ");
write_com(0x80);
hzkdis("请选择传感器:");
write_com(0x90);
hzkdis("一号 二号");
write_com(0x88);
hzkdis("三号 四号");
write_com(0x92);
write_data(0x01);
}
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
void sezhi_quahganqi(unsigned char key1)
{ unsigned char sky1=0,sky2=0,sum1=0,sum2=0;
write_com(0x01);
delay(10);
write_com(0x80);
hzkdis(" ");
write_com(0x80);
if(key1==0x00) {hzkdis("一号传感器:");xianshi_s1(seroh_10,seroh_11,0x00);
xianshi_s1(seroh_12,seroh_13,0x01);
xianshi_s1(seroh_14,seroh_15,0x02);}
else if(key1==0x01){hzkdis("二号传感器:");xianshi_s1(seroh_20,seroh_21,0x00);
xianshi_s1(seroh_22,seroh_23,0x01);
xianshi_s1(seroh_24,seroh_25,0x02);}
else if(key1==0x02){hzkdis("三号传感器:");xianshi_s1(seroh_30,seroh_31,0x00);
xianshi_s1(seroh_32,seroh_33,0x01);
xianshi_s1(seroh_34,seroh_35,0x02);}
else if(key1==0x03){hzkdis("四号传感器:");xianshi_s1(seroh_40,seroh_41,0x00);
xianshi_s1(seroh_42,seroh_43,0x01);
xianshi_s1(seroh_44,seroh_45,0x02);}
write_com(0x91);
hzkdis("间隔时间");
write_com(0x89);
hzkdis("采样次数");
write_com(0x99);
hzkdis("输出倍率");
write_com(0x90);
write_data(0x01);
while(1){
while(1){ ken= key_sruty() ;
if(ken!=0x00)break;}
sky2=sky1;ken_tiaoqi();
if(ken==key_a) {if(sky1==0x00)sky1=1;
else if(sky1==0x01)sky1=2;
else if(sky1==0x02)sky1=0;
smene1k(sky1,sky2); sum1=0;sum2=0;
}
else if(ken==key_b){if(sky1==0x00)sky1=2;
else if(sky1==0x02)sky1=1;
else if(sky1==0x01)sky1=0;
smene1k(sky1,sky2);sum1=0;sum2=0; }
else if(ken==key_c){if(sky1==0x00)sky1=2;
else if(sky1==0x02)sky1=1;
else if(sky1==0x01)sky1=0;
smene1k(sky1,sky2); sum1=0;sum2=0; }
else if(ken==key_d){if(sky1==0x00)sky1=1;
else if(sky1==0x01)sky1=2;
else if(sky1==0x02)sky1=0;
smene1k(sky1,sky2);sum1=0;sum2=0; }
else if(ken==key_0){sum1=sum2;sum2=0;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_1){sum1=sum2;sum2=1;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_2){sum1=sum2;sum2=2;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_3){sum1=sum2;sum2=3;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_4){sum1=sum2;sum2=4;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_5){sum1=sum2;sum2=5;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_6){sum1=sum2;sum2=6;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_7){sum1=sum2;sum2=7;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_8){sum1=sum2;sum2=8;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_9){sum1=sum2;sum2=9;baochun(sum1,sum2,sky1,key1);xianshi_s1(sum1,sum2,sky1);}
else if(ken==key_f){cls_p();vis_mene_caz();break;}
else if(ken==key_e){cls_p();vis_mene_caz();break;}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
void mani_men_or(void)
{if(seroh_10!=0||seroh_11!=0||seroh_20!=0||seroh_21!=0||seroh_30!=0||seroh_31!=0||seroh_40!=0||seroh_41!=0)
{mani_men_1();work1=0xaa;}
else {mani_men();}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
void mene_caz(void)
{ unsigned char data ky1,ky2;
write_com(0x01);
delay(10);
write_com(0x80);
hzkdis(" ");
write_com(0x80);
hzkdis("请选择传感器:");
write_com(0x90);
hzkdis("一号 二号");
write_com(0x88);
hzkdis("三号 四号");
write_com(0x92);
write_data(0x01);
ky1=0x00;
//write_com(0x98);
//hzkdis("LM 3033 测试程序");
while(1){
while(1){ ken= key_sruty() ;
if(ken!=0x00)break;}
ky2=ky1;ken_tiaoqi();
if(ken==key_a) {if(ky1==0x00)ky1=1;
else if(ky1==0x01)ky1=2;
else if(ky1==0x02)ky1=3;
else if(ky1==0x03)ky1=0;
mene1k(ky1,ky2);
}
else if(ken==key_b){if(ky1==0x00)ky1=3;
else if(ky1==0x01)ky1=0;
else if(ky1==0x02)ky1=1;
else if(ky1==0x03)ky1=2;
mene1k(ky1,ky2); }
else if(ken==key_c){if(ky1==0x00)ky1=1;
else if(ky1==0x01)ky1=0;
else if(ky1==0x03)ky1=2;
else if(ky1==0x02)ky1=3;
mene1k(ky1,ky2); }
else if(ken==key_d){if(ky1==0x00)ky1=1;
else if(ky1==0x01)ky1=0;
else if(ky1==0x03)ky1=2;
else if(ky1==0x02)ky1=3;
mene1k(ky1,ky2); }
else if(ken==key_e){cls_p();mani_men_or();break;}
else if(ken==key_f){sezhi_quahganqi(ky1);ky1=0x00;}
}
}
///////////////////////////////////////////////////////////////////////////
main ()
{unsigned char lp;
P0M1=0x0f; //P0.3~p0.0设置为仅为输入状态
P0M2=0x00;
P1M1=0x00; //P1.7设置为仅为输入状态
P1M2=0x00;
P2M1=0x00; //P0端口设置为准双向
P2M2=0x00;
delay(10);
lcdint();
delay(10);
ceshi();
delay(1000);
cls_p();
//xianshi("按键:",0x80);
mani_men();
///////////////////////////////////////////////////////////////////////////////
RTCCON=0x63;
lp=TRIM;
TRIM=lp|0x80;
RTCH=0x07;
RTCL=0xff; //EWDRT=1;
delay(100); //EA=1; //使能所有中断
IEN0=0xc0;
WDCON=0xe0;
//////////////////////////////////////////////////////////////////////////////////
while(1){
while(1){ if(RTC_Timer_Counter==0){RTC_Timer_Counter=0x01;RTC_Timer_sum1++;RTC_Timer_sum2++;RTC_Timer_sum3++;RTC_Timer_sum4++;}
if(RTC_Timer_sum1>=(seroh_10*10+seroh_11)&&(seroh_10*10+seroh_11)>0){RTC_Timer_sum1=0;work2=0x01;break;}
if(RTC_Timer_sum2>=(seroh_20*10+seroh_21)&&(seroh_20*10+seroh_21)>0){RTC_Timer_sum2=0;work2=0x02;break;}
if(RTC_Timer_sum3>=(seroh_30*10+seroh_31)&&(seroh_30*10+seroh_31)>0){RTC_Timer_sum3=0;work2=0x03;break;}
if(RTC_Timer_sum4>=(seroh_40*10+seroh_41)&&(seroh_40*10+seroh_41)>0){RTC_Timer_sum4=0;work2=0x04;break;}
ken= key_sruty() ;
if(ken!=0x00)break;}
if(work1!=0x55){xianshi_key(ken);ken_tiaoqi();}
////////////////////////////////////////////////////////////////////////////////////
if(ken==key_e){mene_caz();}
if(work2==0x01){a_dzhuanhua_0();}
else if(work2==0x02){a_dzhuanhua_1();}
else if(work2==0x03){a_dzhuanhua_2();}
else if(work2==0x04){a_dzhuanhua_3();}
delay(6);
}
}
/////////////////////////////////////////////////////////////////////////////////////
void a_dzhuanhua_0(void)
{uchar result,i;
unsigned long int sum_re=0;
unsigned char ks_qyan;
unsigned char beilv;
ks_qyan=seroh_12*10+seroh_13;
beilv =seroh_14*10+seroh_15;
if(ks_qyan==0)ks_qyan=1;
if(beilv==0)beilv=1;
//----------------------------------------------------------------
for(i=0;i<ks_qyan;i++){
ADINS=0x10; //0000 0001, 选择channel
ADMODA=0x10; //0000 0001, 选择转换工作模式:单次转换模式
ADMODB=0x00; //500Khz < ADC CLK < 3.3Mhz,,
//------------------------------------------------------------------
ADCON1=0x05; //选择转换触发模式;并立即启动
result=AD1DAT0; //将AD转换获得的数据存入result
sum_re+=result;
ADCON1&=0xF7;} //清除中断完成标志
result=sum_re/ks_qyan;
sum_re=result;sum_re=sum_re*beilv;
result=sum_re;
write_com(0x87);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
result=sum_re>>8;
write_com(0x86);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
delay(50);
}
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
void a_dzhuanhua_1(void)
{uchar result,i;
unsigned long int sum_re=0;
unsigned char ks_qyan;
unsigned char beilv;
ks_qyan=seroh_22*10+seroh_23;
beilv =seroh_24*10+seroh_25;
if(ks_qyan==0)ks_qyan=1;
if(beilv==0)beilv=1;
for(i=0;i<ks_qyan;i++){
//----------------------------------------------------------------
ADINS=0x20; //0000 0001, 选择channel
ADMODA=0x10; //0000 0001, 选择转换工作模式:单次转换模式
ADMODB=0x00; //500Khz < ADC CLK < 3.3Mhz,,
//------------------------------------------------------------------
ADCON1=0x05; //选择转换触发模式;并立即启动
result=AD1DAT1; //将AD转换获得的数据存入result
sum_re+=result;
ADCON1&=0xF7;} //清除中断完成标志
result=sum_re/ks_qyan;
sum_re=result;sum_re=sum_re*beilv;
result=sum_re;
write_com(0x97);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
result=sum_re>>8;
write_com(0x96);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
delay(50);
}
///////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
void a_dzhuanhua_2(void)
{uchar result,i;
unsigned long int sum_re=0;
unsigned char ks_qyan;
unsigned char beilv;
ks_qyan=seroh_32*10+seroh_33;
beilv =seroh_34*10+seroh_35;
if(ks_qyan==0)ks_qyan=1;
if(beilv==0)beilv=1;
for(i=0;i<ks_qyan;i++){
//----------------------------------------------------------------
ADINS=0x40; //0000 0001, 选择channel
ADMODA=0x10; //0000 0001, 选择转换工作模式:单次转换模式
ADMODB=0x00; //500Khz < ADC CLK < 3.3Mhz,,
//------------------------------------------------------------------
ADCON1=0x05; //选择转换触发模式;并立即启动
result=AD1DAT2; //将AD转换获得的数据存入result
sum_re+=result;
ADCON1&=0xF7;} //清除中断完成标志
result=sum_re/ks_qyan;
sum_re=result;sum_re=sum_re*beilv;
result=sum_re;
write_com(0x8f);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
result=sum_re>>8;
write_com(0x8e);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
delay(50);
}
///////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
void a_dzhuanhua_3(void)
{uchar result,i;
unsigned long int sum_re=0;
unsigned char ks_qyan;
unsigned char beilv;
ks_qyan=seroh_42*10+seroh_43;
beilv =seroh_44*10+seroh_45;
if(ks_qyan==0)ks_qyan=1;
if(beilv==0)beilv=1;
for(i=0;i<ks_qyan;i++){;
//----------------------------------------------------------------
ADINS=0x80; //0000 0001, 选择channel
ADMODA=0x10; //0000 0001, 选择转换工作模式:单次转换模式
ADMODB=0x00; //500Khz < ADC CLK < 3.3Mhz,,
//------------------------------------------------------------------
ADCON1=0x05; //选择转换触发模式;并立即启动
result=AD1DAT3; //将AD转换获得的数据存入result
sum_re+=result;
ADCON1&=0xF7;} //清除中断完成标志
result=sum_re/ks_qyan;
sum_re=result;sum_re=sum_re*beilv;
result=sum_re;
write_com(0x9f);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
result=sum_re>>8;
write_com(0x9e);
zhuan_xianshi(result/0x10);
zhuan_xianshi(result&0x0f);
delay(50);
}
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -