找回密码
 立即注册

QQ登录

只需一步,快速开始

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

有人知道单片机怎么产生PWM波吗?

[复制链接]
跳转到指定楼层
楼主
有人知道怎么让两个端口产生方波吗?比如我示波器两端连P2^2和P2^3,然后波形是方波?用STC15F2K60S2,程序不会写啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:25310 发表于 2022-12-7 08:35 | 只看该作者
对你这个没啥要求的搞个延时程序就行了:

void Delay200ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        i = 2;
        j = 103;
        k = 147;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}


void while(1)  
{
P2^2=1;P2^3=0;
Delay200ms();
P2^2=0;P2^3=1;
Delay200ms();
}
回复

使用道具 举报

板凳
ID:1034262 发表于 2022-12-7 11:16 | 只看该作者
使用带PWM的单片机。
回复

使用道具 举报

地板
ID:77589 发表于 2022-12-7 11:54 | 只看该作者
一、如果单片机有PWM外设模块,直接配置PWM外设模块;
二、如果单片机没有PWM外设模块,就用Timer中断在普通IO上模拟PWM输出。
回复

使用道具 举报

5#
ID:123289 发表于 2022-12-7 14:31 | 只看该作者
说一个吧:P22。
1、做个定时中断,例10ms。
2、在中断服务程序中:让P22反转。
这样在P22口上就得到一个50Hz的方波。
回复

使用道具 举报

6#
ID:1045489 发表于 2022-12-8 08:50 | 只看该作者
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(ZQ)// 周期
{
ZQ--;
if(ZKB)//占空比
{
ZKB--;
IO = 1;//控制占空比的单片机输出口
}
else IO = 0;
}
else
{
ZQ=100;//如果你需要ZQ和ZKB可调可以定义一个变量a,b;ZQ=a;ZKB=b;
ZKB=30;//注意ZKB要小于ZQ
}
}
用定时器做的
回复

使用道具 举报

7#
ID:1055954 发表于 2022-12-8 08:59 来自手机 | 只看该作者
单片机有PWM外设模块,可以直接配置PWM外设模块使用
回复

使用道具 举报

8#
ID:890642 发表于 2022-12-10 18:46 来自手机 | 只看该作者
yzwzfyz 发表于 2022-12-7 14:31
说一个吧:P22。
1、做个定时中断,例10ms。
2、在中断服务程序中:让P22反转。

请问大师STC15W408-16脚芯片,3.7脚可以输出PWM吗?波形带不动光耦817是怎么回事
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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