如何用51单片机输出一个占空比可调的方波:

作者&投稿:乘骆 (若有异议请与网页底部的电邮联系)
51单片机怎样用键盘控制输出频率和占空比可调的方波~

程序以验证。可以使用。用的是定时中断;P1尾输出端;我只写出了连个按键的试验效果,如果你需要更多的话,你自己往上加按键就OK 了希望随你有所帮助 #include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit s1=P3^2;
sbit s2=P3^3;
sbit s3=P3^4;
uchar t,x;
void delay(uint z)
{
uint x,y;
for (x=0;x<z;x++)
for(y=110;y>0;y--);
}
void init()
{
x=40;
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(s1==0)
{
delay(5);
if(s1==0)
{
while(!s1);
x=10;
}

}
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
x=20;
}

}
}
}void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==x)
{
t=0;
P1=~P1;
}
}

如果占空比可以控制、调整,就不能称之为方波,就是矩形波形,属于PWM波形。

用两个变量控制PWM的参数,一个控制周期长度,一个控制脉冲宽度。

用两个按键控制“周期长度”变量的+、-;
用两个按键控制“脉冲宽度”变量的+、-;

即可。

首先选择一个I/O设置为输出模式,这个就是用于输出方波的硬件接口。
频率可调,可以根据你要想要的频率,换算成中断周期,实质上是一个计数器。建议弄一个300K的中断服务。那么可以这样整:如果要30K的频率,那么每10次中断视为一次完整的周期,执行一次你要的处理。
占空比问题,比如30%的占空比,那么你前三次中断都把状态设置为1,后面七次都设置为0状态。照这个思路就实现你的占空比了。当然这些中断次数的依据需要你自己对占空比的要求进行换算得到。在中断服务程序中去操作I/O口状态,当然你还可以在该程序结束的时候或者开始的时候,再次修改中断时间从而调整输出频率。

估计你这个是想使用单片机来驱动DC-DC稳压电源吧。
你买STC12系列的单片机,自带PWM及ADC功能,然后通过输出电压及电流值调整频率输出,控制MOS管驱动高频变压器就可以完成了。

51自身没有PWM波发生器,需要用定时器模拟


跪求!想用51单片机通过按键触发来输出一个可调占空比的的PWM波形。用C...
开个定时器,0.1ms的中断周期,中断100次为一个PWM周期,得出10ms周期的PWM波,然后在这100次的中断中,前30次中断让IO口输出高,后70次让IO口输出低,然后就得出了30%占空比的PWM波,根据这个方法即可实现你的要求。

51单片机字符液晶屏rs的作用是什么
51单片机字符液晶屏(LMC1602)输出端rs的功能是存储控制信息,反映当前指令执行寄存器结果的各种状态信息,选择高电平1的数据寄存器和低电平0的指令寄存器。51单片机字符液晶屏(lmc1602)的输出rw用来读写信号。当高电平为1时,执行读取操作。51单片机字符液晶屏(LMC1602)的输出端E作为输入引脚,只有当引脚...

如何用51单片机控制继电器工作?
51单片机io口的输入\/输出逻辑电平是:低电平是0,高电平接近5V。但负载能力并不大。所带的负载只限于TTL负载。要用io口控制一个继电器,要用一个NPN三极管,io口接一个基极电阻后控制三极管基极,继电器接在三极管的集电极。如果继电器比较多的话,就用ULN2003,或ULN2803。你的继电器应该是12V的吧,没有...

51单片机IO口分别设置为高阻输入和开漏输出有什么区别,哪个状态下是...
区别就是一个是输入,另一个是输出。那一个状态下都可能会有电流流入单片机,只是大小的区别。高阻输入时无论高低电平都很小(一般几个微安量级);开漏输出时高电平与前面一样,低电平由外部上拉电阻决定。

51单片机输出各种电压
51单片机一般是没有A\/D,D\/A功能,加强型的话可能有,要外接DA芯片才能输出设定的电压。输出PWM的频率是由你自己设定的,一般IO口输出PWM的话最高一般是晶振频率\/6。所谓PWM其实就是你IO输出一个高电平一个低电平,然后不断循环而已,最高频率限制是由于你单片机的处理速度的限制。

51单片机P0口输入输出的设置及准双向口怎么理解
你可以对照着P0口的结构图看这段话,向端口写1,就是向锁存器写1,也就是让其口输出FF,为什么,是这样的,给锁存器写1,那么锁存器的反向端就输出0,那么和它相接的MOS管也就在截止状态,也就是呈高阻态,这样P0口上数据就会从读引脚的三态缓冲器上正确的输入,如果不写1,那么锁存器上次...

51单片机怎样把P1口接收到的数字信号给P0口进行输出?
如果你不需要处理这个数据,那还要51单片机的IO口干嘛,直接连起来就好啦。如果要处理。建一个中间变量 <reg51.h>\/\/或相关单片机头文件 unsigned char x;x=P0;P1=x;

51单片机p0p1p2p3口,到底有啥区别啊,他们的基本功能有啥
一、意思不同 P0口作输出口用时,需加上拉电阻。P0口有复用功能。当对外部存储器进行读写操作时,P0口先是提供外部存储器的低8位地址,供外部存储器地址锁存器锁存,然后充当数据线,用于写出或读入数据。P1口、P2口只是普通IO口。二、功能不同 P0口第一个功能是数据接口,第二个功能是地址低八...

MCS-51系列单片机有几个输入输出端口具有怎样的特点和用途
51单片机有4个I\/O端口,每个端口都是8位双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。通常把4个端口称为P0~P3。在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I\/O端口使用。在具有片外扩展存储器的系统中,P2口...

51单片机如何使 P1.0端口以1HZ的频率输出信号
这个很简单!假如你的单片机是普通51单片机,晶振12M ,你用定时器做个时基比如100ms用一个全局变量计数,到达10次说明已用时1000ms也就是1S,P1.0状态翻转一次,就行了,这样P1.0就输出1Hz的方波了。

山西省15861511030: 如何用51单片机输出一个占空比可调的方波: -
象凝愈通: 估计你这个是想使用单片机来驱动DC-DC稳压电源吧.你买STC12系列的单片机,自带PWM及ADC功能,然后通过输出电压及电流值调整频率输出,控制MOS管驱动高频变压器就可以完成了.

山西省15861511030: 求解,51单片机如何输出可调占空比的pwm信号 -
象凝愈通: 1、不要在中断程序中做复杂计算,事先计算好,在中断里面只做赋值. 2、a是整型,不能给0.8这种值.

山西省15861511030: 如何用51单片机输出一个占空比可调的方波:
象凝愈通: 首先选择一个I/O设置为输出模式,这个就是用于输出方波的硬件接口. 频率可调,可以根据你要想要的频率,换算成中断周期,实质上是一个计数器.建议弄一个300K的中断服务.那么可以这样整:如果要30K的频率,那么每10次中断视为一次完整的周期,执行一次你要的处理. 占空比问题,比如30%的占空比,那么你前三次中断都把状态设置为1,后面七次都设置为0状态.照这个思路就实现你的占空比了.当然这些中断次数的依据需要你自己对占空比的要求进行换算得到.在中断服务程序中去操作I/O口状态,当然你还可以在该程序结束的时候或者开始的时候,再次修改中断时间从而调整输出频率.

山西省15861511030: 用51单片机产生占空比可调的pwm,且可以定时持续输出一定占空比的pwm~ -
象凝愈通: /***************在OCR1B(PD4)上可测到100HZ的PWM波***********************//***************在OCR1A(PD5)上可测到50HZ的方波************************/#include #include void PWM() { DDRD=0X30;//设置OC1B(PD4)和OC1A(PD5)为输出 TCCR1A...

山西省15861511030: 51单片机咋样产生占空比,频率可变的PWM波 -
象凝愈通: 看了下你的控制周期的函数,pwm是周期还是占空比?只需要一个定时器就可以了 void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(ZQ)// 周期 { ZQ--;if(ZKB)//占空比 { ZKB--; IO = 1;//控制占空比的单片机输出口 } else IO = 0; } else { ZQ=100;//如果你需要ZQ和ZKB可调可以定义一个变量a,b;ZQ=a;ZKB=b; ZKB=30;//注意ZKB要小于ZQ } }

山西省15861511030: 51单片机怎样输出频率F=0.2 - 50HZ,占空比D=1 - 100%可调的PWM波形 -
象凝愈通: 利用定时器. uint PwmCnt = 0; sbit PWN_OUT = P1^1;//可改动 uint PwmD = 50;//占空比 可调 uint PwmF = 500;//频率 可调 10 = 1HZ 500 =50HZ uint PwmCnt = 0;//占空比计数值 uint FreCnt = 0;//频率分频值 void T0 interrupt 1 {.....//赋值...

山西省15861511030: 想问各位,利用51单片机如何产生占空比可调的pwm波,占空比要通过程序自动调节,用于实现彩灯的七种颜色 -
象凝愈通: 举个例子吧.先用定时器0定时Ts,再用定时器1定时ts.定时器1中断触发后,输出低电平,关闭定时器1,这样就能保证输出tms的正波形,;定时器0中断触发时,输出高电平,重置定时器0、1.占空比 = t/T,频率 = 1/T.注意T一定要大于t.

山西省15861511030: 51单片机调占空比方波 -
象凝愈通: 给你提供给一个思路:利用51定时器产生us级别的中断,然后设置两个变量,一个是pwm周期,也就是你说的1/10kHz,另一个是占空比变量,让占空比变量的值是周期寄存器值的一半就可以了这样就是50%占空比的方波,等到你要改占空比或者频率的时候只要改这两个变量就行

山西省15861511030: 51单片机怎样用键盘控制输出频率和占空比可调的方波 -
象凝愈通: 程序以验证.可以使用.用的是定时中断;P1尾输出端;我只写出了连个按键的试验效果,如果你需要更多的话,你自己往上加按键就OK 了希望随你有所帮助 #include "reg52.h"#define uchar unsigned char#define uint unsigned int sbit s1=P...

山西省15861511030: 占空比用51单片机怎样实现? -
象凝愈通: 最最简单的方法,前提是你只要把延时函数调的很准就可以.输出1,延迟时间a,输出0,延时时间b,占空比就是a/(a+b).稍微高端一点的可以用定时器中断.再高端一点,就用某些带有输出PWM固件的单片机,直接配置IO就可以输出了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网