找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1320|回复: 7
收起左侧

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

[复制链接]
ID:907024 发表于 2022-12-6 20:46 | 显示全部楼层 |阅读模式
有人知道怎么让两个端口产生方波吗?比如我示波器两端连P2^2和P2^3,然后波形是方波?用STC15F2K60S2,程序不会写啊
回复

使用道具 举报

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输出。
回复

使用道具 举报

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

使用道具 举报

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
}
}
用定时器做的
回复

使用道具 举报

ID:1055954 发表于 2022-12-8 08:59 来自手机 | 显示全部楼层
单片机有PWM外设模块,可以直接配置PWM外设模块使用
回复

使用道具 举报

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 单片机教程网

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