如何用51单片机产生占空比随着输入模拟量而改变的pwm波

如题所述

要输入模拟量只能接一个AD了。
单片机根据AD转换结果,利用定时器产生固定频率、高电平宽度与之成正比的方波不久可以了吗?追问

这个我知道啊
我想问的是程序怎么写啊

追答

51定时器本身就有PWM输出功能啊?设置定时器相关参数不就可以了吗?PWM高电平参数需要随时更新。

追问

没有的好吗?
我用的是没有的那种

追答

不好意思,好久没有用51了!
你可考虑采用两个定时器配合。
一个为主定时器,定时长度为PWM的周期,且采用自动重载模式,溢出时,中断程序中清除另一个定时器的计数值,装载高电平宽度对应的计数值,且将引脚置位为高电平。
另一定时器设置为非重载模式,定时长度为高电平宽度,溢出时,中断程序中将引脚复位为低电平。

追问

这个我也知道
我也是这样编的
关键是不对啊
求好人给程序

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-10
楼主,先写个固定的PWM,然后,改变占空比,不就行了?追问

你想多了
固定的我会写
很简单
要是通过按钮改变占空比
我也会
关键现在改变的是个连续的量
这就难了

追答

关键现在改变的是个连续的量
-----
占空比控制范围:0~25(周期设为25),这个,会吧?
那么,设定10ms采样一次,得到:0~255,除以10,就当做占空比,这不是很简单的吗?

51单片机咋样产生占空比,频率可变的PWM波
51的话 直接修改定时中断的定时时间就可以改变频率,修改高电平的定时时间,就能改变 占空比。- ARM的话--直接修改匹配0的值 就能改变PWM频率(MR0),修改其他匹配就能改变占空比,毕竟在ARM单边极性匹配中断时候,第一次复位时候,总是以高电平起始,会自动拉高!希望回答能给你点帮助,不过你问的问题...

用的是51单片机,晶振11.0592,请问怎么算出占空比,和pwm波频率,求具体...
你这是软件结合定时器产生PWM波,没有程序,算不出占空比和频率 程序原理大致是设一个变量a,每次定时器中断这个变量加1,并且和另一变量b比较,如果a<b,则输出高电平,反之则输出低电平 一个周期后(假设中断20次)a清0,再次输出高电平 那么占空比=(20-b)\/20 改变b的值即可改变占空比 周期=20...

怎么用51单片机来实现pwm调节占空比
可以用两级中断来实现,该方法可实现精确占空比与频率的调整。。。大致思想是:1.在定时器T0中开定时器T1,并使pwm=1,2.在定时器T1中关掉T1,即TR1=0;并使pwm=0;注:t0控制频率(周期),t1控制占空比(高电平时间),你只要装载相应的定时器初值即可。很实用的哦 ...

C8051的C语言编程产生占空比可调的PWM波
子程序,初始化什么的,自己参照教程加进去,在main()函数里调用这个子程序,通过改变PWM,和100的值可以改变PWM频率

51单片机产生一定占空比和频率的PWM.
include<reg51.h> define count 50 define TH_M1 (65536-count)\/256 \/\/设置定时器T0的定时时间 define TL_M1 (65536-count)%256 \/\/设置定时器T0的定时时间 unsigned char ucount=0;sbit PWM=P1^0;unsigned char DR;\/\/定义全局变量占空比 \/*主函数***\/ void main(void){ \/\/IP=0x10; ...

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 =50HZuint PwmCnt = 0;\/\/占空比计数值uint FreCnt = 0;\/\/频率分频值void T0 interrupt 1{ ...\/\/赋值TO计数值 50us if(++...

怎么用单片机来实现pwm调节占空比啊,请高手们指教
51就用改变的定时器的重装的值就可以实现,不过简单的51单片机如AT89S51并没有硬件的PWM功能,你要软件计算,使得改变占空比时频率不变。SG3525就只要一个时钟就行了,占空比的改变是靠一个模拟的电压来实现的,要非用51和话可用DA或IO加低通滤波(一般是RC型)通过实现简单的DA功能 ...

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

如何用51单片机定时器产生一个PWM,频率20kHz,占空比可调的PWM
unsigned char PWM_Num;\/\/定义档位 TMOD |=0x01;\/\/定时器设置 1ms in 12M crystal TH0=(65536-1000)\/256;TL0=(65536-1000)%256;\/\/定时1mS IE= 0x82; \/\/打开中断 TR0=1;CYCLE = 10;\/\/ 时间可以调整 这个是10步调整 周期10ms 8位PWM就是256步 while(1){ if(!KEY1){ delay(...

51单片机测量PWM波的占空比的C语言程序
用定时器产生程序如下:unsigned int a=0 ,b=10;void main(){ tmod=0x01;th0=(65536-50000)\/256;tl0=(65536-50000)%256;ea=1;et0=1;tr0=1;} void pwm()interrupt 1 { th0=(65536-50000)\/256;tl0=(65536-50000)%256 ;a++;p1^1=0;if(a=20){ a=0;} if(a=b){ p1^1=1;...

相似回答