普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 6761|回复: 2

单片机控制直流电机

 关闭 [复制链接]

1

主题

2

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2018-9-9 18:04:04 | 显示全部楼层 |阅读模式
能不能求一个用单片机控制直流电机的程序
回复

使用道具 举报

20

主题

1344

帖子

8372

积分

论坛元老

Rank: 8Rank: 8

积分
8372
发表于 2018-9-10 08:16:05 | 显示全部楼层
你是用的什么单片机呢?如果是STC89系列,那么单片机是不能直接驱动直流电机的,因为电流不够,强行连接,可能会烧单片机;如果你是用STC15系列或STM32系列,那么是可以的。
我的程序是单片机外加L298N电机驱动芯片进行的,单片机是STC89C51。/*
    1、此程序实验电机驱动IC——L298N对直流电机的控制
        2、此IC可以驱动两个电机,本次实验只控制一个,且没有单独的电机电压
        3、根据所学资料知:输入端电平高低搭配,可以控制电机正反转动或停转
*/

#include <reg51.h>

sbit PWM0=P2^3;//IC的控制输入脚5、7或10、12
sbit PWM1=P2^4;

sbit k1=P3^7;                //以下三个为独立键盘
sbit k2=P3^6;
sbit k3=P3^5;
         
void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void main(void)
{
        unsigned char m;       
        PWM0=0;//初始化电机不动
        PWM1=0;
       
        while(1)
        {

                if(k1==0)                       
                {
                        Delay10ms(1);         
                        if(k1==0)               
                        {

                                PWM0=1;       
                                PWM1=0;

                                while((m<50)&&(k1==0))         
                            {
                                    Delay10ms(1);
                                    m++;
                            }
                            m=0;
                        }
                }

                if(k2==0)                       
                {
                        Delay10ms(1);       
                        if(k2==0)               
                        {

                                PWM0=0;               
                                PWM1=1;

                                while((m<50)&&(k2==0))         
                            {
                                    Delay10ms(1);
                                    m++;
                            }
                            m=0;
                        }
                }

                if(k3==0)                       
                {
                        Delay10ms(1);       
                        if(k3==0)               
                        {

                                PWM0=0;               
                                PWM1=0;

                                while((m<50)&&(k3==0))         
                            {
                                    Delay10ms(1);
                                    m++;
                            }
                            m=0;
                        }
                }
        }
}



注意:L298N图中的5V输入应该为5V输出,对单片机供电。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

1

主题

2

帖子

29

积分

新手上路

Rank: 1

积分
29
 楼主| 发表于 2018-9-11 19:22:00 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-9-10 08:16
你是用的什么单片机呢?如果是STC89系列,那么单片机是不能直接驱动直流电机的,因为电流不够,强行连接, ...

STC89系列的,谢了
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-20 13:15 , Processed in 0.088576 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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