导航:首页 > 操作系统 > 单片机测量脉冲宽度

单片机测量脉冲宽度

发布时间:2024-10-15 10:54:26

A. 求助,通过52单片机测量外部脉冲宽度,如果脉宽小于某个设定值则输出一个信号,比如灯亮

需求没说清楚,脉宽的具体宽度,数量级先搞清楚。对具体实施很关键的。
方法有一下:
1、如果单片机有捕捉功能,则在沿上捕捉后记录定时器时间,然后计算出时间,即可比较输出信号。
2、如果没有,接入单片机的中断管脚(上下沿中断,如果没有,进入后立马改变下次中断触发方式,进行上升下降沿中断的切换),单片机外部中断服务中记录定时器时间,然后下次中断来临后计算时间,即可比较输出信号。
3、如果都没有,功能且单一,脉宽比较宽,要求不高,硬件又没有在中断管脚上,可以考虑主程序定时查询,记录时间。

5ms,很宽的,如果功能单一的话,定时器都可以免了,直接用单片机指令周期算时间,定义一个长整型变量,不断监测管脚,监测完变量加一,后再比较。
不过呢,希望还是用我提到的方法2吧,通用些。具体实施自己多想想,另位朋友的代码慎重使用,问题较多,不一一说明了

B. 单片机测量脉宽 能够用单片机测量1us以下的脉宽吗,极限是多少

这个和单片机的时钟频率有关,比如51单片机,12MHz外晶振,内部定时器使用的就是1MHz的晶振,测量脉冲宽度误差就是1us。
换句话说,如果要求测量1us的脉宽,以最大1%的误差计算(0.01us),要求的测量频率至少是100MHz。这个频率恐怕没有几个单片机做得到的。
如果放宽要求,可以算算看了。以前曾经采用过FPGA,输入频率是50MHz(高稳晶振),经PLL倍频,测量1us的脉冲才刚刚好。

C. 如何用stc单片机测量脉宽

测量原理,低电平时,等待高电平到来,打开定时器,等待高电平结束,关闭定时器,读出定时器的值,即是脉冲宽度。当然有时定时器会溢出,要开中断,把中断时间也要算上。

D. 利用8051单片机定时器T0测量某正脉冲的宽度

原理:分别用脉冲的上升沿和下降沿出发单片机,上升沿给出中断1开始计数,下降沿给出中断2停止计数,最后换算出高电平宽度=计数周期数×一个计数的时间。
设置的SFR:TMODE(一定要注意GATE的设置为1),TCON,IE,TH0,TL0等
最大脉宽计算:我们知道计数器中断的产生是从全1变为全0产生溢出中断,所以我们计数器的处置设定为00H,如果我们让其工作在方式1计数下,最大计数值为2^16=65536,那么最大计数脉冲宽度就是65536*2us。
一定要注意我们利用GATE的控制作用是计数器用来测量脉冲宽度。
不明白的LZ可以在上网络看看利用GATE的控制作用是计数器用来测量脉冲宽度这方面知识,或者我们在交流,呵呵

E. 单片机PCA能测量1秒脉宽吗

可以,只要代码编辑无误,一般情况下是可以测量的。STC12C系列增强型单片机片上扩展了基本51单片机的功能,如提供了PCA/PWM接口,定时器能工作在1T模式下(基本51单片机的时钟是Fosc的12分频,1T模式下1分频)。PCA可以用于脉宽测量,但是,protues暂不支持该系列单片机的仿真功能,反复烧写也挺麻烦,所以还是先用基本51单片机实现该功能,在后面的博文里在实现PCA测量脉宽。TMOD最高位GATEn置位后,Tn启动计数受INTn(Pin3.3)和TRn的共同影响:TRn为1,当INTn引脚输入为高电平时,Tn才允许计数。利用这个功能可测量INTn上正脉冲的宽度。

F. 如何实现单片机实时测量输入中断口的脉冲宽度

您好!可以分以下几步来解决这个问题!
1、首先设置一个定时器,1us中断一次,然后每次中断检测IO的电平。
2、在定时中断函数内定义一个static 的int类型静态变量 count;
3、每次检测到IO口为高电平(假设为高电平脉冲)的时候,count++;
4、在IO口重新回到低电平的时候,count的值就是时间了,比如count为1000,那么脉冲宽度就是1000*1us=1ms
5、在读取count的值之后,复位count为0;继续测量下一个脉冲宽度。
纯手打,给个采纳呗~

G. 51单片机测量脉冲宽度程序

假设用定时器0,一个完整过程是
TH0=0;TL0=0;
whiIe(IN==1);∥等待当前高电平过去
while(IN==0);∥等待高电平来到
TR0=1;∥启动计时
while(IN==1);∥等待高电平结结束
TR0=0;∥停止计时
HIGH=TH0*256+TL0;∥存计时结果
TH0=0;TL0=0;∥清0

H. 51单片机测量正脉冲宽度

建议你在INT1引脚上,加一个反相器。这样,可以使用中断功能来完成。程序如下:
ORG 0000H
SJMP MAIN
ORG 000BH
LJMO I_T0
ORG 00013H
LJMP I_INT1
MAIN:
MOV R0,#0
MOV TMOD,#02H
MOV TH0,#0
MOV TL0,#0
SETB IT1
SETB EA
SETB EX1
SETB ET0
SJMP $
I_INT1:
SETB TR0
JNB P3.3,$
MOV 60H,TL0
MOV 61H,R0
MOV R0,#0
MOV TL0,#0
CLR TR0
RETI
I_T0:
CLR TF0
INC R0
RETI
END
最后正脉冲的宽度为:[(61H)×256+(60H)]×T
其中:T为机器周期,如果是6MHz的话就是2uS,如果是12MHz的话就是2uS。
我评经验,你要测量正脉冲宽度是要计算占空比。这个程序,实现该功能没问题。

附带说一句,你这样的问题才30分,少了点哇。呵呵,写程序很辛苦的啦~!:)呵呵

阅读全文

与单片机测量脉冲宽度相关的资料

热点内容
在哪里看每个app用了多长时间 浏览:635
学程序员要英语四级吗 浏览:131
java视频录制 浏览:756
口头指派式命令 浏览:470
php开发工程师面试题 浏览:954
linux内核源码pdf 浏览:66
mc命令方块怎么提取 浏览:367
有关程序员的五大魔咒你中了几个 浏览:204
本地文件如何上传linux服务器 浏览:17
传奇资源网站源码 浏览:377
f26app怎么下载 浏览:120
程序员与酒 浏览:439
php政府网站源码 浏览:912
前端面试常问算法 浏览:153
pythonopen可以打开文件夹吗 浏览:635
不锈钢加密网带厂家 浏览:347
哪一年除夕不算法定节假日 浏览:40
程序员对键盘的需求 浏览:605
程序员的峥嵘岁月 浏览:58
python调用类里面的函数 浏览:473