标题:
妹子求教!单片机输出占空比为50%的PWM,且可调节频率大小
[打印本页]
作者:
js1899
时间:
2015-7-15 23:03
标题:
妹子求教!单片机输出占空比为50%的PWM,且可调节频率大小
作为妹子,当初真的不应该选电子专业。555555
以下程序是输出
脉冲是固定频率的
,
可调节占空比
,
图中所示为初始50%占空比的波形图以及20%、40%、60%
猎豹截图20150715225748.png
(112.57 KB, 下载次数: 115)
下载附件
2015-7-15 22:58 上传
怎么在这基础上改成:
占空比(50%)不变
,
但
频率可调节
(初始频率5HZ,可向上调节6、 7 、8HZ,向下调节5、 4 、3HZ。
求指点,万分谢谢
#include<reg52.h>
#define uint unsigned int
sbit pwm=P0^7;
sbit k1=P2^0;
sbit k2=P2^1;
bit bz;//定义一个按键是否松开的标志位
uchar b;
uchar m=5;//m为控制占空比的变量,初始占空比50%
void delay(uint i)
{
while(i--);
}
void dingshi() interrupt 1//定时中断
{
TL0=(65536-1000)%256; //1ms初始化
TH0=(65536-1000)/256;
b++;
if(b==10)
b=0; //10ms周期定时
if(b<m)
pwm=1;
else
pwm=0;//高低电平保持时间分配
}
void main()
{
EA=1;
ET0=1;
TMOD=0x01;//定时0工作在方式1,1ms中断1次
TL0=(65536-1000)%256;
TH0=(65536-1000)/256;
TR0=1;//开中断
while (1)
{
if((k1==0)&&(bz==0))
{
delay(1110);
if(k1==0)
{
bz=1;
m++;
if(m==11)
m=10;
}
}//每按一次占空比自增10%
if((k2==0)&&(bz==0))
{
delay(1110);
if(k2==0)
{
bz=1;
m--;
if(m==255) if((k1==1)&&(k2==1))
bz=0;//判断按键是否松开
}
}
复制代码
作者:
moyuqilin
时间:
2015-7-16 00:26
我觉得你可以改b,既然占空比一定,那么m的值就不用变了,按照你原先的程序里1ms进去一次中断,进入十次中断为一周期,也就是10ms一周期,频率为100hz你要该成5hz的话就是1000ms/5=200,然后b设置成两百,m就为b/2,占空比就为50%了,同理就可以设置其他频率了,不过像3这样除不尽的数可能就会有误差了,你可以试试,我也没做过这个程序,目前就这一种想法了,要是有什么好的方法也麻烦你发出来,大家一起交流
作者:
h1314258
时间:
2015-8-6 16:57
TMOD=0x01;//定时0工作在方式1,1ms中断1次
作者:
readlove1
时间:
2015-8-6 17:17
改变高底电平的时间。
作者:
js1899
时间:
2015-8-7 13:55
已经解决了。
外部再加两个I/O口进行周期的加减输入。同脉宽调节部分程序一样。
谢谢楼上的各位。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1