这是自己用4988步进电机驱动芯片做的,4988芯片一般用在3D打印机上,具有体积小等优点。下面有我的测试程序,希望可以给需要的人提供参考。
单片机源程序如下:
/***************************************************************
* 实 验 名 :步进电机实验
* 实验说明 :电机启动、停止、正转、反转
* 实验平台 :51单片机开发板
* 连接方式 :pulse接P10 DIR接P11 KYE1接P20 KYE2接P21 KYE3接P22 KYE4接P23 ENABLE接P12 MS1-3接P13-P14
* 注 意 :本例程使用了中断定时器,中断介绍会在下一实验中说明
****************************************************************************/
#include #include #define FOSC 11059200L //晶振设置,默认使用11.0592M Hz //#define FOSC 12000000L //晶振设置,使用12M Hz //#define FOSC 24000000L //晶振设置,使用24M Hz #define TIME_MS 1 //设定定时时间 ms ,在11.0592M晶振下,不易超过60ms //IO接口定义 sbit pulse = P1^0;//脉冲信号 sbit Dir = P1^1; //正反转 sbit EN = P1^2; sbit MS1 = P1^3; sbit MS2 = P1^4; sbit MS3 = P1^5; sbit KEY1 = P2^0; //启动 sbit KEY2 = P2^1; //停止 sbit KEY3 = P2^2; //正转 sbit KEY4 = P2^3; //反转 //全局变量定义 unsigned char count=0; /******************************************************************************* * 函 数 名 :Delayms * 函数功能 :实现 ms级的延时 * 输 入 :ms * 输 出 :无 *******************************************************************************/ void Delayms(unsigned int ms) { unsigned int i,j; for(i=0;i for(j=0;j<114;j++); #elif FOSC == 12000000L for(j=0;j<123;j++); #elif FOSC == 24000000L for(j=0;j<249;j++); #else for(j=0;j<114;j++); #endif } /******************************************************************************* * 函 数 名 :Timer0Init * 函数功能 :定时器0初始化 * 输 入 :无 * 输 出 :无 *******************************************************************************/ void Timer0Init() { TMOD=0x01; //设置定时器0工作方式为1 TH0=(65536-FOSC/12/1000*TIME_MS)/256; TL0=(65536-FOSC/12/1000*TIME_MS)%256; ET0=1; //开启定时器0中断 // TR0=1; //开启定时器 EA=1; //打开总中断 } /******************************************************************************* * 函 数 名 :main * 函数功能 :主函数 * 输 入 :无 * 输 出 :无 *******************************************************************************/ void main() { Timer0Init(); EN=0; MS1=0; MS2=0; MS3=0; while(1) { if(KEY1==0) //判断是否按下键盘 { Delayms(10); //延时,软件去干扰 if(KEY1==0) //确认按键按下 { TR0=1; } while(KEY1==0);//按键锁定,每按一次count只加1. } if(KEY2==0) //判断是否按下键盘 { Delayms(10); //延时,软件去干扰 if(KEY2==0) //确认按键按下 { TR0=0; } while(KEY2==0);//按键锁定,每按一次count只加1. } if(KEY3==0) //判断是否按下键盘 { Delayms(10); //延时,软件去干扰 if(KEY3==0) //确认按键按下 { Dir=0; } while(KEY3==0);//按键锁定,每按一次count只加1. } if(KEY4==0) //判断是否按下键盘 { Delayms(10); //延时,软件去干扰 if(KEY4==0) //确认按键按下 { Dir=1; } while(KEY4==0);//按键锁定,每按一次count只加1. } } } /******************************************************************************* ……………………
上一篇:简易一小时定时器 数码管显示
下一篇:51单片机扩展数据存储器RAM proteus仿真
推荐阅读最新更新时间:2024-11-11 23:09
设计资源 培训 开发板 精华推荐
- 用于背板分布式电源的 2-LED 大电流 LED 驱动器
- 86 彩色温控盒子
- DER-445 - 20 W 功率因数校正、非隔离、TRIAC 调光 LED 驱动器
- M54455EVB: MCF54455评估板
- LT3088IDD 线性稳压器用于添加软启动的典型应用
- LT3761EMSE-1 具有 25:1 内部 PWM 调光功能的汽车前照灯用 94% 效率升压 LED 驱动器的典型应用电路
- FRDM-MC36XSD-EVB: 基于MC06XSD200 eXtreme开关的Freedom模拟电路板(多平台)
- AD5308 八通道、8 位数模转换器的典型应用
- 使用 Cypress Semiconductor 的 CY7C9689 的参考设计
- 使用 TC7117 模数转换器获得 2V 满量程推荐组件值的典型应用
- 直播已结束【英飞凌全新Wi-Fi6单芯片SoC助力物联网产品的快速开发】(9:30入场)
- 乐享惬意春天,TI A8开源硬件平台体验季!
- 最后一天!Beetle ESP32-C3免费测评,赶紧上车
- 【已结束】有奖直播【TI 全新CC2340无线 MCU,助力低功耗蓝牙应用】
- 瑞萨电子RL78/G14 demo板低价开团 19.9元包邮
- 是德科技感恩月直播已结束|高速示波器基础与是德新品示波器解析
- TI模拟博文深度阅读季,赢小米盒子!
- Arrow&allegro有奖直播:下一代磁感应解决方案:XtremeSense™ TMR 技术如何促进高效应用
- 下载Intel白皮书们,赢礼品获新知
- 想要Get更好的服务?TE人工客服说:“我可以”