700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Proteus仿真stc89c51正反调速控制uln步进电机

Proteus仿真stc89c51正反调速控制uln步进电机

时间:2019-01-31 05:12:41

相关推荐

Proteus仿真stc89c51正反调速控制uln步进电机

功能说明:

1.使用Proteus8.10仿真stc89c51正反调速控制uln步进电机。

2.运行参数显示屏LCD显示。

3.按键控制电机正反转以及调速与急停。

注意事项:

处理器 :STC89C51/STC89C52

仿真软件:Proteus8.10

按键控制步进电机正反转并可调速

初始状态如下图所示:

正转控制如下图:

反向控制如下所示:

部分程序如下所示:

#include "macro.h"uchar buf_Direction; //设定步进电机的转向uint set_speed; //设定步进电机的转速uchar step_motor_loop[8]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};//驱动控制指令表uchar step_index;//电机正反转控制接口#define CST_STEP_MOTOR_Z10 //正转#define CST_STEP_MOTOR_F20 //反转#define CST_STEP_MOTOR_ST0 //停止//晶振选择#definefosc_12MHz 12 #definefosc_24MHz 24#definefosc_setting fosc_12MHz //定时器工作方式1#define CST_TIME_MS 1000 #define CST_TH0(65536-CST_TIME_MS*fosc_setting/fosc_12MHz)/256#define CST_TL0(65536-CST_TIME_MS*fosc_setting/fosc_12MHz)%256

电机正反运行状态控制代码如下:

static uchar key_loose=0;uchar temp=0;P1=0XFF;temp=P1&0xFF;if(key_loose >0){if(temp==0xFF)key_loose=0;return;}else if(temp !=0xFF){key_loose=10;temp=P1&0xFF;switch(temp){case 0xFE:buf_Direction=CST_STEP_MOTOR_Z; list_write_HZ_Str(6,20,"顺向");caluate();break; case 0xFD: buf_Direction=CST_STEP_MOTOR_F; list_write_HZ_Str(6,20,"逆向");caluate();break;case 0xFB: buf_Direction=CST_STEP_MOTOR_ST; list_write_HZ_Str(6,20,"停止");list_write_HZ_Str(6,60,"");break; case 0xEF: if(buf_Direction !=CST_STEP_MOTOR_ST){if(set_speed <80)set_speed +=2; //减速caluate();}break;case 0xF7: if(buf_Direction !=CST_STEP_MOTOR_ST){if(set_speed >14)set_speed -=2;//加速 caluate();}break;default: break; //其它值返回 }}

主程序如下所示:

void main(void) {P2=0xff;P1=0xff;P0=0Xff;init_timer0();iniLCD(); //初始化 LCDbuf_Direction=CST_STEP_MOTOR_ST;set_speed=60;step_index=3;EA=1; //开启中断 while(1){key_Scan(); //按键扫描函数}}

全部资料链接见评论区,有问题请留言~

作者:amusen

时间:.5

祝好!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。