下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、测定脉冲频率,附带局部PROTUES仿真结果和C语言程序,希望能给广阔电子爱好者带来方便。仿真结果十分精确,实际应用中可能会存在少许误差,通过相应的电路处理,可以满足使用要求。很多场合需要用到对频率的精确测量,譬如你用霍尔传感器做测转速系统,就需要用到此模块,测量霍尔传感器输出的脉冲的频率,然后稍作运算,就可以实现转速的测量功能。本设计利用51单片机的外部中断INT0的捕捉功能,实现对脉冲的计数,同时配以T0的8位自动装入方式,实现准确计时1S,这1S内INTO捕捉到的脉冲数即为频率。通过PROUES仿真,证明这种方式误差极小与网上流行的用定时器工作方式1定时1S的程序相比,误差大大缩小,尤其
2、是对于频率在2K以上信号的测量。实例1、频率设定为5K,显示在4999和5000两数之间跳动实例2、频率设定为4321HZ,显示结果#include <reg52.h>#define uchar unsigned char#define uint unsigned int uint time_count,count,sum;sbit duan=P26; /74HC573的LE端 U5 LED的段选端sbit wei=P27; /74HC573的LE端 U4 LED的位选端uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
3、,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴极数码表unsigned int dis6; uchar con=0xfe,0xfd,0xfb,0xf7,0xef; /共阴型数码管控制端 void initial(void);void delay(uint z);void display();main()initial();while(1) display();void initial()count=0;time_count=0; sum=0;TMOD=0x02; /定时器0工作方式2,8位自动装入计数TH0=0x06;TL0=0x06; /定时器赋初值
4、 计时0.25ms,1000次为0.25s,4000次为一秒IT0=1;/ 外部中断0工作方式下降沿有效EA=1;ET0=1;EX0=1;TR0=1; /开中断void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=20;y>0;y-);void exter0() interrupt 0count+;void timer0() interrupt 1time_count+;if(time_count=4000)sum=count;time_count=0;count=0;void display() uchar i; dis0=sum/10000; /获取计数值的万位 dis5=sum%10000; dis1=dis5/1000; / 获取计数值的千位 dis5=dis5%1000; dis2=dis5/100; / 获取计数值的百位 dis5=dis5%100; dis3=dis5/10; / 获取计数值的十位 dis4=dis5%10; / 获取计数值的个位 for(i=0;i<5;i+) /依次显示万、千、百、十、个位,动态显示 / P0=0xff; P0=coni; w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论