单片机外部中断方式精确测频率_第1页
单片机外部中断方式精确测频率_第2页
单片机外部中断方式精确测频率_第3页
单片机外部中断方式精确测频率_第4页
单片机外部中断方式精确测频率_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、方法1 测频率法#include "reg52.h"#define uchar unsigned char #define uint unsigned intuchar times=0;uint f;float f1,f2,f3,f4;uchar display_code=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X76;void delay(void) unsigned char a,b; for(b=200;b>0;b-) for(a=10;a>0;a-);void display() uchar

2、k=0xfe; P2=0xff; P0=display_code10; /显示H标志 P2=k; delay(); k=(k<<1)+1; P2=0xff; P2=0xff; P0=display_codef%10; P2=k; delay(); k=(k<<1)+1; P2=0xff; P0=display_code(f%100)/10; P2=k; delay(); k=(k<<1)+1; P2=0xff; P0=display_code(f%1000)/100+0X80; P2=k; delay(); k=(k<<1)+1; P2=0xff

3、; P0=display_codef%10000/1000; if(f%10000/1000=0)&&(f/10000=0) P2=0XFF; else P2=k; delay(); k=(k<<1)+1; P2=0xff; P2=0xff; P0=display_codef/10000; if(f/10000=0) P2=0xff; else P2=k; delay(); P2=0xff; main()/T2MOD=0X00; T2CON=0X00; /16位自动重装,定时中断,TR2先置0 RCAP2H=0X4c; RCAP2L=0X00;/定时50ms,晶振1

4、1.0592 EX1=1; IT1=1; /外部中断下降沿触发 ET2=1; TR2=1; EA=1; while(1) display(); void timer2() interrupt 5 /500us中断一次,自动重装 TF2=0; if(+times=20) times=0; f3=f4; f2=f3; f1=f2; f4=0; f=(int)(f1+f2+f3)/3.0)*100); void int1_pinlv() interrupt 2 f4+; 方法2 测周期法#include "reg52.h"#define uchar unsigned char #

5、define uint unsigned intuchar times=0;uint f;float f1,f2,f3,f4;uchar display_code=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X76;void delay(void) unsigned char a,b; for(b=200;b>0;b-) for(a=10;a>0;a-);void display() uchar k=0xfe; P2=0xff; P0=display_code10; /显示H标志 P2=k; delay(); k=(k<

6、;<1)+1; P2=0xff; P2=0xff; P0=display_codef%10; P2=k; delay(); k=(k<<1)+1; P2=0xff; P0=display_code(f%100)/10; P2=k; delay(); k=(k<<1)+1; P2=0xff; P0=display_code(f%1000)/100+0X80; P2=k; delay(); k=(k<<1)+1; P2=0xff; P0=display_codef%10000/1000; if(f%10000/1000=0)&&(f/100

7、00=0) P2=0XFF; else P2=k; delay(); k=(k<<1)+1; P2=0xff; P2=0xff; P0=display_codef/10000; if(f/10000=0) P2=0xff; else P2=k; delay(); P2=0xff; main()/T2MOD=0X00; T2CON=0X00; /16位自动重装,定时中断,TR2先置0 RCAP2H=0X4c; RCAP2L=0X00;/定时50ms,晶振11.0592 EX1=1; IT1=1; /外部中断下降沿触发 ET2=1; TR2=1; EA=1; while(1) disp

8、lay(); void timer2() interrupt 5 /500us中断一次,自动重装 TF2=0; if(+times=20) times=0; f3=f4; f2=f3; f1=f2; f4=0; f=(int)(f1+f2+f3)/3.0)*100); void int1_pinlv() interrupt 2 f4+; #include <reg52.h>     #define uchar unsigned char#define uint unsigned

9、60;intuchar code t=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uint n,num;void delay(uint z) uint i,j;for(i=0;i<z;i+)     for(j=0;j<50;j+); void display(uchar m,uchar w,uchar q,uchar b,uchar s,uchar 

10、;g)   /显示    P2=0xfe;   P0=tg;   delay(1);   P0=0;   P2=0xfd;   P0=ts;   delay(1);   P0=0;   P2=0xfb;   P0=tb;   delay(1

11、);   P0=0;   P2=0xf7;   P0=tq;   delay(1);   P0=0;   P2=0xef;   P0=tw;   delay(1);   P0=0;   P2=0xdf;   P0=tm;   delay(1

12、);   P0=0;   void main()  uchar m,w,q,b,s,g;   TMOD=0x25;          /   0010 0101 =>T1,定时,方式2;T0,计数,方式1         &

13、#160; TH0=0;                                             TL0=0; &

14、#160;                   TH1=6;         TL1=6;    TR1=1;              &

15、#160;        TR0=1;                       ET0=1;                &

16、#160;       ET1=1;                        EA=1;                &#

17、160;      while(1)       m=num/100000;w=num/10000%10;q=num/1000%10;b=num/100%10;s=num/10%10;g=num%10;       display(m,w,q,b,s,g);   void t1(void) interrupt 3          n+;    if(n=4000) /一秒时间到      n=0; /清零       EA=0; /关中断       num=(long)TH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论