问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

51单片机输出两路独立的可调占空比pwm,如何变成

发布网友 发布时间:2023-07-29 21:20

我来回答

3个回答

热心网友 时间:2023-11-11 12:07

51单片机输出两路独立的可调占空比pwm,比较困难啊,只有两个定时器,一路就需要2个定时器了。 用52吧,有3个定时器,1个做PWM的时基,另两个做两路占空比定时,这样两路PWM的频率一样,占空可独立调节。(详细程序没有,只能给你个方法或思路参考)
要求高用ATmega8吧,带有比较模块能实现3路PWM。

热心网友 时间:2023-11-11 12:07

一个定时器做时基,用软件实现占空比。
这是一个PWM控制LED亮度的,我目前电脑只有这个
/* **********************************************************************
* Author: XXXXXXX *
* Date : 2010/03/06 *
* Description:利用PWM控制LED亮度,扫描频率50hz,亮度调节档次100 *
* *
************************************************************************/

#include<reg52.h>
#define LED P1
#define LED_ON() P1=0x00
#define LED_OFF() P1=0xff

#define LED_PWM_MAX 99
#define LED_PWM_MIN 0

#define uchar unsigned char
#define uint unsigned int
static uchar TimeCounter = 0;//时间控制
static uchar LedState = 0;//控制方向 0:渐亮 1:渐暗
static uchar LedPWMCounter = 0; //LED占空比

void Timer0Init()
{
TMOD = 0x01;
TH0 = (65536-200)/256;
TL0 = (65536-200)%256;
EA = 1;
ET0 = 1;
}
void main()
{
Timer0Init();
TR0=1;
while(1)
;
}

void Timer_0() interrupt 1
{
static PWMCounter = 0;
TH0 = (65536-200)/256;
TL0 = (65536-200)%256;
TimeCounter++;
if(TimeCounter>=100)
{
TimeCounter = 0;
if((LedPWMCounter<=LED_PWM_MAX)&&(0 ==LedState))
{
LedPWMCounter++;
if(LedPWMCounter >LED_PWM_MAX)
{
LedState = 1;
LedPWMCounter = LED_PWM_MAX;
}
}
if((LedPWMCounter>=LED_PWM_MIN)&&(1 ==LedState ))
{
LedPWMCounter--;
if(LedPWMCounter <LED_PWM_MIN)
{
LedState = 0;
LedPWMCounter = LED_PWM_MIN;
}
}
PWMCounter = LedPWMCounter;
}

if(PWMCounter > 0)
{
LED_ON();
PWMCounter--;
}
else
{
LED_OFF();
}
}

热心网友 时间:2023-11-11 12:08

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit dja=P1^4; //电机a正反转控制端
sbit djb=P1^5; //电机b正反转控制端

//a电机接口
sbit in1=P1^0;
sbit in2=P1^1;

//b电机接口
sbit in3=P1^2;
sbit in4=P1^3;

uchar ysyz,ysyz1,ysd,ysx;

void bjys() //比较两电机高电平时长
{
if(ysyz>ysyz1)
{ysd=ysyz;ysx=ysyz1;}
else
{ysd=ysyz1;ysx=ysyz;}
}

void srpwm() //从P0和P2并行送入占空比
{
ysyz=P0; //并行输入a电机高电平时长,最大值200,超过则变回0
ysyz1=P2; //并行输入b电机高电平时长,最大值200,超过则变回0
if((ysyz<=200)&&(ysyz1<=200))
bjys(); //比较两电机PWM高电平时长
else
{
ysd=0;
ysx=0;
}
}

void zz() //两电机正转
{
uchar i;
srpwm();
in1=1;in3=1;
for(i=0;i<ysd;i++)
{
if((i==ysx)&&(ysyz>ysyz1))
in3=0;
if((i==ysx)&&(ysyz<=ysyz1))
in1=0;
}
in1=0;in3=0;
for(i=0;i<=(200-ysd);i++)
{
}
}

void zf() //电机一正一反
{
uchar i;
srpwm();
in1=1;in4=1;
for(i=0;i<ysd;i++)
{
if((i==ysx)&&(ysyz>ysyz1))
in4=0;
if((i==ysx)&&(ysyz<=ysyz1))
in1=0;
}
in1=0;in4=0;
for(i=0;i<=(200-ysd);i++)
{
}
}

void fz() //电机一反一正
{
uchar i;
srpwm();
in2=1;in3=1;
for(i=0;i<ysd;i++)
{
if((i==ysx)&&(ysyz>ysyz1))
in3=0;
if((i==ysx)&&(ysyz<=ysyz1))
in2=0;
}
in2=0;in3=0;
for(i=0;i<=(200-ysd);i++)
{
}
}
void ff() //两电机反转
{
uchar i;
srpwm();
in2=1;in4=1;
for(i=0;i<ysd;i++)
{
if((i==ysx)&&(ysyz>ysyz1))
in4=0;
if((i==ysx)&&(ysyz<=ysyz1))
in2=0;
}
in2=0;in4=0;
for(i=0;i<=(200-ysd);i++)
{
}
}

void main()
{
P1=0x7f; //P1.7接驱动使能端
while(1)
{

in2=0;in4=0;
while((dja==1)&&(djb==1))
zz();
in1=0;in3=0;
while((dja==0)&&(djb==0))
ff();
in2=0;in3=0;
while((dja==1)&&(djb==0))
zf();
in1=0;in4=0;
while((dja==0)&&(djb==1))
fz();
}
}

//此程序已调试通过,调试环境:(AT89C52、晶振:22.1184M、电源:5V)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? 怎么样用51单片机产生三路占空比PWM波啊?要汇编语言的,有思路也行 怎么更新网站上的图片 ...们有谁知道百度搜索关键词时,百度搜索网站左下角的图如何更新? 我不知道如何在网站更新网站图片,很烦恼! 微信收款后怎么查到对方? 阴毛上长小虫子是怎么回事 梦见被狮子扑倒 如何慎用五行属性来为孩子起名 人类免疫缺陷病毒抗体诊断试剂盒 胶体金法可靠吗 日立硬盘插电后不转,有吱吱的声音,但就是不感觉到转,请教什么原因,如何... SHE在香约奶茶广告里的歌的歌名是什么? ...耳朵贴上去感觉能听到旋转的咔咔声 是日立的硬盘 这... 今天新买的X450VC日立硬盘有吱吱的声音 如何防止汽车蓄电池充电爆炸 怎样预防蓄电池爆炸? 乱星海传送阵谁造的凡人 请问Specify other是什么意思? 关闭wordpress对外请求 鸭血豆腐海米汤是怎么做的? 哪些学校招收专转本学生 51单片机两个io口同时输出两个占空比不同的方波?以下程序希望给点灵感... oracle提供的认证方式有哪些 oracle的认证有哪些 Oracle认证是什么意思 怎么考oracle的认证 塑料镀铝袋、铝箔袋的结构、材质、加工工艺? 加拿大高中学习辛苦吗? 求大神情侣头像另一张帮找到 csgo完美s一颗星多少分 完美平台魔王s多少分 2022年山东济宁公务员学历要求 2022年山东济宁本土公务员报名条件 在vue-router里query动态传参步骤有哪些 我想保存某网页,却提示“该网页可能无法正确保存,是否保存? 为什么 太厉害!81岁奶奶能连续跳绳1000个,奶奶的身体素质为啥这么好? 年龄只是符号!81岁奶奶能连续跳绳1千个,奶奶的身体为何能如此健壮? 苹果手机信息有个红色感叹号怎么去掉 做梦梦到去世的爷爷奶奶还活着和我说话是什么征兆 lookatthispicture.doyouagreewithit?why怎么回答 This is my mind.Do you agree with it?And why do y