找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2976|回复: 3
收起左侧

下面这个单片机程序为什么左电机占空比值 取值范围0-170,0最快

[复制链接]
ID:494908 发表于 2019-3-20 20:03 | 显示全部楼层 |阅读模式
#include <reg52.h>
#include <..\CONFIG\QXA51.h>
unsigned char pwm_left_val = 210;//左电机占空比值 取值范围0-170,0最快
unsigned char pwm_right_val = 210;//右电机占空比值取值范围0-170 ,0最快
unsigned char pwm_t;//周期
/*小车前进*/
void forward()
{
        left_motor_go; //左电机前进
        right_motor_go; //右电机前进
}

//定时器0中断
void timer0() interrupt 1
{
        pwm_t++;
        if(pwm_t == 255)
                pwm_t = EN1 = EN2 = 0;
        if(pwm_left_val == pwm_t)
                EN1 = 1;               
        if(pwm_right_val == pwm_t)
                EN2 = 1;                        
}
void main()
{
        TMOD |= 0x02;//8位自动重装模块
        TH0 = 220;
        TL0 = 220;//11.0592M晶振下占空比最大比值是256,输出100HZ
        TR0 = 1;//启动定时器0
        ET0 = 1;//允许定时器0中断
        EA        = 1;//总中断允许
        while(1)
        {
                forward();//前进               
        }
}

回复

使用道具 举报

ID:466164 发表于 2019-3-20 20:49 | 显示全部楼层
程序不完整!,你如果0最快说明,你0时给高电平,类似普通直流电机直接接电源,没有调速。
回复

使用道具 举报

ID:164602 发表于 2019-3-21 08:11 | 显示全部楼层
仔细读程序嘛:
程序中是这样设置的:
pwm_t;//周期为255
当pwm_t;//周期达到255时,关掉电机。
当pwm_t;//周期与pwm_left_val//左电机占数据相等时开电机。pwm_left_val为零时,整个周期时间内,电机都是打开的,所以转动最快。当pwm_left_val等于其它值,如210时,在pwm_t;//周期小于210时,电机是关着的,只有到了210才开,占的时间最少,就最慢。
回复

使用道具 举报

ID:515240 发表于 2019-4-18 15:41 | 显示全部楼层
HC6800-ES-V2.0 发表于 2019-3-21 08:11
仔细读程序嘛:
程序中是这样设置的:
pwm_t;//周期为255

11.0592M晶振下占空比最大比值是256,输出100HZ
占空比的比值不是0-1吗?输出100Hz怎么理解,谁的赫兹是100,脉冲频率吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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