标题: 利用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