STC89C52RC单片机控制步进电机仿真与程序

发布者:吾道明亮最新更新时间:2019-12-05 来源: 51hei关键字:STC89C52RC  单片机控制  步进电机 手机看文章 扫描二维码
随时随地手机看文章

本单片机是STC89C52RC,本程序应用于step motor--28BYJ,小型步进电机,供电电压DC5V,可直接接于单片机通过ul2003驱动芯片驱动,数码管是共阴极接口,控制步进电机启动/停止,正反转,加减速,并有运行,及转换状态显示。

是初学者的好例程。


实物图:
 
仿真原理图如下

 

单片机源程序如下:

/*本单片机是STC89C52RC,本程序应用于step motor--28BYJ,小型步进电机,

   供电电压DC5V,可直接接于单片机通过ul2003驱动芯片驱动,数码管是共阴极接口,*/



#include

#define uchar unsigned char//数据宏定义

#define uint unsigned int

#define A P10 //

#define _A P11 //步进电机脉冲接口

#define B P12 //

#define _B P13 //步进电机脉冲接口

uchar su_du=0;       //转速

bit fang_xiang=0;    //方向

bit qi_dong=0;       //启动标志

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


#include //包含移位标准库函数头文件



sbit DU = P2^6;//数码管段选

sbit WE = P2^7;//数码管段选



//共阴数码管段选表0-9

uchar  code shu_ma[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};

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

/*====================================

函数        : delay(uint z)

参数        :z 延时毫秒设定,取值范围0-65535

返回值        :无

描述        :12T/Fosc11.0592M毫秒级延时

====================================*/

void delay(uint z)

{

        uint x,y;

        for(x = z; x > 0; x--)

                for(y = 114; y > 0 ; y--);                 


/*====================================

函数        :display(uchar i)

参数        :i 显示数值,取值范围0-255

返回值        :无

描述        :三位共阴数码管动态显示

====================================*/

void display(uchar i)                                                 //数据处理

{

        uchar bai, shi, ge;

//        bai = i / 100; //236 / 100  = 2

//        shi = i % 100 / 10;        //236 % 100 / 10 = 3

        ge  = i;// % 10;//236 % 10 =6

        

/*  第一位数码管                  

        P0 = 0XFF;//清除断码

        WE = 1;//打开位选锁存器

        P0 = 0XFE; //1111 1110

        WE = 0;//锁存位选数据

        

        DU = 1;//打开段选锁存器

        P0 = shu_ma[bai];//

        DU = 0;//锁存段选数据

        delay(5);


        //第二位数码管

        P0 = 0XFF;//清除断码

        WE = 1;//打开位选锁存器

        P0 = 0XFD; //1111 1101

        WE = 0;//锁存位选数据

        

        DU = 1;//打开段选锁存器

        P0 = shu_ma[shi];//

        DU = 0;//锁存段选数据

        delay(5);*/


/*********        第三位数码管 */

        P0 = 0XFF;//清除断码

        WE = 1;//打开位选锁存器

        P0 = 0XFB; //1111 1011

        WE = 0;//锁存位选数据

        

        DU = 1;//打开段选锁存器

        P0 = shu_ma[ge];//

        DU = 0;//锁存段选数据

        delay(5);

}

void yanshi2(uint a)          //延时程序

{

        while(a--);

}

uchar an_jian()         //按键检测,P3.0,P3.1,P3.2,P3.3分别接4个按键

{

        if((P3&0x0f)!=0x0f)//判断 P3只要有一个按键按下,就延时返回按键值。

        {

                yanshi2(20000);

                if((P3&0x0f)!=0x0f)

                {

                        return P3&0x0f;

                }

        }

        return P3&0x0f;

}


void yanshi()                        //步进电机延时时间

{

        uint sd1=0;

        sd1=8000+5753*(10-su_du);//        su_du值越大,周期越短,频率越高

        while(sd1--)

        {

                if((P3&0x0f)!=0x0f)return;  //在延时里面判断有没有按键按下,有就直接返回主函数

        }

}

void bu_jin()                     //每调用一次步进电机向指定方向走一步

{

        static char j=1;         //把起始速度设置为1。

        if(fang_xiang)                 //判断方向位,为1则按正相序循环,

        {

                j++;

                if(j==5)j=1;

        }

        else

        {

                j--;

                if(j==0)j=4;         //否则,按反相序循环

        }

        switch(j)                         //根据拍数选择不同的电压组合

        {

                case 1:

                        A=1;B=1;_A=0;_B=0;yanshi(); //ab  1100

                break;

                case 2:

                        A=0;B=1;_A=1;_B=0;yanshi(); //a~b 0110

                break;

                case 3:

                        A=0;B=0;_A=1;_B=1;yanshi(); //a~b~0011

                break;

                case 4:

                        A=1;B=0;_A=0;_B=1;yanshi(); //ab~ 1001

                break;

        }

}




        


void main()

{

        P14=0;//方向标志

        P15=0;//启动 标志

        while(1)

        {

                switch(an_jian())                         //按键处理

                {

                        case 0x0e:                                   //第一个按键按下按键状态取反,启动/停止

                                qi_dong=!qi_dong;

                                P15=qi_dong;            //状态指示

                        break;

                        case 0x0d:                                        //第二个按键按下,速度加

                                if(su_du<9)

                                        su_du++;                 //速度加

                        break;

                        case 0x0b:                                   //第三个按键按下,速度减

                                if(su_du>0)

                                        su_du--;                 //速度减

                        break;

                        case 0x07:                                         //第四个按键按下按键状态取反,方向转换

                                fang_xiang=!fang_xiang;          

                                P34=fang_xiang;            //方向指示灯

                        break;

                }

        

                if(qi_dong)                                                 //启动按钮为1

[1] [2]
关键字:STC89C52RC  单片机控制  步进电机 引用地址:STC89C52RC单片机控制步进电机仿真与程序

上一篇:单片机四层电梯控制系统设计最终版(含仿真+报告+程序源码)
下一篇:单片机全自动洗衣机程序+仿真+原理图设计调试与分析

推荐阅读最新更新时间:2024-11-19 22:37

微型步进电机是干嘛用的
小型化是许多行业持续关注的问题,也是近年来的主要趋势之一,用于生产、测试还是日常实验室使用,运动和定位系统都需要更小、更强大的电机。电机行业设计和制造小型步进电机已经有很长一段时间了,足够小的电机在许多应用中仍然不存在。在电机足够小的情况下,它们缺乏应用所需的规格,例如提供市场上具有竞争力所需的足够大扭矩或速度。可悲的选择是使用一个大框架步进电机和收缩周围的所有其他组件,往往通过特殊的支架和安装额外的硬件。在这个小范围内进行运动控制极具挑战性,迫使工程师们在设备的空间结构上做出妥协。 标准无刷直流电机在结构和机械上都是自支撑的,转子通过两端的端盖悬挂在定子内部,任何需要连接的外设,通常都用螺栓固定在端盖上,端盖很容易地占到电机
[嵌入式]
贸泽开售 ST STM32WB超低功耗无线微控制
提供海量库存的半导体与电子元器件分销商贸泽电子 ( Mouser Electronics ) 即日起开始分销 STMicroelectronics (ST) 的 STM32WB 无线微控制器。此双核STM32WB支持Bluetooth® 5.0、ZigBee 3.0和OpenThread 连接,适用于各种 物联网 (IoT) 应用,包括可穿戴设备、家居 安防 产品、智能 照明 、健身和 医疗 器械、 工业 以及资产跟踪设备。 贸泽备货的 ST STM32WB 无线微控制器采用ST的低功耗 STM32L4 微控制器,并具有丰富的节能外设。此系列微控制器具有64 MHz Arm® Cortex®-M4应用处理器内核和Arm
[单片机]
贸泽开售 ST STM32WB超低功耗无线<font color='red'>微控制</font>器
基于单片机及传感器为控制器核心的智能机器人控制系统设计
1 前 言 机器人技术是融合了机械、、、、人工智能等许多学科的知识,涉及到当今许多前沿领域的技术。一些发达国家已把机器人制作比赛作为创新教育的战略性手段。如日本每年都要举行诸如“NHK杯大学生机器人大赛”、“全日本机器人相扑大会”、“机器人足球赛”等各种类型的机器人制作比赛,参加者多为学生,旨在通过大赛全面培养学生的动手能力、创造能力、合作能力和进取精神,同时也普及智能机器人的知识。 开展机器人的制作活动,是培养大学生的创新精神和实践能力的最佳实践活动之一,特别是机电专业学生开展综合知识训练的最佳平台。本文针对具有引导线环境下的路径跟踪这一热点问题,基于控制及传感器原理,通过硬件制作和编程,制作了一个机器人,实现了机器人
[机器人]
东芝新的步进电机驱动器IC降低电机噪声和振动
东京—东芝公司(TOKYO:6502)旗下存储与电子元器件解决方案公司今日宣布推出一款步进电机驱动器“TB67S209FTG”,该产品具有可降低电机工作期间的噪声和振动的结构。批量生产计划于12月底启动。 打印机、办公室自动化设备、ATM等银行终端、自动取款机、游乐设备和家用电器等均需要高速、高性能电机控制。最近,客户对步进电机控制的需求集中在降低噪音和振动方面,因为设备应用于日益多样化的环境。 降低步进电机的噪声和振动的关键在于利用精确的电流控制实现高效运行。电流调节功能——可选择混合衰减(SMD) 的采用支持该新IC通过选择适合于电机的适当SMD设置来降低噪声和振动。 采用东芝最先进的高电压模拟制程也提高了性
[电源管理]
东芝新的<font color='red'>步进</font><font color='red'>电机</font>驱动器IC降低<font color='red'>电机</font>噪声和振动
用MSP430单片机实现微波成像系统的扫描控制与数据采集
----摘 要:应用MSP430单片机实现微波成像系统的天线扫描控制及数据采集功能,介绍了该系统控制及采集部分的硬件结构及软件设计。 ----主题词:MSP430单片机;微波成像系统;扫描控制;数据采集 引言 ----在无源微波遥感中,微波辐射计是一种获取场景微波特征的重要手段。微波辐射计通常是一部超外差接收机,通过接收被测场景在一定频带内的电磁辐射,转换为输出的低频信号,来表征被测场景的地物信息。利用微波辐射计来探测、接收被测目标、背景在微波波段的电磁辐射,并把接收到的辐射信号按比例用伪彩色图像直观地显现出来的系统称为微波辐射成像系统。 ----微波辐射成像系统要求在恶劣的环境和天气下长期稳定地进行天线扫描成像,所以要求系统设备
[应用]
什么是微控制
微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。   微控制器可从不同方面进行分类:根据数据总线宽度可分为8位、16位和32位机;根据存储器结构可分为Harvard结构和Von Neumann结构;根据内嵌程序存储器的类别可分为OTP、掩膜、EPROM/EEPROM和闪存Flash;根据指令结构又可分为CISC(Complex Instruction
[单片机]
Atmel 推低成本CAP可定制微控制器入门级开发工具包
提供低成本及无风险的CAP定制功能评测能力 爱特梅尔公司 (Atmel Corporation) 现已推出面向其CAP 可定制微控制器 (MCU) 产品系列的入门级开发工具,名为 AT91CAP9A-STK 入门包。CAP 入门工具包不但成本低,而且无风险,是评测CAP MCU 定制功能的理想工具,它将专用 IP 构件映射到 FPGA 中,再仿真CAP 嵌入式金属可编程 (MP) 模块的功能。 这套CAP 入门工具包基于单一的 PCB 板,含有以 AT91CAP9S ARM926EJ-S 为 基础的微控制器、64MB SDRAM应用内存、512MB NAND闪存、高达8MB的DataFlash (这是选件),并提供支持以太网、
[单片机]
英飞凌为印度电子护照提供安全微控制
      2009年3月4日,芯片卡安全应用集成电路(IC)供应商英飞凌科技股份公司近日宣布,公司将为印度的电子护照项目提供非接触式安全微控制器。首期试点项目将向印度近3万名外交官和政府官员发放电子护照。到2009年9月,该项目有望扩展至普通公众。目前,印度每年签发大约600万张护照。        这种新型的电子护照的背面装有一枚安全微控制器,安全地储存护照上面印刷的所有信息。启动该项目的目的是通过实现自动身份验证、快速入境检查和边防检查,推动国际间的旅行(印度的入境旅游)。       英飞凌芯片卡和安全IC事业部总经理Helmut Gassel博士表示:“印度是最先推出电子护照的主要新兴国家之一,同时也是增长最快的
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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