二相四线步进电机的单片机源程序 用L298N模块驱动

2019-11-30来源: 51hei关键字:二相四线步进电机  单片机  L298N模块驱动

在网上找了很久资料,都没有直接的源代码去驱动二相四线步进电机。本人编写了一些基本的代码,再加上L298N模块,就可以轻松驱动啦。
0.png0.png0.png0.png 

单片机源程序如下:

#include "reg52.h"


//电机IO

#define GPIO_MOTOR P1

//sbit F1 = P1^0;

//sbit F2 = P1^1;

//sbit F3 = P1^2;

//sbit F4 = P1^3;

//按键IO


sbit K1=P3^0;

sbit K2=P3^1;

sbit K3=P3^2;

sbit K4=P3^3;


                                                                                                                                                                    

sbit a0=P1^0;                          

sbit a1=P1^1;            

sbit b0=P1^3; 

sbit b1=P1^4;


void right(unsigned int y);

void left(unsigned int x); 

void Delay(unsigned int t);

unsigned char Direction,Speed;

void motor();

/*******************************************************************************

* 函 数 名         : main

* 函数功能                   : 主函数

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/


void main(void) 

        unsigned char i;        

   Speed=10;


  while(1)

        {

                         

          if(K1==0)                //检测按键K1是否按下

                {

                        Delay(50);        //消除抖动

                        if(K1==0)

                        {

                                Direction=1;

                        }

                        while((i<200)&&(K1==0))         //检测按键是否松开

                        {

                                Delay(50);

                                i++;

                        }

                        i=0;

                }



                if(K2==0)                //检测按键K1是否按下

                {

                        Delay(50);        //消除抖动

                        if(K2==0)

                        {

                                Direction=2;

                        }

                        while((i<200)&&(K2==0))         //检测按键是否松开

                        {

                                Delay(50);

                                i++;

                        }

                        i=0;

                }        




                 if(K3==0)                //检测按键K1是否按下

                {

                        Delay(100);        //消除抖动

                        if(K3==0)

                        {

                                Speed--;

                                if(Speed<=3)

                                Speed=4;

                        }

                        while((i<200)&&(K2==0))         //检测按键是否松开

                        {

                                Delay(1);

                                i++;

                        }

                        i=0;

                }

         

                if(K4==0)                //检测按键K1是否按下

                {

                        Delay(100);        //消除抖动

                        if(K4==0)

                        {

                                Speed++;

                        }

                        while((i<200)&&(K4==0))         //检测按键是否松开

                        {

                                Delay(100);

                                i++;

                        }

                        i=0;

                }        


          motor();

  


        }

}






void motor()

{


if(Direction==1) 

        {

        a0=0;

        a1=1;

        b0=1;

        b1=1;

        Delay(Speed);

        a0=1;

        a1=0;

        b0=1;

        b1=1;

        Delay(Speed);

        a0=1;

        a1=1;

        b0=0;

        b1=1;

        Delay(Speed);

        a0=1;

        a1=1;

        b0=1;

        b1=0;

        Delay(Speed);

        }



if(Direction==2) 

                 

        {

        a0=1;

        a1=1;

        b0=1;

        b1=0;

        Delay(Speed);

        a0=1;

        a1=1;

        b0=0;

        b1=1;

        Delay(Speed);

        a0=1;

        a1=0;

        b0=1;

        b1=1;

        Delay(Speed);

        a0=0;

        a1=1;

        b0=1;

        b1=1;

        Delay(Speed);

        }



}


[1] [2]
关键字:二相四线步进电机  单片机  L298N模块驱动 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481592.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于51单片机的温度采集系统(Labview做上位机)
下一篇:LCD12864中文液晶屏显示

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

四线二相步进电机L298驱动程序
/*============================================================================= 这个程序是想帮助更多的初学者掌握步进电机的使用,步进电机是一种控制精确的电机, 在个个场合中都有广泛的应用,他的控制非常简单,只要掌握脉冲时序就可以很好的控制。 可以控制它转一定的角度,可以当舵机使用,但它的成本很高,不太核算。 下面的程序是步进电机全步运行和1/2步运行。 ==============================================================================*/ #include<
发表于 2016-10-19
PIC系列单片机的优势是什么
一、引言据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行
发表于 2019-12-05
PIC系列单片机的优势是什么
PIC单片机以及51单片机和AVR单片机的IO口操作方法介绍
对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间研究pic单片机的各类技术。而谈及pic单片机,必须牵扯至51、AVR单片机。因此本文中,将探讨pic单片机以及51、AVR单片机对于IO口的操作。对于本文,希望大家认真研读,以在pic单片机的学习之路上更为精进。一.51单片机IO口的操作51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起来是所有单片机里最简单的,可以直接进行总线操作也可以直接进行位操作,这也是51单片机之所以成为经典的原因之一。下例的运行坏境为Keil软件,器件为AT89S52。#i ncludesbit bv=P2^0;//定义位变量,关联P2.0
发表于 2019-12-05
PIC单片机以及51单片机和AVR单片机的IO口操作方法介绍
PIC单片机的类型以及特征介绍
对于pic单片机,大家或多或少均有所耳闻。但是,大家对pic单片机有多少了解呢?是否熟知不同类型的pic单片机呢?由美国Microchip公司推出的PIC单片机系列产品,首先采用了RISC结构的嵌入式微控制器,其高速度、低电压、低功耗、大电流LCD驱动能力和低价位OTP技术等都体现出单片机产业的新趋势。现在PIC系列单片机在世界单片机市场的份额排名中已逐年升位,尤其在8位单片机市场,据称已从1990年的第20位上升到目前的第二位。PIC单片机从覆盖市场出发,已有三种(又称三层次)系列多种型号的产品问世,所以在全球都可以看到PIC单片机从电脑的外设、家电控制、电讯通信、智能仪器、汽车电子到金融电子各个领域的广泛应用。现今
发表于 2019-12-05
PIC单片机的类型以及特征介绍
PIC单片机和51单片机谁更容易于学习
pic单片机是当前最实用工具之一,而对于pic单片机的探讨往往与其他类型单片机相联系。51好学一些,但是PIC也没比51难多少。首先,PIC比51多个配置位,这个基本上看看就懂了。然后,PIC的端口要配置成输入或者输出,51单片机则不用。PIC的中断没有优先级,需要软件判断。最后,PIC比51多许多寄存器,你要使用PIC的各种功能,都需要去初始化寄存器。再说说PIC相比与51单片机有哪些优点:1:相同的晶振情况下,PIC比51速度快,PIC4个时钟周期为一个指令周期,51是12个。2:PIC比51功能强大许多,比如自带AD转换,自带PWM,内置弱上拉(需设置)LCD接口等。。这样,你在用到许多功能的时候就很方便啦,不用
发表于 2019-12-05
PIC单片机和51单片机谁更容易于学习
PIC单片机相比其他单片机的四大优势介绍
本人从事单片机应用系统的开发已有多年,使用过多种型号的PIC单片机,深感PIC单片机使用起来确实很方便:1、 PIC单片机采用精简指令集,中档产品仅需35条指令,入门门槛低,而在使用过程中绝不会感到不方便。2、PIC单片机的数据线和指令线各自独立,代码效率高,是传统51系列单片机的2-3倍,除几个跳转类指令外均为单周期指令,在计算延时时间时非常方便。 3、PIC单片机外围接口十分丰富,能满足绝大部分应用系统的需求;比如PIC16F877A包含8路ADC,1个CCP、PWM、USART、SSP、I2C/SPI,3个定时/计数器,1个硬件WDT等接口,8K FLASH程序存储器、256字节EEPROM,能满足较复杂测控系统
发表于 2019-12-05
PIC单片机相比其他单片机的四大优势介绍
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved