51单片机控制步进电机的程序

发布者:数字狂想最新更新时间:2017-12-01 来源: eefocus关键字:51单片机  控制步进电机 手机看文章 扫描二维码
随时随地手机看文章

初学单片机:

 

#include
#include

code unsigned char tab[]=
            {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 
unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};
unsigned char Dis_Shiwei;//定义十位
unsigned char Dis_Gewei; //定义个位

sbit key1=P3^0;//定义按键位置
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;

int Speed=25;
int Th=0xF0;
int Tl=0x00;
//int LoopDJ=0x02;
int i=0;
//int key;

void ViewKey();
void Show();

void Delay(unsigned int cnt)
{
 while(--cnt);
}

void main()
{
    
    TMOD=0x10;
    EA=1;
    ET1=1;
    TR1=1;       //开启定时器1
    while(1)
    {
        ViewKey();
        Show();
    }
}

void Show()      //数码管模拟显示步进电机转速
{
        Dis_Shiwei=tab[Speed/10];//十位显示值处理
        Dis_Gewei=tab[Speed%10]; //个位显示处理
         P0=Dis_Shiwei;//显示十位
          P2=0xFE;
          Delay(300);//短暂延时
          P0=Dis_Gewei; //显示个位
          P2=0xFF;
          Delay(300);
}

void ViewKey()   //独立按键控制功能模块
{
        if(!key1)     //按下按键时电机加速
        {
            if(Speed<80)      
            {
                Speed++;
                if(Tl>=0xF8)
                {
                    Th=Th+0x01;
                    Tl=0x00;
                }
                else
                {
                    Tl=Tl+0x08;
                }
            }
        }
        if(!key2)     //按下按键2时进行加速
        {
            if(Speed>15)
            {
                Speed--;
                if(Tl<0x08)
                {
                    Th=Th-0x01;
                    Tl=0xFF;
                }
                else
                {
                    Tl=Tl-0x08;
                }
            }
        }
        if(!key3)  //电机停止,定时器停止定时
        {
            P1=0xFF;
            TR1=0;
            Speed=0;
        }
        if(!key4)  //电机开启,定时器开始定时
        {
            TR1=1;
            Th=0xF0;
            Tl=0x00;
            Speed=25;
        }
        Delay(3000);
}

void T1INT() interrupt 3   //中断服务程序模块
{
/*    if(P1&0x10!=0x10)
    {
        P1=LoopDJ<<1;
    }
    else
    {
        P1=LoopDJ>>3;
    }
    
    for(i=0;i<4;i++)      */
    if(i>=0&&i<=4)
     {
     P1=F_Rotation[i];  
     i++;
     } 
     else
     {
         i=0;





        P1=F_Rotation[0];
        i++;
     }
    TH1=Th;
    TL1=Tl;
}


关键字:51单片机  控制步进电机 引用地址:51单片机控制步进电机的程序

上一篇:DHT21温湿度传感器使用
下一篇:Keil C51大端模式与版本选择导致的仿真器Code size limit:2k

推荐阅读最新更新时间:2024-03-16 15:47

基于nRF905模块和51单片机的无线收发系统设计
前言 在闭环钻井系统中,要求实时地把井下的信息传递到地面,以实施人工监控。通常情况下该任务由MWD中泥浆压力脉冲发生器来完成。当使用井下动力钻具组合时,近钻头传感器和MWD被动力钻具隔开。传感器无法用线缆与MWD连接,因此要把传感器的信息传送给MWD只能通过无线通信的方法。 本文设计了由C8051F0606单片机和nRF905无线射频器收发组成的一种无线数据传输系统的方案。该系统由发射和接收模块组成,发射模块主要将要发送的数据经单片机处理后,通过nRF905发送出去;在接收模块中,nRF905则将数据正确接收后通过上位机界面显示出来,从而实现短距离井下的无线通信。 无线收发系统硬件设计 nRF905模块简介 nRF905是Nord
[单片机]
基于nRF905模块和<font color='red'>51单片机</font>的无线收发系统设计
基于51单片机的超声波测距系统设计
功能: 超声波测距仪,测量距离,用LCD12864显示信息。 lcd_writestr(0,0, 超声波测距仪 ); lcd_writestr(1,0, ******** ); lcd_writestr(2,0, 当前被测距离为: ); lcd_writestr(3,0, 厘米 ); 程序运行图: 原理图: 部分程序: /***************************************************** * 功能:超声波测距 ******************************************************/ #include reg52.h #include
[单片机]
基于51单片机的电压表-数码管显示
一.硬件方案 本设计基于STC89C52单片机的一种电压测量电路,该电路采用ADC0832A/D转换芯片,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单, 可以测量0~9V的电压值,并在四位LED数码管上显示电压值。如图: 二.设计功能 (1)ADC0832模数转换,0-9V电压测量; (2)4位数码管显示测量电压值; (3)10K可调电阻模拟电压测试; (4)当提供电源电源为精准的5V电源时,精度为正负0.02V; 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)Protues仿真图如下: 四.软件设计 (1)程序流程图 (2)主程序源码 /**************
[单片机]
基于<font color='red'>51单片机</font>的电压表-数码管显示
51单片机时钟秒表课程设计
这个是我写的作业的方案,单片机课程结课作业,以下是我写的设计方案,写的不咋滴 欢迎拍砖。。 一、详细功能设计 1、基于51单片机倒计时秒表,最大值为9999秒,计时单位为0.1秒; 2、计时的初始值为组员学号后4位,键盘启动/停止计时; 3、设计多个按键,使用键盘选择不同成员的学号作为初始值。 二、8031最小系统设计 1、最小系统设计原理图如图1.0所示: 2、8031最小系统概述; 8031最小系统包含晶振电路与复位电路。 晶振选择12MHZ晶振,晶振电容使用30pf电容瓷片电容。复位电路选择上电复位。 三、硬件设计 1、数码管电路 在本设计中,使用7段共阴极数码管,选择数码管的型号为7SEG-MP
[单片机]
<font color='red'>51单片机</font>时钟秒表课程设计
基于51单片机PWM直流电机调速程序 0到20级的调速
单片机源程序: /*******************************************************************/ /* 程序名:PWM直流电机调速 */ /* 晶振:11.00592 MHz CPU型号:AT89C51 */ /* 直流电机的PWM波控制,可以直接的调速从0到20级的调速 */ /*****************************************************************/ #include reg51.h #define TH0_TL0 (65536-1000)//设定中断的间隔时长 unsigned char coun
[单片机]
51单片机数码管显示学习笔记
本实验主要是了解51单片机和数码管连接的硬件电路图以及软件编程操作。 目录: 硬件电路: 1.数码管锁存器模块: 74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。 引脚功能和芯片真值表: 简单来说,当使能端OE'接低电平时,锁存器工作(故在电路设计时直接将使能端OE'与GND相连)。此时若锁存器锁存控制端LE为高,则数据输出端与数据输入端电平同步,当锁存控制端LE转为低电平,无论数据输入端电平高低,数据输出端
[单片机]
<font color='red'>51单片机</font>数码管显示学习笔记
51单片机引脚简介
第一部分。单片机简介 MSC-51单片机指以8051为核心的单片机,由美国的Intel公司在1980年推出,80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。 单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(single chip Microcomputer)也叫微控制器(MCU)。 CPU( Central Processing Unit ):由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM( Random-Access Memory ):用以存
[单片机]
<font color='red'>51单片机</font>引脚简介
用PC104控制模块和C51单片机实现AD检测板
  由PC104控制模块和Cgnal C8051F06x单片机组成的控制检测板可用于高端检测设备中,充分利用PC104控制模块和单片机丰富的软硬件资源,可用于各种检测应用中。   在开发检测设备的过程中,可采用核心板加底板的设计方法来降低技术难度,实现可编程、高性能、开发简单、扩展性强的设计方案,并且稍加改动就可以很容易地应用到其他领域。   核心板采用PC104控制模块,利用其强大的处理能力来处理数据,如数据存储、数据分析、数据评估,尤其是友好的GUI简化了用户的使用难度。底板采用Cgnal8051F06x、双口RAM和缓冲寄存器,利用C8051F06X单片机丰富的软硬件资源来实现可编程,可设置的各种复杂功能。核心板与底板之
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved