如果是12M晶振,257Hz,周期为389105us,40%占空比,高电平155642us,低电平233463us,程序如下:
#include<reg51h>
sbit pluse=P1^0;
unsigned char flag=0xff;
void t0isr() interrupt 1
{
flag=~flag;
if(flag)
{
TH0=(65536-155642)/256;
TL0=(65536-155642)%256;
pluse=1;
}
else
{
TH0=(65536-233463)/256;
TL0=(65536-233463)%256;
pluse=0;
}
}
main()
{
TMOD=0x01;
TH0=(65536-155642)/256;
TL0=(65536-155642)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
51所能输出的PWM的最大频率
是由单片机的时钟周期决定的,
25Hz以上肉眼就基本看不出来了
占空比是可以0%~100%调整的,这个是由程序决定
#include
<REGX52H>
#define
uchar
unsigned
char
#define
uint
unsigned
int
sbit
PWM_OUT=P3^0;
//PWM输出
void
DelayMS(uint
ms)
{
uchar
i,j;
for(j=ms;j>0;j--)
for(i=0;i<40;i++);
}
void
main()
{
uint
Val;
改变Val值可以改变占空比
0--100
while(1)
{
ADOE=0;
if(Val==0)
//PWM
输出(占空比为0%)
{
PWM_OUT=0;
DelayMS(255);
continue;
}
if(Val==0xff)
//PWM输出(占空比为
100%)
{
PWM_OUT=1;
DelayMS(255);
continue;
}
PWM_OUT=1;
DelayMS(Val);
PWM_OUT=0;
DelayMS(255-Val);
}
}
首先编写一个10US的延时程序,然后根据频率,决定在一个周期内调用这个10US延时程序的总次数,再根据不同的空点比决定输出高电平时调用的次数,再算出低电平时调用次数,至于程序,你自己编呀
以上就是关于求高手 51单片机IO口输出2.57HZ方波占空比是40%程序全部的内容,包括:求高手 51单片机IO口输出2.57HZ方波占空比是40%程序、51单片机输出PWM的最高频率和占空比、怎样用51系列汇编语言产生可调占空比的pwm波等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)