51单片机频率精确测量C程序

51单片机频率精确测量C程序

ID:41139346

大小:99.51 KB

页数:5页

时间:2019-08-17

51单片机频率精确测量C程序_第1页
51单片机频率精确测量C程序_第2页
51单片机频率精确测量C程序_第3页
51单片机频率精确测量C程序_第4页
51单片机频率精确测量C程序_第5页
资源描述:

《51单片机频率精确测量C程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、测定脉冲频率,附带部分PROTUES仿真结果和C语言程序,希望能给广大电子爱好者带来方便。仿真结果十分精确,实际应用中可能会存在少许误差,通过相应的电路处理,可以满足使用要求。很多场合需要用到对频率的精确测量,譬如你用霍尔传感器做测转速系统,就需要用到此模块,测量霍尔传感器输出的脉冲的频率,然后稍作运算,就可以实现转速的测量功能。本设计利用51单片机的外部中断(INT0)的捕捉功能,实现对脉冲的计数,同时配以T0的8位自动装入方式,实现准确计时1S,这1S内INTO捕捉到的脉冲数即为频率。通过PROUES仿真,证明这种方式误差极小(与网上流行

2、的用定时器工作方式1定时1S的程序相比,误差大大缩小,尤其是对于频率在2K以上信号的测量)。实例1、频率设定为5K,显示在4999和5000两数之间跳动实例2、频率设定为4321HZ,显示结果#include#defineucharunsignedchar#defineuintunsignedintuinttime_count,count,sum;sbitduan=P2^6;//74HC573的LE端U5LED的段选端sbitwei=P2^7;//74HC573的LE端U4LED的位选端ucharcodetable[]={0

3、x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极数码表unsignedintdis[6];ucharcon[]={0xfe,0xfd,0xfb,0xf7,0xef};//共阴型数码管控制端voidinitial(void);voiddelay(uintz);voiddisplay();main(){initial();while(1){display();}}voidinitial(){count=0;time_count

4、=0;sum=0;TMOD=0x02;//定时器0工作方式2,8位自动装入计数TH0=0x06;TL0=0x06;//定时器赋初值计时0.25ms,1000次为0.25s,4000次为一秒IT0=1;//外部中断0工作方式(下降沿有效)EA=1;ET0=1;EX0=1;TR0=1;//开中断}voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=20;y>0;y--);}voidexter0()interrupt0{count++;}voidtimer0()interrupt1{time_count++

5、;if(time_count==4000){sum=count;time_count=0;count=0;}}voiddisplay(){uchari;dis[0]=sum/10000;//获取计数值的万位dis[5]=sum%10000;dis[1]=dis[5]/1000;//获取计数值的千位dis[5]=dis[5]%1000;dis[2]=dis[5]/100;//获取计数值的百位dis[5]=dis[5]%100;dis[3]=dis[5]/10;//获取计数值的十位dis[4]=dis[5]%10;//获取计数值的个位for(i=

6、0;i<5;i++)//依次显示万、千、百、十、个位,动态显示{//P0=0xff;P0=con[i];wei=1;wei=0;P0=table[dis[i]];duan=1;duan=0;delay(1);P0=0;duan=1;duan=0;}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。