简易数字频率计程序(3)

2020-02-21 20:50

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;


简易数字频率计程序(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:金融管理与实务专业毕业设计方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: