51单片机测占空比和周期程序求解

51单片机测占空比和周期程序求解,第1张

您好,单片机可以实现对方波频率、占空比的检测。做这个东西你得从以下方面入手:

1、首先测出方波的频率(这个跟占空比无关),利用这个计算出周期T;

2、利用一个独立的外档激部中断,在测量完频率后启动。

(1)先开启中断,并设置为上升边沿触发;

(2)方波从低电平跳变到高电平后,中断触发后,将其设置为下降边沿触槐圆发,同时启动定时器

(3)第二次触发中断后,停止计时,两次中断之间的间隔修正补偿后,行明袜就是高电平的持续时间Tu。

占空比可以计算出来,就是q=Tu/T*100%,

然后就显示即可。

//晶振12MHz

//在斗颂档P1_0输出20KHz,0-255级可调占空比 每一级0.39%

#include<at89x51.h>

unsigned char PWM=0x80//PWM的百分比

void InitT0(void)

{

TMOD=0x02//定时器0工作方式2 8位自动重装

TH0=205//pwm 50us 20khz

TL0=205

TR0=1//开始计时

ET0=1//允许定时器中断

EA=1//开启总中断

}

void main(void)

{

InitT0()//初始化T0定时器

while(1)

{

//添加处理代码

//调整PWM的值就能调整输出占空比

}

}

void Timer0(void) interrupt 1//用于樱腔PWM的定时器空乱

{

static unsigned char counter=0//记录中断次数

counter++

if(counter >= PWM) P1_0 = 0else P1_0 = 1

}

如果想要进步最好自己写,不要老是要人家给代码之类的。给个思路你吧祥大。

有软件PWM和硬件PWM

像51单片机没有硬孙野件PWM只能用软件PWM:

1,设定定时器并开中断(定时时间为你需要的PWM频率)

2,在中断函数中设定每次中断到来输出PWM的端口电平取反。

硬件PWM:

根据单片机的datasheet,配置好相关的寄存器并使能PWM输出谨凯竖就可以了!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12426991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存