找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机控制电机转速,启动键按下时不自动加速怎么回事啊

查看数: 605 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2026-2-25 21:03

正文摘要:

#include <reg52.h> sbit IN1 = P1^0;   sbit IN2 = P1^1;   sbit ENA = P3^5; //PWM输出口 sbit LED = P1^7;  //led巡航启动led亮 sbit START = P1^2;  //启动 ...

回复

ID:584814 发表于 2026-3-5 15:11
完整修正后的代码片段
c

// 新增:自动增速控制函数(每100ms速度+1,直到9级)
void auto_speed_control(void)
{
    if(start_flag == 1 && auto_speed_up == 1)  // 修改这里
    {
        auto_speed_delay++;
        // 11.0592MHz晶振,此延时约100ms(可根据需求调整)
        if(auto_speed_delay >= 1000)
        {
            auto_speed_delay = 0;
            if(speed_level < 9)  // 最高9级
            {
                speed_level++;
            }
        }
    }
}
果然AI能给出提示
ID:857072 发表于 2026-2-26 09:47
看看AI给的提示。1. 核心原因:逻辑矛盾(Bug所在)  在你的 key_scan() 函数中,当按下启动键(START)时,代码逻辑存在冲突:  自动加速的条件:auto_speed_control() 函数中规定,只有当 start_flag == 1 且 auto_speed_up == 0 时,才会执行自动加速。  启动键的副作用:在 key_scan() 的启动按键处理部分,你虽然注释写着“允许自动加速”,但实际代码却将 auto_speed_up 设置为了 1。

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

Powered by 单片机教程网

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