标题:
利用STC15单片机产生一个占空比、频率可调的PWM波
[打印本页]
作者:
MSX76547521
时间:
2018-7-8 10:37
标题:
利用STC15单片机产生一个占空比、频率可调的PWM波
#include<stc15f2k60s2.h>
#define uint unsigned int
#define uchar unsigned char
sbit P1_0=P1^0;
void dutyANDf(float duty,float f)
{
int Xt1,Xt0;
float t1,t0;
uchar h1,l1,h0,l0;
t1=duty/f; //高电平时长
t0=(1/f)-t1; //低电平时长
Xt1=65536-1000000*t1; //高电平的时长转换成的定时器16位数
Xt0=65536-1000000*t0;; //低电平的时长转换成的定时器16位数
TMOD=0X01;
TR0=1;
h1=(uchar)(Xt1>>8); //高电平高八位保存
l1=(uchar)Xt1; //高电平低八位保存
h0=(uchar)(Xt0>>8); //低电平高八位保存
l0=(uchar)Xt0; //低电平低八位保存
while(1)
{
TH0=h1;
TL0=l1;
do{}while(!TF0);
P1_0=!P1_0;
TF0=0;
TH0=h0;
TL0=l0;
do{}while(!TF0);
P1_0=1;
TF0=0; //溢出复位
}
}
void main()
{
dutyANDf(0.989,55.55);//占空比以及频率 占空比为小数(即百分比)duty=98.9%,f=55.55hz p1^0口观看PWM波形
while(1);
}
作者:
51stm
时间:
2018-7-13 23:13
AT89C52可以使用吗?
作者:
诗语凌枫
时间:
2018-7-17 09:17
51stm 发表于 2018-7-13 23:13
AT89C52可以使用吗?
可以的,上面的都是12M的晶振下测得。
作者:
68775899
时间:
2018-7-19 19:26
这个可以不错
作者:
68775899
时间:
2018-7-19 19:27
好像不错哦
作者:
快乐眼泪
时间:
2019-7-7 20:48
怎么调占空比和频率?
作者:
Alohaq
时间:
2019-8-19 19:38
P1_0=!P1_0;
这个P1.0一开始并没有确定输出高电平还是低电平啊
作者:
shuiquan3
时间:
2019-8-24 11:53
回复看看,学习一下
作者:
保持微笑
时间:
2019-10-25 17:04
good非常好
作者:
qwa1234
时间:
2020-8-12 04:12
请问频率最高可设置到多少
作者:
273765054qq.ocm
时间:
2020-8-12 14:00
怎么不是用PCA模块的PWM啊
作者:
xing123456
时间:
2020-8-13 19:44
STC带PWM输出的IC有很多,比较好用
作者:
qwa1234
时间:
2020-8-21 21:27
用了死循环,,加不了其他功能 改了就不准了,,,!!!!!!!!!
作者:
qwa1234
时间:
2020-8-26 00:42
参考楼主,把频率分解的思路,改在中断里更新,实现了实时可调频率输出
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1