问答文章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
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 怎么样用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