基于c8051f020等精度测量频率

基于c8051f020等精度测量频率

ID:20180917

大小:124.00 KB

页数:4页

时间:2018-10-08

基于c8051f020等精度测量频率_第1页
基于c8051f020等精度测量频率_第2页
基于c8051f020等精度测量频率_第3页
基于c8051f020等精度测量频率_第4页
资源描述:

《基于c8051f020等精度测量频率》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于C8051F020,通过12864进行显示的等精度频率测量,测量范围为1HZ~1MHZ。C8051F020与MCU-51的也没多大的区别,个人感觉最大的区别主要还是管脚配置和晶振,像C8051F020增加的一些AD,DA,一般都不怎么用的。只是个人感觉,作为初学者,我也只能有这么个感受了,呵呵。程序经过调试,原理图也正确。/****************************************74ls02的第一脚接单片机的T1端*对C8051F020进行管脚配置,*配置INT0,T1即

2、可*本程序将INT0配置到P0^0,P0^1接被测频率输入端***************************************/#include"C8051F020Init.h"#include"LCD12864.h"uchartable0[]="测控技术与仪器";uchartable1[]="等精度测量频率";uchartable2[]="HZ";uchartable3[]="2012-08-2218:51";sbitOnOff=P0^2;sbitReset=P0^3;sbitflag

3、=P0^0;ucharn;ucharpinlv[8];floatN1,N0;unsignedlongFx;voidcepin()//测频程序{n=0;//n用于记录T0的溢出次数TMOD=0x59;//设定定时器T0,T1的工作模式,和51单片机一样TH0=0;//置初值TL0=0;TH1=0;TL1=0;EA=1;//总中断允许ET0=1;//T0中断允许Reset=0;//将74LS74Q端置0,定时器T0不工作;同时Q非置1,74LS02关闭,T1不对被测信号计数OnOff=0;//将74LS

4、74D端置0,以使D和Q保持一致,这样,即使74LS74的CLK有效,也不改变Q的状态_delay_ms(1);//延时约1ms,以完成上面两个指令Reset=1;//74LS74的R端置1,清0无效TR0=1;//T0计时开TR1=1;//T1计时开OnOff=1;//将74LS74D端置1,使D和Q相异,一旦74LS74的CLK有效,Q即为1(T0定时开始),Q非为0(T1计时开始)while(flag==0);//从将74LS74D端置1,到74LS74的CLK第一次有效之间,flag即P3^

5、2为0,定时未开始while(flag==1);//74LS74的CLK第一次有效之后,flag即P3^2为1(定时开始),直至定时结束if(flag==0)//flag再次为0,表示本次测量已结束{TR0=0;//T0计时关(要注意,计数及定时的开与关直接由被测信号的上升沿决定,而不是这两个命令)TR1=0;//T1计时关N1=TH1*256+TL1;//取T1计数器中的值(注意N1,N0都为float型,这样计算结果准确度高)N0=n*65536+TH0*256+TL0;//取T0计数的总值}}

6、voidtimer0()interrupt1using1//T0中断服务{n++;//T0记满65535之后,n加1,以确定一次测量中T0的总定时时间OnOff=0;//将74LS74D端置0,待74LS74的CLK下次有效,Q非为1(T1计时结束),Q即为0(T0定时结束)}voidPinlvtoStr(){Fx=N1*2000000/N0*10;//被测结果的实际值为N1*1000000/N0,但为了显示5位小数,故有*100000pinlv[0]=Fx/1000000;Fx=Fx%100000

7、0;pinlv[1]=Fx/100000;Fx=Fx%100000;pinlv[2]=Fx/10000;Fx=Fx%10000;pinlv[3]=Fx/1000;Fx=Fx%1000;pinlv[4]=Fx/100;Fx=Fx%100;pinlv[5]=Fx/10;Fx=Fx%10;pinlv[6]=0x2e;pinlv[7]=Fx;}//以上为测频子程序voiddisplaypinlv()//显示频率{uchari;Write12864_com(0x88);for(i=0;i<8;i++){if(

8、i!=6)Write12864_data(pinlv[i]+0x30);elseWrite12864_data(pinlv[i]);}}voidmain(){InitDevice();XBR1=0x0C;XBR2=0x40;InitLCD12864();while(1){LCD12864TextOut(0,0,table0);LCD12864TextOut(0,1,table1);LCD12864TextOut(14,2,table2);LCD12864TextOut

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

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

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