51单片机频率检测程序
设计一个以单片机为核心的频率测量装置。求大神给写一下程序。_百度知...
void timer0() interrupt 1 {
本人菜鸟,写了一段单片机(c语言)测频率的程序,有两个问题
这是什么意思?应该是void main(void)吧,这种细节问题不注意很难写出高质量的程序哦,再说了,TH1=0x3C; TL1=0xAF; \/\/50ms???应该是TH1=0x3C; \/\/50ms TL1=0xB0;600脉冲也很简单啊, 用600作初值,算出TH0和TL0,然后写出中断服务程序,主函数中设置点P1口LED灯 ...
编一个51单片机外部中断测频率的程序,急求!!
void timer0() interrupt 1 { TH0=(65536-50000)\/256;TL0=(65536-50000)%256;t++;} 每一个下降沿到达时conut自加1。开启一个定时器,计算一定时间t内的count值,主程序就好写了,再写一个H=count\/t语句,H就是频率了。总体思路就是这样,细节你就自己来写吧。
哪位大神帮忙写一个51单片机用来测出脉冲频率的程序
TR1=1;TR0=1;\/\/以下四句的作用是在P1.0引脚上形成1000Hz的脉冲,用导线连接到P3.4作为测试用,如果是AT89S51,则四句不用。将其中 \/\/高8位和低8位的初始值更改后可输出不同频率的脉冲。\/ T2MOD=0x2;RCAP2H=245;RCAP2L=74;TR2=1;\/ while(1){ display();} } void time0() interrupt 1...
用51单片机做频率计测量范围1到1Mhz 误差不超过1hz 这个怎么控制误差啊...
要是出现误差是不是容易变成1500HZ,...是不是这么理解,小弟不才,请赐教 那么是周期的1 ns\/ 1 us = 1\/1000. 所以你的频率精度是 1M \/ 1000 = 1000 Hz.3楼正解,采用输入信号为外部时钟计数器,51单片机太慢,可以考虑换个其他单片机,比如DSPIC33F,30F等单片机....
单片机测方波频率设计: 用protues仿真, 汇编程序, 频率范围:1~1Mhz...
\/\/假设晶振为12MHz include<reg52.h> define uint unsigned int define uchar unsigned char uint t=0,f=100,w=50;sbit P10=P1^0; \/\/ 输出端 sbit KF=P2^0; \/\/ 改变频率按钮 sbit KW=P2^1; \/\/ 改变占宽按钮 void init(){ TMOD=0x21;TH0=(65536-1000)\/256;TL0=(65536-1000)%256...
51单片机制作简易数字频率计程序
这里有一个四位数码管的频率计,供参考 include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; \/\/所需的段的位码\/\/uchar wei[4]={0XEf,0XDf,0XBf,0X7f}; \/\/位的控制端(开发板)uc...
做用51单片机做一个频率计,测量范围为0.1Hz~10kHz
很明显啊,在测量小于1Hz频率时,测量时间必须大于1s,比如10s,20s或者更长时间,这样才能保证测量准确。既然你一次定时0.5s不能变,那就有程序控制累加多个0.5s的测量结果再计算频率值。所以程序中使用自适应方法,首先测量一个0.5s,看得到的频率值是否大于1,如果大于1即直接测量,如果频率值为0,...
基于51单片机的频率测量及测量误差
误差与晶振频率准确度有关,测量与时间有关的量,你本身的时间当然要准确。如果所测信号频率高,可以测0.2s或0.5S内的脉冲数,可以防止溢出,如果频率低,可以测1S或2S内的脉冲数,以减小误差,但响应速度慢一些。程序比较简单,以下供参考 void init()\/\/初始化设置 { TMOD=0x15;\/\/定时器0作为...
1单片机用内部定时方法产生频率100Hz等宽矩形波,假定单片机的晶振频率为...
1单片机用内部定时方法产生频率100Hz等宽矩形波,假定单片机的晶振频率为12MHZ,请编程实现:用定时器定10ms就可以,当定时器中断,则I\/O取反即可。
丹凤县东药回答: 测频率时,频率高的时候,采用“定时计数法”. 楼上给出的“开启一个定时器,计算一定时间t内的count值”,就是这种方法. 但是,频率低的时候,这种方法是不适用的. 因为想要计几个数,就要花费很长的时间. 故此,频率低的时候,应该使用“测量周期法”,再换算成频率.
赫砖17098659705问: 用51单片机测频率,T0定时,T1计数,具体程序应该怎么写呀,跪求完整点的 - ?
丹凤县东药回答: 数码管 还是液晶屏显示? 晶振频率多少? 用定时器时,先设置工作方式 再装入初值 开启中断 再开启定时器/计数器 void init()//初始化设置 { TMOD=0x51;//定时器1作为计数器,定时器0作为定时器用 TH1=0;//计数器清0 TL1=0; EA=1;//开...
赫砖17098659705问: 怎样用51单片机检测频率??例如怎样辨别频率小于10Hz,怎样有大于等于10Hz??? - ?
丹凤县东药回答: 方案1: 不用定时中断,可以用定时器计数方式吧? 用外部中断,测量下降沿(或上升沿)和下一个下降沿(或上升沿)之间的时间间隔(用定时器计数更精确,如果频率很高也可以用软件模拟的方式 做一个计数), 软件结构:在下降沿中断...
赫砖17098659705问: 用单片机测频率的程序 - ?
丹凤县东药回答: 我只有51的程序,没有MSP430的,但是我可以告诉您的思路: 1、你将输入信号输入外部中断引脚. 2、开启您的定时器T0; 3、使用定时器T0计时5S,然后读取外部中断了多少次. 4、计算外部中断的次数N,这样你就得到你所需要的频率了.那就是N*12=1分钟的次数.
赫砖17098659705问: 单片机如何检测信号的频率 - ?
丹凤县东药回答: 如果被测信号频率远大于单片机工作频率(机器周期),可以通过外部可编程分频器降到单片机可以接受的频率范围.如果被测信号频率稍低于单片机工作频率,可以采用单片机定时器从计数引脚输入信号,程序设定计数门限时间的方法来测量频率.如果被测信号频率远低于单片机工作频率,那么可以采用信号输入外部中断引脚作为单片机定时器的计数门限时间,定时器以工作频率计数来测量频率.
赫砖17098659705问: 编一个51单片机外部中断测频率的程序,急求!! - ?
丹凤县东药回答: void timers() interrupt 0{count++; TR0=1; }void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++;}每一个下降沿到达...
赫砖17098659705问: 单纯的用51单片机测频率 - ?
丹凤县东药回答: 前不久也刚做了测频 我想说的是,你外部有木有将信号转换为高低电平的电路?用外部中断,用定时器定一秒钟,在一秒内,检测下降沿个数,就是信号频率了.或者检测固定的下降沿个数,算出时间求个倒数,也是频率,但是,就可操作性而言,前者明显好于后者...然后在回过头来看这程序吧,你说一点P3^2就出现0云云,您是直接把信号接在外部中断的脚上?如果是的话,我想说的是,这样是不行的.51单片机内部木有AD,木有比较器,对于这样的正弦信号表示压力...就这样了...
赫砖17098659705问: 怎样用单片机实现频率的测量 - ?
丹凤县东药回答: 这个太简单了,//搞个外中断,中断来了就计数#include<包头reg51.h> void t0(void) interrupt 0 {T0count++; //这是全局变量 } //T1工作在定时状态下,每定时1秒钟到,刷新T0的计数,void t1(void) interrupt 1 { TR0=1;//搞个计数器中断 TH0=0x3...
赫砖17098659705问: 怎么用51单片机测量方波频率?输入口怎么接 - ?
丹凤县东药回答: 采用两个定时器,一个计数,一个定时 ,定时0.5s或1S(需多次中断累积),读取计数器的值,即可得到 频率 输入口直接接P3.4 (T0 )或 P3.5 ( T1)
赫砖17098659705问: 下面是一个用51单片机的P3.5引脚对一个由555定时器构成的多谐振荡器的振荡频率进行测量的程序,求注释?
丹凤县东药回答: void cafrequent(void) reentrant 定义cafrequent程序求振荡频率 {long int l1=0x00; long int h1=0x00; float tt=0; //tt用于计算频率 TMOD=(TMOD&0x0F)|0x90; //定时器1工作于模式1(16位计数器),TR1控制运行 TH1=0x00; //计数器初值设为0x0000...