case 1:{b=0x31;}break; case 2:{b=0x32;}break; case 3:{b=0x33;}break; case 4:{b=0x34;}break; case 5:{b=0x35;}break; case 6:{b=0x36;}break; case 7:{b=0x37;}break; case 8:{b=0x38;}break; case 9:{b=0x39;}break; default:{b=m[a];}break;/*空格号或者返回吧*/ } return b; }
/******************************************************/ void main()
{ unsigned char d=0,m,n[5]={0x30,0x31,0x32,0x33,0x34}; unsigned long b, e; float q,w;
unsigned long a;
unsigned char i,dat=0; P3_1=0;
P1_5=0; P1_6=0; P1_7=0; Initialize_LCD(); for(i=0;i<=4;i++)
{Write_LCD_Data(n[i]);} P1_5=1; P1_6=1; P1_7=1; while(1){
if (P2_3==0) { Delayms(5); if (P2_3==0){ cuce (); d=1;P1_6=~P1_6; if(flag1==1){Pa=1; Pb=0; Pc=1; b=jingce(); a=flag2; flag2=0;} if(flag1==2){Pa=0; Pb=0; Pc=1; b=jingce(); a=flag2; flag2=0;} if(flag1==3){Pa=0; Pb=1; Pc=0; b=jingche();
a=2;} if(flag1==4){Pa=1; Pb=0; Pc=0; b=jingche(); a=2;}
zhuanhuan( b, a, d); for(i=0;i<=8;i++) {a=i;dat=xianshi(a); Write_LCD_Data(dat);} d=0; b=0; flag1=0; } else {goto L2;} }/*测周*/ L2: if (P2_4==0) { Delayms(5); if (P2_4==0){ cuce (); d=2; if(flag1==1){Pa=1; Pb=0; Pc=1; b=jingce(); a=flag2; flag2=0;} if(flag1==2){Pa=0; Pb=0; Pc=1; b=jingce(); a=flag2; flag2=0;} if(flag1==3){Pa=0; Pb=1; Pc=0; b=jingche(); a=2;} if(flag1==4){Pa=1; Pb=0; Pc=0; b=jingche(); a=2;}
zhuanhuan( b, a, d); for(i=0;i<=8;i++) {a=i;m=xianshi(a);Write_LCD_Data( m);} d=0; b=0; flag1=0; } else {goto L3;} }/*测频*/ L3: if(P2_5==0){Delayms(5); if (P2_5==0){
cuce ();
if(flag1==2){Pa=0;Pb=0;Pc=1; t2init(); t2cx();
while (flag2==0); q=RCAP2H*0xff+RCAP2L;/*第一次的时间值,只记录了高电平*/
while (flag2==1);
//e=RCAP2H*256+RCAP2L-e;
w=(q*1000)/(RCAP2H*0xff+RCAP2L-q);/*分母是整个周期的时间,b*1000是为了放大计算*/
flag2=0;/*归零*/ RCAP2H=0; RCAP2L=0; count2=0; count3=0; flag1=0; TR2=0;
EXEN2=0;/*用T2*/
} if(flag1==3|flag1==4){Pa=0; Pb=0; Pc=0;P1_5=0; t0init();
while(P1_0==0);/*等待上升沿*/
while (P1_0==1); while(P1_0==0); TR0=1;
while(P1_0==1); TR0=0; b=count4*250+(TL0-6)-3;/*计数模式,每250个溢出一次*/
count4=0;/*第一次的脉冲个数,高电平*/ Pa=1;/*反相信号输入*/ TL0=6; //while(P1_0==1);/*等待上升沿*/
//while (P1_0==0); while(P1_0==1); TR0=1;
while(P1_0==0); TR0=0; w=count4*250+(TL0-6)-3;/*计数模式,每250个溢出一次*/
count1=0;/*第一次的脉冲个数,高电平*/
w=(b*1000)/(b+w);/*用T0,(b+e)是整个周期的宽度*/ }
/*接下来数据处理*/ e=w;flag1=0; for(i=0;i<=2;i++) { n[i]=e/100; e=(e0)*10;} n[3]=n[2]; n[2]=0x2e;
n[4]=0x25;/*百分号%*/ 0:{n[i]=0x30;}break; 1:{n[i]=0x31;}break;
2:{n[i]=0x32;}break; 3:{n[i]=0x33;}break; 4:{n[i]=0x34;}break; 5:{n[i]=0x35;}break; 6:{n[i]=0x36;}break; 7:{n[i]=0x37;}break; 8:{n[i]=0x38;}break; 9:{n[i]=0x39;}break; 0x25:{n[i]=0x25;}break; 0x2e:{n[i]=0x2e;}break;
for(i=0;i<=4;i++){switch (n[i]){ case case case case case case case case case case case case } m=n[i]; Write_LCD_Data(m); } d=0;b=0;e=0;count4=0;count1=0; }/*测占空比*/ else {goto L4;} } L4: if(P2_6==0){Delayms(5); if (P2_6==0){ Pa=0; Pb=0; Pc=1;/*第五路信号*/ t2init();
while(P1_0==0);/*等待高电平*/ TR2=1; EXEN2=1;
while(flag2==0);/*等待下降沿*/ TR2=0;
b=RCAP2H*256+RCAP2L+3; a=2;d=1; count2=0; count3=0; flag1=2;
/*接下来的数据的处理*/ zhuanhuan( b, a, d); for(i=0;i<=8;i++) {a=i;m=xianshi(a);Write_LCD_Data( m);} a=0;b=0;d=0;flag1=0; flag2=0; } else {goto L5;} }/*测脉冲宽度*/
L5: if(P2_7==0){ Delayms(5); if (P2_7==0){TMOD=0x15;/*T0工作于计数模式,T1定时模式,定时时间是1ms,也就是计数值为100*/ ET1=1; TH1=64536/256; TL1=64536%6;/*1ms*/ Pa=1; Pb=1; Pc=1;/*时标信号的输入*/ TH0=0; TL0=0; IT0=1; ET0=1; EA=1; while(P3_5==0); TR1=1; TR0=1; while(flag2==0); TR0=0; TR1=0;flag2=0; b=(TH0*256+TL0); for(i=0;i<=2;i++){n[i]=b/10; b=(b)*10;} for(i=0;i<=2;i++){switch (n[i]){ case 0:{n[i]=0x30;}break; case 1:{n[i]=0x31;}break;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库简易数字频率计程序(3)在线全文阅读。
相关推荐: