找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12826|回复: 13
打印 上一主题 下一主题
收起左侧

利用STC15单片机产生一个占空比、频率可调的PWM波

  [复制链接]
跳转到指定楼层
楼主
ID:363663 发表于 2018-7-8 10:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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);
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:277539 发表于 2018-7-13 23:13 来自手机 | 只看该作者
AT89C52可以使用吗?
回复

使用道具 举报

板凳
ID:292673 发表于 2018-7-17 09:17 | 只看该作者
51stm 发表于 2018-7-13 23:13
AT89C52可以使用吗?

可以的,上面的都是12M的晶振下测得。
回复

使用道具 举报

地板
ID:375055 发表于 2018-7-19 19:26 | 只看该作者
这个可以不错
回复

使用道具 举报

5#
ID:375055 发表于 2018-7-19 19:27 | 只看该作者
好像不错哦
回复

使用道具 举报

6#
ID:399179 发表于 2019-7-7 20:48 来自手机 | 只看该作者
怎么调占空比和频率?
回复

使用道具 举报

7#
ID:583423 发表于 2019-8-19 19:38 | 只看该作者
P1_0=!P1_0;
这个P1.0一开始并没有确定输出高电平还是低电平啊
回复

使用道具 举报

8#
ID:163139 发表于 2019-8-24 11:53 | 只看该作者
回复看看,学习一下
回复

使用道具 举报

9#
ID:397211 发表于 2019-10-25 17:04 | 只看该作者
good非常好
回复

使用道具 举报

10#
ID:92556 发表于 2020-8-12 04:12 | 只看该作者
请问频率最高可设置到多少
回复

使用道具 举报

11#
ID:813514 发表于 2020-8-12 14:00 | 只看该作者
怎么不是用PCA模块的PWM啊
回复

使用道具 举报

12#
ID:813961 发表于 2020-8-13 19:44 | 只看该作者
STC带PWM输出的IC有很多,比较好用
回复

使用道具 举报

13#
ID:92556 发表于 2020-8-21 21:27 | 只看该作者
用了死循环,,加不了其他功能  改了就不准了,,,!!!!!!!!!
回复

使用道具 举报

14#
ID:92556 发表于 2020-8-26 00:42 | 只看该作者
参考楼主,把频率分解的思路,改在中断里更新,实现了实时可调频率输出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表